summaryrefslogtreecommitdiff
path: root/source/a
diff options
context:
space:
mode:
Diffstat (limited to 'source/a')
-rwxr-xr-xsource/a/aaa_base/aaa_base.SlackBuild56
-rw-r--r--source/a/aaa_base/slack-desc19
-rw-r--r--source/a/aaa_base/slackware-version1
-rwxr-xr-xsource/a/aaa_elflibs/aaa_elflibs.SlackBuild73
-rw-r--r--source/a/aaa_elflibs/slack-desc19
-rw-r--r--source/a/aaa_elflibs/symlinks-to-tracked-libs55
-rw-r--r--source/a/aaa_elflibs/tracked-files8
-rwxr-xr-xsource/a/aaa_terminfo/aaa_terminfo.SlackBuild74
-rw-r--r--source/a/aaa_terminfo/slack-desc19
-rwxr-xr-xsource/a/acl/acl.SlackBuild110
-rw-r--r--source/a/acl/acl.destdir.diff36
-rw-r--r--source/a/acl/slack-desc19
-rw-r--r--source/a/acpid/acpi_handler.sh19
-rwxr-xr-xsource/a/acpid/acpid.SlackBuild74
-rw-r--r--source/a/acpid/default18
-rw-r--r--source/a/acpid/doinst.sh13
-rw-r--r--source/a/acpid/rc.acpid36
-rw-r--r--source/a/acpid/slack-desc19
-rwxr-xr-xsource/a/apmd/apmd.SlackBuild100
-rw-r--r--source/a/apmd/slack-desc19
-rwxr-xr-xsource/a/attr/attr.SlackBuild104
-rw-r--r--source/a/attr/attr.destdir.diff36
-rw-r--r--source/a/attr/build7
-rw-r--r--source/a/attr/slack-desc19
-rwxr-xr-xsource/a/bash/bash.SlackBuild97
-rw-r--r--source/a/bash/doinst.sh18
-rw-r--r--source/a/bash/patches/bash31-001104
-rw-r--r--source/a/bash/patches/bash31-002239
-rw-r--r--source/a/bash/patches/bash31-00347
-rw-r--r--source/a/bash/patches/bash31-00448
-rw-r--r--source/a/bash/patches/bash31-00554
-rw-r--r--source/a/bash/patches/bash31-00658
-rw-r--r--source/a/bash/patches/bash31-007121
-rw-r--r--source/a/bash/patches/bash31-00851
-rw-r--r--source/a/bash/patches/bash31-00966
-rw-r--r--source/a/bash/patches/bash31-01054
-rw-r--r--source/a/bash/patches/bash31-01147
-rw-r--r--source/a/bash/patches/bash31-01247
-rw-r--r--source/a/bash/patches/bash31-01344
-rw-r--r--source/a/bash/patches/bash31-014105
-rw-r--r--source/a/bash/patches/bash31-015106
-rw-r--r--source/a/bash/patches/bash31-01651
-rw-r--r--source/a/bash/patches/bash31-017131
-rw-r--r--source/a/bash/slack-desc19
-rwxr-xr-xsource/a/bin/bin.SlackBuild138
-rw-r--r--source/a/bin/debianutils_2.7.dsc21
-rw-r--r--source/a/bin/scripts/diskcopy9
-rw-r--r--source/a/bin/scripts/xx21
-rw-r--r--source/a/bin/slack-desc19
-rw-r--r--source/a/bzip2/bzip2-1.0.4.saneso.diff20
-rwxr-xr-xsource/a/bzip2/bzip2.SlackBuild111
-rw-r--r--source/a/bzip2/slack-desc19
-rw-r--r--source/a/coreutils/DIR_COLORS202
-rw-r--r--source/a/coreutils/coreutils-dircolors.csh48
-rw-r--r--source/a/coreutils/coreutils-dircolors.sh65
-rwxr-xr-xsource/a/coreutils/coreutils.SlackBuild168
-rw-r--r--source/a/coreutils/coreutils.uname.diff161
-rw-r--r--source/a/coreutils/doinst.sh13
-rw-r--r--source/a/coreutils/slack-desc19
-rw-r--r--source/a/cpio/cpio-2.9.gcc43.diff30
-rwxr-xr-xsource/a/cpio/cpio.SlackBuild126
-rw-r--r--source/a/cpio/slack-desc19
-rwxr-xr-xsource/a/cryptsetup/cryptsetup.SlackBuild144
-rw-r--r--source/a/cryptsetup/slack-desc21
-rwxr-xr-xsource/a/cups/cups.SlackBuild171
-rw-r--r--source/a/cups/cups.firefox.desktop.diff11
-rw-r--r--source/a/cups/doinst.sh28
-rw-r--r--source/a/cups/slack-desc19
-rwxr-xr-xsource/a/cxxlibs/cxxlibs.SlackBuild57
-rwxr-xr-xsource/a/cxxlibs/oldgcc/oldgcc.build73
-rw-r--r--source/a/cxxlibs/slack-desc19
-rw-r--r--source/a/cxxlibs/symlinks-to-tracked-libs5
-rw-r--r--source/a/cxxlibs/symlinks-to-tracked-libs642
-rwxr-xr-xsource/a/dbus/dbus.SlackBuild111
-rw-r--r--source/a/dbus/doinst.sh24
-rw-r--r--source/a/dbus/rc.messagebus80
-rw-r--r--source/a/dbus/slack-desc18
-rw-r--r--source/a/dcron/dcron-2.3.3.crontab.diff419
-rw-r--r--source/a/dcron/dcron-2.3.3.diff40
-rw-r--r--source/a/dcron/dcron-2.3.3.diff2477
-rw-r--r--source/a/dcron/dcron-2.3.3.diff311
-rw-r--r--source/a/dcron/dcron-2.3.3.lsm17
-rw-r--r--source/a/dcron/dcron-2.3.3.version.diff11
-rwxr-xr-xsource/a/dcron/dcron.SlackBuild76
-rw-r--r--source/a/dcron/dcron.fork.diff11
-rw-r--r--source/a/dcron/dcron.tmpdir.diff11
-rw-r--r--source/a/dcron/run-parts49
-rw-r--r--source/a/dcron/run-parts.836
-rw-r--r--source/a/dcron/slack-desc19
-rw-r--r--source/a/device-mapper/64-device-mapper.rules37
-rwxr-xr-xsource/a/device-mapper/device-mapper.SlackBuild115
-rw-r--r--source/a/device-mapper/slack-desc20
-rwxr-xr-xsource/a/devs/devs.SlackBuild62
-rw-r--r--source/a/devs/makedev.hd.diff92
-rw-r--r--source/a/devs/makedev_2.3.1-46.2.diff2952
-rw-r--r--source/a/devs/makedev_2.3.1.hd.diff71
-rw-r--r--source/a/devs/makedev_2.3.1.slack.diff19
-rw-r--r--source/a/devs/slack-desc19
-rwxr-xr-xsource/a/dialog/dialog.SlackBuild119
-rw-r--r--source/a/dialog/dialog.smaller.min.height.diff22
-rw-r--r--source/a/dialog/slack-desc19
-rwxr-xr-xsource/a/dosfstools/dosfstools.SlackBuild74
-rw-r--r--source/a/dosfstools/slack-desc19
-rw-r--r--source/a/e2fsprogs/doinst.sh18
-rwxr-xr-xsource/a/e2fsprogs/e2fsprogs.SlackBuild159
-rw-r--r--source/a/e2fsprogs/slack-desc19
-rwxr-xr-xsource/a/ed/ed.SlackBuild115
-rw-r--r--source/a/ed/slack-desc19
-rwxr-xr-xsource/a/eject/eject.SlackBuild107
-rw-r--r--source/a/eject/slack-desc19
-rwxr-xr-xsource/a/elvis/elvis.SlackBuild99
-rw-r--r--source/a/elvis/elvis.clr56
-rw-r--r--source/a/elvis/elvis.clr.orig56
-rw-r--r--source/a/elvis/slack-desc19
-rwxr-xr-xsource/a/etc/etc.SlackBuild50
-rw-r--r--source/a/etc/nsswitch.conf42
-rw-r--r--source/a/etc/slack-desc19
-rw-r--r--source/a/etc/termcap-BSD16470
-rwxr-xr-xsource/a/file/file.SlackBuild131
-rw-r--r--source/a/file/file.crdaregbin.magic5
-rw-r--r--source/a/file/file.etc.file.diff11
-rw-r--r--source/a/file/file.quiet.diff14
-rw-r--r--source/a/file/file.short.diff12
-rw-r--r--source/a/file/file.xz.magic9
-rw-r--r--source/a/file/file.zisofs.magic8
-rw-r--r--source/a/file/slack-desc19
-rwxr-xr-xsource/a/findutils/findutils.SlackBuild114
-rw-r--r--source/a/findutils/findutils.no.default.options.warnings.diff11
-rw-r--r--source/a/findutils/findutils.nolocate.diff22
-rw-r--r--source/a/findutils/slack-desc19
-rw-r--r--source/a/floppy/fdutils-5.4-20020222.diff2991
-rw-r--r--source/a/floppy/fdutils.mediaprm.diff8
-rwxr-xr-xsource/a/floppy/floppy.SlackBuild100
-rw-r--r--source/a/floppy/mediaprm786
-rw-r--r--source/a/floppy/mtools.conf64
-rw-r--r--source/a/floppy/slack-desc19
-rwxr-xr-xsource/a/gawk/gawk.SlackBuild99
-rw-r--r--source/a/gawk/slack-desc19
-rwxr-xr-xsource/a/genpower/genpower.SlackBuild93
-rw-r--r--source/a/genpower/genpower.halt.diff32
-rw-r--r--source/a/genpower/genpower.var.diff34
-rw-r--r--source/a/genpower/slack-desc19
-rwxr-xr-xsource/a/gettext/gettext-tools.SlackBuild102
-rwxr-xr-xsource/a/gettext/gettext.SlackBuild98
-rw-r--r--source/a/gettext/slack-desc19
-rw-r--r--source/a/gettext/slack-desc.gettext-tools19
-rwxr-xr-xsource/a/getty-ps/getty-ps.SlackBuild79
-rw-r--r--source/a/getty-ps/getty.bugfixes.diff356
-rw-r--r--source/a/getty-ps/getty_ps-2.1.0.lsm26
-rw-r--r--source/a/getty-ps/slack-desc19
-rw-r--r--source/a/gpm/gpm-1.20.1-consolename.patch18
-rw-r--r--source/a/gpm/gpm-1.20.1-gpmopen.patch22
-rw-r--r--source/a/gpm/gpm-1.20.1-idie.patch12
-rw-r--r--source/a/gpm/gpm-1.20.1-input-defines.diff26
-rw-r--r--source/a/gpm/gpm-1.20.1-input.patch16
-rw-r--r--source/a/gpm/gpm-1.20.1-lib-silent.patch19
-rw-r--r--source/a/gpm/gpm-1.20.1-math.patch11
-rw-r--r--source/a/gpm/gpm-1.20.1-multilib.patch52
-rw-r--r--source/a/gpm/gpm-1.20.1-no-console-error.patch15
-rw-r--r--source/a/gpm/gpm-1.20.1-nodebug.patch12
-rw-r--r--source/a/gpm/gpm-1.20.1-subscript.patch11
-rw-r--r--source/a/gpm/gpm-1.20.1-weak-wgetch.patch38
-rw-r--r--source/a/gpm/gpm-1.20.1.send-noise-to-syslogs.diff86
-rw-r--r--source/a/gpm/gpm-evdev-cumulative.patch7023
-rwxr-xr-xsource/a/gpm/gpm.SlackBuild149
-rw-r--r--source/a/gpm/gpm.evdevmakefile.patch11
-rw-r--r--source/a/gpm/inputattach.c472
-rw-r--r--source/a/gpm/mouseconfig7
-rw-r--r--source/a/gpm/setup.mouse154
-rw-r--r--source/a/gpm/slack-desc19
-rwxr-xr-xsource/a/grep/grep.SlackBuild110
-rw-r--r--source/a/grep/slack-desc19
-rwxr-xr-xsource/a/gzip/gzip.SlackBuild146
-rw-r--r--source/a/gzip/slack-desc19
-rwxr-xr-xsource/a/hdparm/hdparm.SlackBuild66
-rw-r--r--source/a/hdparm/slack-desc19
-rwxr-xr-xsource/a/infozip/infozip.SlackBuild92
-rw-r--r--source/a/infozip/slack-desc19
-rwxr-xr-xsource/a/inotify-tools/inotify-tools.SlackBuild109
-rw-r--r--source/a/inotify-tools/slack-desc19
-rwxr-xr-xsource/a/jfsutils/jfsutils.SlackBuild96
-rw-r--r--source/a/jfsutils/slack-desc19
-rwxr-xr-xsource/a/kbd/kbd.SlackBuild177
-rw-r--r--source/a/kbd/setconsolefont384
-rw-r--r--source/a/kbd/setup.setconsolefont10
-rw-r--r--source/a/kbd/slack-desc19
-rw-r--r--source/a/kbd/sources/kbd-1.15-keycodes-man.patch52
-rw-r--r--source/a/kbd/sources/kbd-1.15-po.patch31
-rw-r--r--source/a/kbd/sources/kbd-1.15-quiet_doc.patch34
-rw-r--r--source/a/kbd/sources/kbd-1.15-resizecon-x86_64.patch15
-rw-r--r--source/a/kbd/sources/kbd-1.15-sparc.patch97
-rw-r--r--source/a/kbd/sources/kbd-1.15-unicode_start.patch21
-rw-r--r--source/a/kbd/sources/kbd-1.15.tar.bz2.sign8
-rw-r--r--source/a/kbd/sources/nl.euro.diff10
-rw-r--r--source/a/kbd/sources/speakupmap.map308
-rwxr-xr-xsource/a/less/less.SlackBuild102
-rw-r--r--source/a/less/less.sysconfdir.diff15
-rw-r--r--source/a/less/lesspipe.sh67
-rw-r--r--source/a/less/slack-desc19
-rwxr-xr-xsource/a/lha/lha.SlackBuild75
-rw-r--r--source/a/lha/lha_1.14i-10.1.diff5901
-rw-r--r--source/a/lha/slack-desc19
-rwxr-xr-xsource/a/lilo/lilo.SlackBuild87
-rw-r--r--source/a/lilo/liloconfig1165
-rw-r--r--source/a/lilo/setup.liloconfig3
-rw-r--r--source/a/lilo/slack-desc19
-rw-r--r--source/a/lilo/slack.bmpbin0 -> 15754 bytes
-rw-r--r--source/a/lilo/slack.dat7
-rw-r--r--source/a/lilo/slack64.bmpbin0 -> 17318 bytes
-rw-r--r--source/a/lilo/text.lilohelp100
-rwxr-xr-xsource/a/logrotate/logrotate.SlackBuild71
-rw-r--r--source/a/logrotate/logrotate.slackware.diff49
-rw-r--r--source/a/logrotate/slack-desc19
-rw-r--r--source/a/lvm2/doinst.sh13
-rwxr-xr-xsource/a/lvm2/lvm2.SlackBuild103
-rw-r--r--source/a/lvm2/slack-desc19
-rw-r--r--source/a/mdadm/doinst.sh12
-rw-r--r--source/a/mdadm/mdadm-2.6.4.tar.bz2.sign8
-rwxr-xr-xsource/a/mdadm/mdadm.SlackBuild73
-rw-r--r--source/a/mdadm/mdadm.static.small.diff20
-rw-r--r--source/a/mdadm/slack-desc19
-rw-r--r--source/a/minicom/config.sub-x86_64.diff20
-rw-r--r--source/a/minicom/doinst.sh15
-rw-r--r--source/a/minicom/lrzsz_0.12.21-4.diff3019
-rwxr-xr-xsource/a/minicom/minicom.SlackBuild134
-rw-r--r--source/a/minicom/minicom.users36
-rw-r--r--source/a/minicom/minirc.dfl1
-rw-r--r--source/a/minicom/slack-desc19
-rw-r--r--source/a/minicom/wintcap.diff44
-rw-r--r--source/a/mkinitrd/README.initrd100
-rw-r--r--source/a/mkinitrd/archive/busybox-1.7.2.no-gc-sections.diff11
-rw-r--r--source/a/mkinitrd/archive/busybox-1.7.2.remove_warning.diff20
-rw-r--r--source/a/mkinitrd/archive/busybox-1.7.2.tar.bz2.sign18
-rw-r--r--source/a/mkinitrd/archive/busybox-dot-config.1.11.2855
-rw-r--r--source/a/mkinitrd/archive/busybox-dot-config.1.12.0857
-rw-r--r--source/a/mkinitrd/archive/busybox-dot-config.1.12.1857
-rw-r--r--source/a/mkinitrd/archive/busybox-dot-config.1.7.2753
-rw-r--r--source/a/mkinitrd/busybox-1.12.1_inotify.diff11
-rw-r--r--source/a/mkinitrd/busybox-dot-config857
-rwxr-xr-xsource/a/mkinitrd/init230
-rw-r--r--source/a/mkinitrd/mkinitrd494
-rw-r--r--source/a/mkinitrd/mkinitrd.8194
-rwxr-xr-xsource/a/mkinitrd/mkinitrd.SlackBuild119
-rw-r--r--source/a/mkinitrd/mkinitrd.conf.5174
-rw-r--r--source/a/mkinitrd/mkinitrd.conf.sample16
-rw-r--r--source/a/mkinitrd/mkinitrd_command_generator.sh842
-rw-r--r--source/a/mkinitrd/mkinitrd_kernelcheck.diff15
-rw-r--r--source/a/mkinitrd/slack-desc19
-rw-r--r--source/a/module-init-tools/doinst.sh22
-rw-r--r--source/a/module-init-tools/modprobe.favor.etc.modprobe.d.diff27
-rw-r--r--source/a/module-init-tools/modprobe.ignore_some_suffixes.diff43
-rw-r--r--source/a/module-init-tools/modprobe.no_sys_check.diff51
-rwxr-xr-xsource/a/module-init-tools/module-init-tools.SlackBuild122
-rw-r--r--source/a/module-init-tools/slack-desc19
-rwxr-xr-xsource/a/mt-st/mt-st.SlackBuild82
-rw-r--r--source/a/mt-st/mt-st.config.diff172
-rw-r--r--source/a/mt-st/mt-st.man.diff31
-rw-r--r--source/a/mt-st/mt-st.sdlt.diff11
-rw-r--r--source/a/mt-st/slack-desc19
-rwxr-xr-xsource/a/mtx/mtx.SlackBuild88
-rw-r--r--source/a/mtx/slack-desc19
-rw-r--r--source/a/ncompress/ncompress-4.2.4-bssUnderflow.patch13
-rw-r--r--source/a/ncompress/ncompress-4.2.4-endians.patch11
-rw-r--r--source/a/ncompress/ncompress.2GB.diff11
-rwxr-xr-xsource/a/ncompress/ncompress.SlackBuild81
-rw-r--r--source/a/ncompress/ncompress.filenamelen.diff98
-rw-r--r--source/a/ncompress/ncompress.lfs2.diff52
-rw-r--r--source/a/ncompress/ncompress.make.diff60
-rw-r--r--source/a/ncompress/ncompress.zerobyteforce.diff24
-rw-r--r--source/a/ncompress/slack-desc19
-rw-r--r--source/a/ntfs-3g/10-ntfs-3g-policy.fdi13
-rwxr-xr-xsource/a/ntfs-3g/ntfs-3g.SlackBuild105
-rw-r--r--source/a/ntfs-3g/slack-desc19
-rwxr-xr-xsource/a/patch/patch.SlackBuild64
-rw-r--r--source/a/patch/slack-desc19
-rwxr-xr-xsource/a/pciutils/pciutils.SlackBuild106
-rw-r--r--source/a/pciutils/pciutils.ids.dest.diff14
-rw-r--r--source/a/pciutils/pciutils.url2
-rw-r--r--source/a/pciutils/slack-desc19
-rw-r--r--source/a/pcmciautils/config/60-pcmcia.rules22
-rw-r--r--source/a/pcmciautils/config/config.opts71
-rwxr-xr-xsource/a/pcmciautils/config/rc.pcmcia65
-rw-r--r--source/a/pcmciautils/doinst.sh13
-rwxr-xr-xsource/a/pcmciautils/pcmciautils.SlackBuild113
-rw-r--r--source/a/pcmciautils/slack-desc19
-rw-r--r--source/a/pkgtools/manpages/explodepkg.841
-rw-r--r--source/a/pkgtools/manpages/installpkg.891
-rw-r--r--source/a/pkgtools/manpages/makepkg.8135
-rw-r--r--source/a/pkgtools/manpages/pkgtool.895
-rw-r--r--source/a/pkgtools/manpages/removepkg.8108
-rw-r--r--source/a/pkgtools/manpages/setup.8-deprecated120
-rw-r--r--source/a/pkgtools/manpages/upgradepkg.898
-rw-r--r--source/a/pkgtools/obsolete-scripts/README5
-rw-r--r--source/a/pkgtools/obsolete-scripts/setup.90.modem-device44
-rwxr-xr-xsource/a/pkgtools/pkgtools.SlackBuild78
-rw-r--r--source/a/pkgtools/scripts/explodepkg97
-rw-r--r--source/a/pkgtools/scripts/installpkg568
-rw-r--r--source/a/pkgtools/scripts/makebootdisk444
-rw-r--r--source/a/pkgtools/scripts/makepkg347
-rw-r--r--source/a/pkgtools/scripts/pkgtool754
-rw-r--r--source/a/pkgtools/scripts/removepkg430
-rw-r--r--source/a/pkgtools/scripts/setup.70.install-kernel5
-rw-r--r--source/a/pkgtools/scripts/setup.80.make-bootdisk175
-rw-r--r--source/a/pkgtools/scripts/setup.htmlview33
-rw-r--r--source/a/pkgtools/scripts/setup.services287
-rw-r--r--source/a/pkgtools/scripts/upgradepkg387
-rw-r--r--source/a/pkgtools/slack-desc19
-rw-r--r--source/a/procps/procinfo.gcc3.diff11
-rw-r--r--source/a/procps/procinfo.lsm15
-rw-r--r--source/a/procps/procps-3.2.7-ps-eip64.diff48
-rwxr-xr-xsource/a/procps/procps.SlackBuild191
-rw-r--r--source/a/procps/procps.nowarning.diff25
-rw-r--r--source/a/procps/procps.w.showfrom.diff11
-rw-r--r--source/a/procps/slack-desc19
-rwxr-xr-xsource/a/quota/quota.SlackBuild108
-rw-r--r--source/a/quota/slack-desc19
-rwxr-xr-xsource/a/reiserfsprogs/reiserfsprogs.SlackBuild110
-rw-r--r--source/a/reiserfsprogs/slack-desc19
-rw-r--r--source/a/rpm2tgz/rpm2targz129
-rw-r--r--source/a/rpm2tgz/rpm2targz.README18
-rwxr-xr-xsource/a/rpm2tgz/rpm2tgz.SlackBuild58
-rw-r--r--source/a/rpm2tgz/rpmoffset.c24
-rw-r--r--source/a/rpm2tgz/slack-desc19
-rwxr-xr-xsource/a/sdparm/sdparm.SlackBuild107
-rw-r--r--source/a/sdparm/slack-desc19
-rwxr-xr-xsource/a/sed/sed.SlackBuild77
-rw-r--r--source/a/sed/slack-desc19
-rw-r--r--source/a/shadow/adduser437
-rw-r--r--source/a/shadow/shadow-4.0.3.x86_64.diff166
-rwxr-xr-xsource/a/shadow/shadow.SlackBuild156
-rw-r--r--source/a/shadow/shadow.gcc34.diff11
-rw-r--r--source/a/shadow/shadow.login.defs.diff67
-rw-r--r--source/a/shadow/shadow.newgrp.getlogin21
-rw-r--r--source/a/shadow/shadow.newgrp.nopam18
-rw-r--r--source/a/shadow/shadow.remove.obsolete.options.diff78
-rw-r--r--source/a/shadow/shadow.shadowconfig.diff49
-rw-r--r--source/a/shadow/slack-desc19
-rwxr-xr-xsource/a/sharutils/sharutils.SlackBuild85
-rw-r--r--source/a/sharutils/slack-desc19
-rw-r--r--source/a/slocate/slack-desc19
-rw-r--r--source/a/slocate/slocate-3.1.tar.gz.sign7
-rwxr-xr-xsource/a/slocate/slocate.SlackBuild77
-rw-r--r--source/a/smartmontools/doinst.sh13
-rw-r--r--source/a/smartmontools/slack-desc19
-rwxr-xr-xsource/a/smartmontools/smartmontools.SlackBuild78
-rw-r--r--source/a/splitvt/slack-desc19
-rwxr-xr-xsource/a/splitvt/splitvt.SlackBuild67
-rw-r--r--source/a/splitvt/splitvt_1.6.5-9.diff1073
-rw-r--r--source/a/sysfsutils/slack-desc19
-rwxr-xr-xsource/a/sysfsutils/sysfsutils.SlackBuild104
-rw-r--r--source/a/sysklogd/slack-desc19
-rw-r--r--source/a/sysklogd/sysklogd-1.4.1-owl-syslogd-crunch_list.diff90
-rw-r--r--source/a/sysklogd/sysklogd-1.4.1.lsm23
-rwxr-xr-xsource/a/sysklogd/sysklogd.SlackBuild80
-rw-r--r--source/a/sysklogd/sysklogd_1.4.1-20.diff2555
-rw-r--r--source/a/syslinux/slack-desc19
-rw-r--r--source/a/syslinux/syslinux-3.52.tar.bz2.sign8
-rwxr-xr-xsource/a/syslinux/syslinux.SlackBuild94
-rw-r--r--source/a/sysvinit-functions/README.functions17
-rw-r--r--source/a/sysvinit-functions/doinst.sh23
-rw-r--r--source/a/sysvinit-functions/functions577
-rw-r--r--source/a/sysvinit-functions/slack-desc19
-rwxr-xr-xsource/a/sysvinit-functions/sysvinit-functions.SlackBuild79
-rw-r--r--source/a/sysvinit-scripts/doinst.sh25
-rw-r--r--source/a/sysvinit-scripts/scripts/fetch-rescan-scsi-bus.sh1
-rw-r--r--source/a/sysvinit-scripts/scripts/inittab74
-rw-r--r--source/a/sysvinit-scripts/scripts/rc.448
-rw-r--r--source/a/sysvinit-scripts/scripts/rc.6266
-rw-r--r--source/a/sysvinit-scripts/scripts/rc.K106
-rw-r--r--source/a/sysvinit-scripts/scripts/rc.M355
-rw-r--r--source/a/sysvinit-scripts/scripts/rc.S382
-rw-r--r--source/a/sysvinit-scripts/scripts/rc.local9
-rw-r--r--source/a/sysvinit-scripts/scripts/rc.sysvinit58
-rw-r--r--source/a/sysvinit-scripts/scripts/rescan-scsi-bus.sh558
-rw-r--r--source/a/sysvinit-scripts/slack-desc19
-rwxr-xr-xsource/a/sysvinit-scripts/sysvinit-scripts.SlackBuild60
-rw-r--r--source/a/sysvinit/doinst.sh48
-rw-r--r--source/a/sysvinit/slack-desc19
-rw-r--r--source/a/sysvinit/sysvinit-2.86-timeval.patch42
-rwxr-xr-xsource/a/sysvinit/sysvinit.SlackBuild115
-rw-r--r--source/a/sysvinit/sysvinit.diff125
-rw-r--r--source/a/sysvinit/sysvinit.pidof.rhforkseverything.diff81
-rw-r--r--source/a/tar/rmt.8217
-rw-r--r--source/a/tar/slack-desc19
-rw-r--r--source/a/tar/tar-1.13.bzip2.diff48
-rw-r--r--source/a/tar/tar-1.22-support_txz.diff11
-rw-r--r--source/a/tar/tar.1368
-rwxr-xr-xsource/a/tar/tar.SlackBuild145
-rw-r--r--source/a/tar/tar.nolonezero.diff25
-rw-r--r--source/a/tar/tar.norecordsizespam.diff20
-rw-r--r--source/a/tcsh/doinst.sh8
-rw-r--r--source/a/tcsh/slack-desc19
-rwxr-xr-xsource/a/tcsh/tcsh.SlackBuild91
-rw-r--r--source/a/tcsh/tcsh.nobuiltincolorls.diff11
-rw-r--r--source/a/time/slack-desc19
-rwxr-xr-xsource/a/time/time.SlackBuild69
-rw-r--r--source/a/tree/slack-desc19
-rwxr-xr-xsource/a/tree/tree.SlackBuild65
-rw-r--r--source/a/udev/config/modprobe.d/blacklist.conf.new270
-rw-r--r--source/a/udev/config/modprobe.d/isapnp.conf.new15
-rw-r--r--source/a/udev/config/modprobe.d/psmouse.conf.new6
-rw-r--r--source/a/udev/config/modprobe.d/usb-controller.conf.new4
-rw-r--r--source/a/udev/config/rc.d/rc.udev.new133
-rw-r--r--source/a/udev/config/rules.d/40-slackware.rules16
-rw-r--r--source/a/udev/config/rules.d/65-permissions.rules52
-rw-r--r--source/a/udev/config/rules.d/90-network.rules5
-rwxr-xr-xsource/a/udev/config/scripts/nethelper.sh62
-rw-r--r--source/a/udev/config/udev.conf14
-rw-r--r--source/a/udev/doinst.sh39
-rw-r--r--source/a/udev/rule_generator.diff80
-rw-r--r--source/a/udev/slack-desc19
-rw-r--r--source/a/udev/udev-141.tar.bz2.sign8
-rwxr-xr-xsource/a/udev/udev.SlackBuild140
-rw-r--r--source/a/unarj/Makefile21
-rw-r--r--source/a/unarj/slack-desc19
-rwxr-xr-xsource/a/unarj/unarj.SlackBuild61
-rw-r--r--source/a/usbutils/slack-desc19
-rwxr-xr-xsource/a/usbutils/usbutils.SlackBuild120
-rw-r--r--source/a/usbutils/usbutils.ids.dest11
-rw-r--r--source/a/utempter/doinst.sh10
-rw-r--r--source/a/utempter/slack-desc19
-rwxr-xr-xsource/a/utempter/utempter.SlackBuild77
-rw-r--r--source/a/util-linux-ng/adjtimex_1.23-1.diff5456
-rw-r--r--source/a/util-linux-ng/doinst.sh23
-rw-r--r--source/a/util-linux-ng/net-tools.diff77
-rw-r--r--source/a/util-linux-ng/net-tools_1.60-19.diff29401
-rw-r--r--source/a/util-linux-ng/scsi_ioctl.h48
-rw-r--r--source/a/util-linux-ng/setserial-rc.serial.diff49
-rw-r--r--source/a/util-linux-ng/slack-desc19
-rwxr-xr-xsource/a/util-linux-ng/util-linux-ng.SlackBuild284
-rw-r--r--source/a/util-linux-ng/util-linux-ng.fdisk-no-solaris.diff11
-rw-r--r--source/a/util-linux-ng/ziptool-fix_build.patch24
-rw-r--r--source/a/which/slack-desc19
-rwxr-xr-xsource/a/which/which.SlackBuild99
-rw-r--r--source/a/xfsprogs/slack-desc19
-rwxr-xr-xsource/a/xfsprogs/xfsprogs.SlackBuild114
-rw-r--r--source/a/xz/slack-desc19
-rwxr-xr-xsource/a/xz/xz.SlackBuild137
-rw-r--r--source/a/zoo/slack-desc19
-rwxr-xr-xsource/a/zoo/zoo.SlackBuild78
-rw-r--r--source/a/zoo/zoo_2.10-18.diff1285
441 files changed, 114596 insertions, 0 deletions
diff --git a/source/a/aaa_base/aaa_base.SlackBuild b/source/a/aaa_base/aaa_base.SlackBuild
new file mode 100755
index 00000000..3d1a7305
--- /dev/null
+++ b/source/a/aaa_base/aaa_base.SlackBuild
@@ -0,0 +1,56 @@
+#!/bin/sh
+
+# Copyright 2008, 2009 Patrick J. Volkerding, Sebeka, Minnesota, USA
+# All rights reserved.
+#
+# Redistribution and use of this script, with or without modification, is
+# permitted provided that the following conditions are met:
+#
+# 1. Redistributions of this script must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# 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.
+
+VERSION=13.0
+ARCH=${ARCH:-x86_64}
+BUILD=${BUILD:-2}
+
+CWD=$(pwd)
+TMP=${TMP:-/tmp}
+PKG=$TMP/package-aaa_base
+
+mkdir -p $TMP $PKG
+
+# Explode the package framework:
+cd $PKG
+explodepkg $CWD/_aaa_base.tar.gz
+
+echo "+======================+"
+echo "| repackaging aaa_base |"
+echo "+======================+"
+
+cat $CWD/slack-desc > $PKG/install/slack-desc
+cat $CWD/slackware-version > $PKG/etc/slackware-version
+
+# Add lib64 directories on x86_64:
+if [ "$ARCH" = "x86_64" ]; then
+ mkdir -p $PKG/lib64 $PKG/usr/lib64 $PKG/usr/local/lib64
+fi
+
+# Build the package:
+cd $PKG
+makepkg -l y -c n $TMP/aaa_base-$VERSION-$ARCH-$BUILD.txz
+
+# Clean up the extra stuff:
+if [ "$1" = "--cleanup" ]; then
+ rm -rf $PKG
+fi
diff --git a/source/a/aaa_base/slack-desc b/source/a/aaa_base/slack-desc
new file mode 100644
index 00000000..011f90fb
--- /dev/null
+++ b/source/a/aaa_base/slack-desc
@@ -0,0 +1,19 @@
+# HOW TO EDIT THIS FILE:
+# The "handy ruler" below makes it easier to edit a package description. Line
+# up the first '|' above the ':' following the base package name, and the '|'
+# on the right side marks the last column you can put a character in. You must
+# make exactly 11 lines for the formatting to be correct. It's also
+# customary to leave one space after the ':'.
+
+ |-----handy-ruler------------------------------------------------------|
+aaa_base: aaa_base (Basic Linux filesystem package)
+aaa_base:
+aaa_base: Sets up the empty directory tree for Slackware and adds an email to
+aaa_base: root's mailbox welcoming them to Linux. :) This package should be
+aaa_base: installed first, and never uninstalled.
+aaa_base:
+aaa_base:
+aaa_base:
+aaa_base:
+aaa_base:
+aaa_base:
diff --git a/source/a/aaa_base/slackware-version b/source/a/aaa_base/slackware-version
new file mode 100644
index 00000000..0c779cf8
--- /dev/null
+++ b/source/a/aaa_base/slackware-version
@@ -0,0 +1 @@
+Slackware 13.0.0.0.0
diff --git a/source/a/aaa_elflibs/aaa_elflibs.SlackBuild b/source/a/aaa_elflibs/aaa_elflibs.SlackBuild
new file mode 100755
index 00000000..fd5ade86
--- /dev/null
+++ b/source/a/aaa_elflibs/aaa_elflibs.SlackBuild
@@ -0,0 +1,73 @@
+#!/bin/sh
+# Copyright 2006, 2007, 2008, 2009 Patrick J. Volkerding, Sebeka, MN, USA
+# All rights reserved.
+#
+# Redistribution and use of this script, with or without modification, is
+# permitted provided that the following conditions are met:
+#
+# 1. Redistributions of this script must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# 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.
+
+
+PKGNAM=aaa_elflibs
+VERSION=${VERSION:-13.0}
+ARCH=${ARCH:-x86_64}
+BUILD=${BUILD:-2}
+
+if [ "$ARCH" = "x86_64" ]; then
+ LIBDIRSUFFIX="64"
+else
+ LIBDIRSUFFIX=""
+fi
+
+CWD=$(pwd)
+TMP=${TMP:-/tmp}
+PKG=$TMP/package-${PKGNAM}
+rm -rf $PKG
+mkdir -p $TMP $PKG
+
+cd $PKG
+cat $CWD/symlinks-to-tracked-libs \
+ | sed -e "s#^/lib/#/lib${LIBDIRSUFFIX}/#" \
+ -e "s#^/usr/lib/#/usr/lib${LIBDIRSUFFIX}/#" \
+ | while read library ; do
+ ( [ ! -e $library ] && continue
+ echo "Adding $library"
+ mkdir -p $(dirname $library | cut -b2- )
+ cd $(dirname $library | cut -b2- )
+ rm -f $(basename $library)
+ cp -a $library .
+ rm -f $(readlink $library)
+ cp -a $(dirname $library)/$(readlink $library) .
+ )
+done
+cat $CWD/tracked-files \
+ | sed -e "s#^/lib/#/lib${LIBDIRSUFFIX}/#" \
+ -e "s#^/usr/lib/#/usr/lib${LIBDIRSUFFIX}/#" \
+ | while read library ; do
+ ( [ ! -e $library ] && continue
+ echo "Adding $library"
+ mkdir -p $(dirname $library | cut -b2- )
+ cd $(dirname $library | cut -b2- )
+ rm -f $(basename $library)
+ cp -a $library .
+ )
+done
+
+mkdir -p $PKG/install
+cat $CWD/slack-desc > $PKG/install/slack-desc
+
+cd $PKG
+/sbin/makepkg -l y -c n $TMP/${PKGNAM}-$VERSION-$ARCH-$BUILD.txz
+
diff --git a/source/a/aaa_elflibs/slack-desc b/source/a/aaa_elflibs/slack-desc
new file mode 100644
index 00000000..29a6c8fb
--- /dev/null
+++ b/source/a/aaa_elflibs/slack-desc
@@ -0,0 +1,19 @@
+# HOW TO EDIT THIS FILE:
+# The "handy ruler" below makes it easier to edit a package description. Line
+# up the first '|' above the ':' following the base package name, and the '|'
+# on the right side marks the last column you can put a character in. You must
+# make exactly 11 lines for the formatting to be correct. It's also
+# customary to leave one space after the ':'.
+
+ |-----handy-ruler------------------------------------------------------|
+aaa_elflibs: aaa_elflibs (shared libraries needed by many programs)
+aaa_elflibs:
+aaa_elflibs: This is a collection of shared libraries needed to run Linux programs.
+aaa_elflibs: ELF (Executable and Linking Format) is the standard Linux binary
+aaa_elflibs: format. These libraries are gathered from other Slackware packages
+aaa_elflibs: and are intended to give a fairly complete initial set of libraries.
+aaa_elflibs: This package should be not upgraded or reinstalled (it could copy
+aaa_elflibs: over newer library versions).
+aaa_elflibs:
+aaa_elflibs:
+aaa_elflibs:
diff --git a/source/a/aaa_elflibs/symlinks-to-tracked-libs b/source/a/aaa_elflibs/symlinks-to-tracked-libs
new file mode 100644
index 00000000..b8c2c758
--- /dev/null
+++ b/source/a/aaa_elflibs/symlinks-to-tracked-libs
@@ -0,0 +1,55 @@
+/lib/libacl.so.1
+/lib/libattr.so.1
+/lib/libbz2.so.1
+/lib/libbz2.so.1.0
+/lib/libcap.so.2
+/lib/libdm.so.0
+/lib/libfuse.so.2
+/lib/libgpm.so.1
+/lib/libncurses.so.5
+/lib/libncursesw.so.5
+/lib/libsysfs.so.2
+/lib/libtermcap.so.2
+/usr/lib/libasound.so.2
+/usr/lib/libcurl.so.2
+/usr/lib/libcurl.so.3
+/usr/lib/libcurl.so.4
+/usr/lib/libexpat.so.0
+/usr/lib/libexpat.so.1
+/usr/lib/libform.so.5
+/usr/lib/libformw.so.5
+/usr/lib/libfreetype.so.6
+/usr/lib/libgdbm.so.2
+/usr/lib/libgdbm.so.3
+/usr/lib/libglib-2.0.so.0
+/usr/lib/libgmodule-2.0.so.0
+/usr/lib/libgmp.so.3
+/usr/lib/libgmpxx.so.3
+/usr/lib/libgobject-2.0.so.0
+/usr/lib/libgthread-2.0.so.0
+/usr/lib/libhistory.so.4
+/usr/lib/libhistory.so.5
+/usr/lib/libidn.so.11
+/usr/lib/libjpeg.so.62
+/usr/lib/liblber-2.3.so.0
+/usr/lib/libldap-2.3.so.0
+/usr/lib/libmenu.so.5
+/usr/lib/libmenuw.so.5
+/usr/lib/libmm.so.14
+/usr/lib/libmp.so.3
+/usr/lib/libpanel.so.5
+/usr/lib/libpanelw.so.5
+/usr/lib/libpcre.so.0
+/usr/lib/libpcreposix.so.0
+/usr/lib/libpng.so.3
+/usr/lib/libpng12.so.0
+/usr/lib/libpopt.so.0
+/usr/lib/libreadline.so.4
+/usr/lib/libreadline.so.5
+/usr/lib/libslang.so.1
+/usr/lib/libslang.so.2
+/usr/lib/libtiff.so.3
+/usr/lib/libusb-0.1.so.4
+/usr/lib/libvga.so.1
+/usr/lib/libvgagl.so.1
+/usr/lib/libz.so.1
diff --git a/source/a/aaa_elflibs/tracked-files b/source/a/aaa_elflibs/tracked-files
new file mode 100644
index 00000000..16b731ba
--- /dev/null
+++ b/source/a/aaa_elflibs/tracked-files
@@ -0,0 +1,8 @@
+/lib/libdb-3.1.so
+/lib/libdb-3.3.so
+/lib/libdb-4.2.so
+/lib/libdb-4.4.so
+/lib/libdevmapper.so.1.02
+/usr/lib/libcups.so.2
+/usr/lib/libcupsimage.so.2
+/usr/lib/libgcc_s.so.1
diff --git a/source/a/aaa_terminfo/aaa_terminfo.SlackBuild b/source/a/aaa_terminfo/aaa_terminfo.SlackBuild
new file mode 100755
index 00000000..a1e7d288
--- /dev/null
+++ b/source/a/aaa_terminfo/aaa_terminfo.SlackBuild
@@ -0,0 +1,74 @@
+#!/bin/sh
+# Copyright 2006, 2007, 2009 Patrick J. Volkerding, Sebeka, MN, USA
+# All rights reserved.
+#
+# Redistribution and use of this script, with or without modification, is
+# permitted provided that the following conditions are met:
+#
+# 1. Redistributions of this script must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# 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.
+
+
+PKGNAM=aaa_terminfo
+# Note the version of ncurses in use:
+VERSION=${VERSION:-5.7}
+ARCH=${ARCH:-noarch}
+BUILD=${BUILD:-1}
+
+if [ "$ARCH" = "x86_64" ]; then
+ LIBDIRSUFFIX="64"
+else
+ LIBDIRSUFFIX=""
+fi
+
+CWD=$(pwd)
+TMP=${TMP:-/tmp}
+PKG=$TMP/package-${PKGNAM}
+rm -rf $PKG
+mkdir -p $TMP $PKG
+
+# Best do this on a machine with the terminfo
+# updated already. ;-)
+cd $PKG
+
+# I wonder if anything still looks here?
+mkdir -p usr/lib${LIBDIRSUFFIX}
+( cd usr/lib${LIBDIRSUFFIX}
+ rm -rf terminfo
+ ln -sf /usr/share/terminfo terminfo
+)
+
+# This has been the tradition starter collection since forever.
+for dir in l n u v x ; do
+ mkdir -p usr/share/terminfo/$dir
+ ( cd usr/share/terminfo/$dir
+ cp -a /usr/share/terminfo/$dir/* .
+ )
+done
+
+# Remove dangling symlinks:
+( cd usr/share/terminfo
+ for file in $(find . -type l) ; do
+ if [ "$(readlink -e $file)" = "" ]; then
+ rm --verbose $file
+ fi
+ done
+)
+
+mkdir -p $PKG/install
+cat $CWD/slack-desc > $PKG/install/slack-desc
+
+cd $TMP/package-${PKGNAM}
+/sbin/makepkg -l y -c n $TMP/${PKGNAM}-$VERSION-$ARCH-$BUILD.txz
+
diff --git a/source/a/aaa_terminfo/slack-desc b/source/a/aaa_terminfo/slack-desc
new file mode 100644
index 00000000..d393062f
--- /dev/null
+++ b/source/a/aaa_terminfo/slack-desc
@@ -0,0 +1,19 @@
+# HOW TO EDIT THIS FILE:
+# The "handy ruler" below makes it easier to edit a package description. Line
+# up the first '|' above the ':' following the base package name, and the '|' on
+# the right side marks the last column you can put a character in. You must make
+# exactly 11 lines for the formatting to be correct. It's also customary to
+# leave one space after the ':'.
+
+ |-----handy-ruler------------------------------------------------------|
+aaa_terminfo: aaa_terminfo (a basic collection of terminfo entries)
+aaa_terminfo:
+aaa_terminfo: This is a starter set of files from the terminfo database, which
+aaa_terminfo: should be enough in most cases. The complete set (from which this
+aaa_terminfo: is derived) can be found in the ncurses package.
+aaa_terminfo:
+aaa_terminfo: The terminfo database describes the characteristics of terminals, so
+aaa_terminfo: don't try to log in without this package. :-)
+aaa_terminfo:
+aaa_terminfo:
+aaa_terminfo:
diff --git a/source/a/acl/acl.SlackBuild b/source/a/acl/acl.SlackBuild
new file mode 100755
index 00000000..7ad70d04
--- /dev/null
+++ b/source/a/acl/acl.SlackBuild
@@ -0,0 +1,110 @@
+#!/bin/sh
+
+# Copyright 2005-2009 Patrick J. Volkerding, Sebeka, Minnesota, USA
+# All rights reserved.
+#
+# Redistribution and use of this script, with or without modification, is
+# permitted provided that the following conditions are met:
+#
+# 1. Redistributions of this script must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# 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.
+
+VERSION=2.2.47-1
+ARCH=${ARCH:-x86_64}
+BUILD=${BUILD:-1}
+
+CWD=$(pwd)
+TMP=${TMP:-/tmp}
+PKG=$TMP/package-acl
+
+if [ "$ARCH" = "x86_64" ]; then
+ LIBDIRSUFFIX="64"
+else
+ LIBDIRSUFFIX=""
+fi
+
+rm -rf $PKG
+mkdir -p $TMP $PKG
+
+cd $TMP
+
+rm -rf acl-$(echo $VERSION | cut -f 1 -d '-')
+tar xzvf $CWD/acl_$VERSION.tar.gz
+cd acl-$(echo $VERSION | cut -f 1 -d '-')
+
+chown -R root:root .
+find . \
+ \( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \
+ -exec chmod 755 {} \; -o \
+ \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
+ -exec chmod 644 {} \;
+
+# Add DESTDIR support and improve docs install location:
+zcat $CWD/acl.destdir.diff.gz | patch -p1 --verbose --backup --suffix=.orig || exit
+
+# Make sure you have the same version of autoconf as the
+# developers did... ;-)
+autoconf
+
+./configure \
+ --prefix=/ \
+ --exec-prefix=/ \
+ --sbindir=/bin \
+ --bindir=/usr/bin \
+ --libdir=/lib${LIBDIRSUFFIX} \
+ --libexecdir=/usr/lib${LIBDIRSUFFIX} \
+ --includedir=/usr/include \
+ --mandir=/usr/man \
+ --datadir=/usr/share
+
+make || exit 1
+make install DESTDIR=$PKG
+make install-dev DESTDIR=$PKG
+make install-lib DESTDIR=$PKG
+
+mv $PKG/usr/share/doc $PKG/usr
+( cd $PKG/usr/doc ; mv acl acl-$VERSION )
+#It would be nice to keep the same timestamps that the files have in the source:
+cp -a \
+ README doc/COPYING doc/PORTING \
+ $PKG/usr/doc/acl-$VERSION
+
+( cd $PKG
+ find . | xargs file | grep "executable" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
+ find . | xargs file | grep "shared object" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
+)
+strip -g $PKG/usr/lib${LIBDIRSUFFIX}/*.a
+
+# Remove bogus files:
+rm -f $PKG/lib${LIBDIRSUFFIX}/*.a $PKG/lib${LIBDIRSUFFIX}/libacl.so $PKG/lib${LIBDIRSUFFIX}/*.la $PKG/usr/lib${LIBDIRSUFFIX}/*.la
+# Make /usr/lib${LIBDIRSUFFIX}/libacl.so a symlink to /lib${LIBDIRSUFFIX}:
+( cd $PKG/usr/lib${LIBDIRSUFFIX}
+ rm -f libacl.so
+ ln -sf /lib${LIBDIRSUFFIX}/libacl.so.1 libacl.so
+)
+# Fix shared library perms:
+chmod 755 $PKG/lib${LIBDIRSUFFIX}/*
+
+# Gzip the man pages:
+( cd $PKG/usr/man
+ for i in `find . -type l` ; do ln -s $( readlink $i ).gz $i.gz ; rm $i ; done
+ gzip -9 */*.?
+)
+
+mkdir -p $PKG/install
+cat $CWD/slack-desc > $PKG/install/slack-desc
+
+cd $PKG
+makepkg -l y -c n $TMP/acl-$(echo $VERSION | tr - _ )-$ARCH-$BUILD.txz
+
diff --git a/source/a/acl/acl.destdir.diff b/source/a/acl/acl.destdir.diff
new file mode 100644
index 00000000..df284724
--- /dev/null
+++ b/source/a/acl/acl.destdir.diff
@@ -0,0 +1,36 @@
+--- ./include/buildmacros.orig 2007-09-10 21:00:47.000000000 -0500
++++ ./include/buildmacros 2008-03-31 23:58:16.000000000 -0500
+@@ -27,7 +27,7 @@
+ $(LFILES:.l=.o) \
+ $(YFILES:%.y=%.tab.o)
+
+-INSTALL = $(TOPDIR)/install-sh -o $(PKG_USER) -g $(PKG_GROUP)
++INSTALL = $(TOPDIR)/install-sh
+
+ SHELL = /bin/sh
+ IMAGES_DIR = $(TOPDIR)/all-images
+--- ./include/builddefs.in.orig 2007-09-10 21:00:47.000000000 -0500
++++ ./include/builddefs.in 2008-03-31 23:58:16.000000000 -0500
+@@ -27,14 +27,14 @@
+ PKG_VERSION = @pkg_version@
+ PKG_PLATFORM = @pkg_platform@
+ PKG_DISTRIBUTION= @pkg_distribution@
+-PKG_BIN_DIR = @bindir@
+-PKG_SBIN_DIR = @sbindir@
+-PKG_LIB_DIR = @libdir@@libdirsuffix@
+-PKG_DEVLIB_DIR = @libexecdir@@libdirsuffix@
+-PKG_INC_DIR = @includedir@
+-PKG_MAN_DIR = @mandir@
+-PKG_DOC_DIR = @datadir@/doc/@pkg_name@
+-PKG_LOCALE_DIR = @datadir@/locale
++PKG_BIN_DIR = $(DESTDIR)@bindir@
++PKG_SBIN_DIR = $(DESTDIR)@sbindir@
++PKG_LIB_DIR = $(DESTDIR)@libdir@@libdirsuffix@
++PKG_DEVLIB_DIR = $(DESTDIR)@libexecdir@@libdirsuffix@
++PKG_INC_DIR = $(DESTDIR)@includedir@
++PKG_MAN_DIR = $(DESTDIR)@mandir@
++PKG_DOC_DIR = $(DESTDIR)@datadir@/doc/@pkg_name@
++PKG_LOCALE_DIR = $(DESTDIR)@datadir@/locale
+
+ CC = @cc@
+ AWK = @awk@
diff --git a/source/a/acl/slack-desc b/source/a/acl/slack-desc
new file mode 100644
index 00000000..9609c585
--- /dev/null
+++ b/source/a/acl/slack-desc
@@ -0,0 +1,19 @@
+# HOW TO EDIT THIS FILE:
+# The "handy ruler" below makes it easier to edit a package description. Line
+# up the first '|' above the ':' following the base package name, and the '|' on
+# the right side marks the last column you can put a character in. You must make
+# exactly 11 lines for the formatting to be correct. It's also customary to
+# leave one space after the ':'.
+
+ |-----handy-ruler------------------------------------------------------|
+acl: acl (tools for using POSIX Access Control Lists)
+acl:
+acl: This package contains a set of tools and libraries for manipulating
+acl: POSIX Access Control Lists. POSIX Access Control Lists (defined in
+acl: POSIX 1003.1e draft standard 17) are used to define more fine-grained
+acl: discretionary access rights for files and directories.
+acl:
+acl:
+acl:
+acl:
+acl:
diff --git a/source/a/acpid/acpi_handler.sh b/source/a/acpid/acpi_handler.sh
new file mode 100644
index 00000000..386fa8d0
--- /dev/null
+++ b/source/a/acpid/acpi_handler.sh
@@ -0,0 +1,19 @@
+#!/bin/sh
+# Default acpi script that takes an entry for all actions
+
+IFS=${IFS}/
+set $@
+
+case "$1" in
+ button)
+ case "$2" in
+ power) /sbin/init 0
+ ;;
+ *) logger "ACPI action $2 is not defined"
+ ;;
+ esac
+ ;;
+ *)
+ logger "ACPI group $1 / action $2 is not defined"
+ ;;
+esac
diff --git a/source/a/acpid/acpid.SlackBuild b/source/a/acpid/acpid.SlackBuild
new file mode 100755
index 00000000..3010e013
--- /dev/null
+++ b/source/a/acpid/acpid.SlackBuild
@@ -0,0 +1,74 @@
+#!/bin/sh
+
+# Copyright 2009 Patrick J. Volkerding, Sebeka, MN, USA
+# All rights reserved.
+#
+# Redistribution and use of this script, with or without modification, is
+# permitted provided that the following conditions are met:
+#
+# 1. Redistributions of this script must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# 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.
+
+VERSION=1.0.8
+ARCH=${ARCH:-x86_64}
+BUILD=${BUILD:-2}
+
+CWD=$(pwd)
+TMP=${TMP:-/tmp}
+PKG=$TMP/package-acpid
+
+rm -rf $PKG
+mkdir -p $TMP $PKG
+
+cd $TMP
+rm -rf acpid-$VERSION
+tar xvf $CWD/acpid-$VERSION.tar.?z* || exit 1
+cd acpid-$VERSION || exit 1
+chown -R root:root .
+find . \
+ \( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \
+ -exec chmod 755 {} \; -o \
+ \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
+ -exec chmod 644 {} \;
+
+make || exit 1
+strip acpid acpi_listen
+mkdir -p $PKG/usr/sbin
+cat acpid > $PKG/usr/sbin/acpid
+chmod 755 $PKG/usr/sbin/acpid
+mkdir -p $PKG/usr/bin
+cat acpi_listen > $PKG/usr/bin/acpi_listen
+chmod 755 $PKG/usr/bin/acpi_listen
+mkdir -p $PKG/usr/man/man8
+cat acpid.8 | gzip -9c > $PKG/usr/man/man8/acpid.8.gz
+cat acpi_listen.8 | gzip -9c > $PKG/usr/man/man8/acpi_listen.8.gz
+mkdir -p $PKG/usr/doc/acpid-$VERSION
+cp -a Changelog README \
+ $PKG/usr/doc/acpid-$VERSION
+cp -a samples $PKG/usr/doc/acpid-$VERSION
+mkdir -p $PKG/etc/acpi/events
+zcat $CWD/acpi_handler.sh.gz > $PKG/etc/acpi/acpi_handler.sh.new
+chmod 755 $PKG/etc/acpi/acpi_handler.sh.new
+zcat $CWD/default.gz > $PKG/etc/acpi/events/default
+mkdir -p $PKG/etc/rc.d
+zcat $CWD/rc.acpid.gz > $PKG/etc/rc.d/rc.acpid
+chmod 755 $PKG/etc/rc.d/rc.acpid
+mkdir -p $PKG/install
+cat $CWD/slack-desc > $PKG/install/slack-desc
+zcat $CWD/doinst.sh.gz > $PKG/install/doinst.sh
+
+# Build the package:
+cd $PKG
+/sbin/makepkg -l y -c n $TMP/acpid-$VERSION-$ARCH-$BUILD.txz
+
diff --git a/source/a/acpid/default b/source/a/acpid/default
new file mode 100644
index 00000000..db123390
--- /dev/null
+++ b/source/a/acpid/default
@@ -0,0 +1,18 @@
+# This is the ACPID default configuration, it takes all
+# events and passes them to /etc/acpi/default.sh for further
+# processing.
+
+# event keeps a regular expression matching the event. To get
+# power events only, just use something like "event=button power.*"
+# to catch it.
+# action keeps the command to be executed after an event occurs
+# In case of the power event above, your entry may look this way:
+#event=button power.*
+#action=/sbin/init 0
+
+# Optionally you can specify the placeholder %e. It will pass
+# through the whole kernel event message to the program you've
+# specified.
+
+event=.*
+action=/etc/acpi/acpi_handler.sh %e
diff --git a/source/a/acpid/doinst.sh b/source/a/acpid/doinst.sh
new file mode 100644
index 00000000..c090b9fe
--- /dev/null
+++ b/source/a/acpid/doinst.sh
@@ -0,0 +1,13 @@
+#!/bin/sh
+config() {
+ NEW="$1"
+ OLD="`dirname $NEW`/`basename $NEW .new`"
+ # If there's no config file by that name, mv it over:
+ if [ ! -r $OLD ]; then
+ mv $NEW $OLD
+ elif [ "`cat $OLD | md5sum`" = "`cat $NEW | md5sum`" ]; then # toss the redundant copy
+ rm $NEW
+ fi
+ # Otherwise, we leave the .new copy for the admin to consider...
+}
+config etc/acpi/acpi_handler.sh.new
diff --git a/source/a/acpid/rc.acpid b/source/a/acpid/rc.acpid
new file mode 100644
index 00000000..32486d17
--- /dev/null
+++ b/source/a/acpid/rc.acpid
@@ -0,0 +1,36 @@
+#!/bin/sh
+# Start/stop/restart acpid.
+
+# Start acpid:
+acpid_start() {
+ if [ -x /usr/sbin/acpid -a -d /proc/acpi ]; then
+ echo "Starting ACPI daemon: /usr/sbin/acpid"
+ /usr/sbin/acpid
+ fi
+}
+
+# Stop acpid:
+acpid_stop() {
+ killall acpid
+}
+
+# Restart acpid:
+acpid_restart() {
+ acpid_stop
+ sleep 1
+ acpid_start
+}
+
+case "$1" in
+'start')
+ acpid_start
+ ;;
+'stop')
+ acpid_stop
+ ;;
+'restart')
+ acpid_restart
+ ;;
+*)
+ echo "usage $0 start|stop|restart"
+esac
diff --git a/source/a/acpid/slack-desc b/source/a/acpid/slack-desc
new file mode 100644
index 00000000..b72ac8e6
--- /dev/null
+++ b/source/a/acpid/slack-desc
@@ -0,0 +1,19 @@
+# HOW TO EDIT THIS FILE:
+# The "handy ruler" below makes it easier to edit a package description. Line
+# up the first '|' above the ':' following the base package name, and the '|' on
+# the right side marks the last column you can put a character in. You must make
+# exactly 11 lines for the formatting to be correct. It's also customary to
+# leave one space after the ':'.
+
+ |-----handy-ruler------------------------------------------------------|
+acpid: acpid (ACPI daemon)
+acpid:
+acpid: Most modern computers support the Advanced Configuration and Power
+acpid: Interface (ACPI) standard to allow intelligent power management.
+acpid: This package contains acpid, which is the user-space daemon needed in
+acpid: order to make the Linux ACPI support completely functional.
+acpid:
+acpid: ACPI must be compiled into the kernel to run acpid.
+acpid:
+acpid:
+acpid:
diff --git a/source/a/apmd/apmd.SlackBuild b/source/a/apmd/apmd.SlackBuild
new file mode 100755
index 00000000..13e47273
--- /dev/null
+++ b/source/a/apmd/apmd.SlackBuild
@@ -0,0 +1,100 @@
+#!/bin/sh
+
+# Copyright 2008, 2009 Patrick J. Volkerding, Sebeka, Minnesota, USA
+# All rights reserved.
+#
+# Redistribution and use of this script, with or without modification, is
+# permitted provided that the following conditions are met:
+#
+# 1. Redistributions of this script must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# 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.
+
+VERSION=${VERSION:-3.2.2}
+ARCH=${ARCH:-x86_64}
+NUMJOBS=${NUMJOBS:-" -j7 "}
+BUILD=${BUILD:-2}
+
+CWD=$(pwd)
+TMP=${TMP:-/tmp}
+PKG=$TMP/package-apmd
+
+if [ "$ARCH" = "i486" ]; then
+ SLKCFLAGS="-O2 -march=i486 -mtune=i686"
+elif [ "$ARCH" = "s390" ]; then
+ SLKCFLAGS="-O2"
+elif [ "$ARCH" = "x86_64" ]; then
+ SLKCFLAGS="-O2 -fPIC"
+fi
+
+rm -rf $PKG
+mkdir -p $TMP $PKG
+
+cd $TMP
+rm -rf apmd-$VERSION
+tar xvf $CWD/apmd-$VERSION.tar.bz2 || exit 1
+cd apmd-$VERSION
+
+if [ "$ARCH" = "x86_64" ]; then
+ sed -i -e "s#/lib#/lib64#" Makefile
+fi
+
+chown -R root:root .
+find . \
+ \( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \
+ -exec chmod 755 {} \; -o \
+ \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
+ -exec chmod 644 {} \;
+
+CFLAGS="$SLKCFLAGS" make $NUMJOBS || exit 1
+CFLAGS="$SLKCFLAGS" make install DESTDIR=$PKG
+
+( cd xbattery
+ cp ../.libs/libapm.a ..
+ xmkmf
+ make -j3
+)
+
+mkdir -p $PKG/usr/bin
+cat xapm > $PKG/usr/bin/xapm
+cat xbattery/xbattery > $PKG/usr/bin/xbattery
+chmod 755 $PKG/usr/bin/{xapm,xbattery}
+
+( cd $PKG
+ find . | xargs file | grep "executable" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
+ find . | xargs file | grep "shared object" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
+)
+
+mkdir -p $PKG/usr/man/man1
+cat xbattery/xbattery.man | gzip -9c > $PKG/usr/man/man1/xbattery.1.gz
+for page in apm.1 apmsleep.1 on_ac_power.1 xapm.1 ; do
+ cat $page | gzip -9c > $PKG/usr/man/man1/${page}.gz
+done
+mkdir -p $PKG/usr/man/man8
+cat apmd.8 | gzip -9c > $PKG/usr/man/man8/apmd.8.gz
+mkdir -p $PKG/usr/man/fr/man1
+cat apmsleep.fr.1 | gzip -9c > $PKG/usr/man/fr/man1/apmsleep.1.gz
+
+mkdir -p $PKG/usr/doc/apmd-$VERSION
+cp -a \
+ AUTHORS COPYING LSM README apmlib.COPYING apmsleep.README \
+ $PKG/usr/doc/apmd-$VERSION
+cp -a xbattery/README $PKG/usr/doc/apmd-$VERSION/README.xbattery
+
+mkdir -p $PKG/install
+cat $CWD/slack-desc > $PKG/install/slack-desc
+
+# Build the package:
+cd $PKG
+makepkg -c n -l y $TMP/apmd-$VERSION-$ARCH-$BUILD.txz
+
diff --git a/source/a/apmd/slack-desc b/source/a/apmd/slack-desc
new file mode 100644
index 00000000..a6f5c9a6
--- /dev/null
+++ b/source/a/apmd/slack-desc
@@ -0,0 +1,19 @@
+# HOW TO EDIT THIS FILE:
+# The "handy ruler" below makes it easier to edit a package description. Line
+# up the first '|' above the ':' following the base package name, and the '|' on
+# the right side marks the last column you can put a character in. You must make
+# exactly 11 lines for the formatting to be correct. It's also customary to
+# leave one space after the ':'.
+
+ |-----handy-ruler------------------------------------------------------|
+apmd: apmd (Advanced Power Management daemon)
+apmd:
+apmd: apmd is an APM monitoring daemon, and works in conjunction with the
+apmd: APM BIOS driver in the kernel. Apmd (and the included tools) handle
+apmd: tasks such as automatically putting a laptop into suspend when the
+apmd: power level drop below a certain point. This package also includes
+apmd: the graphical power management tools xapm and xbattery.
+apmd:
+apmd: The apmd tools were written by Rik Faith and are maintained by
+apmd: Avery Pennarun. xbattery was written by Nathan Sidwell.
+apmd:
diff --git a/source/a/attr/attr.SlackBuild b/source/a/attr/attr.SlackBuild
new file mode 100755
index 00000000..9c16a8d6
--- /dev/null
+++ b/source/a/attr/attr.SlackBuild
@@ -0,0 +1,104 @@
+#!/bin/sh
+
+# Copyright 2005-2008, 2009 Patrick J. Volkerding, Sebeka, Minnesota, USA
+# All rights reserved.
+#
+# Redistribution and use of this script, with or without modification, is
+# permitted provided that the following conditions are met:
+#
+# 1. Redistributions of this script must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# 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.
+
+VERSION=2.4.43-1
+ARCH=${ARCH:-x86_64}
+BUILD=${BUILD:-1}
+
+CWD=$(pwd)
+TMP=${TMP:-/tmp}
+PKG=$TMP/package-attr
+
+if [ "$ARCH" = "x86_64" ]; then
+ LIBDIRSUFFIX="64"
+else
+ LIBDIRSUFFIX=""
+fi
+
+rm -rf $PKG
+mkdir -p $TMP $PKG
+
+cd $TMP
+rm -rf attr-$(echo $VERSION | cut -f 1 -d '-')
+tar xzvf $CWD/attr_$VERSION.tar.gz
+cd attr-$(echo $VERSION | cut -f 1 -d '-')
+chown -R root:root .
+find . \
+ \( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \
+ -exec chmod 755 {} \; -o \
+ \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
+ -exec chmod 644 {} \;
+
+# Add DESTDIR support and improve docs install location:
+zcat $CWD/attr.destdir.diff.gz | patch -p1 --verbose --backup --suffix=.orig || exit 1
+
+# The 1/2 assed job has begun... the onus of running autoconf should never
+# be placed on packagers. They may not have the same autotools versions.
+autoconf
+
+./configure \
+ --prefix=/ \
+ --exec-prefix=/ \
+ --sbindir=/bin \
+ --bindir=/usr/bin \
+ --libdir=/lib${LIBDIRSUFFIX} \
+ --libexecdir=/usr/lib${LIBDIRSUFFIX} \
+ --includedir=/usr/include \
+ --mandir=/usr/man \
+ --datadir=/usr/share
+
+make || exit 1
+make install DESTDIR=$PKG
+make install-dev DESTDIR=$PKG
+make install-lib DESTDIR=$PKG
+
+mv $PKG/usr/share/doc $PKG/usr
+( cd $PKG/usr/doc ; mv attr attr-$VERSION )
+#It would be nice to keep the same timestamps that the files have in the source:
+rm -rf $PKG/usr/doc/attr-$VERSION/ea-conv
+cp -a \
+ README doc/COPYING doc/PORTING doc/ea-conv \
+ $PKG/usr/doc/attr-$VERSION
+
+find $PKG | xargs file | grep -e "executable" -e "shared object" \
+ | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
+strip -g $PKG/usr/lib${LIBDIRSUFFIX}/*.a
+
+# Remove bogus files:
+rm -f $PKG/lib${LIBDIRSUFFIX}/*.a $PKG/lib${LIBDIRSUFFIX}/libattr.so $PKG/lib${LIBDIRSUFFIX}/*.la $PKG/usr/lib${LIBDIRSUFFIX}/*.la
+# Make /usr/lib${LIBDIRSUFFIX}/libattr.so a symlink to /lib${LIBDIRSUFFIX}:
+( cd $PKG/usr/lib${LIBDIRSUFFIX} ; rm -f libattr.so ; ln -sf /lib${LIBDIRSUFFIX}/libattr.so.1 libattr.so )
+# Fix shared library perms:
+chmod 755 $PKG/lib${LIBDIRSUFFIX}/*
+
+# Gzip the man pages:
+( cd $PKG/usr/man
+ for i in `find . -type l` ; do ln -s $( readlink $i ).gz $i.gz ; rm $i ; done
+ gzip -9 */*.?
+)
+
+mkdir -p $PKG/install
+cat $CWD/slack-desc > $PKG/install/slack-desc
+
+cd $PKG
+/sbin/makepkg -l y -c n $TMP/attr-$(echo $VERSION | tr - _ )-$ARCH-$BUILD.txz
+
diff --git a/source/a/attr/attr.destdir.diff b/source/a/attr/attr.destdir.diff
new file mode 100644
index 00000000..ced69eef
--- /dev/null
+++ b/source/a/attr/attr.destdir.diff
@@ -0,0 +1,36 @@
+--- ./include/buildmacros.orig 2007-09-10 21:00:49.000000000 -0500
++++ ./include/buildmacros 2008-03-31 23:54:02.000000000 -0500
+@@ -27,7 +27,7 @@
+ $(LFILES:.l=.o) \
+ $(YFILES:%.y=%.tab.o)
+
+-INSTALL = $(TOPDIR)/install-sh -o $(PKG_USER) -g $(PKG_GROUP)
++INSTALL = $(TOPDIR)/install-sh
+
+ SHELL = /bin/sh
+ IMAGES_DIR = $(TOPDIR)/all-images
+--- ./include/builddefs.in.orig 2007-09-10 21:00:49.000000000 -0500
++++ ./include/builddefs.in 2008-03-31 23:54:02.000000000 -0500
+@@ -27,14 +27,14 @@
+ PKG_VERSION = @pkg_version@
+ PKG_PLATFORM = @pkg_platform@
+ PKG_DISTRIBUTION= @pkg_distribution@
+-PKG_BIN_DIR = @bindir@
+-PKG_SBIN_DIR = @sbindir@
+-PKG_LIB_DIR = @libdir@@libdirsuffix@
+-PKG_DEVLIB_DIR = @libexecdir@@libdirsuffix@
+-PKG_INC_DIR = @includedir@/attr
+-PKG_MAN_DIR = @mandir@
+-PKG_DOC_DIR = @datadir@/doc/@pkg_name@
+-PKG_LOCALE_DIR = @datadir@/locale
++PKG_BIN_DIR = $(DESTDIR)@bindir@
++PKG_SBIN_DIR = $(DESTDIR)@sbindir@
++PKG_LIB_DIR = $(DESTDIR)@libdir@@libdirsuffix@
++PKG_DEVLIB_DIR = $(DESTDIR)@libexecdir@@libdirsuffix@
++PKG_INC_DIR = $(DESTDIR)@includedir@/attr
++PKG_MAN_DIR = $(DESTDIR)@mandir@
++PKG_DOC_DIR = $(DESTDIR)@datadir@/doc/@pkg_name@
++PKG_LOCALE_DIR = $(DESTDIR)@datadir@/locale
+
+ CC = @cc@
+ AWK = @awk@
diff --git a/source/a/attr/build b/source/a/attr/build
new file mode 100644
index 00000000..52b6039a
--- /dev/null
+++ b/source/a/attr/build
@@ -0,0 +1,7 @@
+I think I used this build order... -P.
+
+1. attr
+2. acl
+3. xfsprogs
+4. dmapi
+5. xfsdump
diff --git a/source/a/attr/slack-desc b/source/a/attr/slack-desc
new file mode 100644
index 00000000..e9220f2f
--- /dev/null
+++ b/source/a/attr/slack-desc
@@ -0,0 +1,19 @@
+# HOW TO EDIT THIS FILE:
+# The "handy ruler" below makes it easier to edit a package description. Line
+# up the first '|' above the ':' following the base package name, and the '|' on
+# the right side marks the last column you can put a character in. You must make
+# exactly 11 lines for the formatting to be correct. It's also customary to
+# leave one space after the ':'.
+
+ |-----handy-ruler------------------------------------------------------|
+attr: attr (tools for using extended attributes on filesystems)
+attr:
+attr: This package contains a set of tools for manipulating extended
+attr: attributes (name:value pairs associated permanently with files and
+attr: directories) on filesystem objects, and the library and header files
+attr: needed to develop programs which make use of extended attributes.
+attr: Extended attributes are used to provide additional functionality to
+attr: a filesystem. For example, Access Control Lists (ACLs) are
+attr: implemented using extended attributes.
+attr:
+attr:
diff --git a/source/a/bash/bash.SlackBuild b/source/a/bash/bash.SlackBuild
new file mode 100755
index 00000000..04c8ff95
--- /dev/null
+++ b/source/a/bash/bash.SlackBuild
@@ -0,0 +1,97 @@
+#!/bin/sh
+
+# Copyright 2005-2009 Patrick J. Volkerding, Sebeka, Minnesota, USA
+# All rights reserved.
+#
+# Redistribution and use of this script, with or without modification, is
+# permitted provided that the following conditions are met:
+#
+# 1. Redistributions of this script must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# 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.
+
+VERSION=3.1
+ARCH=${ARCH:-x86_64}
+BUILD=${BUILD:-2}
+
+CWD=$(pwd)
+TMP=${TMP:-/tmp}
+PKG=$TMP/package-bash
+
+if [ "$ARCH" = "i386" ]; then
+ SLKCFLAGS="-O2 -march=i386 -mcpu=i686"
+elif [ "$ARCH" = "i486" ]; then
+ SLKCFLAGS="-O2 -march=i486 -mtune=i686"
+elif [ "$ARCH" = "s390" ]; then
+ SLKCFLAGS="-O2"
+elif [ "$ARCH" = "x86_64" ]; then
+ SLKCFLAGS="-O2 -fPIC"
+fi
+
+rm -rf $PKG
+mkdir -p $TMP $PKG
+
+# Determine bash patchlevel:
+PATCHLEVEL=`( cd $CWD/patches ; /bin/ls *gz | tail -1 | cut -f 2 -d - | cut -f 1 -d . 2> /dev/null )`
+if [ "$PATCHLEVEL" = "" ]; then
+ PATCHLEVEL=0
+fi
+
+cd $TMP
+rm -rf bash-$VERSION
+tar xzvf $CWD/bash-$VERSION.tar.gz || exit 1
+cd bash-$VERSION
+chown -R root:root .
+find . \
+ \( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \
+ -exec chmod 755 {} \; -o \
+ \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
+ -exec chmod 644 {} \;
+
+for patch in $CWD/patches/bash* ; do
+ zcat $patch | patch -p0 --verbose || exit 1
+done
+CFLAGS="$SLKCFLAGS" \
+./configure --prefix=/usr $ARCH-slackware-linux
+make -j3 || exit 1
+make install DESTDIR=$PKG
+mkdir -p $PKG/bin
+mv $PKG/usr/bin/bash $PKG/bin/bash2.new
+strip --strip-unneeded $PKG/bin/bash2.new
+# We don't include the "bashbug" script.
+rm -rf $PKG/usr/bin $PKG/usr/man/man1/bashbug.1
+gzip -9 $PKG/usr/man/man1/*
+mkdir -p $PKG/usr/doc/bash-$VERSION
+cp -a AUTHORS CHANGES COMPAT COPYING INSTALL MANIFEST NEWS NOTES \
+ README Y2K doc/FAQ doc/INTRO $PKG/usr/doc/bash-$VERSION
+cd doc
+groff -ms -Tascii article.ms > $PKG/usr/doc/bash-$VERSION/article.txt
+# bash.1 is already installed by "make install"
+for page in builtins.1 rbash.1 ; do
+ cat $page | gzip -9c > $PKG/usr/man/man1/$page.gz
+done
+rm -f $PKG/usr/info/dir
+gzip -9 $PKG/usr/info/*
+mkdir -p $PKG/install
+zcat $CWD/doinst.sh.gz > $PKG/install/doinst.sh
+cat $CWD/slack-desc > $PKG/install/slack-desc
+
+# Build the package:
+cd $PKG
+makepkg -l y -c n $TMP/bash-$VERSION.$PATCHLEVEL-$ARCH-$BUILD.txz
+
+# Clean up the extra stuff:
+if [ "$1" = "--cleanup" ]; then
+ rm -rf $TMP/bash-$VERSION
+ rm -rf $PKG
+fi
diff --git a/source/a/bash/doinst.sh b/source/a/bash/doinst.sh
new file mode 100644
index 00000000..21760838
--- /dev/null
+++ b/source/a/bash/doinst.sh
@@ -0,0 +1,18 @@
+if [ -r bin/bash ]; then
+ mv bin/bash bin/bash.old
+fi
+mv bin/bash2.new bin/bash
+if [ -f bin/bash.old ]; then
+ rm -f bin/bash.old
+fi
+if [ ! -r etc/shells ]; then
+ touch etc/shells
+ chmod 644 etc/shells
+fi
+if fgrep "/bin/bash" etc/shells 1> /dev/null 2> /dev/null ; then
+ true
+else
+ echo "/bin/bash" >> etc/shells
+fi
+( cd usr/bin ; rm -rf bash )
+( cd usr/bin ; ln -sf /bin/bash bash )
diff --git a/source/a/bash/patches/bash31-001 b/source/a/bash/patches/bash31-001
new file mode 100644
index 00000000..4a10a02c
--- /dev/null
+++ b/source/a/bash/patches/bash31-001
@@ -0,0 +1,104 @@
+ BASH PATCH REPORT
+ =================
+
+Bash-Release: 3.1
+Patch-ID: bash31-001
+
+Bug-Reported-by: Mike Frysinger <vapier@gentoo.org>
+Bug-Reference-ID: <20051212015924.GA820@toucan.gentoo.org> <20051214034438.GK1863@toucan.gentoo.org>
+Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2005-12/msg00030.html http://lists.gnu.org/archive/html/bug-bash/2005-12/msg00041.html
+
+Bug-Description:
+
+There are parsing problems with compound assignments in several contexts,
+including as arguments to builtins like `local', `eval', and `let', and
+as multiple assignments in a single command.
+
+Patch:
+
+*** ../bash-3.1/parse.y Fri Nov 11 23:14:18 2005
+--- parse.y Fri Dec 16 20:43:07 2005
+***************
+*** 3696,3700 ****
+ b = builtin_address_internal (token, 0);
+ if (b && (b->flags & ASSIGNMENT_BUILTIN))
+! parser_state |= PST_ASSIGNOK;
+ }
+
+--- 3696,3702 ----
+ b = builtin_address_internal (token, 0);
+ if (b && (b->flags & ASSIGNMENT_BUILTIN))
+! parser_state |= PST_ASSIGNOK;
+! else if (STREQ (token, "eval") || STREQ (token, "let"))
+! parser_state |= PST_ASSIGNOK;
+ }
+
+***************
+*** 4687,4691 ****
+ {
+ WORD_LIST *wl, *rl;
+! int tok, orig_line_number, orig_token_size;
+ char *saved_token, *ret;
+
+--- 4689,4693 ----
+ {
+ WORD_LIST *wl, *rl;
+! int tok, orig_line_number, orig_token_size, orig_last_token, assignok;
+ char *saved_token, *ret;
+
+***************
+*** 4693,4696 ****
+--- 4695,4699 ----
+ orig_token_size = token_buffer_size;
+ orig_line_number = line_number;
++ orig_last_token = last_read_token;
+
+ last_read_token = WORD; /* WORD to allow reserved words here */
+***************
+*** 4699,4702 ****
+--- 4702,4707 ----
+ token_buffer_size = 0;
+
++ assignok = parser_state&PST_ASSIGNOK; /* XXX */
++
+ wl = (WORD_LIST *)NULL; /* ( */
+ parser_state |= PST_COMPASSIGN;
+***************
+*** 4741,4745 ****
+ }
+
+! last_read_token = WORD;
+ if (wl)
+ {
+--- 4746,4750 ----
+ }
+
+! last_read_token = orig_last_token; /* XXX - was WORD? */
+ if (wl)
+ {
+***************
+*** 4753,4756 ****
+--- 4758,4765 ----
+ if (retlenp)
+ *retlenp = (ret && *ret) ? strlen (ret) : 0;
++
++ if (assignok)
++ parser_state |= PST_ASSIGNOK;
++
+ return ret;
+ }
+*** ../bash-3.1/patchlevel.h Wed Jul 20 13:58:20 2005
+--- patchlevel.h Wed Dec 7 13:48:42 2005
+***************
+*** 26,30 ****
+ looks for to find the patch level (for the sccs version string). */
+
+! #define PATCHLEVEL 0
+
+ #endif /* _PATCHLEVEL_H_ */
+--- 26,30 ----
+ looks for to find the patch level (for the sccs version string). */
+
+! #define PATCHLEVEL 1
+
+ #endif /* _PATCHLEVEL_H_ */
diff --git a/source/a/bash/patches/bash31-002 b/source/a/bash/patches/bash31-002
new file mode 100644
index 00000000..fac9a99a
--- /dev/null
+++ b/source/a/bash/patches/bash31-002
@@ -0,0 +1,239 @@
+ BASH PATCH REPORT
+ =================
+
+Bash-Release: 3.1
+Patch-ID: bash31-002
+
+Bug-Reported-by: vapier@gentoo.org
+Bug-Reference-ID: <20051210223218.GD3324@toucan.gentoo.org>
+Bug-Reference-URL:http://lists.gnu.org/archive/html/bug-bash/2005-12/msg00021.html
+
+Bug-Description:
+
+This corrects several omissions in the bash documentation: It adds the new
+options to `ulimit', the exact expansions for `case' patterns, clarification
+of the language concerning the return value of `[[', and updated version
+information.
+
+Patch:
+
+*** ../bash-3.1/doc/bash.1 Wed Oct 12 11:40:52 2005
+--- doc/bash.1 Wed Dec 28 19:58:54 2005
+***************
+*** 7,16 ****
+ .\" chet@po.cwru.edu
+ .\"
+! .\" Last Change: Sat Aug 27 13:28:44 EDT 2005
+ .\"
+ .\" bash_builtins, strip all but Built-Ins section
+ .if \n(zZ=1 .ig zZ
+ .if \n(zY=1 .ig zY
+! .TH BASH 1 "2005 Aug 27" "GNU Bash-3.1-beta1"
+ .\"
+ .\" There's some problem with having a `@'
+--- 7,16 ----
+ .\" chet@po.cwru.edu
+ .\"
+! .\" Last Change: Wed Dec 28 19:58:45 EST 2005
+ .\"
+ .\" bash_builtins, strip all but Built-Ins section
+ .if \n(zZ=1 .ig zZ
+ .if \n(zY=1 .ig zY
+! .TH BASH 1 "2005 Dec 28" "GNU Bash-3.1"
+ .\"
+ .\" There's some problem with having a `@'
+***************
+*** 678,683 ****
+ is enabled, the match is performed without regard to the case
+ of alphabetic characters.
+! 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.
+--- 678,683 ----
+ is enabled, the match is performed without regard to the case
+ of alphabetic characters.
+! The return value is 0 if the string matches (\fB==\fP) or does not match
+! (\fB!=\fP) the pattern, and 1 otherwise.
+ Any part of the pattern may be quoted to force it to be matched as a
+ string.
+***************
+*** 808,811 ****
+--- 808,817 ----
+ .B Pathname Expansion
+ below).
++ The \fIword\fP is expanded using tilde
++ expansion, parameter and variable expansion, arithmetic substituion,
++ command substitution, process substitution and quote removal.
++ Each \fIpattern\fP examined is expanded using tilde
++ expansion, parameter and variable expansion, arithmetic substituion,
++ command substitution, and process substitution.
+ If the shell option
+ .B nocasematch
+***************
+*** 8485,8489 ****
+ 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.
+--- 8485,8489 ----
+ none are found.
+ .TP
+! \fBulimit\fP [\fB\-SHacdfilmnpqstuvx\fP [\fIlimit\fP]]
+ Provides control over the resources available to the shell and to
+ processes started by it, on systems that allow such control.
+***************
+*** 8524,8527 ****
+--- 8524,8530 ----
+ The maximum size of files created by the shell
+ .TP
++ .B \-i
++ The maximum number of pending signals
++ .TP
+ .B \-l
+ The maximum size that may be locked into memory
+***************
+*** 8537,8540 ****
+--- 8540,8546 ----
+ The pipe size in 512-byte blocks (this may not be set)
+ .TP
++ .B \-q
++ The maximum number of bytes in POSIX message queues
++ .TP
+ .B \-s
+ The maximum stack size
+***************
+*** 8548,8551 ****
+--- 8554,8560 ----
+ .B \-v
+ The maximum amount of virtual memory available to the shell
++ .TP
++ .B \-x
++ The maximum number of file locks
+ .PD
+ .PP
+*** ../bash-3.1/doc/bashref.texi Mon Oct 3 15:07:21 2005
+--- doc/bashref.texi Fri Dec 30 10:50:39 2005
+***************
+*** 962,967 ****
+ is enabled, the match is performed without regard to the case
+ of alphabetic characters.
+! 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.
+--- 962,967 ----
+ is enabled, the match is performed without regard to the case
+ of alphabetic characters.
+! The return value is 0 if the string matches (@samp{==}) or does not
+! match (@samp{!=})the pattern, and 1 otherwise.
+ Any part of the pattern may be quoted to force it to be matched as a
+ string.
+***************
+*** 2599,2603 ****
+ or inconvenient to obtain with separate utilities.
+
+! This section briefly the builtins which Bash inherits from
+ the Bourne Shell, as well as the builtin commands which are unique
+ to or have been extended in Bash.
+--- 2597,2601 ----
+ or inconvenient to obtain with separate utilities.
+
+! This section briefly describes the builtins which Bash inherits from
+ the Bourne Shell, as well as the builtin commands which are unique
+ to or have been extended in Bash.
+***************
+*** 3834,3838 ****
+ @btindex ulimit
+ @example
+! ulimit [-acdflmnpstuvSH] [@var{limit}]
+ @end example
+ @code{ulimit} provides control over the resources available to processes
+--- 3834,3838 ----
+ @btindex ulimit
+ @example
+! ulimit [-acdfilmnpqstuvxSH] [@var{limit}]
+ @end example
+ @code{ulimit} provides control over the resources available to processes
+***************
+*** 3858,3861 ****
+--- 3858,3864 ----
+ The maximum size of files created by the shell.
+
++ @item -i
++ The maximum number of pending signals.
++
+ @item -l
+ The maximum size that may be locked into memory.
+***************
+*** 3870,3873 ****
+--- 3873,3879 ----
+ The pipe buffer size.
+
++ @item -q
++ The maximum number of bytes in POSIX message queues.
++
+ @item -s
+ The maximum stack size.
+***************
+*** 3882,3885 ****
+--- 3888,3894 ----
+ The maximum amount of virtual memory available to the process.
+
++ @item -x
++ The maximum number of file locks.
++
+ @end table
+
+***************
+*** 4090,4095 ****
+
+ @item -x
+! Print a trace of simple commands, \fBfor\fP commands, \fBcase\fP
+! commands, \fBselect\fP commands, and arithmetic \fBfor\fP commands
+ and their arguments or associated word lists after they are
+ expanded and before they are executed. The value of the @env{PS4}
+--- 4103,4108 ----
+
+ @item -x
+! Print a trace of simple commands, @code{for} commands, @code{case}
+! commands, @code{select} commands, and arithmetic @code{for} commands
+ and their arguments or associated word lists after they are
+ expanded and before they are executed. The value of the @env{PS4}
+*** ../bash-3.1/doc/version.texi Tue Sep 20 14:52:56 2005
+--- doc/version.texi Fri Dec 30 10:50:58 2005
+***************
+*** 3,10 ****
+ @end ignore
+
+! @set LASTCHANGE Mon Sep 5 11:47:04 EDT 2005
+
+! @set EDITION 3.1-beta1
+! @set VERSION 3.1-beta1
+! @set UPDATED 5 September 2005
+! @set UPDATED-MONTH September 2005
+--- 3,10 ----
+ @end ignore
+
+! @set LASTCHANGE Fri Dec 30 10:50:51 EST 2005
+
+! @set EDITION 3.1
+! @set VERSION 3.1
+! @set UPDATED 30 December 2005
+! @set UPDATED-MONTH December 2005
+*** ../bash-3.1/patchlevel.h Wed Jul 20 13:58:20 2005
+--- patchlevel.h Wed Dec 7 13:48:42 2005
+***************
+*** 26,30 ****
+ looks for to find the patch level (for the sccs version string). */
+
+! #define PATCHLEVEL 1
+
+ #endif /* _PATCHLEVEL_H_ */
+--- 26,30 ----
+ looks for to find the patch level (for the sccs version string). */
+
+! #define PATCHLEVEL 2
+
+ #endif /* _PATCHLEVEL_H_ */
diff --git a/source/a/bash/patches/bash31-003 b/source/a/bash/patches/bash31-003
new file mode 100644
index 00000000..cd36dc83
--- /dev/null
+++ b/source/a/bash/patches/bash31-003
@@ -0,0 +1,47 @@
+ BASH PATCH REPORT
+ =================
+
+Bash-Release: 3.1
+Patch-ID: bash31-003
+
+Bug-Reported-by: Adam Buraczewski <adamb@nor.pl>
+Bug-Reference-ID: <200512210950.jBL9o4C2008608@localhost.localdomain>
+Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2005-12/msg00055.html
+
+Bug-Description:
+
+A missing #define guard causes bash to not compile when readline is not
+configured in, either as the result of explicit disabling or when the
+`--enable-minimal-config' option is given to configure.
+
+Patch:
+
+*** ../bash-3.1/variables.c Sat Nov 12 21:22:37 2005
+--- variables.c Mon Dec 26 13:34:03 2005
+***************
+*** 861,867 ****
+--- 863,871 ----
+ char val[INT_STRLEN_BOUND(int) + 1], *v;
+
++ #if defined (READLINE)
+ /* If we are currently assigning to LINES or COLUMNS, don't do anything. */
+ if (winsize_assignment)
+ return;
++ #endif
+
+ v = inttostr (lines, val, sizeof (val));
+*** ../bash-3.1/patchlevel.h Wed Jul 20 13:58:20 2005
+--- patchlevel.h Wed Dec 7 13:48:42 2005
+***************
+*** 26,30 ****
+ looks for to find the patch level (for the sccs version string). */
+
+! #define PATCHLEVEL 2
+
+ #endif /* _PATCHLEVEL_H_ */
+--- 26,30 ----
+ looks for to find the patch level (for the sccs version string). */
+
+! #define PATCHLEVEL 3
+
+ #endif /* _PATCHLEVEL_H_ */
diff --git a/source/a/bash/patches/bash31-004 b/source/a/bash/patches/bash31-004
new file mode 100644
index 00000000..4f9d578e
--- /dev/null
+++ b/source/a/bash/patches/bash31-004
@@ -0,0 +1,48 @@
+ BASH PATCH REPORT
+ =================
+
+Bash-Release: 3.1
+Patch-ID: bash31-004
+
+Bug-Reported-by: Mike Frysinger <vapier@gentoo.org>
+Bug-Reference-ID: <20051223172359.GF14579@toucan.gentoo.org>
+Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2005-12/msg00062.html
+
+Bug-Description:
+
+A local array variable declared at function scope that shadows a variable
+of the same name declared in a previous scope did not create a separate
+variable instance, but used the previous one.
+
+Patch:
+
+*** ../bash-3.1/subst.c Mon Oct 24 09:51:13 2005
+--- subst.c Fri Dec 30 12:11:53 2005
+***************
+*** 2188,2192 ****
+ {
+ v = find_variable (name);
+! if (v == 0 || array_p (v) == 0)
+ v = make_local_array_variable (name);
+ v = assign_array_var_from_string (v, value, flags);
+--- 2188,2192 ----
+ {
+ v = find_variable (name);
+! if (v == 0 || array_p (v) == 0 || v->context != variable_context)
+ v = make_local_array_variable (name);
+ v = assign_array_var_from_string (v, value, flags);
+*** ../bash-3.1/patchlevel.h Wed Jul 20 13:58:20 2005
+--- patchlevel.h Wed Dec 7 13:48:42 2005
+***************
+*** 26,30 ****
+ looks for to find the patch level (for the sccs version string). */
+
+! #define PATCHLEVEL 3
+
+ #endif /* _PATCHLEVEL_H_ */
+--- 26,30 ----
+ looks for to find the patch level (for the sccs version string). */
+
+! #define PATCHLEVEL 4
+
+ #endif /* _PATCHLEVEL_H_ */
diff --git a/source/a/bash/patches/bash31-005 b/source/a/bash/patches/bash31-005
new file mode 100644
index 00000000..b6d5cdca
--- /dev/null
+++ b/source/a/bash/patches/bash31-005
@@ -0,0 +1,54 @@
+ BASH PATCH REPORT
+ =================
+
+Bash-Release: 3.1
+Patch-ID: bash31-005
+
+Bug-Reported-by:
+Bug-Reference-ID:
+Bug-Reference-URL:
+
+Bug-Description:
+
+When tilde expansion fails, POSIX leaves it unspecified whether or not the
+word undergoes the additional word expansions. Bash-3.1 as distributed
+skipped the rest of the expansions; this patch restores the bash-3.0 behavior.
+
+This means that something like
+ USER=ratbert
+ echo ~$USER
+
+will echo `~ratbert' rather than `~$USER'.
+
+Patch:
+
+*** ../bash-3.1/subst.c Mon Oct 24 09:51:13 2005
+--- subst.c Fri Dec 30 12:11:53 2005
+***************
+*** 6796,6799 ****
+--- 6823,6832 ----
+ {
+ temp1 = bash_tilde_expand (temp, tflag);
++ if (temp1 && *temp1 == '~' && STREQ (temp, temp1))
++ {
++ FREE (temp);
++ FREE (temp1);
++ goto add_character; /* tilde expansion failed */
++ }
+ free (temp);
+ temp = temp1;
+*** ../bash-3.1/patchlevel.h Wed Jul 20 13:58:20 2005
+--- patchlevel.h Wed Dec 7 13:48:42 2005
+***************
+*** 26,30 ****
+ looks for to find the patch level (for the sccs version string). */
+
+! #define PATCHLEVEL 4
+
+ #endif /* _PATCHLEVEL_H_ */
+--- 26,30 ----
+ looks for to find the patch level (for the sccs version string). */
+
+! #define PATCHLEVEL 5
+
+ #endif /* _PATCHLEVEL_H_ */
diff --git a/source/a/bash/patches/bash31-006 b/source/a/bash/patches/bash31-006
new file mode 100644
index 00000000..8d749938
--- /dev/null
+++ b/source/a/bash/patches/bash31-006
@@ -0,0 +1,58 @@
+ BASH PATCH REPORT
+ =================
+
+Bash-Release: 3.1
+Patch-ID: bash31-006
+
+Bug-Reported-by: Mike Frysinger <vapier@gentoo.org>
+Bug-Reference-ID: <200601120613.11907.vapier@gentoo.org>
+Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2006-01/msg00045.html
+
+Bug-Description:
+
+Under some circumstances, Bash can use an incorrect setting for the flag
+that indicates whether or not the terminal can auto-wrap, resulting in line-
+wrapping errors.
+
+Patch:
+
+*** ../bash-3.1/lib/readline/terminal.c Sat Nov 12 20:46:54 2005
+--- lib/readline/terminal.c Tue Jan 31 10:57:54 2006
+***************
+*** 123,127 ****
+
+ /* Non-zero means the terminal can auto-wrap lines. */
+! int _rl_term_autowrap;
+
+ /* Non-zero means that this terminal has a meta key. */
+--- 126,130 ----
+
+ /* Non-zero means the terminal can auto-wrap lines. */
+! int _rl_term_autowrap = -1;
+
+ /* Non-zero means that this terminal has a meta key. */
+***************
+*** 275,278 ****
+--- 278,284 ----
+ int rows, cols;
+ {
++ if (_rl_term_autowrap == -1)
++ _rl_init_terminal_io (rl_terminal_name);
++
+ if (rows > 0)
+ _rl_screenheight = rows;
+*** ../bash-3.1/patchlevel.h Wed Jul 20 13:58:20 2005
+--- patchlevel.h Wed Dec 7 13:48:42 2005
+***************
+*** 26,30 ****
+ looks for to find the patch level (for the sccs version string). */
+
+! #define PATCHLEVEL 5
+
+ #endif /* _PATCHLEVEL_H_ */
+--- 26,30 ----
+ looks for to find the patch level (for the sccs version string). */
+
+! #define PATCHLEVEL 6
+
+ #endif /* _PATCHLEVEL_H_ */
diff --git a/source/a/bash/patches/bash31-007 b/source/a/bash/patches/bash31-007
new file mode 100644
index 00000000..6233786c
--- /dev/null
+++ b/source/a/bash/patches/bash31-007
@@ -0,0 +1,121 @@
+ BASH PATCH REPORT
+ =================
+
+Bash-Release: 3.1
+Patch-ID: bash31-007
+
+Bug-Reported-by: Tim Waugh <twaugh@redhat.com>, Laird Breyer <laird@lbreyer.com>
+Bug-Reference-ID: <20060105174434.GY16000@redhat.com>
+Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2006-01/msg00009.html
+ http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=347695
+
+Bug-Description:
+
+When the number of saved jobs exceeds the initial size of the jobs array
+(4096 slots), the array must be compacted and reallocated. An error in
+the code to do that could cause a segmentation fault.
+
+Patch:
+
+*** ../bash-3.1/jobs.c Fri Nov 11 23:13:27 2005
+--- jobs.c Wed Feb 1 13:55:38 2006
+***************
+*** 845,851 ****
+ {
+ sigset_t set, oset;
+! int nsize, i, j;
+ JOB **nlist;
+
+ nsize = ((js.j_njobs + JOB_SLOTS - 1) / JOB_SLOTS);
+ nsize *= JOB_SLOTS;
+--- 888,895 ----
+ {
+ sigset_t set, oset;
+! int nsize, i, j, ncur, nprev;
+ JOB **nlist;
+
++ ncur = nprev = NO_JOB;
+ nsize = ((js.j_njobs + JOB_SLOTS - 1) / JOB_SLOTS);
+ nsize *= JOB_SLOTS;
+***************
+*** 855,869 ****
+
+ BLOCK_CHILD (set, oset);
+! nlist = (JOB **) xmalloc (nsize * sizeof (JOB *));
+ for (i = j = 0; i < js.j_jobslots; i++)
+ if (jobs[i])
+! nlist[j++] = jobs[i];
+
+ js.j_firstj = 0;
+! js.j_lastj = (j > 0) ? j - 1: 0;
+ js.j_jobslots = nsize;
+
+! free (jobs);
+! jobs = nlist;
+
+ UNBLOCK_CHILD (oset);
+--- 899,947 ----
+
+ BLOCK_CHILD (set, oset);
+! nlist = (js.j_jobslots == nsize) ? jobs : (JOB **) xmalloc (nsize * sizeof (JOB *));
+!
+ for (i = j = 0; i < js.j_jobslots; i++)
+ if (jobs[i])
+! {
+! if (i == js.j_current)
+! ncur = j;
+! if (i == js.j_previous)
+! nprev = j;
+! nlist[j++] = jobs[i];
+! }
+!
+! #if defined (DEBUG)
+! itrace ("realloc_jobs_list: resize jobs list from %d to %d", js.j_jobslots, nsize);
+! itrace ("realloc_jobs_list: j_lastj changed from %d to %d", js.j_lastj, (j > 0) ? j - 1 : 0);
+! itrace ("realloc_jobs_list: j_njobs changed from %d to %d", js.j_njobs, (j > 0) ? j - 1 : 0);
+! #endif
+
+ js.j_firstj = 0;
+! js.j_lastj = (j > 0) ? j - 1 : 0;
+! js.j_njobs = j;
+ js.j_jobslots = nsize;
+
+! /* Zero out remaining slots in new jobs list */
+! for ( ; j < nsize; j++)
+! nlist[j] = (JOB *)NULL;
+!
+! if (jobs != nlist)
+! {
+! free (jobs);
+! jobs = nlist;
+! }
+!
+! if (ncur != NO_JOB)
+! js.j_current = ncur;
+! if (nprev != NO_JOB)
+! js.j_previous = nprev;
+!
+! /* Need to reset these */
+! if (js.j_current == NO_JOB || js.j_previous == NO_JOB || js.j_current > js.j_lastj || js.j_previous > js.j_lastj)
+! reset_current ();
+!
+! #ifdef DEBUG
+! itrace ("realloc_jobs_list: reset js.j_current (%d) and js.j_previous (%d)", js.j_current, js.j_previous);
+! #endif
+
+ UNBLOCK_CHILD (oset);
+*** ../bash-3.1/patchlevel.h Wed Jul 20 13:58:20 2005
+--- patchlevel.h Wed Dec 7 13:48:42 2005
+***************
+*** 26,30 ****
+ looks for to find the patch level (for the sccs version string). */
+
+! #define PATCHLEVEL 6
+
+ #endif /* _PATCHLEVEL_H_ */
+--- 26,30 ----
+ looks for to find the patch level (for the sccs version string). */
+
+! #define PATCHLEVEL 7
+
+ #endif /* _PATCHLEVEL_H_ */
diff --git a/source/a/bash/patches/bash31-008 b/source/a/bash/patches/bash31-008
new file mode 100644
index 00000000..3427b64e
--- /dev/null
+++ b/source/a/bash/patches/bash31-008
@@ -0,0 +1,51 @@
+ BASH PATCH REPORT
+ =================
+
+Bash-Release: 3.1
+Patch-ID: bash31-008
+
+Bug-Reported-by: Ingemar Nilsson <init@kth.se>
+Bug-Reference-ID: <43C38D35.7020404@kth.se>
+Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2006-01/msg00044.html
+
+Bug-Description:
+
+In some cases, bash inappropriately allows SIGINT from the terminal to
+reach background processes.
+
+Patch:
+
+*** ../bash-3.1/jobs.c Fri Nov 11 23:13:27 2005
+--- jobs.c Wed Feb 1 13:55:38 2006
+***************
+*** 2199,2203 ****
+ wait_sigint_received = 0;
+ if (job_control == 0)
+! old_sigint_handler = set_signal_handler (SIGINT, wait_sigint_handler);
+
+ termination_state = last_command_exit_value;
+--- 2298,2306 ----
+ wait_sigint_received = 0;
+ if (job_control == 0)
+! {
+! old_sigint_handler = set_signal_handler (SIGINT, wait_sigint_handler);
+! if (old_sigint_handler == SIG_IGN)
+! set_signal_handler (SIGINT, old_sigint_handler);
+! }
+
+ termination_state = last_command_exit_value;
+*** ../bash-3.1/patchlevel.h Wed Jul 20 13:58:20 2005
+--- patchlevel.h Wed Dec 7 13:48:42 2005
+***************
+*** 26,30 ****
+ looks for to find the patch level (for the sccs version string). */
+
+! #define PATCHLEVEL 7
+
+ #endif /* _PATCHLEVEL_H_ */
+--- 26,30 ----
+ looks for to find the patch level (for the sccs version string). */
+
+! #define PATCHLEVEL 8
+
+ #endif /* _PATCHLEVEL_H_ */
diff --git a/source/a/bash/patches/bash31-009 b/source/a/bash/patches/bash31-009
new file mode 100644
index 00000000..8ef22958
--- /dev/null
+++ b/source/a/bash/patches/bash31-009
@@ -0,0 +1,66 @@
+ BASH PATCH REPORT
+ =================
+
+Bash-Release: 3.1
+Patch-ID: bash31-009
+
+Bug-Reported-by: Joshua Neuheisel <jneuheisel@gmail.com>
+Bug-Reference-ID: <25d873330601140820v4ad8efd2t8bf683b073c138b3@mail.gmail.com>
+Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2006-01/msg00062.html
+
+Bug-Description:
+
+Under some circumstances, background (asynchronous) jobs can set the terminal
+process group incorrectly. This can cause a foreground process (including
+the foreground shell) to get read errors and exit.
+
+Patch:
+
+*** ../bash-3.1/jobs.c Fri Nov 11 23:13:27 2005
+--- jobs.c Wed Feb 1 13:55:38 2006
+***************
+*** 620,625 ****
+ * the parent gives it away.
+ *
+ */
+! if (job_control && newjob->pgrp)
+ give_terminal_to (newjob->pgrp, 0);
+ }
+--- 634,642 ----
+ * the parent gives it away.
+ *
++ * Don't give the terminal away if this shell is an asynchronous
++ * subshell.
++ *
+ */
+! if (job_control && newjob->pgrp && (subshell_environment&SUBSHELL_ASYNC) == 0)
+ give_terminal_to (newjob->pgrp, 0);
+ }
+***************
+*** 1656,1660 ****
+ shell's process group (we could be in the middle of a
+ pipeline, for example). */
+! if (async_p == 0 && pipeline_pgrp != shell_pgrp)
+ give_terminal_to (pipeline_pgrp, 0);
+
+--- 1743,1747 ----
+ shell's process group (we could be in the middle of a
+ pipeline, for example). */
+! if (async_p == 0 && pipeline_pgrp != shell_pgrp && ((subshell_environment&SUBSHELL_ASYNC) == 0))
+ give_terminal_to (pipeline_pgrp, 0);
+
+*** ../bash-3.1/patchlevel.h Wed Jul 20 13:58:20 2005
+--- patchlevel.h Wed Dec 7 13:48:42 2005
+***************
+*** 26,30 ****
+ looks for to find the patch level (for the sccs version string). */
+
+! #define PATCHLEVEL 8
+
+ #endif /* _PATCHLEVEL_H_ */
+--- 26,30 ----
+ looks for to find the patch level (for the sccs version string). */
+
+! #define PATCHLEVEL 9
+
+ #endif /* _PATCHLEVEL_H_ */
diff --git a/source/a/bash/patches/bash31-010 b/source/a/bash/patches/bash31-010
new file mode 100644
index 00000000..066a3242
--- /dev/null
+++ b/source/a/bash/patches/bash31-010
@@ -0,0 +1,54 @@
+ BASH PATCH REPORT
+ =================
+
+Bash-Release: 3.1
+Patch-ID: bash31-010
+
+Bug-Reported-by: vw@vonwolff.de
+Bug-Reference-ID: <20060123135234.1AC2F1D596@wst07.vonwolff.de>
+Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2006-01/msg00090.html
+
+Bug-Description:
+
+There is a difference in behavior between bash-3.0 and bash-3.1 involving
+parsing of single- and double-quoted strings occurring in old-style
+command substitution. The difference has to do with how backslashes are
+processed. This patch restores a measure of backwards compatibility while
+the question of POSIX conformance and ultimately correct behavior is discussed.
+
+Patch:
+
+*** ../bash-3.1/parse.y Fri Nov 11 23:14:18 2005
+--- parse.y Wed Jan 25 14:55:18 2006
+***************
+*** 2899,2903 ****
+ else if MBTEST(qc == '`' && (ch == '"' || ch == '\'') && in_comment == 0)
+ {
+! nestret = parse_matched_pair (0, ch, ch, &nestlen, rflags);
+ goto add_nestret;
+ }
+--- 2901,2909 ----
+ else if MBTEST(qc == '`' && (ch == '"' || ch == '\'') && in_comment == 0)
+ {
+! /* Add P_ALLOWESC so backslash quotes the next character and
+! shell_getc does the right thing with \<newline>. We do this for
+! a measure of backwards compatibility -- it's not strictly the
+! right POSIX thing. */
+! nestret = parse_matched_pair (0, ch, ch, &nestlen, rflags|P_ALLOWESC);
+ goto add_nestret;
+ }
+*** ../bash-3.1/patchlevel.h Wed Jul 20 13:58:20 2005
+--- patchlevel.h Wed Dec 7 13:48:42 2005
+***************
+*** 26,30 ****
+ looks for to find the patch level (for the sccs version string). */
+
+! #define PATCHLEVEL 9
+
+ #endif /* _PATCHLEVEL_H_ */
+--- 26,30 ----
+ looks for to find the patch level (for the sccs version string). */
+
+! #define PATCHLEVEL 10
+
+ #endif /* _PATCHLEVEL_H_ */
diff --git a/source/a/bash/patches/bash31-011 b/source/a/bash/patches/bash31-011
new file mode 100644
index 00000000..025b8390
--- /dev/null
+++ b/source/a/bash/patches/bash31-011
@@ -0,0 +1,47 @@
+ BASH PATCH REPORT
+ =================
+
+Bash-Release: 3.1
+Patch-ID: bash31-011
+
+Bug-Reported-by: Mike Stroyan <mike.stroyan@hp.com>
+Bug-Reference-ID: <E1EvwxP-0004LD-GC@localhost.localdomain>
+Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2006-01/msg00033.html
+
+Bug-Description:
+
+A change in bash-3.1 caused the single quotes to be stripped from ANSI-C
+quoting inside double-quoted command substitutions.
+
+Patch:
+
+*** ../bash-3.1/parse.y Fri Nov 11 23:14:18 2005
+--- parse.y Wed Jan 25 14:55:18 2006
+***************
+*** 2908,2912 ****
+ count--;
+ if (ch == '(') /* ) */
+! nestret = parse_matched_pair (0, '(', ')', &nestlen, rflags);
+ else if (ch == '{') /* } */
+ nestret = parse_matched_pair (0, '{', '}', &nestlen, P_FIRSTCLOSE|rflags);
+--- 2914,2918 ----
+ count--;
+ if (ch == '(') /* ) */
+! nestret = parse_matched_pair (0, '(', ')', &nestlen, rflags & ~P_DQUOTE);
+ else if (ch == '{') /* } */
+ nestret = parse_matched_pair (0, '{', '}', &nestlen, P_FIRSTCLOSE|rflags);
+*** ../bash-3.1/patchlevel.h Wed Jul 20 13:58:20 2005
+--- patchlevel.h Wed Dec 7 13:48:42 2005
+***************
+*** 26,30 ****
+ looks for to find the patch level (for the sccs version string). */
+
+! #define PATCHLEVEL 10
+
+ #endif /* _PATCHLEVEL_H_ */
+--- 26,30 ----
+ looks for to find the patch level (for the sccs version string). */
+
+! #define PATCHLEVEL 11
+
+ #endif /* _PATCHLEVEL_H_ */
diff --git a/source/a/bash/patches/bash31-012 b/source/a/bash/patches/bash31-012
new file mode 100644
index 00000000..b0ddb3a4
--- /dev/null
+++ b/source/a/bash/patches/bash31-012
@@ -0,0 +1,47 @@
+ BASH PATCH REPORT
+ =================
+
+Bash-Release: 3.1
+Patch-ID: bash31-012
+
+Bug-Reported-by: Alexander Kshevetskiy <alex@dgap.mipt.ru>
+Bug-Reference-ID: <308374997.20060124175849@dgap.mipt.ru>
+Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2006-01/msg00097.html
+
+Bug-Description:
+
+There is a parsing problem involving parentheses in assignment statements
+that causes words to be terminated prematurely.
+
+Patch:
+
+*** ../bash-3.1/parse.y Fri Nov 11 23:14:18 2005
+--- parse.y Wed Jan 25 14:55:18 2006
+***************
+*** 3579,3583 ****
+ all_digit_token = 0;
+ compound_assignment = 1;
+! #if 0
+ goto next_character;
+ #else
+--- 3584,3588 ----
+ all_digit_token = 0;
+ compound_assignment = 1;
+! #if 1
+ goto next_character;
+ #else
+*** ../bash-3.1/patchlevel.h Wed Jul 20 13:58:20 2005
+--- patchlevel.h Wed Dec 7 13:48:42 2005
+***************
+*** 26,30 ****
+ looks for to find the patch level (for the sccs version string). */
+
+! #define PATCHLEVEL 11
+
+ #endif /* _PATCHLEVEL_H_ */
+--- 26,30 ----
+ looks for to find the patch level (for the sccs version string). */
+
+! #define PATCHLEVEL 12
+
+ #endif /* _PATCHLEVEL_H_ */
diff --git a/source/a/bash/patches/bash31-013 b/source/a/bash/patches/bash31-013
new file mode 100644
index 00000000..93c7c8fc
--- /dev/null
+++ b/source/a/bash/patches/bash31-013
@@ -0,0 +1,44 @@
+ BASH PATCH REPORT
+ =================
+
+Bash-Release: 3.1
+Patch-ID: bash31-013
+
+Bug-Reported-by: Bob Rossi <bob@brasko.net>
+Bug-Reference-ID: <43F60606.80708@case.edu>
+Bug-Reference-URL:
+
+Bug-Description:
+
+In some cases, readline will reference freed memory when attempting to
+display a portion of the prompt.
+
+Patch:
+
+*** ../bash-3.1-patched/lib/readline/readline.c Mon Jul 4 22:29:35 2005
+--- lib/readline/readline.c Fri Feb 17 22:54:22 2006
+***************
+*** 282,287 ****
+--- 282,288 ----
+ {
+ FREE (rl_prompt);
+ rl_prompt = prompt ? savestring (prompt) : (char *)NULL;
++ rl_display_prompt = rl_prompt ? rl_prompt : "";
+
+ rl_visible_prompt_length = rl_expand_prompt (rl_prompt);
+ return 0;
+*** ../bash-3.1/patchlevel.h Wed Jul 20 13:58:20 2005
+--- patchlevel.h Wed Dec 7 13:48:42 2005
+***************
+*** 26,30 ****
+ looks for to find the patch level (for the sccs version string). */
+
+! #define PATCHLEVEL 12
+
+ #endif /* _PATCHLEVEL_H_ */
+--- 26,30 ----
+ looks for to find the patch level (for the sccs version string). */
+
+! #define PATCHLEVEL 13
+
+ #endif /* _PATCHLEVEL_H_ */
diff --git a/source/a/bash/patches/bash31-014 b/source/a/bash/patches/bash31-014
new file mode 100644
index 00000000..82ff9b40
--- /dev/null
+++ b/source/a/bash/patches/bash31-014
@@ -0,0 +1,105 @@
+ BASH PATCH REPORT
+ =================
+
+Bash-Release: 3.1
+Patch-ID: bash31-014
+
+Bug-Reported-by: Mike Stroyan <mike.stroyan@hp.com>
+Bug-Reference-ID: <20060203191607.GC27614@localhost>
+Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2006-02/msg00004.html
+
+Bug-Description:
+
+The displayed search prompt is corrupted when using non-incremental
+searches in vi and emacs mode if the prompt contains non-printing
+characters or spans multiple lines. The prompt is expanded more than
+once; the second time without the escape sequences that protect non-
+printing characters from the length calculations.
+
+Patch:
+
+*** ../bash-3.1-patched/lib/readline/display.c Wed Nov 30 14:05:02 2005
+--- lib/readline/display.c Sat Feb 18 12:14:58 2006
+***************
+*** 1983,1993 ****
+ int pchar;
+ {
+ int len;
+! char *pmt;
+
+ rl_save_prompt ();
+
+! if (saved_local_prompt == 0)
+ {
+ len = (rl_prompt && *rl_prompt) ? strlen (rl_prompt) : 0;
+ pmt = (char *)xmalloc (len + 2);
+--- 1998,2012 ----
+ int pchar;
+ {
+ int len;
+! char *pmt, *p;
+
+ rl_save_prompt ();
+
+! /* We've saved the prompt, and can do anything with the various prompt
+! strings we need before they're restored. We want the unexpanded
+! portion of the prompt string after any final newline. */
+! p = rl_prompt ? strrchr (rl_prompt, '\n') : 0;
+! if (p == 0)
+ {
+ len = (rl_prompt && *rl_prompt) ? strlen (rl_prompt) : 0;
+ pmt = (char *)xmalloc (len + 2);
+***************
+*** 1998,2016 ****
+ }
+ else
+ {
+! len = *saved_local_prompt ? strlen (saved_local_prompt) : 0;
+ pmt = (char *)xmalloc (len + 2);
+ if (len)
+! strcpy (pmt, saved_local_prompt);
+ pmt[len] = pchar;
+ pmt[len+1] = '\0';
+! local_prompt = savestring (pmt);
+! prompt_last_invisible = saved_last_invisible;
+! prompt_visible_length = saved_visible_length + 1;
+! }
+
+ prompt_physical_chars = saved_physical_chars + 1;
+-
+ return pmt;
+ }
+
+--- 2017,2033 ----
+ }
+ else
+ {
+! p++;
+! len = strlen (p);
+ pmt = (char *)xmalloc (len + 2);
+ if (len)
+! strcpy (pmt, p);
+ pmt[len] = pchar;
+ pmt[len+1] = '\0';
+! }
+
++ /* will be overwritten by expand_prompt, called from rl_message */
+ prompt_physical_chars = saved_physical_chars + 1;
+ return pmt;
+ }
+
+*** ../bash-3.1/patchlevel.h Wed Jul 20 13:58:20 2005
+--- patchlevel.h Wed Dec 7 13:48:42 2005
+***************
+*** 26,30 ****
+ looks for to find the patch level (for the sccs version string). */
+
+! #define PATCHLEVEL 13
+
+ #endif /* _PATCHLEVEL_H_ */
+--- 26,30 ----
+ looks for to find the patch level (for the sccs version string). */
+
+! #define PATCHLEVEL 14
+
+ #endif /* _PATCHLEVEL_H_ */
diff --git a/source/a/bash/patches/bash31-015 b/source/a/bash/patches/bash31-015
new file mode 100644
index 00000000..deb9eed5
--- /dev/null
+++ b/source/a/bash/patches/bash31-015
@@ -0,0 +1,106 @@
+ BASH PATCH REPORT
+ =================
+
+Bash-Release: 3.1
+Patch-ID: bash31-015
+
+Bug-Reported-by: Benoit Vila
+Bug-Reference-ID: <43FCA614.1090108@free.fr>
+Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2006-02/msg00058.html
+
+Bug-Description:
+
+A problem with the extended globbing code prevented dots from matching
+filenames when used in some extended matching patterns.
+
+Patch:
+
+*** ../bash-3.1-patched/lib/glob/sm_loop.c Sun Oct 16 21:21:04 2005
+--- lib/glob/sm_loop.c Mon Feb 27 17:18:43 2006
+***************
+*** 639,643 ****
+ CHAR *pnext; /* pointer to next sub-pattern */
+ CHAR *srest; /* pointer to rest of string */
+! int m1, m2;
+
+ #if DEBUG_MATCHING
+--- 638,642 ----
+ CHAR *pnext; /* pointer to next sub-pattern */
+ CHAR *srest; /* pointer to rest of string */
+! int m1, m2, xflags; /* xflags = flags passed to recursive matches */
+
+ #if DEBUG_MATCHING
+***************
+*** 645,648 ****
+--- 644,648 ----
+ fprintf(stderr, "extmatch: s = %s; se = %s\n", s, se);
+ fprintf(stderr, "extmatch: p = %s; pe = %s\n", p, pe);
++ fprintf(stderr, "extmatch: flags = %d\n", flags);
+ #endif
+
+***************
+*** 678,683 ****
+ multiple matches of the pattern. */
+ if (m1)
+! m2 = (GMATCH (srest, se, prest, pe, flags) == 0) ||
+! (s != srest && GMATCH (srest, se, p - 1, pe, flags) == 0);
+ if (m1 && m2)
+ return (0);
+--- 678,687 ----
+ multiple matches of the pattern. */
+ if (m1)
+! {
+! /* if srest > s, we are not at start of string */
+! xflags = (srest > s) ? (flags & ~FNM_PERIOD) : flags;
+! m2 = (GMATCH (srest, se, prest, pe, xflags) == 0) ||
+! (s != srest && GMATCH (srest, se, p - 1, pe, xflags) == 0);
+! }
+ if (m1 && m2)
+ return (0);
+***************
+*** 705,710 ****
+ for ( ; srest <= se; srest++)
+ {
+ if (GMATCH (s, srest, psub, pnext - 1, flags) == 0 &&
+! GMATCH (srest, se, prest, pe, flags) == 0)
+ return (0);
+ }
+--- 709,716 ----
+ for ( ; srest <= se; srest++)
+ {
++ /* if srest > s, we are not at start of string */
++ xflags = (srest > s) ? (flags & ~FNM_PERIOD) : flags;
+ if (GMATCH (s, srest, psub, pnext - 1, flags) == 0 &&
+! GMATCH (srest, se, prest, pe, xflags) == 0)
+ return (0);
+ }
+***************
+*** 727,731 ****
+ break;
+ }
+! if (m1 == 0 && GMATCH (srest, se, prest, pe, flags) == 0)
+ return (0);
+ }
+--- 733,739 ----
+ break;
+ }
+! /* if srest > s, we are not at start of string */
+! xflags = (srest > s) ? (flags & ~FNM_PERIOD) : flags;
+! if (m1 == 0 && GMATCH (srest, se, prest, pe, xflags) == 0)
+ return (0);
+ }
+*** ../bash-3.1/patchlevel.h Wed Jul 20 13:58:20 2005
+--- patchlevel.h Wed Dec 7 13:48:42 2005
+***************
+*** 26,30 ****
+ looks for to find the patch level (for the sccs version string). */
+
+! #define PATCHLEVEL 14
+
+ #endif /* _PATCHLEVEL_H_ */
+--- 26,30 ----
+ looks for to find the patch level (for the sccs version string). */
+
+! #define PATCHLEVEL 15
+
+ #endif /* _PATCHLEVEL_H_ */
diff --git a/source/a/bash/patches/bash31-016 b/source/a/bash/patches/bash31-016
new file mode 100644
index 00000000..fa0ffe1c
--- /dev/null
+++ b/source/a/bash/patches/bash31-016
@@ -0,0 +1,51 @@
+ BASH PATCH REPORT
+ =================
+
+Bash-Release: 3.1
+Patch-ID: bash31-016
+
+Bug-Reported-by: Nikita Danilov <nikita@clusterfs.com>
+Bug-Reference-ID: <17397.51015.769854.541057@gargle.gargle.HOWL>
+Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2006-02/msg00064.html
+
+Bug-Description:
+
+Bash will dump core when attempting to perform globbing in directories with
+very large numbers of files.
+
+Patch:
+
+*** ../bash-3.1-patched/lib/glob/glob.c Thu Mar 24 12:42:27 2005
+--- lib/glob/glob.c Fri Mar 3 16:54:12 2006
+***************
+*** 361,364 ****
+--- 361,365 ----
+
+ firstmalloc = 0;
++ nalloca = 0;
+
+ /* If PAT is empty, skip the loop, but return one (empty) filename. */
+***************
+*** 547,550 ****
+--- 551,556 ----
+ tmplink = lastlink;
+ }
++ else
++ tmplink = 0;
+ free (lastlink->name);
+ lastlink = lastlink->next;
+*** ../bash-3.1/patchlevel.h Wed Jul 20 13:58:20 2005
+--- patchlevel.h Wed Dec 7 13:48:42 2005
+***************
+*** 26,30 ****
+ looks for to find the patch level (for the sccs version string). */
+
+! #define PATCHLEVEL 15
+
+ #endif /* _PATCHLEVEL_H_ */
+--- 26,30 ----
+ looks for to find the patch level (for the sccs version string). */
+
+! #define PATCHLEVEL 16
+
+ #endif /* _PATCHLEVEL_H_ */
diff --git a/source/a/bash/patches/bash31-017 b/source/a/bash/patches/bash31-017
new file mode 100644
index 00000000..84f89155
--- /dev/null
+++ b/source/a/bash/patches/bash31-017
@@ -0,0 +1,131 @@
+ BASH PATCH REPORT
+ =================
+
+Bash-Release: 3.1
+Patch-ID: bash31-017
+
+Bug-Reported-by: syphir@syphir.sytes.net
+Bug-Reference-ID: <442421F5.3010105@syphir.sytes.net>
+Bug-Reference-URL: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=358831
+
+Bug-Description:
+
+Array expansion fails with an arithmetic syntax error when the subscript
+appears within double quotes. For example: ${a["4"]}.
+
+Patch:
+
+*** ../bash-3.1-patched/subst.c Wed Apr 12 08:47:08 2006
+--- subst.c Wed Apr 12 08:49:02 2006
+***************
+*** 2576,2579 ****
+--- 2576,2586 ----
+ }
+
++ char *
++ expand_arith_string (string, quoted)
++ char *string;
++ {
++ return (expand_string_if_necessary (string, quoted, expand_string));
++ }
++
+ #if defined (COND_COMMAND)
+ /* Just remove backslashes in STRING. Returns a new string. */
+***************
+*** 5249,5253 ****
+ t = (char *)0;
+
+! temp1 = expand_string_if_necessary (substr, Q_DOUBLE_QUOTES, expand_string);
+ *e1p = evalexp (temp1, &expok);
+ free (temp1);
+--- 5256,5260 ----
+ t = (char *)0;
+
+! temp1 = expand_arith_string (substr, Q_DOUBLE_QUOTES);
+ *e1p = evalexp (temp1, &expok);
+ free (temp1);
+***************
+*** 5294,5298 ****
+ t++;
+ temp2 = savestring (t);
+! temp1 = expand_string_if_necessary (temp2, Q_DOUBLE_QUOTES, expand_string);
+ free (temp2);
+ t[-1] = ':';
+--- 5301,5305 ----
+ t++;
+ temp2 = savestring (t);
+! temp1 = expand_arith_string (temp2, Q_DOUBLE_QUOTES);
+ free (temp2);
+ t[-1] = ':';
+***************
+*** 6436,6440 ****
+
+ /* Expand variables found inside the expression. */
+! temp1 = expand_string_if_necessary (temp2, Q_DOUBLE_QUOTES, expand_string);
+ free (temp2);
+
+--- 6443,6447 ----
+
+ /* Expand variables found inside the expression. */
+! temp1 = expand_arith_string (temp2, Q_DOUBLE_QUOTES);
+ free (temp2);
+
+***************
+*** 6478,6482 ****
+
+ /* Do initial variable expansion. */
+! temp1 = expand_string_if_necessary (temp, Q_DOUBLE_QUOTES, expand_string);
+
+ goto arithsub;
+--- 6485,6489 ----
+
+ /* Do initial variable expansion. */
+! temp1 = expand_arith_string (temp, Q_DOUBLE_QUOTES);
+
+ goto arithsub;
+*** ../bash-3.1-patched/subst.h Sun Nov 7 15:12:28 2004
+--- subst.h Mon Mar 27 09:10:38 2006
+***************
+*** 152,155 ****
+--- 152,158 ----
+ extern char *expand_assignment_string_to_string __P((char *, int));
+
++ /* Expand an arithmetic expression string */
++ extern char *expand_arith_string __P((char *, int));
++
+ /* De-quoted quoted characters in STRING. */
+ extern char *dequote_string __P((char *));
+*** ../bash-3.1-patched/arrayfunc.c Mon Jul 4 20:25:58 2005
+--- arrayfunc.c Mon Mar 27 09:10:47 2006
+***************
+*** 593,601 ****
+ strncpy (exp, s, len - 1);
+ exp[len - 1] = '\0';
+! #if 0
+! t = expand_string_to_string (exp, 0);
+! #else
+! t = expand_string_to_string (exp, Q_DOUBLE_QUOTES);
+! #endif
+ this_command_name = (char *)NULL;
+ val = evalexp (t, &expok);
+--- 591,595 ----
+ strncpy (exp, s, len - 1);
+ exp[len - 1] = '\0';
+! t = expand_arith_string (exp, 0);
+ this_command_name = (char *)NULL;
+ val = evalexp (t, &expok);
+*** ../bash-3.1/patchlevel.h Wed Jul 20 13:58:20 2005
+--- patchlevel.h Wed Dec 7 13:48:42 2005
+***************
+*** 26,30 ****
+ looks for to find the patch level (for the sccs version string). */
+
+! #define PATCHLEVEL 16
+
+ #endif /* _PATCHLEVEL_H_ */
+--- 26,30 ----
+ looks for to find the patch level (for the sccs version string). */
+
+! #define PATCHLEVEL 17
+
+ #endif /* _PATCHLEVEL_H_ */
diff --git a/source/a/bash/slack-desc b/source/a/bash/slack-desc
new file mode 100644
index 00000000..f2fdb929
--- /dev/null
+++ b/source/a/bash/slack-desc
@@ -0,0 +1,19 @@
+# HOW TO EDIT THIS FILE:
+# The "handy ruler" below makes it easier to edit a package description. Line
+# up the first '|' above the ':' following the base package name, and the '|'
+# on the right side marks the last column you can put a character in. You must
+# make exactly 11 lines for the formatting to be correct. It's also
+# customary to leave one space after the ':'.
+
+ |-----handy-ruler------------------------------------------------------|
+bash: bash (sh-compatible shell)
+bash:
+bash: The GNU Bourne-Again SHell. Bash is a sh-compatible command
+bash: interpreter that executes commands read from the standard input or
+bash: from a file. Bash also incorporates useful features from the Korn
+bash: and C shells (ksh and csh). Bash is ultimately intended to be a
+bash: conformant implementation of the IEEE Posix Shell and Tools
+bash: specification (IEEE Working Group 1003.2).
+bash:
+bash: Bash must be present for the system to boot properly.
+bash:
diff --git a/source/a/bin/bin.SlackBuild b/source/a/bin/bin.SlackBuild
new file mode 100755
index 00000000..69995acc
--- /dev/null
+++ b/source/a/bin/bin.SlackBuild
@@ -0,0 +1,138 @@
+#!/bin/sh
+
+# Copyright 2005-2009 Patrick J. Volkerding, Sebeka, Minnesota, USA
+# All rights reserved.
+#
+# Redistribution and use of this script, with or without modification, is
+# permitted provided that the following conditions are met:
+#
+# 1. Redistributions of this script must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# 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.
+
+VERSION=11.1
+ARCH=${ARCH:-x86_64}
+BUILD=${BUILD:-1}
+
+CWD=$(pwd)
+TMP=${TMP:-/tmp}
+PKG=$TMP/package-bin
+
+# These don't need to be real recent, as we only require a couple
+# of things such as 'mktemp' and 'tempfile'.
+DUTILS=2.7
+
+# The fbset package
+FBSET=2.1
+
+rm -rf $PKG
+mkdir -p $TMP $PKG
+
+echo "+=============+"
+echo "| debianutils |"
+echo "+=============+"
+cd $TMP
+rm -rf debianutils-$DUTILS
+tar xzvf $CWD/debianutils_$DUTILS.tar.gz
+cd debianutils-$DUTILS
+chown -R root:root .
+./configure --prefix=/usr
+make || exit 1
+## We use our own very simple run-parts script
+## in the dcron package instead.
+#cat run-parts > $PKG/usr/bin/run-parts
+#cat run-parts.8 | gzip -9c > $PKG/usr/man/man8/run-parts.8.gz
+mkdir -p $PKG/usr/bin $PKG/usr/man/man{1,8}
+cat mktemp > $PKG/usr/bin/mktemp
+cat mktemp.1 | gzip -9c > $PKG/usr/man/man1/mktemp.1.gz
+cat savelog > $PKG/usr/bin/savelog
+cat savelog.8 | gzip -9c > $PKG/usr/man/man8/savelog.8.gz
+cat tempfile > $PKG/usr/bin/tempfile
+cat tempfile.1 | gzip -9c > $PKG/usr/man/man1/tempfile.1.gz
+chmod 755 $PKG/usr/bin/*
+mkdir -p $PKG/usr/doc/debianutils-$DUTILS
+cp -a debian/copyright $PKG/usr/doc/debianutils-$DUTILS
+
+echo "+===========+"
+echo "| fbset-${FBSET} |"
+echo "+===========+"
+cd $TMP
+rm -rf fbset-${FBSET}
+tar xzvf $CWD/fbset-${FBSET}.tar.gz
+cd fbset-${FBSET}
+chown -R root:root .
+make || exit 1
+mkdir -p $PKG/usr/sbin
+cat fbset > $PKG/usr/sbin/fbset
+chmod 755 $PKG/usr/sbin/fbset
+mkdir -p $PKG/etc
+cat etc/fb.modes.ATI > $PKG/etc/fb.modes
+mkdir -p $PKG/usr/man/man5
+cat fb.modes.5 | gzip -9c > $PKG/usr/man/man5/fb.modes.5.gz
+mkdir -p $PKG/usr/man/man8
+cat fbset.8 | gzip -9c > $PKG/usr/man/man8/fbset.8.gz
+mkdir -p $PKG/usr/doc/fbset-${FBSET}
+cp -a \
+ INSTALL etc/* \
+ $PKG/usr/doc/fbset-${FBSET}
+rm -r $PKG/usr/doc/fbset-${FBSET}/CVS
+
+echo "+=========+"
+echo "| banners |"
+echo "+=========+"
+cd $TMP
+rm -rf banners
+tar xzvf $CWD/banners.tar.gz
+cd banners
+chown -R root:root .
+make || exit 1
+cat bban > $PKG/usr/bin/bban
+cat sysvbanner > $PKG/usr/bin/sysvbanner
+chmod 755 $PKG/usr/bin/{bban,sysvbanner}
+
+echo "+===============+"
+echo "| todos/fromdos |"
+echo "+===============+"
+cd $TMP
+rm -rf todos
+tar xzvf $CWD/todos.tar.gz
+cd todos
+chown -R root:root .
+make || exit 1
+mkdir -p $PKG/usr/bin
+cat todos > $PKG/usr/bin/todos
+cat fromdos > $PKG/usr/bin/fromdos
+chmod 755 $PKG/usr/bin/*dos
+mkdir -p $PKG/usr/man/man1
+cat todos.1.gz > $PKG/usr/man/man1/todos.1.gz
+cat fromdos.1.gz > $PKG/usr/man/man1/fromdos.1.gz
+
+# These are a couple of really old scripts that might still
+# be useful for a couple more years. :-)
+zcat $CWD/scripts/diskcopy.gz > $PKG/usr/bin/diskcopy
+zcat $CWD/scripts/xx.gz > $PKG/usr/bin/xx
+chmod 755 $PKG/usr/bin/diskcopy
+chmod 755 $PKG/usr/bin/xx
+
+( cd $PKG
+ find . | xargs file | grep "executable" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
+ find . | xargs file | grep "shared object" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
+)
+
+mkdir -p $PKG/install
+cat $CWD/slack-desc > $PKG/install/slack-desc
+
+# Build the package:
+cd $PKG
+makepkg -l y -c n $TMP/bin-$VERSION-$ARCH-$BUILD.txz
+
diff --git a/source/a/bin/debianutils_2.7.dsc b/source/a/bin/debianutils_2.7.dsc
new file mode 100644
index 00000000..25a643a7
--- /dev/null
+++ b/source/a/bin/debianutils_2.7.dsc
@@ -0,0 +1,21 @@
+-----BEGIN PGP SIGNED MESSAGE-----
+Hash: SHA1
+
+Format: 1.0
+Source: debianutils
+Version: 2.7
+Binary: debianutils
+Maintainer: Clint Adams <schizo@debian.org>
+Architecture: any
+Standards-Version: 3.6.1
+Files:
+ e966d93a3ee20068197104049ebd7d70 165590 debianutils_2.7.tar.gz
+
+-----BEGIN PGP SIGNATURE-----
+Version: GnuPG v1.2.4 (GNU/Linux)
+Comment: Debian!
+
+iD8DBQFAO4b85m0u66uWM3ARAotWAKCE/B4HoDVZ5rHi4AISWwHO59cEgwCgqQ6d
+Rt+5nuJdAgkcQgKDQu52RwI=
+=2QDD
+-----END PGP SIGNATURE-----
diff --git a/source/a/bin/scripts/diskcopy b/source/a/bin/scripts/diskcopy
new file mode 100644
index 00000000..9f3cc586
--- /dev/null
+++ b/source/a/bin/scripts/diskcopy
@@ -0,0 +1,9 @@
+#!/bin/sh
+echo -n "Insert source disk in first floppy drive, then hit enter"
+read ans;
+MCOOKIE=`mcookie`
+dd if=/dev/fd0 of=/tmp/dcopy.$MCOOKIE
+echo -n "Remove source disk and insert destination disk, then hit enter"
+read ans;
+dd of=/dev/fd0 if=/tmp/dcopy.$MCOOKIE
+/bin/rm -f /tmp/dcopy.$MCOOKIE
diff --git a/source/a/bin/scripts/xx b/source/a/bin/scripts/xx
new file mode 100644
index 00000000..4116c209
--- /dev/null
+++ b/source/a/bin/scripts/xx
@@ -0,0 +1,21 @@
+#
+# A script to extract binary files from uudecoded files. Ignores all headers
+# and irrelevant stuff. Has shortfalls like all such scripts/programs but works
+# (almost) 100% of the time. We tested it against many such tools available
+# at many ftp sites and found it having higher success rate. There are
+# a few c-programs out there and it is slower as compared to them but it
+# works even in those cases when they fail to work.
+# The only time it will not work is that if uuencoded source file is cut up
+# in many pieces and LAST part contains LESS THAN 3 SOURCE lines in it and
+# we know that such cases (almost) never arise....guarenteed....:)
+#
+# Written by Tahir Zia Khawaja and
+# Nasir Ahmed Noor
+#umnoor@ccu.umanitoba.ca
+#umkhawaj@ccu.umanitoba.ca
+#
+awk '$0 ~ /^begin / {print $0; exit}' $1 > $$gifile
+egrep "^M[^a-z]" $1 >> $$gifile
+awk 'NR > 2 {sl=lr; lr=pr; pr=$0} $1 ~ /^end/ {print sl; print lr; print pr; exit}' $1 >> $$gifile
+uudecode $$gifile
+rm $$gifile
diff --git a/source/a/bin/slack-desc b/source/a/bin/slack-desc
new file mode 100644
index 00000000..de9e307d
--- /dev/null
+++ b/source/a/bin/slack-desc
@@ -0,0 +1,19 @@
+# HOW TO EDIT THIS FILE:
+# The "handy ruler" below makes it easier to edit a package description. Line
+# up the first '|' above the ':' following the base package name, and the '|'
+# on the right side marks the last column you can put a character in. You must
+# make exactly 11 lines for the formatting to be correct. It's also
+# customary to leave one space after the ':'.
+
+ |-----handy-ruler------------------------------------------------------|
+bin: bin (some command-line utilities)
+bin:
+bin: The bin package is a collection of miscellaneous command-line
+bin: utilities. Some of these (such as 'tempfile') are used in system
+bin: scripts.
+bin:
+bin:
+bin:
+bin:
+bin:
+bin:
diff --git a/source/a/bzip2/bzip2-1.0.4.saneso.diff b/source/a/bzip2/bzip2-1.0.4.saneso.diff
new file mode 100644
index 00000000..edbf1ad0
--- /dev/null
+++ b/source/a/bzip2/bzip2-1.0.4.saneso.diff
@@ -0,0 +1,20 @@
+--- ./Makefile-libbz2_so.orig 2007-01-02 20:00:55.000000000 -0600
++++ ./Makefile-libbz2_so 2007-01-23 22:02:29.000000000 -0600
+@@ -35,13 +35,13 @@
+ bzlib.o
+
+ all: $(OBJS)
+- $(CC) -shared -Wl,-soname -Wl,libbz2.so.1.0 -o libbz2.so.1.0.4 $(OBJS)
++ $(CC) -shared -Wl,-soname -Wl,libbz2.so.1 -o libbz2.so.1.0.4 $(OBJS)
+ $(CC) $(CFLAGS) -o bzip2-shared bzip2.c libbz2.so.1.0.4
+- rm -f libbz2.so.1.0
+- ln -s libbz2.so.1.0.4 libbz2.so.1.0
++ rm -f libbz2.so.1
++ ln -s libbz2.so.1.0.4 libbz2.so.1
+
+ clean:
+- rm -f $(OBJS) bzip2.o libbz2.so.1.0.4 libbz2.so.1.0 bzip2-shared
++ rm -f $(OBJS) bzip2.o libbz2.so.1.0.4 libbz2.so.1 bzip2-shared
+
+ blocksort.o: blocksort.c
+ $(CC) $(CFLAGS) -c blocksort.c
diff --git a/source/a/bzip2/bzip2.SlackBuild b/source/a/bzip2/bzip2.SlackBuild
new file mode 100755
index 00000000..465f75e0
--- /dev/null
+++ b/source/a/bzip2/bzip2.SlackBuild
@@ -0,0 +1,111 @@
+#!/bin/sh
+
+# Copyright 2005-2009 Patrick J. Volkerding, Sebeka, Minnesota, USA
+# All rights reserved.
+#
+# Redistribution and use of this script, with or without modification, is
+# permitted provided that the following conditions are met:
+#
+# 1. Redistributions of this script must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# 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.
+
+VERSION=1.0.5
+SOLIB=1.0.4
+ARCH=${ARCH:-x86_64}
+BUILD=${BUILD:-1}
+
+CWD=$(pwd)
+TMP=${TMP:-/tmp}
+PKG=$TMP/package-bzip2
+
+if [ "$ARCH" = "x86_64" ]; then
+ LIBDIRSUFFIX="64"
+else
+ LIBDIRSUFFIX=""
+fi
+
+rm -rf $PKG
+mkdir -p $TMP $PKG
+
+cd $TMP
+rm -rf bzip2-$VERSION
+tar xzvf $CWD/bzip2-$VERSION.tar.gz
+cd bzip2-$VERSION
+chown -R root:root .
+# This should be ok, since libbz2.so.1.0 will still exist.
+zcat $CWD/bzip2-1.0.4.saneso.diff.gz | patch -p1 || exit
+make -f Makefile-libbz2_so || exit 1
+make || exit 1
+mkdir -p $PKG/usr/include
+cp -a bzlib.h $PKG/usr/include
+chown root:root $PKG/usr/include/bzlib.h
+chmod 644 $PKG/usr/include/bzlib.h
+mkdir -p $PKG/usr/lib${LIBDIRSUFFIX}
+cp -a libbz2.a $PKG/usr/lib${LIBDIRSUFFIX}/libbz2.a
+mkdir -p $PKG/lib${LIBDIRSUFFIX}
+cp -a libbz2.so.$SOLIB $PKG/lib${LIBDIRSUFFIX}/libbz2.so.$SOLIB
+chmod 644 $PKG/usr/lib${LIBDIRSUFFIX}/libbz2.a
+chmod 755 $PKG/lib${LIBDIRSUFFIX}/libbz2.so.$SOLIB
+mkdir -p $PKG/bin
+cat bzip2-shared > $PKG/bin/bzip2
+cat bzip2recover > $PKG/bin/bzip2recover
+mkdir -p $PKG/usr/man/man1
+cat bzip2.1 | gzip -9c > $PKG/usr/man/man1/bzip2.1.gz
+echo '.so man1/bzip2.1' | gzip -9c > $PKG/usr/man/man1/bzip2recover.1.gz
+mkdir -p $PKG/usr/doc/bzip2-$VERSION
+cp -a CHANGES LICENSE README README.COMPILATION.PROBLEMS Y2K_INFO \
+ bzip2.txt *.html $PKG/usr/doc/bzip2-$VERSION
+chmod 644 $PKG/usr/doc/bzip2-$VERSION/*
+# Link up them links
+( cd $PKG
+ ( cd lib${LIBDIRSUFFIX}
+ rm -f libbz2.so.1.0 libbz2.so.1
+ ln -sf libbz2.so.$SOLIB libbz2.so.1.0
+ ln -sf libbz2.so.1.0 libbz2.so.1
+ )
+ ( cd usr/lib${LIBDIRSUFFIX}
+ ln -sf ../../lib${LIBDIRSUFFIX}/libbz2.so.1 libbz2.so
+ )
+ ( cd bin ; ln -sf bzip2 bunzip2 )
+ ( cd bin ; ln -sf bzip2 bzcat )
+ mkdir -p usr/bin
+ ( cd usr/bin
+ ln -sf ../../bin/bzip2 .
+ ln -sf ../../bin/bzip2 bunzip2
+ ln -sf ../../bin/bzip2 bzcat
+ ln -sf bzmore bzless
+ )
+)
+# Here are some optional scripts:
+for file in bzdiff bzgrep bzmore ; do
+ cat $file > $PKG/usr/bin/$file
+ cat ${file}.1 | gzip -9c > $PKG/usr/man/man1/${file}.1.gz
+done
+( cd $PKG
+ find . | xargs file | grep "executable" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
+ find . | xargs file | grep "shared object" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
+)
+chmod 755 $PKG/bin/* $PKG/usr/bin/*
+mkdir -p $PKG/install
+cat $CWD/slack-desc > $PKG/install/slack-desc
+
+# Build the package:
+cd $PKG
+makepkg -l y -c n $TMP/bzip2-$VERSION-$ARCH-$BUILD.txz
+
+# Clean up the extra stuff:
+if [ "$1" = "--cleanup" ]; then
+ rm -rf $TMP/bzip2-$VERSION
+ rm -rf $PKG
+fi
diff --git a/source/a/bzip2/slack-desc b/source/a/bzip2/slack-desc
new file mode 100644
index 00000000..8026e755
--- /dev/null
+++ b/source/a/bzip2/slack-desc
@@ -0,0 +1,19 @@
+# HOW TO EDIT THIS FILE:
+# The "handy ruler" below makes it easier to edit a package description. Line
+# up the first '|' above the ':' following the base package name, and the '|'
+# on the right side marks the last column you can put a character in. You must
+# make exactly 11 lines for the formatting to be correct. It's also
+# customary to leave one space after the ':'.
+
+ |-----handy-ruler------------------------------------------------------|
+bzip2: bzip2 (a block-sorting file compressor)
+bzip2:
+bzip2: Bzip2 compresses files using the Burrows-Wheeler block sorting text
+bzip2: compression algorithm, and Huffman coding. Compression is generally
+bzip2: considerably better than that achieved by more conventional LZ77/LZ78-
+bzip2: based compressors, and approaches the performance of the PPM family of
+bzip2: statistical compressors.
+bzip2:
+bzip2: Julian Seward <jseward@acm.org> is the author of bzip2.
+bzip2:
+bzip2:
diff --git a/source/a/coreutils/DIR_COLORS b/source/a/coreutils/DIR_COLORS
new file mode 100644
index 00000000..2556aa01
--- /dev/null
+++ b/source/a/coreutils/DIR_COLORS
@@ -0,0 +1,202 @@
+# Configuration file for dircolors, a utility to help you set the
+# LS_COLORS environment variable used by GNU ls with the --color option.
+
+# The keywords COLOR, OPTIONS, and EIGHTBIT (honored by the
+# slackware version of dircolors) are recognized but ignored.
+# (see the scripts in /etc/profile.d/coreutils-dircolors.* to change default
+# options in the Slackware aliases)
+
+# Below, there should be one TERM entry for each termtype that is colorizable
+TERM linux
+TERM linux-c
+TERM mach-color
+TERM console
+TERM con132x25
+TERM con132x30
+TERM con132x43
+TERM con132x60
+TERM con80x25
+TERM con80x28
+TERM con80x30
+TERM con80x43
+TERM con80x50
+TERM con80x60
+TERM cygwin
+TERM dtterm
+TERM putty
+TERM xterm
+TERM xterm-color
+TERM xterm-debian
+TERM rxvt
+TERM screen
+TERM screen-bce
+TERM screen-w
+TERM vt100
+TERM Eterm
+
+# Below are the color init strings for the basic file types. A color init
+# string consists of one or more of the following numeric codes:
+# Attribute codes:
+# 00=none 01=bold 04=underscore 05=blink 07=reverse 08=concealed
+# Text color codes:
+# 30=black 31=red 32=green 33=yellow 34=blue 35=magenta 36=cyan 37=white
+# Background color codes:
+# 40=black 41=red 42=green 43=yellow 44=blue 45=magenta 46=cyan 47=white
+NORMAL 00 # global default, although everything should be something.
+FILE 00 # normal file
+# RESET 0 # reset to "normal" color
+DIR 01;34 # directory
+LINK 01;36 # symbolic link. (If you set this to 'target' instead of a
+ # numerical value, the color is as for the file pointed to.)
+# HARDLINK 44;37 # regular file with more than one link
+FIFO 40;33 # pipe
+SOCK 01;35 # socket
+DOOR 01;35 # door
+BLK 40;33;01 # block device driver
+CHR 40;33;01 # character device driver
+ORPHAN 40;31;01 # symlink to nonexistent file
+SETUID 37;41 # file that is setuid (u+s)
+SETGID 30;43 # file that is setgid (g+s)
+CAPABILITY 30;41 # file with capability
+STICKY_OTHER_WRITABLE 30;42 # dir that is sticky and other-writable (+t,o+w)
+OTHER_WRITABLE 34;42 # dir that is other-writable (o+w) and not sticky
+STICKY 37;44 # dir with the sticky bit set (+t) and not other-writable
+EXEC 01;32 # This is for files with execute permission:
+
+# List any file extensions like '.gz' or '.tar' that you would like ls
+# to colorize below. Put the extension, a space, and the color init string.
+# (and any comments you want to add after a '#')
+
+# DOS-style executables (bright green)
+.bat 01;32
+.BAT 01;32
+.btm 01;32
+.BTM 01;32
+.cmd 01;32
+.CMD 01;32
+.com 01;32
+.COM 01;32
+.dll 01;32
+.DLL 01;32
+.exe 01;32
+.EXE 01;32
+
+# archives or compressed (bright red)
+.7z 01;31
+.ace 01;31
+.arj 01;31
+.bz2 01;31
+.cpio 01;31
+.deb 01;31
+.dz 01;31
+.gz 01;31
+.jar 01;31
+.lzh 01;31
+.lzma 01;31
+.rar 01;31
+.RAR 01;31
+.rpm 01;31
+.rz 01;31
+.tar 01;31
+.taz 01;31
+.tb2 01;31
+.tbz2 01;31
+.tbz 01;31
+.tgz 01;31
+.tlz 01;31
+.trz 01;31
+.txz 01;31
+.tz 01;31
+.tz2 01;31
+.xz 01;31
+.z 01;31
+.Z 01;31
+.zip 01;31
+.ZIP 01;31
+.zoo 01;31
+
+# multimedia (video/image/sound) file formats
+.aac 00;35
+.anx 01;35
+.asf 01;35
+.ASF 01;35
+.au 00;35
+.axa 00;35
+.axv 01;35
+.avi 01;35
+.AVI 01;35
+.bmp 01;35
+.BMP 01;35
+.flac 01;35
+.FLAC 01;35
+.gif 01;35
+.GIF 01;35
+.jpg 01;35
+.JPG 01;35
+.jpeg 01;35
+.JPEG 01;35
+.m2a 01;35
+.M2A 01;35
+.m2v 01;35
+.M2V 01;35
+.m4a 01;35
+.M4A 01;35
+.m4p 01;35
+.M4P 01;35
+.m4v 01;35
+.M4V 01;35
+.mid 00;35
+.midi 00;35
+.mka 00;35
+.mov 01;35
+.MOV 01;35
+.mp3 01;35
+.MP3 01;35
+.mp4 01;35
+.mp4v 01;35
+.mpc 01;35
+.MPC 01;35
+.mpeg 01;35
+.MPEG 01;35
+.mpg 01;35
+.MPG 01;35
+.nuv 01;35
+.oga 00;35
+.ogv 01;35
+.ogx 01;35
+.ogg 01;35
+.OGG 01;35
+.pbm 01;35
+.pgm 01;35
+.png 01;35
+.PNG 01;35
+.ppm 01;35
+.qt 01;35
+.ra 00;35
+.ram 01;35
+.RAM 01;35
+.rm 01;35
+.RM 01;35
+.spx 00;35
+.svg 01;35
+.svgz 01;35
+.tga 01;35
+.TGA 01;35
+.tif 01;35
+.TIF 01;35
+.tiff 01;35
+.TIFF 01;35
+.vob 01;35
+.wav 01;35
+.WAV 01;35
+.wma 01;35
+.WMA 01;35
+.wmv 01;35
+.WMV 01;35
+.xbm 01;35
+.xcf 01;35
+.xpm 01;35
+.xspf 00;35
+.xwd 01;35
+.XWD 01;35
+
diff --git a/source/a/coreutils/coreutils-dircolors.csh b/source/a/coreutils/coreutils-dircolors.csh
new file mode 100644
index 00000000..38d73ca2
--- /dev/null
+++ b/source/a/coreutils/coreutils-dircolors.csh
@@ -0,0 +1,48 @@
+# Slackware color ls profile script for /bin/csh-like shells.
+
+# Set up LS_OPTIONS environment variable.
+# This contains extra command line options to use with ls.
+# The default ones are:
+# -F = show '/' for dirs, '*' for executables, etc.
+# -T 0 = don't trust tab spacing when formatting ls output.
+# -b = better support for special characters
+setenv OPTIONS "-F -b -T 0"
+
+# COLOR needs one of these arguments:
+# 'auto' colorizes output to ttys, but not pipes.
+# 'always' adds color characters to all output.
+# 'never' shuts colorization off.
+setenv COLOR auto
+
+# This section shouldn't require any user adjustment since it is
+# simply setting the LS_OPTIONS variable using the information
+# already given above:
+setenv LS_OPTIONS " $OPTIONS --color=$COLOR "
+unset COLOR
+unset OPTIONS
+
+# Set up aliases to use color ls by default. A few additional
+# aliases like 'dir', 'vdir', etc, are some ancient artifacts
+# from 1992 or so... possibly they should be disabled, but maybe
+# someone out there is actually using them? :-)
+alias ls '/bin/ls $LS_OPTIONS';
+alias dir '/bin/ls $LS_OPTIONS --format=vertical';
+alias vdir '/bin/ls $LS_OPTIONS --format=long';
+alias d dir;
+alias v vdir;
+unset noglob;
+
+# Set up the LS_COLORS environment:
+[ -f $HOME/.dir_colors ]
+if ($status == 0) then
+ eval `/bin/dircolors -c $HOME/.dir_colors`
+endif
+[ -f /etc/DIR_COLORS ]
+if ($status == 0) then
+ eval `/bin/dircolors -c /etc/DIR_COLORS`
+endif
+[ ! -f $HOME/.dir_colors -a ! -f /etc/DIR_COLORS ]
+if ($status == 0) then
+ eval `/bin/dircolors -c`
+endif
+
diff --git a/source/a/coreutils/coreutils-dircolors.sh b/source/a/coreutils/coreutils-dircolors.sh
new file mode 100644
index 00000000..728ea745
--- /dev/null
+++ b/source/a/coreutils/coreutils-dircolors.sh
@@ -0,0 +1,65 @@
+# Slackware color ls profile script for /bin/sh-like shells.
+
+# Set up LS_OPTIONS environment variable.
+# This contains extra command line options to use with ls.
+# The default ones are:
+# -F = show '/' for dirs, '*' for executables, etc.
+# -T 0 = don't trust tab spacing when formatting ls output.
+# -b = better support for special characters
+if [ "$SHELL" != "/bin/zsh" ]; then
+ # Edit options below for all sh-like shells except zsh:
+ OPTIONS="-F -b -T 0"
+else
+ # If you use zsh, edit the options below instead:
+ OPTIONS=( -F -b -T 0 )
+fi
+
+# COLOR needs one of these arguments:
+# 'auto' colorizes output to ttys, but not pipes.
+# 'always' adds color characters to all output.
+# 'never' shuts colorization off.
+COLOR=auto
+
+# This section shouldn't require any user adjustment since it is
+# simply setting the LS_OPTIONS variable using the information
+# already given above:
+if [ "$SHELL" = "/bin/zsh" ]; then
+ LS_OPTIONS=( $OPTIONS --color=$COLOR );
+else
+ LS_OPTIONS=" $OPTIONS --color=$COLOR ";
+fi
+export LS_OPTIONS;
+unset COLOR
+unset OPTIONS
+
+# Set up aliases to use color ls by default. A few additional
+# aliases like 'dir', 'vdir', etc, are some ancient artifacts
+# from 1992 or so... possibly they should be disabled, but maybe
+# someone out there is actually using them? :-)
+# Assume shell aliases are supported. Ash is going to freak out
+# when it sees zsh syntax anyway, so whatever.
+alias ls='/bin/ls $LS_OPTIONS';
+alias dir='/bin/ls $LS_OPTIONS --format=vertical';
+alias vdir='/bin/ls $LS_OPTIONS --format=long';
+alias d=dir;
+alias v=vdir;
+
+# Just for fun, here are the old sh/ash style shell functions.
+# this script isn't currently working with ash (and makes some noisy
+# error messages), but perhaps these will still be of use to
+# someone...
+#ls () { /bin/ls $LS_OPTIONS "$@" ; };
+#dir () { /bin/ls $LS_OPTIONS --format=vertical "$@" ; };
+#vdir () { /bin/ls $LS_OPTIONS --format=long "$@" ; };
+#d () { dir "$@" ; };
+#v () { vdir "$@" ; };
+
+# Set up the LS_COLORS environment:
+if [ -f $HOME/.dir_colors ]; then
+ eval `/bin/dircolors -b $HOME/.dir_colors`
+elif [ -f /etc/DIR_COLORS ]; then
+ eval `/bin/dircolors -b /etc/DIR_COLORS`
+else
+ eval `/bin/dircolors -b`
+fi
+
diff --git a/source/a/coreutils/coreutils.SlackBuild b/source/a/coreutils/coreutils.SlackBuild
new file mode 100755
index 00000000..bc043427
--- /dev/null
+++ b/source/a/coreutils/coreutils.SlackBuild
@@ -0,0 +1,168 @@
+#!/bin/sh
+
+# Copyright 2005-2009 Patrick J. Volkerding, Sebeka, MN, USA
+# All rights reserved.
+#
+# Redistribution and use of this script, with or without modification, is
+# permitted provided that the following conditions are met:
+#
+# 1. Redistributions of this script must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# 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.
+
+PRGNAM=coreutils
+VERSION=${VERSION:-7.4}
+ARCH=${ARCH:-x86_64}
+BUILD=${BUILD:-1}
+
+NUMJOBS=${NUMJOBS:--j6}
+
+CWD=$(pwd)
+TMP=${TMP:-/tmp}
+PKG=$TMP/package-$PRGNAM
+
+if [ "$ARCH" = "i486" ]; then
+ SLKCFLAGS="-O2 -march=i486 -mtune=i686"
+elif [ "$ARCH" = "s390" ]; then
+ SLKCFLAGS="-O2"
+elif [ "$ARCH" = "x86_64" ]; then
+ SLKCFLAGS="-O2 -fPIC"
+elif [ "$ARCH" = "arm" ]; then
+ SLKCFLAGS="-O2 -march=armv4 -mtune=xscale"
+elif [ "$ARCH" = "armel" ]; then
+ SLKCFLAGS="-O2 -march=armv4t"
+fi
+
+rm -rf $PKG
+mkdir -p $TMP $PKG
+cd $TMP
+
+rm -rf $PRGNAM-$VERSION
+if [ -r $CWD/$PRGNAM-$VERSION.tar.gz ]; then
+ tar xf $CWD/$PRGNAM-$VERSION.tar.gz || exit 1
+elif [ -r $CWD/$PRGNAM-$VERSION.tar.bz2 ]; then
+ tar xf $CWD/$PRGNAM-$VERSION.tar.bz2 || exit 1
+elif [ -r $CWD/$PRGNAM-$VERSION.tar.xz ]; then
+ tar xf $CWD/$PRGNAM-$VERSION.tar.xz || exit 1
+elif [ -r $CWD/$PRGNAM-$VERSION.tar.lzma ]; then
+ tar xf $CWD/$PRGNAM-$VERSION.tar.lzma || exit 1
+else
+ exit 1
+fi
+
+cd $PRGNAM-$VERSION
+chown -R root:root .
+find . \
+ \( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \
+ -exec chmod 755 {} \; -o \
+ \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
+ -exec chmod 644 {} \;
+
+# Patch in the uname for Linux enhancements
+zcat $CWD/$PRGNAM.uname.diff.gz | patch -p1 --verbose --backup --suffix=.orig || exit 1
+
+# Compilation with glibc version later than 2.3.2 needs the environment
+# variable DEFAULT_POSIX2_VERSION set to 199209.
+# Without the next line, the coreutils will start complaining about 'obsolete'
+# command switches, like "tail -20" will be considered obsolete.
+# This behaviour breaks many other packages... the 'obsolete' parameters are
+# too commonly used to disregard them. Better to stick with the older more
+# widely accepted standards until things begin to demand the new way.
+
+CFLAGS="$SLKCFLAGS" \
+DEFAULT_POSIX2_VERSION=199209 \
+./configure \
+ --prefix=/usr \
+ --bindir=/bin \
+ --mandir=/usr/man \
+ --infodir=/usr/info \
+ --sysconfdir=/etc \
+ --build=$ARCH-slackware-linux
+
+make $NUMJOBS || make || exit 1
+make install DESTDIR=$PKG
+
+find $PKG | xargs file | grep -e "executable" -e "shared object" \
+ | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
+
+# We have had the mktemp from debianutils included with Slackware for quite a
+# long time, and certain options are changed here, like changing -u to mean a
+# dry-run rather than to unlink the tempfile when finished. Since this could
+# break existing scripts, unless someone can tell me a good reason why we
+# should start using a new version of mktemp, we will continue to use the
+# one we've been using. If the new one starts to become expected, let me know.
+# We'll figure out what the best options are and go from there.
+mv $PKG/bin/mktemp $PKG/bin/mktemp-gnu
+mv $PKG/usr/man/man1/mktemp.1 $PKG/usr/man/man1/mktemp-gnu.1
+
+# This seems wrong, and it stomps on files in the ksh93 package, though I'm
+# not sure the placement of those is correct, either... The ksh93 package
+# installs them as flat text files, while coreutils installs empty directories
+# Oh well, this is what we've done for years, and nobody's complained...
+rm -rf $PKG/usr/share/locale/*/LC_TIME
+
+# These are important enough that they should probably all go into /bin at this
+# point... Having some of them unavailable when /usr isn't mounted is just a
+# source of unending bug reports for various third party applications.
+# Time to end those reports. :-)
+mkdir -p $PKG/bin $PKG/usr/bin
+( cd $PKG/usr/bin
+ for file in ../../bin/* ; do
+ ln --verbose -sf $file .
+ done
+)
+
+# Add some defaults, although a very slack-like set of default options are built
+# into /bin/ls now anyway:
+mkdir -p $PKG/etc
+zcat $CWD/DIR_COLORS.gz > $PKG/etc/DIR_COLORS.new
+
+# Since dircolors no longer provides any default aliases these scripts
+# will be needed for ls to act as expected:
+mkdir -p $PKG/etc/profile.d
+zcat $CWD/coreutils-dircolors.csh.gz > $PKG/etc/profile.d/coreutils-dircolors.csh
+zcat $CWD/coreutils-dircolors.sh.gz > $PKG/etc/profile.d/coreutils-dircolors.sh
+chmod 755 $PKG/etc/profile.d/*
+
+# Remove things that are provided by other Slackware packages:
+for dupe in hostname kill su uptime ; do
+ rm -f $PKG/bin/${dupe} $PKG/usr/bin/${dupe} \
+ $PKG/usr/sbin/${dupe} $PKG/usr/man/man?/${dupe}.* ;
+done
+
+# Add ginstall links (there's still a lot of stuff that needs this to compile):
+( cd $PKG/bin ; ln -sf install ginstall )
+( cd $PKG/usr/bin ; ln -sf ../../bin/ginstall ginstall )
+( cd $PKG/usr/man/man1 ; ln -sf install.1 ginstall.1 )
+
+( cd $PKG/usr/man
+ find . -type f -exec gzip -9 {} \;
+ for i in $(find . -type l) ; do ln -s $(readlink $i).gz $i.gz ; rm $i ; done
+)
+
+rm -f $PKG/usr/info/dir
+gzip -9 $PKG/usr/info/*
+
+mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
+cp -a \
+ ABOUT-NLS AUTHORS COPYING* NEWS README THANKS THANKS-to-translators TODO \
+ $PKG/usr/doc/$PRGNAM-$VERSION
+
+mkdir -p $PKG/install
+zcat $CWD/doinst.sh.gz > $PKG/install/doinst.sh
+cat $CWD/slack-desc > $PKG/install/slack-desc
+
+# Build the package:
+cd $PKG
+/sbin/makepkg -l y -c n $TMP/$PRGNAM-$VERSION-$ARCH-$BUILD.txz
+
diff --git a/source/a/coreutils/coreutils.uname.diff b/source/a/coreutils/coreutils.uname.diff
new file mode 100644
index 00000000..bd39221c
--- /dev/null
+++ b/source/a/coreutils/coreutils.uname.diff
@@ -0,0 +1,161 @@
+Submitted By: Jim Gifford <jim at linuxfromscratch dot org>
+Date: 2006-08-24
+Initial Package Version: 5.97
+Upstream Status: Not Accepted
+Origin: Gentoo - http://sources.gentoo.org/viewcvs.py/gentoo/src/patchsets/coreutils
+Description: Display CPU Information from /proc/cpuinfo or /proc/sysinfo
+
+Original Patch by - Matthew Burgess and Scot McPherson
+
+diff -Nur coreutils-7.1.orig/src/uname.c coreutils-7.1/src/uname.c
+--- coreutils-7.1/src/uname.c 2008-09-18 02:06:57.000000000 -0500
++++ coreutils-7.1/src/uname.c 2009-02-22 21:23:02.209219703 -0600
+@@ -50,6 +50,11 @@
+ # include <mach-o/arch.h>
+ #endif
+
++#if defined (__linux__)
++# define USE_PROCINFO
++# define UNAME_HARDWARE_PLATFORM
++#endif
++
+ #include "system.h"
+ #include "error.h"
+ #include "quote.h"
+@@ -155,6 +160,106 @@
+ exit (status);
+ }
+
++#if defined(USE_PROCINFO)
++
++# if defined(__s390__) || defined(__s390x__)
++# define CPUINFO_FILE "/proc/sysinfo"
++# define CPUINFO_FORMAT "%64[^\t :]%*[ :]%256[^\n]%c"
++# else
++# define CPUINFO_FILE "/proc/cpuinfo"
++# define CPUINFO_FORMAT "%64[^\t:]\t:%256[^\n]%c"
++# endif
++
++# define PROCINFO_PROCESSOR 0
++# define PROCINFO_HARDWARE_PLATFORM 1
++
++static void __eat_cpuinfo_space(char *buf)
++{
++ /* first eat trailing space */
++ char *tmp = buf + strlen(buf) - 1;
++ while (tmp > buf && isspace(*tmp))
++ *tmp-- = '\0';
++ /* then eat leading space */
++ tmp = buf;
++ while (*tmp && isspace(*tmp))
++ tmp++;
++ if (tmp != buf)
++ memmove(buf, tmp, strlen(tmp)+1);
++}
++
++static int __linux_procinfo (int x, char *fstr, size_t s)
++{
++ FILE *fp;
++
++ char *procinfo_keys[] = {
++ /* --processor --hardware-platform */
++ #if defined(__alpha__)
++ "cpu model", "system type"
++ #elif defined(__arm__)
++ "Processor", "Hardware"
++ #elif defined(bfin)
++ "CPU", "BOARD Name"
++ #elif defined(__cris__)
++ "cpu", "cpu model"
++ #elif defined(__frv__)
++ "CPU-Core", "System"
++ #elif defined(__i386__) || defined(__x86_64__)
++ "model name", "vendor_id"
++ #elif defined(__ia64__)
++ "family", "vendor"
++ #elif defined(__hppa__)
++ "cpu", "model"
++ #elif defined(__m68k__)
++ "CPU", "MMU"
++ #elif defined(__mips__)
++ "cpu model", "system type"
++ #elif defined(__powerpc__) || defined(__powerpc64__)
++ "cpu", "machine"
++ #elif defined(__s390__) || defined(__s390x__)
++ "Type", "Manufacturer"
++ #elif defined(__sh__)
++ "cpu type", "machine"
++ #elif defined(sparc) || defined(__sparc__)
++ "type", "cpu"
++ #elif defined(__vax__)
++ "cpu type", "cpu"
++ #else
++ "unknown", "unknown"
++ #endif
++ };
++
++ if ((fp = fopen(CPUINFO_FILE, "r")) != NULL) {
++ char key[65], value[257], eol, *ret = NULL;
++
++ while (fscanf(fp, CPUINFO_FORMAT, key, value, &eol) != EOF) {
++ __eat_cpuinfo_space(key);
++ if (!strcmp(key, procinfo_keys[x])) {
++ __eat_cpuinfo_space(value);
++ ret = value;
++ break;
++ }
++ if (eol != '\n') {
++ /* we need two fscanf's here in case the previous
++ * length limit caused us to read right up to the
++ * newline ... doing "%*[^\n]\n" wont eat the newline
++ */
++ fscanf(fp, "%*[^\n]");
++ fscanf(fp, "\n");
++ }
++ }
++ fclose(fp);
++
++ if (ret) {
++ strncpy(fstr, ret, s);
++ return 0;
++ }
++ }
++
++ return -1;
++}
++
++#endif
++
+ /* Print ELEMENT, preceded by a space if something has already been
+ printed. */
+
+@@ -302,10 +407,14 @@
+ if (toprint & PRINT_PROCESSOR)
+ {
+ char const *element = unknown;
+-#if HAVE_SYSINFO && defined SI_ARCHITECTURE
++#if ( HAVE_SYSINFO && defined SI_ARCHITECTURE ) || defined(USE_PROCINFO)
+ {
+ static char processor[257];
++#if defined(USE_PROCINFO)
++ if (0 <= __linux_procinfo (PROCINFO_PROCESSOR, processor, sizeof processor))
++#else
+ if (0 <= sysinfo (SI_ARCHITECTURE, processor, sizeof processor))
++#endif
+ element = processor;
+ }
+ #endif
+@@ -358,9 +467,13 @@
+ if (element == unknown)
+ {
+ static char hardware_platform[257];
++#if defined(USE_PROCINFO)
++ if (0 <= __linux_procinfo (PROCINFO_HARDWARE_PLATFORM, hardware_platform, sizeof hardware_platform))
++#else
+ size_t s = sizeof hardware_platform;
+ static int mib[] = { CTL_HW, UNAME_HARDWARE_PLATFORM };
+ if (sysctl (mib, 2, hardware_platform, &s, 0, 0) >= 0)
++#endif
+ element = hardware_platform;
+ }
+ #endif
diff --git a/source/a/coreutils/doinst.sh b/source/a/coreutils/doinst.sh
new file mode 100644
index 00000000..b1a6112f
--- /dev/null
+++ b/source/a/coreutils/doinst.sh
@@ -0,0 +1,13 @@
+config() {
+ NEW="$1"
+ OLD="$(dirname $NEW)/$(basename $NEW .new)"
+ # If there's no config file by that name, mv it over:
+ if [ ! -r $OLD ]; then
+ mv $NEW $OLD
+ elif [ "$(cat $OLD | md5sum)" = "$(cat $NEW | md5sum)" ]; then # toss the redundant copy
+ rm $NEW
+ fi
+ # Otherwise, we leave the .new copy for the admin to consider...
+}
+config etc/DIR_COLORS.new
+
diff --git a/source/a/coreutils/slack-desc b/source/a/coreutils/slack-desc
new file mode 100644
index 00000000..57e562d3
--- /dev/null
+++ b/source/a/coreutils/slack-desc
@@ -0,0 +1,19 @@
+# HOW TO EDIT THIS FILE:
+# The "handy ruler" below makes it easier to edit a package description. Line
+# up the first '|' above the ':' following the base package name, and the '|'
+# on the right side marks the last column you can put a character in. You must
+# make exactly 11 lines for the formatting to be correct. It's also
+# customary to leave one space after the ':'.
+
+ |-----handy-ruler------------------------------------------------------|
+coreutils: coreutils (core GNU utilities)
+coreutils:
+coreutils: These are the GNU core utilities, the basic command line programs
+coreutils: such as 'mkdir', 'ls', and 'rm' that are needed for the system to
+coreutils: run. This package is the union of the GNU fileutils, sh-utils, and
+coreutils: textutils packages. Most of these programs have significant
+coreutils: advantages over their Unix counterparts, such as greater speed,
+coreutils: additional options, and fewer arbitrary limits.
+coreutils:
+coreutils:
+coreutils:
diff --git a/source/a/cpio/cpio-2.9.gcc43.diff b/source/a/cpio/cpio-2.9.gcc43.diff
new file mode 100644
index 00000000..cfe02d7f
--- /dev/null
+++ b/source/a/cpio/cpio-2.9.gcc43.diff
@@ -0,0 +1,30 @@
+--- ./lib/argp-fmtstream.h.orig 2006-01-21 04:37:18.000000000 -0600
++++ ./lib/argp-fmtstream.h 2009-03-15 15:17:22.000000000 -0500
+@@ -198,8 +198,12 @@
+ #endif
+
+ #ifndef ARGP_FS_EI
++#ifdef __GNUC_STDC_INLINE__
++#define ARGP_FS_EI extern inline __attribute__((__gnu_inline__))
++#else
+ #define ARGP_FS_EI extern inline
+ #endif
++#endif
+
+ ARGP_FS_EI size_t
+ __argp_fmtstream_write (argp_fmtstream_t __fs,
+--- ./lib/argp.h.orig 2007-03-30 11:20:19.000000000 -0500
++++ ./lib/argp.h 2009-03-15 15:16:34.000000000 -0500
+@@ -580,7 +580,11 @@
+ # endif
+
+ # ifndef ARGP_EI
+-# define ARGP_EI extern __inline__
++# if defined __GNUC_STDC_INLINE__
++# define ARGP_EI extern __inline__ __attribute__((__gnu_inline__))
++# else
++# define ARGP_EI extern __inline__
++# endif
+ # endif
+
+ ARGP_EI void
diff --git a/source/a/cpio/cpio.SlackBuild b/source/a/cpio/cpio.SlackBuild
new file mode 100755
index 00000000..9cb6054b
--- /dev/null
+++ b/source/a/cpio/cpio.SlackBuild
@@ -0,0 +1,126 @@
+#!/bin/sh
+
+# Copyright 2006, 2007, 2009 Patrick J. Volkerding, Sebeka, MN, USA
+# All rights reserved.
+#
+# Redistribution and use of this script, with or without modification, is
+# permitted provided that the following conditions are met:
+#
+# 1. Redistributions of this script must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# 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.
+
+PKGNAM=cpio
+VERSION=${VERSION:-2.9}
+ARCH=${ARCH:-x86_64}
+BUILD=${BUILD:-2}
+
+NUMJOBS=${NUMJOBS:-" -j7 "}
+
+CWD=$(pwd)
+TMP=${TMP:-/tmp}
+PKG=$TMP/package-${PKGNAM}
+
+rm -rf $PKG
+mkdir -p $TMP $PKG
+
+if [ "$ARCH" = "i386" ]; then
+ SLKCFLAGS="-O2 -march=i386 -mcpu=i686"
+ LIBDIRSUFFIX=""
+elif [ "$ARCH" = "i486" ]; then
+ SLKCFLAGS="-O2 -march=i486 -mtune=i686"
+ LIBDIRSUFFIX=""
+elif [ "$ARCH" = "s390" ]; then
+ SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
+elif [ "$ARCH" = "x86_64" ]; then
+ SLKCFLAGS="-O2 -fPIC"
+ LIBDIRSUFFIX="64"
+fi
+
+cd $TMP
+rm -rf ${PKGNAM}-${VERSION}
+tar xvf $CWD/${PKGNAM}-$VERSION.tar.bz2 || exit 1
+cd ${PKGNAM}-$VERSION || exit 1
+
+zcat $CWD/cpio-2.9.gcc43.diff.gz | patch -p1 --verbose || exit 1
+
+# Make sure ownerships and permissions are sane:
+chown -R root:root .
+find . \
+ \( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \
+ -exec chmod 755 {} \; -o \
+ \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
+ -exec chmod 644 {} \;
+
+# Use the rmt provided by the tar package
+CFLAGS="$SLKCFLAGS" \
+./configure \
+ --prefix=/usr \
+ --bindir=/bin \
+ --libdir=/usr/lib${LIBDIRSUFFIX} \
+ --sysconfdir=/etc \
+ --mandir=/usr/man \
+ --infodir=/usr/info \
+ --docdir=/usr/doc/${PKGNAM}-$VERSION \
+ --enable-mt \
+ --with-rmt=/sbin/rmt \
+ --build=$ARCH-slackware-linux
+
+# Build and install:
+make $NUMJOBS || make || exit 1
+make install DESTDIR=$PKG INSTALL="install -p" || exit 1
+
+# Remove an empty directory
+rmdir $PKG/usr/libexec
+
+# Do not clash with the 'mt' which is part of tar:
+mv $PKG/bin/mt{,-GNU}
+mv $PKG/usr/man/man1/mt{,-GNU}.1
+
+# Strip stuff:
+find $PKG | xargs file | grep -e "executable" -e "shared object" \
+ | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
+
+# Compress and link manpages, if any:
+if [ -d $PKG/usr/man ]; then
+ ( cd $PKG/usr/man
+ for manpagedir in $(find . -type d -name "man*") ; do
+ ( cd $manpagedir
+ for eachpage in $( find . -type l -maxdepth 1) ; do
+ ln -s $( readlink $eachpage ).gz $eachpage.gz
+ rm $eachpage
+ done
+ gzip -9 *.*
+ )
+ done
+ )
+fi
+
+# Compress info pages:
+rm -f $PKG/usr/info/dir
+gzip -9f $PKG/usr/info/*
+
+# Add a documentation directory:
+mkdir -p $PKG/usr/doc/cpio-$VERSION
+cp -a \
+ ABOUT-NLS AUTHORS COPYING ChangeLog NEWS README THANKS TODO \
+ $PKG/usr/doc/cpio-$VERSION
+chmod 644 $PKG/usr/doc/cpio-$VERSION/*
+
+mkdir -p $PKG/install
+cat $CWD/slack-desc > $PKG/install/slack-desc
+
+cd $PKG
+/sbin/makepkg -l y -c n $TMP/${PKGNAM}-$VERSION-$ARCH-$BUILD.txz
+
diff --git a/source/a/cpio/slack-desc b/source/a/cpio/slack-desc
new file mode 100644
index 00000000..90f820c2
--- /dev/null
+++ b/source/a/cpio/slack-desc
@@ -0,0 +1,19 @@
+# HOW TO EDIT THIS FILE:
+# The "handy ruler" below makes it easier to edit a package description. Line
+# up the first '|' above the ':' following the base package name, and the '|'
+# on the right side marks the last column you can put a character in. You must
+# make exactly 11 lines for the formatting to be correct. It's also
+# customary to leave one space after the ':'.
+
+ |-----handy-ruler------------------------------------------------------|
+cpio: cpio (backup and archiving utility)
+cpio:
+cpio: This is GNU cpio, a program to manage archives of files. This package
+cpio: also includes mt, a tape drive control program. cpio copies files into
+cpio: or out of a cpio or tar archive, which is a file that contains other
+cpio: files plus information about them, such as their pathname, owner,
+cpio: timestamps, and access permissions. The archive can be another file on
+cpio: the disk, a magnetic tape, or a pipe.
+cpio:
+cpio:
+cpio:
diff --git a/source/a/cryptsetup/cryptsetup.SlackBuild b/source/a/cryptsetup/cryptsetup.SlackBuild
new file mode 100755
index 00000000..7a7f3a8b
--- /dev/null
+++ b/source/a/cryptsetup/cryptsetup.SlackBuild
@@ -0,0 +1,144 @@
+#!/bin/sh
+
+# Copyright (c) 2007, 2009 Eric Hameleers <alien@slackware.com>
+# Copyright (c) 2007, 2009 Patrick J. Volkerding, Sebeka, Minnesota, USA
+# All rights reserved.
+#
+# Redistribution and use of this script, with or without modification, is
+# permitted provided that the following conditions are met:
+#
+# 1. Redistributions of this script must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# 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.
+
+# -----------------------------------------------------------------------------
+#
+# Slackware SlackBuild script
+# ===========================
+# By: Eric Hameleers <alien@slackware.com>
+# For: cryptsetup
+# Descr: Utility for setting up encrypted filesystems
+# URL: http://luks.endorphin.org/dm-crypt
+#
+# -----------------------------------------------------------------------------
+
+PRGNAM=cryptsetup
+VERSION=${VERSION:-1.0.7}
+ARCH=${ARCH:-x86_64}
+BUILD=${BUILD:-1}
+
+
+if [ "$ARCH" = "i486" ]; then
+ SLKCFLAGS="-O2 -march=i486 -mtune=i686"
+ LIBDIRSUFFIX=""
+elif [ "$ARCH" = "s390" ]; then
+ SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
+elif [ "$ARCH" = "x86_64" ]; then
+ SLKCFLAGS="-O2 -fPIC"
+ LIBDIRSUFFIX="64"
+fi
+
+CWD=$(pwd)
+TMP=${TMP:-/tmp}
+PKG=$TMP/package-cryptsetup
+
+rm -rf $PKG
+mkdir -p $TMP $PKG/usr
+
+cd $TMP
+rm -rf cryptsetup-$VERSION
+tar xvf $CWD/cryptsetup-$VERSION.tar.bz2 || exit 1
+cd cryptsetup-$VERSION
+chown -R root:root .
+find . \
+ \( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \
+ -exec chmod 755 {} \; -o \
+ \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
+ -exec chmod 644 {} \;
+
+echo Building ...
+LDFLAGS="$SLKLDFLAGS" \
+CFLAGS="$SLKCFLAGS" \
+./configure \
+ --prefix=/usr \
+ --libdir=/usr/lib${LIBDIRSUFFIX} \
+ --localstatedir=/var \
+ --sysconfdir=/etc \
+ --mandir=/usr/man \
+ --enable-libgcrypt \
+ --enable-libdevmapper \
+ --program-prefix= \
+ --program-suffix= \
+ --build=$ARCH-slackware-linux
+make
+make DESTDIR=$PKG install
+
+#
+# Next, make the static version that we will use for mkinitrd:
+#
+
+make clean
+echo Building ...
+LDFLAGS="$SLKLDFLAGS" \
+CFLAGS="$SLKCFLAGS" \
+./configure \
+ --prefix=/usr \
+ --libdir=/usr/lib${LIBDIRSUFFIX} \
+ --localstatedir=/var \
+ --sysconfdir=/etc \
+ --mandir=/usr/man \
+ --enable-libgcrypt \
+ --enable-libdevmapper \
+ --enable-static \
+ --disable-shared \
+ --disable-shared-library \
+ --program-prefix= \
+ --program-suffix= \
+ --build=$ARCH-slackware-linux
+make
+
+# I have to do one old-school thing to leave a mark here:
+mkdir -p $PKG/sbin
+cat src/cryptsetup > $PKG/sbin/cryptsetup.static
+chmod 755 $PKG/sbin/cryptsetup.static
+
+mv $PKG/usr/sbin/cryptsetup $PKG/usr/sbin/cryptsetup.dynamic
+# Replace with a link:
+( cd $PKG/usr/sbin ; ln -sf cryptsetup.dynamic cryptsetup )
+# In /sbin, use the static version as /usr *might* not be mounted yet.
+# However, note that some cryptsetup operations cause the static
+# version to segfault, so for things like formatting you'll want
+# to use the dynamic one. That's what should be in the $PATH first.
+( cd $PKG/sbin ; ln -sf cryptsetup.static cryptsetup )
+
+# Remove unneeded empty directory:
+#rmdir $PKG/usr/lib/cryptsetup
+
+mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
+cp -a \
+ AUTHORS COPYING* ChangeLog INSTALL NEWS README TODO \
+ $PKG/usr/doc/$PRGNAM-$VERSION
+chmod -R a-w $PKG/usr/doc/$PRGNAM-$VERSION/*
+
+find $PKG/usr/man -type f -name "*.?" -exec gzip -9f {} \; || true
+
+find $PKG | xargs file | grep -e "executable" -e "shared object" \
+ | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
+
+mkdir -p $PKG/install
+cat $CWD/slack-desc > $PKG/install/slack-desc
+
+cd $PKG
+/sbin/makepkg -l y -c n $TMP/${PRGNAM}-${VERSION}-${ARCH}-${BUILD}.txz
+
diff --git a/source/a/cryptsetup/slack-desc b/source/a/cryptsetup/slack-desc
new file mode 100644
index 00000000..fbc0035b
--- /dev/null
+++ b/source/a/cryptsetup/slack-desc
@@ -0,0 +1,21 @@
+# HOW TO EDIT THIS FILE:
+# The "handy ruler" below makes it easier to edit a package description. Line
+# up the first '|' above the ':' following the base package name, and the '|'
+# on the right side marks the last column you can put a character in. You must
+# make exactly 11 lines for the formatting to be correct. It's also
+# customary to leave one space after the ':'.
+
+ |-----handy-ruler------------------------------------------------------|
+cryptsetup: cryptsetup (utility for setting up encrypted filesystems)
+cryptsetup:
+cryptsetup: LUKS is a standard for cross-platform hard disk encryption.
+cryptsetup: It provides secure management of multiple userpasswords and
+cryptsetup: stores setup information in the partition header.
+cryptsetup: LUKS for dm-crypt is now implemented in cryptsetup replacing the
+cryptsetup: original cryptsetup. It provides all the functionally of the
+cryptsetup: original version plus all LUKS features.
+cryptsetup:
+cryptsetup: cryptsetup home: http://luks.endorphin.org/dm-crypt
+cryptsetup:
+
+
diff --git a/source/a/cups/cups.SlackBuild b/source/a/cups/cups.SlackBuild
new file mode 100755
index 00000000..5ae07095
--- /dev/null
+++ b/source/a/cups/cups.SlackBuild
@@ -0,0 +1,171 @@
+#!/bin/sh
+
+# Copyright 2008, 2009 Patrick J. Volkerding, Sebeka, Minnesota, USA
+# All rights reserved.
+#
+# Redistribution and use of this script, with or without modification, is
+# permitted provided that the following conditions are met:
+#
+# 1. Redistributions of this script must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# 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.
+
+# CUPS build script by volkerdi@slackware.com.
+
+VERSION=1.3.11
+ARCH=${ARCH:-x86_64}
+NUMJOBS=${NUMJOBS:-" -j7 "}
+BUILD=${BUILD:-1}
+
+if [ "$ARCH" = "x86_64" ]; then
+ LIBDIRSUFFIX="64"
+else
+ LIBDIRSUFFIX=""
+fi
+
+CWD=$(pwd)
+TMP=${TMP:-/tmp}
+PKG=$TMP/package-cups
+
+rm -rf $PKG
+mkdir -p $TMP $PKG
+
+cd $TMP
+rm -rf cups-$VERSION
+tar xvf $CWD/cups-$VERSION-source.tar.?z* || exit 1
+cd cups-$VERSION
+
+zcat $CWD/cups.firefox.desktop.diff.gz | patch -p1 --verbose || exit 1
+
+sed -i.orig -e 's#$exec_prefix/lib/cups#$libdir/cups#g' configure
+./configure \
+ --libdir=/usr/lib${LIBDIRSUFFIX} \
+ --enable-ssl \
+ --enable-openssl=yes \
+ --enable-gnutls=no \
+ --enable-cdsassl=no \
+ --docdir=/usr/doc \
+ --without-php \
+ --disable-pam \
+ --build=$ARCH-slackware-linux
+
+make $NUMJOBS || exit 1
+mkdir -p $PKG/etc/cups
+mkdir -p $PKG/var/spool
+make BUILDROOT=$PKG install || exit 1
+
+# I've added so many things like /etc/init.d/ to Slackware that CUPS
+# is now installing init scripts to the Red Hat locations. We'll move
+# them to the usual locations:
+mkdir -p $PKG/etc/rc.d
+# Handle this as a config file, and non-executable in a default install:
+mv $PKG/etc/init.d/cups $PKG/etc/rc.d/rc.cups.new
+chmod 644 $PKG/etc/rc.d/rc.cups.new
+# Clear out the additions:
+rm -rf $PKG/etc/init.d $PKG/etc/rc{0,2,3,5}.d
+
+# I'm not sure if overwriting this blindly could have ill effects,
+# but it never hurts to play it safe. According to the dbus-daemon
+# manpage, only files ending in .conf will be used, so there won't
+# be any unintended doubling up.
+mv $PKG/etc/dbus-1/system.d/cups.conf $PKG/etc/dbus-1/system.d/cups.conf.new
+
+# For full CUPS SMB support, you'll need to install the cups-samba
+# package from the source in this directory. There's no easy way
+# to add that to a package build, and the requests aren't pouring in,
+# so you'll have to install it yourself. It's easy to do.
+
+# However, this will get you the most useful SMB support for free.
+# Thanks to Boris Kurktchiev for the tip. :-)
+( cd $PKG/usr/lib${LIBDIRSUFFIX}/cups/backend
+ if [ ! -e smb ]; then
+ ln -sf /usr/bin/smbspool smb
+ fi
+)
+
+mkdir -p $PKG/install
+cat $CWD/slack-desc > $PKG/install/slack-desc
+
+# Remove preformatted manpages and move the manpages to /usr/man:
+( cd $PKG/usr/share/man
+ find . -type d -name "cat*" | xargs rm -rf
+ cd ..
+ mv man ..
+)
+
+# Adjust/expand docs:
+( mkdir -p $PKG/usr/doc
+ mv $PKG/usr/share/doc/cups $PKG/usr/doc/cups-$VERSION
+ rmdir $PKG/usr/share/doc
+ cd $PKG/usr/doc
+ ln -sf cups-$VERSION cups )
+
+# I'm sorry, but PDF files are almost as bloated and annoying as
+# MS Word documents. We'll retain the HTML files in /usr/doc.
+( cd $PKG/usr/doc
+ find . -name "*.pdf" -exec rm -f {} \; )
+
+# Apply no-clobber fix to conffiles:
+( cd $PKG/etc/cups
+ for file in * ; do
+ if [ -f $file ]; then
+ mv $file $file.new
+ fi
+ done )
+
+# Strip stuff:
+find $PKG | xargs file | grep -e "executable" -e "shared object" \
+ | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
+
+# Use symlinks to certain binaries so that CUPS and LPRng can coexist:
+SUFFIX=cups
+for file in \
+usr/bin/cancel \
+usr/bin/lp \
+usr/bin/lpq \
+usr/bin/lpr \
+usr/bin/lprm \
+usr/bin/lpstat \
+usr/sbin/lpc ; do
+ ( cd $PKG
+ mv ${file} ${file}-${SUFFIX}
+ ( cd `dirname ${file}` ; ln -sf `basename ${file}`-${SUFFIX} `basename ${file}` )
+ )
+done
+# Now fix the associated man pages:
+mv $PKG/usr/man/man1/cancel.1.gz $PKG/usr/man/man1/cancel-${SUFFIX}.1.gz
+mv $PKG/usr/man/man1/lp.1.gz $PKG/usr/man/man1/lp-${SUFFIX}.1.gz
+mv $PKG/usr/man/man1/lpq.1.gz $PKG/usr/man/man1/lpq-${SUFFIX}.1.gz
+mv $PKG/usr/man/man1/lpr.1.gz $PKG/usr/man/man1/lpr-${SUFFIX}.1.gz
+mv $PKG/usr/man/man1/lprm.1.gz $PKG/usr/man/man1/lprm-${SUFFIX}.1.gz
+mv $PKG/usr/man/man1/lpstat.1.gz $PKG/usr/man/man1/lpstat-${SUFFIX}.1.gz
+mv $PKG/usr/man/man8/lpc.8.gz $PKG/usr/man/man8/lpc-${SUFFIX}.8.gz
+( cd $PKG/usr/man/man1
+ ln -sf cancel-${SUFFIX}.1.gz cancel.1.gz
+ ln -sf lp-${SUFFIX}.1.gz lp.1.gz
+ ln -sf lpq-${SUFFIX}.1.gz lpq.1.gz
+ ln -sf lpr-${SUFFIX}.1.gz lpr.1.gz
+ ln -sf lprm-${SUFFIX}.1.gz lprm.1.gz
+ ln -sf lpstat-${SUFFIX}.1.gz lpstat.1.gz
+)
+( cd $PKG/usr/man/man8
+ ln -sf lpc-${SUFFIX}.8.gz lpc.8.gz
+)
+
+# Add the doinst.sh that installs the .new conffiles:
+zcat $CWD/doinst.sh.gz > $PKG/install/doinst.sh
+
+# Build the package:
+cd $PKG
+/sbin/makepkg -l y -c n $TMP/cups-$VERSION-$ARCH-$BUILD.txz
+
diff --git a/source/a/cups/cups.firefox.desktop.diff b/source/a/cups/cups.firefox.desktop.diff
new file mode 100644
index 00000000..96affd5a
--- /dev/null
+++ b/source/a/cups/cups.firefox.desktop.diff
@@ -0,0 +1,11 @@
+diff -u -r --new-file cups-1.3.11.orig/desktop/cups.desktop cups-1.3.11/desktop/cups.desktop
+--- cups-1.3.11.orig/desktop/cups.desktop 2008-09-05 19:30:39.000000000 -0500
++++ cups-1.3.11/desktop/cups.desktop 2009-08-21 20:18:23.604682681 -0500
+@@ -1,6 +1,6 @@
+ [Desktop Entry]
+ Categories=System;Printing;HardwareSettings;X-Red-Hat-Base;
+-Exec=htmlview http://localhost:631/
++Exec=firefox http://localhost:631/
+ Icon=cups
+ StartupNotify=false
+ Terminal=false
diff --git a/source/a/cups/doinst.sh b/source/a/cups/doinst.sh
new file mode 100644
index 00000000..3f56dab3
--- /dev/null
+++ b/source/a/cups/doinst.sh
@@ -0,0 +1,28 @@
+config() {
+ NEW="$1"
+ OLD="`dirname $NEW`/`basename $NEW .new`"
+ # If there's no config file by that name, mv it over:
+ if [ ! -r $OLD ]; then
+ mv $NEW $OLD
+ elif [ "`cat $OLD | md5sum`" = "`cat $NEW | md5sum`" ]; then # toss the redundant copy
+ rm $NEW
+ fi
+ # Otherwise, we leave the .new copy for the admin to consider...
+}
+for file in etc/cups/*.new ; do
+ config $file
+done
+config etc/dbus-1/system.d/cups.conf.new
+
+# Leave any new rc.cups with the same permissions as the old one:
+# This is a kludge, but it's because there's no --reference option
+# on busybox's 'chmod':
+if [ -e etc/rc.d/rc.cups ]; then
+ if [ -x etc/rc.d/rc.cups ]; then
+ chmod 755 etc/rc.d/rc.cups.new
+ else
+ chmod 644 etc/rc.d/rc.cups.new
+ fi
+fi
+# Then config() it:
+config etc/rc.d/rc.cups.new
diff --git a/source/a/cups/slack-desc b/source/a/cups/slack-desc
new file mode 100644
index 00000000..c2e1643c
--- /dev/null
+++ b/source/a/cups/slack-desc
@@ -0,0 +1,19 @@
+# HOW TO EDIT THIS FILE:
+# The "handy ruler" below makes it easier to edit a package description. Line
+# up the first '|' above the ':' following the base package name, and the '|' on
+# the right side marks the last column you can put a character in. You must make
+# exactly 11 lines for the formatting to be correct. It's also customary to
+# leave one space after the ':'.
+
+ |-----handy-ruler------------------------------------------------------|
+cups: CUPS (Common UNIX Printing System)
+cups:
+cups: The Common UNIX Printing System provides a portable printing layer for
+cups: UNIX(R)-like operating systems. It has been developed by Easy Software
+cups: Products to promote a standard printing solution for all UNIX vendors
+cups: and users. CUPS uses the Internet Printing Protocol ("IPP") as the
+cups: basis for managing print jobs and queues. The CUPS package includes
+cups: System V and Berkeley command-line interfaces, a PostScript RIP
+cups: package for supporting non-PostScript printer drivers, and tools for
+cups: creating additional printer drivers and other CUPS services.
+cups:
diff --git a/source/a/cxxlibs/cxxlibs.SlackBuild b/source/a/cxxlibs/cxxlibs.SlackBuild
new file mode 100755
index 00000000..025a6494
--- /dev/null
+++ b/source/a/cxxlibs/cxxlibs.SlackBuild
@@ -0,0 +1,57 @@
+#!/bin/sh
+# Copyright 2006, 2007, 2008, 2009 Patrick J. Volkerding, Sebeka, MN, USA
+# All rights reserved.
+#
+# Redistribution and use of this script, with or without modification, is
+# permitted provided that the following conditions are met:
+#
+# 1. Redistributions of this script must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# 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.
+
+
+PKGNAM=cxxlibs
+VERSION=${VERSION:-6.0.10}
+ARCH=${ARCH:-x86_64}
+BUILD=${BUILD:-1}
+
+
+if [ "$ARCH" = "x86_64" ]; then
+ LIBDIRSUFFIX="64"
+else
+ LIBDIRSUFFIX=""
+fi
+
+CWD=$(pwd)
+TMP=${TMP:-/tmp}
+PKG=$TMP/package-${PKGNAM}
+rm -rf $PKG
+mkdir -p $TMP $PKG
+
+cd $PKG
+cat $CWD/symlinks-to-tracked-libs${LIBDIRSUFFIX} | while read library ; do
+ ( mkdir -p $(dirname $library | cut -b2- )
+ cd $(dirname $library | cut -b2- )
+ rm -f $(basename $library)
+ cp -a $library .
+ rm -f $(readlink $library)
+ cp -a $(dirname $library)/$(readlink $library) .
+ )
+done
+
+mkdir -p $PKG/install
+cat $CWD/slack-desc > $PKG/install/slack-desc
+
+cd $PKG
+/sbin/makepkg -l y -c n $TMP/${PKGNAM}-$VERSION-$ARCH-$BUILD.txz
+
diff --git a/source/a/cxxlibs/oldgcc/oldgcc.build b/source/a/cxxlibs/oldgcc/oldgcc.build
new file mode 100755
index 00000000..471fefa1
--- /dev/null
+++ b/source/a/cxxlibs/oldgcc/oldgcc.build
@@ -0,0 +1,73 @@
+#!/bin/sh
+# GCC package build script (written by volkerdi@slackware.com)
+#
+# Copyright 2003, 2005 Slackware Linux, Inc., Concord, California, USA
+# All rights reserved.
+#
+# Redistribution and use of this script, with or without modification, is
+# permitted provided that the following conditions are met:
+#
+# 1. Redistributions of this script must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# 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.
+#
+
+# NOTE - THIS DOESN'T MAKE PACKAGES! IT JUST BUILDS GCC AND G++
+# this is for the purpose of getting libstdc++.so.5
+VERSION=3.3.6
+ARCH=${ARCH:-x86_64}
+TARGET=${TARGET:-$ARCH-slackware-linux}
+BUILD=${BUILD:-1}
+
+CWD=`pwd`
+# Temporary build location. This should *NOT* be a directory
+# path a non-root user could create later...
+TMP=/gcc-build-$(mcookie)
+
+# Clear the build locations:
+if [ -d $TMP ]; then
+ rm -rf $TMP
+fi
+
+EXTRA=--disable-multilib
+
+mkdir -p $TMP
+cd $TMP
+tar xjvf $CWD/gcc-$VERSION.tar.bz2
+# install docs
+( cd gcc-$VERSION
+ # Fix perms/owners
+ chown -R root.root .
+ find . -perm 777 -exec chmod 755 {} \;
+ find . -perm 775 -exec chmod 755 {} \;
+ find . -perm 754 -exec chmod 755 {} \;
+ find . -perm 664 -exec chmod 644 {} \;
+)
+# build gcc
+( mkdir gcc.build.lnx;
+ cd gcc.build.lnx;
+ CFLAGS="-O2 -fPIC" \
+ ../gcc-$VERSION/configure \
+ --enable-shared \
+ --enable-threads=posix \
+ --enable-__cxa_atexit \
+ --enable-languages=c,c++ \
+ --disable-checking \
+ --with-gnu-ld \
+ --verbose \
+ --target=${TARGET} \
+ --host=${TARGET} \
+ $EXTRA
+ # Include all debugging info (for now):
+ make #bootstrap;
+) 2>&1 | tee $TMP/gcc.build.log
diff --git a/source/a/cxxlibs/slack-desc b/source/a/cxxlibs/slack-desc
new file mode 100644
index 00000000..c1428f94
--- /dev/null
+++ b/source/a/cxxlibs/slack-desc
@@ -0,0 +1,19 @@
+# HOW TO EDIT THIS FILE:
+# The "handy ruler" below makes it easier to edit a package description. Line
+# up the first '|' above the ':' following the base package name, and the '|'
+# on the right side marks the last column you can put a character in. You must
+# make exactly 11 lines for the formatting to be correct. It's also
+# customary to leave one space after the ':'.
+
+ |-----handy-ruler------------------------------------------------------|
+cxxlibs: cxxlibs (C++ shared library compatibility package)
+cxxlibs:
+cxxlibs: This package contains the shared libraries needed to run dynamically
+cxxlibs: linked C++ binaries linked with older versions of libstdc++.
+cxxlibs:
+cxxlibs:
+cxxlibs:
+cxxlibs:
+cxxlibs:
+cxxlibs:
+cxxlibs:
diff --git a/source/a/cxxlibs/symlinks-to-tracked-libs b/source/a/cxxlibs/symlinks-to-tracked-libs
new file mode 100644
index 00000000..e4f67cf6
--- /dev/null
+++ b/source/a/cxxlibs/symlinks-to-tracked-libs
@@ -0,0 +1,5 @@
+/usr/i486-slackware-linux/lib/libstdc++-libc6.1-2.so.3
+/usr/i486-slackware-linux/lib/libstdc++-libc6.2-2.so.3
+/usr/i486-slackware-linux/lib/libstdc++.so.4
+/usr/i486-slackware-linux/lib/libstdc++.so.5
+/usr/lib/libstdc++.so.6
diff --git a/source/a/cxxlibs/symlinks-to-tracked-libs64 b/source/a/cxxlibs/symlinks-to-tracked-libs64
new file mode 100644
index 00000000..3a348cf1
--- /dev/null
+++ b/source/a/cxxlibs/symlinks-to-tracked-libs64
@@ -0,0 +1,2 @@
+/usr/lib64/libstdc++.so.5
+/usr/lib64/libstdc++.so.6
diff --git a/source/a/dbus/dbus.SlackBuild b/source/a/dbus/dbus.SlackBuild
new file mode 100755
index 00000000..c761ce54
--- /dev/null
+++ b/source/a/dbus/dbus.SlackBuild
@@ -0,0 +1,111 @@
+#!/bin/sh
+# Copyright 2007, 2008 Robby Workman <http://rlworkman.net>
+# Copyright 2007, 2008, 2009 Patrick Volkerding, Sebeka, MN, USA
+# All rights reserved.
+#
+# Redistribution and use of this script, with or without modification, is
+# permitted provided that the following conditions are met:
+#
+# 1. Redistributions of this script must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# 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.
+
+PRGNAM=dbus
+VERSION=1.2.14
+ARCH=${ARCH:-x86_64}
+BUILD=${BUILD:-1}
+
+NUMJOBS=${NUMJOBS:-" -j7 "}
+
+CWD=$(pwd)
+TMP=${TMP:-/tmp}
+PKG=$TMP/package-$PRGNAM
+
+if [ "$ARCH" = "i486" ]; then
+ SLKCFLAGS="-O2 -march=i486 -mtune=i686"
+ LIBDIRSUFFIX=""
+elif [ "$ARCH" = "s390" ]; then
+ SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
+elif [ "$ARCH" = "x86_64" ]; then
+ SLKCFLAGS="-O2 -fPIC"
+ LIBDIRSUFFIX="64"
+fi
+
+rm -rf $PKG
+mkdir -p $TMP $PKG
+cd $TMP
+rm -rf $PRGNAM-$VERSION
+tar xvf $CWD/$PRGNAM-$VERSION.tar.xz || exit 1
+cd $PRGNAM-$VERSION || exit 1
+chown -R root:root .
+find . \
+ \( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \
+ -exec chmod 755 {} \; -o \
+ \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
+ -exec chmod 644 {} \;
+
+CFLAGS="$SLKCFLAGS" \
+CXXFLAGS="$SLKCFLAGS" \
+./configure \
+ --prefix=/usr \
+ --libdir=/usr/lib${LIBDIRSUFFIX} \
+ --sysconfdir=/etc \
+ --localstatedir=/var \
+ --mandir=/usr/man \
+ --infodir=/usr/info \
+ --docdir=/usr/doc/$PRGNAM-$VERSION \
+ --enable-shared=yes \
+ --enable-static=no \
+ --with-system-pid-file=/var/run/dbus/dbus.pid \
+ --with-system-socket=/var/run/dbus/system_bus_socket \
+ --with-init-scripts=slackware \
+ --build=$ARCH-slackware-linux
+
+make $NUMJOBS || make || exit 1
+make install DESTDIR=$PKG
+
+find $PKG | xargs file | grep -e "executable" -e "shared object" \
+ | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
+
+( cd $PKG/usr/man
+ find . -type f -exec gzip -9 {} \;
+ for i in $( find . -type l ) ; do ln -s $( readlink $i ).gz $i.gz ; rm $i ; done
+)
+
+# Install a custom init script for dbus - the included one is not good for us
+rm $PKG/etc/rc.d/*
+zcat $CWD/rc.messagebus.gz > $PKG/etc/rc.d/rc.messagebus.new
+chmod 0755 $PKG/etc/rc.d/rc.messagebus.new
+
+# Let's not clobber existing config files
+mv $PKG/etc/dbus-1/session.conf $PKG/etc/dbus-1/session.conf.new
+mv $PKG/etc/dbus-1/system.conf $PKG/etc/dbus-1/system.conf.new
+
+# Fix some directory ownership
+chown messagebus $PKG/var/lib/dbus
+
+# Add documentation
+mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
+cp -a \
+ AUTHORS COPYING HACKING INSTALL NEWS README doc/*.{txt,html,dtd} \
+ $PKG/usr/doc/$PRGNAM-$VERSION
+find $PKG/usr/doc/$PRGNAM-$VERSION -type f -exec chmod 644 {} \;
+
+mkdir -p $PKG/install
+cat $CWD/slack-desc > $PKG/install/slack-desc
+zcat $CWD/doinst.sh.gz > $PKG/install/doinst.sh
+
+cd $PKG
+/sbin/makepkg -l y -c n $TMP/$PRGNAM-$VERSION-$ARCH-$BUILD.txz
+
diff --git a/source/a/dbus/doinst.sh b/source/a/dbus/doinst.sh
new file mode 100644
index 00000000..71c3d7a0
--- /dev/null
+++ b/source/a/dbus/doinst.sh
@@ -0,0 +1,24 @@
+config() {
+ NEW="$1"
+ OLD="$(dirname $NEW)/$(basename $NEW .new)"
+ # If there's no config file by that name, mv it over:
+ if [ ! -r $OLD ]; then
+ mv $NEW $OLD
+ elif [ "$(cat $OLD | md5sum)" = "$(cat $NEW | md5sum)" ]; then
+ # toss the redundant copy
+ rm $NEW
+ fi
+ # Otherwise, we leave the .new copy for the admin to consider...
+}
+
+# Keep same perms on rc.messagebus.new:
+if [ -e etc/rc.d/rc.messagebus ]; then
+ cp -a etc/rc.d/rc.messagebus etc/rc.d/rc.messagebus.new.incoming
+ cat etc/rc.d/rc.messagebus.new > etc/rc.d/rc.messagebus.new.incoming
+ mv etc/rc.d/rc.messagebus.new.incoming etc/rc.d/rc.messagebus.new
+fi
+
+config etc/dbus-1/session.conf.new
+config etc/dbus-1/system.conf.new
+config etc/rc.d/rc.messagebus.new
+
diff --git a/source/a/dbus/rc.messagebus b/source/a/dbus/rc.messagebus
new file mode 100644
index 00000000..7b27eb59
--- /dev/null
+++ b/source/a/dbus/rc.messagebus
@@ -0,0 +1,80 @@
+#!/bin/sh
+#
+# messagebus: The D-BUS systemwide message bus
+#
+# description: This is a daemon which broadcasts notifications of system events \
+# and other messages. See http://www.freedesktop.org/software/dbus/
+#
+# processname: dbus-daemon
+# pidfile: /var/run/dbus/pid
+
+# This is a modified version of the rc.messagebus script distributed with the
+# dbus sources. Thanks to Don Tanner of the GWare <http://gware.org> Project
+# for most of the work involved --Robby Workman <rworkman@slackware.com>
+
+
+PIDFILE=/var/run/dbus/dbus.pid
+
+start() {
+ if ! ps axc | grep -w dbus-daemon ; then
+ rm -f $(dirname $PIDFILE)/*
+ if [ -x /usr/bin/dbus-uuidgen -a -x /usr/bin/dbus-daemon ] ; then
+ echo "Starting system message bus: /usr/bin/dbus-uuidgen --ensure ; /usr/bin/dbus-daemon --system"
+ /usr/bin/dbus-uuidgen --ensure
+ /usr/bin/dbus-daemon --system 1> /dev/null
+ fi
+ fi
+}
+
+stop() {
+ if [ -e "$PIDFILE" ]; then
+ echo "Stopping system message bus..."
+ pid=$(cat $PIDFILE)
+ kill $pid 1> /dev/null 2> /dev/null
+ # Just in case:
+ killall dbus-daemon 1> /dev/null 2> /dev/null
+ rm -f $PIDFILE
+ fi
+}
+
+reload() {
+ echo "Reloading system message bus configuration..."
+ if [ -e "$PIDFILE" ]; then
+ pid=$(cat $PIDFILE)
+ kill -HUP $pid
+ else
+ killall -HUP dbus-daemon
+ fi
+}
+
+status() {
+ if ps axc | grep -wq dbus-daemon 2>/dev/null ; then
+ echo "dbus-daemon is running."
+ else
+ echo "dbus is stopped."
+ fi
+}
+
+# See how we were called.
+case "$1" in
+ start)
+ start
+ ;;
+ stop)
+ stop
+ ;;
+ restart)
+ stop
+ start
+ ;;
+ reload)
+ reload
+ ;;
+ status)
+ status
+ ;;
+ *)
+ echo $"Usage: $0 {start|stop|restart|reload|status}"
+ ;;
+esac
+
diff --git a/source/a/dbus/slack-desc b/source/a/dbus/slack-desc
new file mode 100644
index 00000000..0610ab8d
--- /dev/null
+++ b/source/a/dbus/slack-desc
@@ -0,0 +1,18 @@
+# HOW TO EDIT THIS FILE:
+# The "handy ruler" below makes it easier to edit a package description. Line
+# up the first '|' above the ':' following the base package name, and the '|'
+# on the right side marks the last column you can put a character in. You must
+# make exactly 11 lines for the formatting to be correct. It's also
+# customary to leave one space after the ':'.
+ |-----handy-ruler------------------------------------------------------|
+dbus: dbus (D-Bus message bus system)
+dbus:
+dbus: D-Bus supplies both a system daemon (for events such as "new hardware
+dbus: device added" or "printer queue changed") and a per user login
+dbus: session daemon (for general IPC needs among user applications).
+dbus: Also, the message bus is built on top of a general one-to-one message
+dbus: passing framework, which can be used by any two apps to communicate
+dbus: directly (without going through the message bus daemon).
+dbus:
+dbus:
+dbus:
diff --git a/source/a/dcron/dcron-2.3.3.crontab.diff4 b/source/a/dcron/dcron-2.3.3.crontab.diff4
new file mode 100644
index 00000000..30d0501a
--- /dev/null
+++ b/source/a/dcron/dcron-2.3.3.crontab.diff4
@@ -0,0 +1,19 @@
+--- ./crontab.c.orig Wed Feb 20 14:31:32 2002
++++ ./crontab.c Wed Feb 20 14:33:13 2002
+@@ -197,14 +197,14 @@
+ int n;
+
+ snprintf(path, sizeof(path), "%s.new", pas->pw_name);
+- if ((fd = open(path, O_CREAT|O_TRUNC|O_EXCL|O_APPEND|O_WRONLY, 0600)) >= 0) {
++ if ((fd = open(path, O_CREAT|O_TRUNC|O_APPEND|O_WRONLY, 0600)) >= 0) {
+ while ((n = read(repFd, buf, sizeof(buf))) > 0) {
+ write(fd, buf, n);
+ }
+ close(fd);
+ rename(path, pas->pw_name);
+ } else {
+- fprintf(stderr, "unable to create %s/%s\n", CDir, buf);
++ fprintf(stderr, "unable to create %s/%s\n", CDir, path);
+ }
+ close(repFd);
+ }
diff --git a/source/a/dcron/dcron-2.3.3.diff b/source/a/dcron/dcron-2.3.3.diff
new file mode 100644
index 00000000..22806de3
--- /dev/null
+++ b/source/a/dcron/dcron-2.3.3.diff
@@ -0,0 +1,40 @@
+--- ./defs.h.orig Fri Sep 5 14:44:32 1997
++++ ./defs.h Thu Aug 26 16:56:10 1999
+@@ -29,7 +29,7 @@
+ #define CRONTABS "/var/spool/cron/crontabs"
+ #endif
+ #ifndef TMPDIR
+-#define TMPDIR "/tmp"
++#define TMPDIR "/var/spool/cron"
+ #endif
+ #ifndef OPEN_MAX
+ #define OPEN_MAX 256
+--- ./subs.c.orig Mon Feb 16 13:35:10 1998
++++ ./subs.c Thu Aug 26 16:57:21 1999
+@@ -15,7 +15,7 @@
+ Prototype int ChangeUser(const char *user, short dochdir);
+ Prototype void vlog(int level, int fd, const char *ctl, va_list va);
+ Prototype int slog(char *buf, size_t sz, const char *ctl, va_list va, short useDate);
+-Prototype char *strdup(const char *);
++Prototype char *xx_strdup(const char *);
+
+ void
+ log9(const char *ctl, ...)
+@@ -80,7 +80,7 @@
+
+ buf[0] = 0;
+ if (useDate)
+- strftime(buf, 128, "%d-%b-%y %H:%M ", tp);
++ strftime(buf, 128, "%d-%b-%Y %H:%M ", tp);
+ vsnprintf(buf + strlen(buf), sz - strlen(buf), ctl, va);
+ return(strlen(buf));
+ }
+@@ -132,7 +132,7 @@
+ }
+
+ char *
+-strdup(const char *str)
++xx_strdup(const char *str)
+ {
+ char *ptr = malloc(strlen(str) + 1);
+
diff --git a/source/a/dcron/dcron-2.3.3.diff2 b/source/a/dcron/dcron-2.3.3.diff2
new file mode 100644
index 00000000..8eb8242c
--- /dev/null
+++ b/source/a/dcron/dcron-2.3.3.diff2
@@ -0,0 +1,477 @@
+--- ./CHANGES:1.1 Fri Jan 7 18:15:59 2000
++++ ./CHANGES Thu Apr 20 12:10:36 2000
+@@ -1,3 +1,15 @@
++20/03/00 - TEMHOTA <temnota@kmv.ru>
++ Adding SIGHUP signal handler. crond die when init send to it SIGHUP.
++ Rewrtited all loging code. Added logging through syslog and normal
++ logging to file.
++
++ Technical details:
++ + logging through syslog used facility LOG_CRON
++ + log_err - now *always* write message to logger (if selected logging
++ through syslog - message send as LOG_ERR).
++ + log9 - sends message hrough syslog loglevel LOG_WARNING
++ + for all other log levels - default syslog loglevel LOG_NOTICE
++
+ 02/16/98 - Jordan Mendelson (jordy@wserv.com)
+
+ Numerous people have reported a problem with logging. I'm sorry
+--- ./Makefile:1.1 Fri Jan 7 18:15:59 2000
++++ ./Makefile Thu Apr 20 12:24:40 2000
+@@ -27,7 +27,7 @@
+ rm -f crond crontab
+
+ cleano:
+- rm -f *.o dcron.tgz $(PROTOS)
++ rm -f *.o dcron.tgz $(PROTOS) *~
+
+ install: crond crontab
+ install -o root -g root -m 0755 crond /usr/sbin
+--- ./crontab.c:1.1 Fri Jan 7 18:15:59 2000
++++ ./crontab.c Sun Mar 19 15:03:36 2000
+@@ -15,6 +15,9 @@
+ char *CDir = CRONTABS;
+ int UserId;
+ short LogLevel = 9;
++short DebugOpt = 0;
++short LoggerOpt = 0;
++char *LogFile = LOG_FILE;
+
+ void EditFile(const char *user, const char *file);
+ int GetReplaceStream(const char *user, const char *file);
+@@ -136,7 +139,7 @@
+ */
+
+ if (chdir(CDir) < 0) {
+- fprintf(stderr, "cannot change diir to %s: %s\n", CDir, strerror(errno));
++ fprintf(stderr, "cannot change dir to %s: %s\n", CDir, strerror(errno));
+ exit(1);
+ }
+
+--- ./defs.h:1.1 Fri Jan 7 18:15:59 2000
++++ ./defs.h Sun Mar 19 15:03:36 2000
+@@ -17,6 +17,9 @@
+ #include <pwd.h>
+ #include <unistd.h>
+ #include <grp.h>
++#include <syslog.h>
++#include <signal.h>
++#include <getopt.h>
+ #include <sys/ioctl.h>
+ #include <sys/wait.h>
+ #include <sys/stat.h>
+@@ -30,6 +33,9 @@
+ #endif
+ #ifndef TMPDIR
+ #define TMPDIR "/var/spool/cron"
++#endif
++#ifndef LOG_FILE
++#define LOG_FILE "/var/log/cron"
+ #endif
+ #ifndef OPEN_MAX
+ #define OPEN_MAX 256
+--- ./job.c:1.1 Fri Jan 7 18:15:59 2000
++++ ./job.c Thu Apr 20 12:10:36 2000
+@@ -16,7 +16,7 @@
+ {
+ char mailFile[128];
+ int mailFd;
+-
++
+ line->cl_Pid = 0;
+ line->cl_MailFlag = 0;
+
+@@ -57,14 +57,6 @@
+ log(5, "Child Running %s\n", line->cl_Shell);
+
+ /*
+- * Setup close-on-exec descriptor in case exec fails
+- */
+-
+- dup2(2, 8);
+- fcntl(8, F_SETFD, 1);
+- fclose(stderr);
+-
+- /*
+ * stdin is already /dev/null, setup stdout and stderr
+ */
+
+@@ -73,13 +65,13 @@
+ dup2(mailFd, 2);
+ close(mailFd);
+ } else {
+- logfd(8, "unable to create mail file user %s file %s, output to /dev/null\n",
++ log_err("unable to create mail file user %s file %s, output to /dev/null\n",
+ file->cf_User,
+ mailFile
+ );
+ }
+ execl("/bin/sh", "/bin/sh", "-c", line->cl_Shell, NULL, NULL);
+- logfd(8, "unable to exec, user %s cmd /bin/sh -c %s\n",
++ log_err("unable to exec, user %s cmd /bin/sh -c %s\n",
+ file->cf_User,
+ line->cl_Shell
+ );
+@@ -89,7 +81,7 @@
+ /*
+ * PARENT, FORK FAILED
+ */
+- log9("couldn't fork, user %s\n", file->cf_User);
++ log_err("couldn't fork, user %s\n", file->cf_User);
+ line->cl_Pid = 0;
+ remove(mailFile);
+ } else {
+@@ -158,6 +150,7 @@
+ if (mailFd < 0) {
+ return;
+ }
++
+ if (fstat(mailFd, &sbuf) < 0 ||
+ sbuf.st_uid != DaemonUid ||
+ sbuf.st_nlink != 0 ||
+@@ -182,15 +175,6 @@
+ exit(0);
+
+ /*
+- * create close-on-exec log descriptor in case exec fails
+- */
+-
+- dup2(2, 8);
+- fcntl(8, F_SETFD, 1);
+-
+- fclose(stderr);
+-
+- /*
+ * run sendmail with mail file as standard input, only if
+ * mail file exists!
+ */
+@@ -200,7 +184,7 @@
+ close(mailFd);
+
+ execl(SENDMAIL, SENDMAIL, SENDMAIL_ARGS, NULL, NULL);
+- logfd(8, "unable to exec %s %s, user %s, output to sink null",
++ log_err("unable to exec %s %s, user %s, output to sink null",
+ SENDMAIL,
+ SENDMAIL_ARGS,
+ file->cf_User
+@@ -210,7 +194,7 @@
+ /*
+ * PARENT, FORK FAILED
+ */
+- log9("unable to fork, user %s", file->cf_User);
++ log_err("unable to fork, user %s", file->cf_User);
+ line->cl_Pid = 0;
+ } else {
+ /*
+--- ./main.c:1.1 Fri Jan 7 18:15:59 2000
++++ ./main.c Sun Mar 19 15:03:36 2000
+@@ -15,14 +15,18 @@
+ Prototype short DebugOpt;
+ Prototype short LogLevel;
+ Prototype short ForegroundOpt;
+-Prototype char *CDir;
+-Prototype int DaemonUid;
++Prototype short LoggerOpt;
++Prototype char *CDir;
++Prototype char *LogFile;
++Prototype uid_t DaemonUid;
+
+ short DebugOpt;
+ short LogLevel = 8;
+-short ForegroundOpt;
++short ForegroundOpt = 0;
++short LoggerOpt;
+ char *CDir = CRONTABS;
+-int DaemonUid;
++char *LogFile = LOG_FILE;
++uid_t DaemonUid;
+
+ int
+ main(int ac, char **av)
+@@ -35,48 +39,49 @@
+
+ DaemonUid = getuid();
+
+- for (i = 1; i < ac; ++i) {
+- char *ptr = av[i];
++ opterr = 0; /* disable getopt 'errors' message.*/
+
+- if (*ptr == '-') {
+- ptr += 2;
+-
+- switch(ptr[-1]) {
++ while ((i = getopt(ac,av,"d:l:L:fbSc:")) != EOF){
++
++ switch (i){
+ case 'l':
+- LogLevel = (*ptr) ? strtol(ptr, NULL, 0) : 1;
+- continue;
++ LogLevel = atoi(optarg);
++ break;
+ case 'd':
+- DebugOpt = (*ptr) ? strtol(ptr, NULL, 0) : 1;
++ DebugOpt = atoi(optarg);
+ LogLevel = 0;
+ /* fall through */
++ break;
+ case 'f':
+ ForegroundOpt = 1;
+- continue;
++ break;
+ case 'b':
+ ForegroundOpt = 0;
+- continue;
++ break;
++ case 'S': /* select logging to syslog */
++ LoggerOpt = 0;
++ break;
++ case 'L': /* select internal file logger */
++ LoggerOpt = 1;
++ if (*optarg != 0) LogFile = optarg;
++ break;
+ case 'c':
+- CDir = (*ptr) ? ptr : av[++i];
+- continue;
++ if (*optarg != 0) CDir = optarg;
++ break;
+ default:
++ /*
++ * parse error
++ */
++ printf("dcron " VERSION "\n");
++ printf("dcron -d [#] -l [#] -S -L logfile -f -b -c dir\n");
++ printf("-d num\tdebug level\n-l num\tlog level (8 - default)\n-S\tlog to syslod (defualt)\n");
++ printf("-L file\tlog to file\n-f\trun in fordeground\n");
++ printf("-b\trun in background (default)\n-c dir\tworking dir\n");
++ exit(1);
+ break;
+- }
+- }
+- break; /* error */
+- }
+-
+- /*
+- * check for parse error
+- */
+-
+- if (i != ac) {
+- if (i > ac)
+- puts("expected argument for option");
+- printf("dcron " VERSION "\n");
+- printf("dcron -d[#] -l[#] -f -b -c dir\n");
+- exit(1);
++ }
+ }
+-
++
+ /*
+ * change directory
+ */
+@@ -87,14 +92,15 @@
+ }
+
+ /*
+- * close stdin and stdout (stderr normally redirected by caller).
+- * close unused descriptors
++ * close stdin and stdout, stderr.
++ * close unused descriptors - don't need.
+ * optional detach from controlling terminal
+ */
+
+ fclose(stdin);
+ fclose(stdout);
+-
++ fclose(stderr);
++
+ i = open("/dev/null", O_RDWR);
+ if (i < 0) {
+ perror("open: /dev/null:");
+@@ -102,15 +108,14 @@
+ }
+ dup2(i, 0);
+ dup2(i, 1);
++ dup2(i, 2);
+
+- for (i = 3; i < OPEN_MAX; ++i) {
+- close(i);
+- }
+-
+ if (ForegroundOpt == 0) {
+ int fd;
+ int pid;
+-
++ if (setsid() < 0)
++ perror("setsid");
++
+ if ((fd = open("/dev/tty", O_RDWR)) >= 0) {
+ ioctl(fd, TIOCNOTTY, 0);
+ close(fd);
+@@ -125,13 +130,17 @@
+ if (pid > 0)
+ exit(0);
+ }
+-
++
++ (void)startlogger(); /* need if syslog mode selected */
++ (void)initsignals(); /* set some signal handlers */
++
+ /*
+ * main loop - synchronize to 1 second after the minute, minimum sleep
+ * of 1 second.
+ */
++
++ log(9,"%s " VERSION " dillon, started, log level %d\n", av[0], LogLevel);
+
+- log9("%s " VERSION " dillon, started\n", av[0]);
+ SynchronizeDir(".");
+
+ {
+--- ./subs.c:1.1 Fri Jan 7 18:15:59 2000
++++ ./subs.c Sun Mar 19 15:03:36 2000
+@@ -10,43 +10,62 @@
+
+ Prototype void log(int level, const char *ctl, ...);
+ Prototype void log9(const char *ctl, ...);
+-Prototype void logfd(int fd, const char *ctl, ...);
++Prototype void log_err(const char *ctl, ...);
+ Prototype void fdprintf(int fd, const char *ctl, ...);
+-Prototype int ChangeUser(const char *user, short dochdir);
+-Prototype void vlog(int level, int fd, const char *ctl, va_list va);
+-Prototype int slog(char *buf, size_t sz, const char *ctl, va_list va, short useDate);
++Prototype void vlog(int level, int MLOG_LEVEL, const char *ctl, va_list va);
++Prototype int ChangeUser(const char *user, short dochdir);
+ Prototype char *xx_strdup(const char *);
++Prototype void startlogger(void);
++Prototype void initsignals(void);
+
++/*
++ set log_level=9 and log messages
++*/
++
+ void
+ log9(const char *ctl, ...)
+ {
+ va_list va;
+
+ va_start(va, ctl);
+- vlog(9, 2, ctl, va);
++ vlog(9, LOG_WARNING, ctl, va);
+ va_end(va);
+ }
+
++/*
++ normal logger call point.
++*/
++
+ void
+ log(int level, const char *ctl, ...)
+ {
+ va_list va;
+
+ va_start(va, ctl);
+- vlog(level, 2, ctl, va);
++ vlog(level, LOG_NOTICE, ctl, va);
+ va_end(va);
+ }
+
++/*
++ Original: void
++ logfd(int fd, const char *ctl, ...)
++ Updated to: log_error (used by jobs.c)
++*/
++
+ void
+-logfd(int fd, const char *ctl, ...)
++log_err(const char *ctl, ...)
+ {
+ va_list va;
+
+ va_start(va, ctl);
+- vlog(9, fd, ctl, va);
++ vlog(20, LOG_ERR, ctl, va);
+ va_end(va);
+ }
+
++/*
++ used by jobs.c (write to temp file..)
++*/
++
+ void
+ fdprintf(int fd, const char *ctl, ...)
+ {
+@@ -60,32 +79,28 @@
+ }
+
+ void
+-vlog(int level, int fd, const char *ctl, va_list va)
++vlog(int level, int MLOG_LEVEL, const char *ctl, va_list va)
+ {
+ char buf[1024];
+- short n;
+- static short useDate = 1;
++ int logfd;
+
+ if (level >= LogLevel) {
+- write(fd, buf, n = slog(buf, sizeof(buf), ctl, va, useDate));
+- useDate = (n && buf[n-1] == '\n');
++
++ vsnprintf(buf,sizeof(buf), ctl, va);
++ if (DebugOpt) fprintf(stderr,"%s",buf);
++ else
++ if (LoggerOpt == 0) syslog(MLOG_LEVEL, "%s",buf );
++ else {
++ if ((logfd = open(LogFile,O_WRONLY|O_CREAT|O_APPEND,600)) >= 0){
++ write(logfd, buf, strlen(buf));
++ close(logfd);
++ } else
++ fprintf(stderr,"Can't open log file. Err: %s",strerror(errno));
++ }
+ }
+ }
+
+ int
+-slog(char *buf, size_t sz, const char *ctl, va_list va, short useDate)
+-{
+- time_t t = time(NULL);
+- struct tm *tp = localtime(&t);
+-
+- buf[0] = 0;
+- if (useDate)
+- strftime(buf, 128, "%d-%b-%Y %H:%M ", tp);
+- vsnprintf(buf + strlen(buf), sz - strlen(buf), ctl, va);
+- return(strlen(buf));
+-}
+-
+-int
+ ChangeUser(const char *user, short dochdir)
+ {
+ struct passwd *pas;
+@@ -141,3 +156,28 @@
+ return(ptr);
+ }
+
++
++void
++startlogger(void){
++int logfd;
++
++ if (LoggerOpt == 0)
++ openlog("crond",LOG_CONS|LOG_PID,LOG_CRON);
++
++ else { /* test logfile */
++ if ((logfd = open(LogFile,O_WRONLY|O_CREAT|O_APPEND,600)) >= 0)
++ close(logfd);
++ else
++ printf("Failed to open log file '%s' reason: %s",LogFile,strerror(errno));
++ }
++}
++
++
++void
++initsignals(void){
++
++ signal(SIGHUP,SIG_IGN); /* hmm.. but, if kill -HUP original
++ * version - his died. ;(
++ */
++
++}
diff --git a/source/a/dcron/dcron-2.3.3.diff3 b/source/a/dcron/dcron-2.3.3.diff3
new file mode 100644
index 00000000..25c72fc9
--- /dev/null
+++ b/source/a/dcron/dcron-2.3.3.diff3
@@ -0,0 +1,11 @@
+--- ./defs.h.orig Wed May 30 14:13:05 2001
++++ ./defs.h Wed May 30 14:13:13 2001
+@@ -41,7 +41,7 @@
+ #define OPEN_MAX 256
+ #endif
+ #ifndef SENDMAIL
+-#define SENDMAIL "/usr/lib/sendmail"
++#define SENDMAIL "/usr/sbin/sendmail"
+ #endif
+ #ifndef SENDMAIL_ARGS
+ #define SENDMAIL_ARGS "-t", "-oem", "-i"
diff --git a/source/a/dcron/dcron-2.3.3.lsm b/source/a/dcron/dcron-2.3.3.lsm
new file mode 100644
index 00000000..5c161b50
--- /dev/null
+++ b/source/a/dcron/dcron-2.3.3.lsm
@@ -0,0 +1,17 @@
+Begin3
+Title: DCron - yet another cron
+Version: 2.3.3
+Entered-date: 17Feb98
+Description: A multi-user cron written from scratch by the author,
+ similar to vixie-cron but with significant differences.
+ Attention paid less to feature creep and more to usability
+ and reliability
+Keywords: cron crontab dcron
+Author: dillon@apollo.west.oic.com (Matthew Dillon)
+Maintained-by: dillon@apollo.west.oic.com (Matthew Dillon)
+Primary-site: sunsite.unc.edu /pub/Linux/system/daemons/cron
+Alternate-site:
+Original-site:
+Platforms:
+Copying-policy: GPL
+End
diff --git a/source/a/dcron/dcron-2.3.3.version.diff b/source/a/dcron/dcron-2.3.3.version.diff
new file mode 100644
index 00000000..1b65a0c9
--- /dev/null
+++ b/source/a/dcron/dcron-2.3.3.version.diff
@@ -0,0 +1,11 @@
+--- ./defs.h.orig Tue Apr 9 01:07:07 2002
++++ ./defs.h Tue Apr 9 01:07:15 2002
+@@ -51,7 +51,7 @@
+ #endif
+
+
+-#define VERSION "2.3.2"
++#define VERSION "2.3.3"
+
+ typedef struct CronFile {
+ struct CronFile *cf_Next;
diff --git a/source/a/dcron/dcron.SlackBuild b/source/a/dcron/dcron.SlackBuild
new file mode 100755
index 00000000..c9bb62ff
--- /dev/null
+++ b/source/a/dcron/dcron.SlackBuild
@@ -0,0 +1,76 @@
+#!/bin/sh
+
+# Copyright 2008, 2009 Patrick J. Volkerding, Sebeka, Minnesota, USA
+# All rights reserved.
+#
+# Redistribution and use of this script, with or without modification, is
+# permitted provided that the following conditions are met:
+#
+# 1. Redistributions of this script must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# 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.
+
+VERSION=2.3.3
+ARCH=${ARCH:-x86_64}
+BUILD=${BUILD:-6}
+
+CWD=$(pwd)
+TMP=${TMP:-/tmp}
+PKG=$TMP/package-dcron
+
+rm -rf $PKG
+mkdir -p $TMP $PKG
+
+# Explode the package framework:
+cd $PKG
+explodepkg $CWD/_dcron.tar.gz
+
+cd $TMP
+rm -rf dcron-$VERSION
+tar xzvf $CWD/dcron-$VERSION.tar.gz
+cd dcron-$VERSION
+mkdir -p $PKG/usr/doc/dcron-$VERSION
+cp -a CHANGES README dcron-$VERSION.lsm $PKG/usr/doc/dcron-2.3.3
+chown root:root $PKG/usr/doc/dcron-$VERSION/*
+chmod 644 $PKG/usr/doc/dcron-$VERSION/*
+zcat $CWD/dcron-$VERSION.diff.gz | patch -p1 -E --verbose --backup || exit
+# Added signal handling/logging patch from TEMHOTA <temnota@kmv.ru>:
+zcat $CWD/dcron-$VERSION.diff2.gz | patch -p1 -E --verbose --backup || exit
+# Use /usr/sbin/sendmail, not /usr/lib/sendmail. Fixes cron working
+# with Postfix. Suggested by Big Brother.
+zcat $CWD/dcron-$VERSION.diff3.gz | patch -p1 -E --verbose --backup || exit
+# Fix problem where user creates /var/spool/cron/crontabs/<user>.new
+# using 'crontab -', exits with control-c, and then crontab refuses to
+# overwrite the junk file:
+zcat $CWD/dcron-$VERSION.crontab.diff4.gz | patch -p1 -E --verbose --backup || exit
+# Dcron reports wrong version:
+zcat $CWD/dcron-2.3.3.version.diff.gz | patch -p1 || exit
+# Keep dcron from improperly forking in some circumstances.
+# Thanks to Henrik Carlqvist for the patch.
+zcat $CWD/dcron.fork.diff.gz | patch -p1
+make
+strip crond crontab
+cat crond > $PKG/usr/sbin/crond
+cat crontab > $PKG/usr/bin/crontab
+zcat $CWD/run-parts.gz > $PKG/usr/bin/run-parts
+cat crontab.1 | gzip -9c > $PKG/usr/man/man1/crontab.1.gz
+cat crond.8 | gzip -9c > $PKG/usr/man/man8/crond.8.gz
+cat $CWD/run-parts.8.gz > $PKG/usr/man/man8/run-parts.8.gz
+
+mkdir -p $PKG/install
+cat $CWD/slack-desc > $PKG/install/slack-desc
+
+# Build the package:
+cd $PKG
+makepkg -l y -c n $TMP/dcron-$VERSION-$ARCH-$BUILD.txz
+
diff --git a/source/a/dcron/dcron.fork.diff b/source/a/dcron/dcron.fork.diff
new file mode 100644
index 00000000..b3aefc05
--- /dev/null
+++ b/source/a/dcron/dcron.fork.diff
@@ -0,0 +1,11 @@
+--- ./job.c.orig 2005-09-11 16:36:43.000000000 -0700
++++ ./job.c 2005-09-11 16:37:51.000000000 -0700
+@@ -51,7 +51,7 @@
+ */
+
+ if (ChangeUser(file->cf_User, 1) < 0)
+- return;
++ exit(0);
+
+ if (DebugOpt)
+ log(5, "Child Running %s\n", line->cl_Shell);
diff --git a/source/a/dcron/dcron.tmpdir.diff b/source/a/dcron/dcron.tmpdir.diff
new file mode 100644
index 00000000..3946fede
--- /dev/null
+++ b/source/a/dcron/dcron.tmpdir.diff
@@ -0,0 +1,11 @@
+--- defs.h.orig Mon May 2 10:27:40 1994
++++ defs.h Sun Apr 4 22:09:00 1999
+@@ -29,7 +29,7 @@
+ #define CRONTABS "/var/spool/cron/crontabs"
+ #endif
+ #ifndef TMPDIR
+-#define TMPDIR "/tmp"
++#define TMPDIR "/var/spool/cron"
+ #endif
+ #ifndef OPEN_MAX
+ #define OPEN_MAX 256
diff --git a/source/a/dcron/run-parts b/source/a/dcron/run-parts
new file mode 100644
index 00000000..dd6b59b3
--- /dev/null
+++ b/source/a/dcron/run-parts
@@ -0,0 +1,49 @@
+#!/bin/sh
+# run-parts: Runs all the scripts found in a directory.
+
+# keep going when something fails
+set +e
+
+if [ $# -lt 1 ]; then
+ echo "Usage: run-parts <directory>"
+ exit 1
+fi
+
+if [ ! -d $1 ]; then
+ echo "Not a directory: $1"
+ echo "Usage: run-parts <directory>"
+ exit 1
+fi
+
+# There are several types of files that we would like to
+# ignore automatically, as they are likely to be backups
+# of other scripts:
+IGNORE_SUFFIXES="~ ^ , .bak .new .rpmsave .rpmorig .rpmnew .swp"
+
+# Main loop:
+for SCRIPT in $1/* ; do
+ # If this is not a regular file, skip it:
+ if [ ! -f $SCRIPT ]; then
+ continue
+ fi
+ # Determine if this file should be skipped by suffix:
+ SKIP=false
+ for SUFFIX in $IGNORE_SUFFIXES ; do
+ if [ ! "`basename $SCRIPT $SUFFIX`" = "`basename $SCRIPT`" ]; then
+ SKIP=true
+ break
+ fi
+ done
+ if [ "$SKIP" = "true" ]; then
+ continue
+ fi
+ # If we've made it this far, then run the script if it's executable:
+ if [ -x $SCRIPT ]; then
+ echo "$SCRIPT:"
+ echo
+ $SCRIPT 2>&1
+ echo
+ fi
+done
+
+exit 0
diff --git a/source/a/dcron/run-parts.8 b/source/a/dcron/run-parts.8
new file mode 100644
index 00000000..2d5e5f6a
--- /dev/null
+++ b/source/a/dcron/run-parts.8
@@ -0,0 +1,36 @@
+.\" -*- nroff -*-
+.ds g \" empty
+.ds G \" empty
+.\" 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 RUN-PARTS 8 "14 Apr 2002" "Slackware Version 8.1.0
+.SH NAME
+run-parts \- run scripts found in a directory
+.SH SYNOPSIS
+.B run-parts <directory>
+.LP
+.SH DESCRIPTION
+.B run-parts
+is a utility that will run scripts that are found in a directory. For example,
+it might be useful to create an /etc/cron.daily directory and put scripts in
+there for daily cron jobs. Then
+.B run-parts
+can be called once a day from root's crontab to run all the scripts found in
+/etc/cron.daily:
+
+40 4 * * * run-parts /etc/cron.daily
+
+.B run-parts
+automatically skips files with certain suffixes that are generally associated
+with backup or extra files. Any file that ends in one of these will be silently
+ignored: ~ ^ , .bak .new .rpmsave .rpmorig .rpmnew .swp
+.SH AUTHOR
+Patrick J. Volkerding <volkerdi@slackware.com>, with ideas borrowed from the
+Red Hat and Debian versions of this utility.
+.SH "SEE ALSO"
+.BR crond(8),
+.BR crontab(8).
diff --git a/source/a/dcron/slack-desc b/source/a/dcron/slack-desc
new file mode 100644
index 00000000..d56e6087
--- /dev/null
+++ b/source/a/dcron/slack-desc
@@ -0,0 +1,19 @@
+# HOW TO EDIT THIS FILE:
+# The "handy ruler" below makes it easier to edit a package description. Line
+# up the first '|' above the ':' following the base package name, and the '|' on
+# the right side marks the last column you can put a character in. You must make
+# exactly 11 lines for the formatting to be correct. It's also customary to
+# leave one space after the ':'.
+
+ |-----handy-ruler------------------------------------------------------|
+dcron: dcron (Dillon's Cron daemon)
+dcron:
+dcron: The cron daemon runs in the background and executes tasks on behalf of
+dcron: users at the appropriate time. Many timed system tasks are started
+dcron: with cron, such as the nightly indexing with updatedb.
+dcron:
+dcron: dcron was written entirely from scratch by Matthew Dillon.
+dcron:
+dcron:
+dcron:
+dcron:
diff --git a/source/a/device-mapper/64-device-mapper.rules b/source/a/device-mapper/64-device-mapper.rules
new file mode 100644
index 00000000..7e9a235d
--- /dev/null
+++ b/source/a/device-mapper/64-device-mapper.rules
@@ -0,0 +1,37 @@
+# device mapper links hook into "change" events, when the dm table
+# becomes available; some table-types must be ignored
+
+KERNEL=="device-mapper", NAME="mapper/control"
+
+KERNEL!="dm-*", GOTO="device_mapper_end"
+ACTION!="add|change", GOTO="device_mapper_end"
+
+# lookup device name
+# use dmsetup, until devmap_name is provided by sys-fs/device-mapper
+PROGRAM=="/sbin/dmsetup -j %M -m %m --noopencount --noheadings -c -o name info",
+ ENV{DM_NAME}="%c"
+
+# do not do anything if dmsetup does not provide a name
+ENV{DM_NAME}=="", NAME="", OPTIONS="ignore_device"
+
+# ignore luks crypt devices while not fully up
+ENV{DM_NAME}=="temporary-cryptsetup-*", NAME="", OPTIONS="ignore_device"
+
+# use queried name
+ENV{DM_NAME}=="?*", NAME="mapper/$env{DM_NAME}"
+
+SYMLINK+="disk/by-id/dm-name-$env{DM_NAME}"
+SYMLINK+="disk/by-name/$env{DM_NAME}"
+
+PROGRAM!="/sbin/dmsetup status -j %M -m %m", GOTO="device_mapper_end"
+ENV{DM_TYPE}="%c{3}"
+
+ENV{DM_TYPE}=="|*error*", GOTO="device_mapper_end"
+
+IMPORT{program}="vol_id --export $tempnode"
+OPTIONS="link_priority=50"
+ENV{DM_TYPE}=="*snapshot-origin*", OPTIONS="link_priority=60"
+ENV{ID_FS_USAGE}=="filesystem|other|crypto", ENV{ID_FS_UUID_ENC}=="?*", SYMLINK+="disk/by-uuid/$env{ID_FS_UUID_ENC}"
+ENV{ID_FS_USAGE}=="filesystem|other", ENV{ID_FS_LABEL_ENC}=="?*", SYMLINK+="disk/by-label/$env{ID_FS_LABEL_ENC}"
+
+LABEL="device_mapper_end"
diff --git a/source/a/device-mapper/device-mapper.SlackBuild b/source/a/device-mapper/device-mapper.SlackBuild
new file mode 100755
index 00000000..d770deed
--- /dev/null
+++ b/source/a/device-mapper/device-mapper.SlackBuild
@@ -0,0 +1,115 @@
+#!/bin/sh
+
+# Copyright 2008, 2009 Patrick J. Volkerding, Sebeka, Minnesota, USA
+# All rights reserved.
+#
+# Redistribution and use of this script, with or without modification, is
+# permitted provided that the following conditions are met:
+#
+# 1. Redistributions of this script must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# 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.
+
+VERSION=1.02.28
+ARCH=${ARCH:-x86_64}
+NUMJOBS=${NUMJOBS:-" -j7 "}
+BUILD=${BUILD:-1}
+
+CWD=$(pwd)
+TMP=${TMP:-/tmp}
+PKG=$TMP/package-device-mapper
+
+if [ "$ARCH" = "i486" ]; then
+ SLKCFLAGS="-O2 -march=i486 -mtune=i686"
+ LIBDIRSUFFIX=""
+elif [ "$ARCH" = "s390" ]; then
+ SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
+elif [ "$ARCH" = "x86_64" ]; then
+ SLKCFLAGS="-O2 -fPIC"
+ LIBDIRSUFFIX="64"
+fi
+
+rm -rf $PKG
+mkdir -p $TMP $PKG
+cd $TMP
+rm -rf device-mapper.$VERSION
+tar xvf $CWD/device-mapper.$VERSION.tar.bz2 || exit 1
+cd device-mapper.$VERSION
+
+chown -R root.root .
+find . \
+ \( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \
+ -exec chmod 755 {} \; -o \
+ \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
+ -exec chmod 644 {} \;
+
+CFLAGS="$SLKCFLAGS" \
+./configure \
+ --libdir=/lib${LIBDIRSUFFIX} \
+ --mandir=/usr/man \
+ --enable-static_link \
+ --enable-pkgconfig \
+ --enable-dmeventd \
+ --disable-selinux \
+ --with-device-uid=0 \
+ --with-device-gid=6 \
+ --with-device-mode=0660 \
+ --build=$ARCH-slackware-linux
+ # I tried adding --enable-compat but that failed to compile
+
+make $NUMJOBS || make || exit 1
+make install DESTDIR=$PKG || exit 1
+
+# On x86_64 the pkgconfig files are installed to the wrong directory, but
+# the .pc content is correct, so we just move them over:
+if [ ! -d $PKG/usr/lib${LIBDIRSUFFIX}/pkgconfig ]; then
+ mkdir -p $PKG/usr/lib${LIBDIRSUFFIX}
+ mv $PKG/usr/lib/pkgconfig $PKG/usr/lib${LIBDIRSUFFIX}/
+ rmdir $PKG/usr/lib || exit 1
+fi
+
+mkdir -p $PKG/lib/udev/rules.d
+cat $CWD/64-device-mapper.rules > $PKG/lib/udev/rules.d/64-device-mapper.rules
+
+( cd $PKG
+ find . | xargs file | grep "executable" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
+ find . | xargs file | grep "shared object" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
+)
+
+mkdir -p $PKG/usr/doc/device-mapper.$VERSION
+cp -a \
+ COPYING* INSTALL INTRO README* VERSION WHATS_NEW \
+ $PKG/usr/doc/device-mapper.$VERSION
+
+# Compress and if needed symlink the man pages:
+if [ -d $PKG/usr/man ]; then
+ ( cd $PKG/usr/man
+ for manpagedir in $(find . -type d -name "man*") ; do
+ ( cd $manpagedir
+ for eachpage in $( find . -type l -maxdepth 1) ; do
+ ln -s $( readlink $eachpage ).gz $eachpage.gz
+ rm $eachpage
+ done
+ gzip -9 *.?
+ )
+ done
+ )
+fi
+
+mkdir -p $PKG/install
+cat $CWD/slack-desc > $PKG/install/slack-desc
+
+cd $PKG
+makepkg -l y -c n $TMP/device-mapper-$VERSION-$ARCH-$BUILD.txz
+
diff --git a/source/a/device-mapper/slack-desc b/source/a/device-mapper/slack-desc
new file mode 100644
index 00000000..2708a39f
--- /dev/null
+++ b/source/a/device-mapper/slack-desc
@@ -0,0 +1,20 @@
+# HOW TO EDIT THIS FILE:
+# The "handy ruler" below makes it easier to edit a package description. Line
+# up the first '|' above the ':' following the base package name, and the '|' on
+# the right side marks the last column you can put a character in. You must make
+# exactly 11 lines for the formatting to be correct. It's also customary to
+# leave one space after the ':'.
+
+ |-----handy-ruler------------------------------------------------------|
+device-mapper: device-mapper (device-mapper for logical volume management)
+device-mapper:
+device-mapper: The goal of device-mapper is to support volume management. The
+device-mapper: driver enables the definition of new block devices composed of
+device-mapper: ranges of sectors of existing devices. This can be used to define
+device-mapper: disk partitions or logical volumes.
+device-mapper:
+device-mapper: device-mapper is required by LVM2, the Logical Volume Manager.
+device-mapper:
+device-mapper:
+device-mapper:
+
diff --git a/source/a/devs/devs.SlackBuild b/source/a/devs/devs.SlackBuild
new file mode 100755
index 00000000..61ddf33b
--- /dev/null
+++ b/source/a/devs/devs.SlackBuild
@@ -0,0 +1,62 @@
+#!/bin/sh
+
+# Copyright 2008, 2009 Patrick J. Volkerding, Sebeka, Minnesota, USA
+# All rights reserved.
+#
+# Redistribution and use of this script, with or without modification, is
+# permitted provided that the following conditions are met:
+#
+# 1. Redistributions of this script must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# 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.
+
+VERSION=2.3.1
+ARCH=noarch
+BUILD=${BUILD:-25}
+
+CWD=$(pwd)
+TMP=${TMP:-/tmp}
+PKG=$TMP/package-devs
+
+rm -rf $PKG
+mkdir -p $TMP $PKG
+
+# Explode the package framework:
+cd $PKG
+explodepkg $CWD/_devs.tar.gz
+
+cd $TMP
+rm -r MAKEDEV-${VERSION}
+tar xzvf $CWD/makedev_${VERSION}.orig.tar.gz
+cd MAKEDEV-${VERSION}
+zcat $CWD/makedev_2.3.1-46.2.diff.gz | patch -p1 -E
+#zcat $CWD/makedev_.slack.diff.gz | patch -p1 -E
+# Add many more IDE devices:
+zcat $CWD/makedev_2.3.1.hd.diff.gz | patch -p1 -E
+# Still not enough:
+zcat $CWD/makedev.hd.diff.gz | patch -p1 -E
+cat MAKEDEV > $PKG/dev/MAKEDEV
+cat README > $PKG/dev/README.MAKEDEV
+gzip -9c MAKEDEV.man > $PKG/usr/man/man8/MAKEDEV.8.gz
+mkdir -p $PKG/install
+cat $CWD/slack-desc > $PKG/install/slack-desc
+
+# Build the package:
+cd $PKG
+makepkg -l y -c n $TMP/devs-$VERSION-$ARCH-$BUILD.txz
+
+# Clean up the extra stuff:
+if [ "$1" = "--cleanup" ]; then
+ rm -rf $TMP/MAKEDEV-${VERSION}
+ rm -rf $PKG
+fi
diff --git a/source/a/devs/makedev.hd.diff b/source/a/devs/makedev.hd.diff
new file mode 100644
index 00000000..7276c1dc
--- /dev/null
+++ b/source/a/devs/makedev.hd.diff
@@ -0,0 +1,92 @@
+--- ./MAKEDEV.orig 2002-06-09 12:31:22.000000000 -0700
++++ ./MAKEDEV 2002-06-09 12:31:51.000000000 -0700
+@@ -914,7 +914,7 @@
+ base=`index ab $unit`
+ base=`math $base \* 64`
+ makedev hd$unit b $major $base $disk
+- for part in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
++ for part in 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 32
+ do
+ makedev hd$unit$part b $major `math $base + $part` $disk
+ done
+@@ -925,7 +925,7 @@
+ base=`index cd $unit`
+ base=`math $base \* 64`
+ makedev hd$unit b $major $base $disk
+- for part in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
++ for part in 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 32
+ do
+ makedev hd$unit$part b $major $(( $base + $part )) $disk
+ done
+@@ -936,7 +936,7 @@
+ base=`index ef $unit`
+ base=`math $base \* 64`
+ makedev hd$unit b $major $base $disk
+- for part in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
++ for part in 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 32
+ do
+ makedev hd$unit$part b $major $(( $base + $part )) $disk
+ done
+@@ -947,7 +947,7 @@
+ base=`index gh $unit`
+ base=`math $base \* 64`
+ makedev hd$unit b $major $base $disk
+- for part in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
++ for part in 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 32
+ do
+ makedev hd$unit$part b $major $(( $base + $part )) $disk
+ done
+@@ -958,7 +958,7 @@
+ base=`index ij $unit`
+ base=`math $base \* 64`
+ makedev hd$unit b $major $base $disk
+- for part in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
++ for part in 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 32
+ do
+ makedev hd$unit$part b $major $(( $base + $part )) $disk
+ done
+@@ -969,7 +969,7 @@
+ base=`index kl $unit`
+ base=`math $base \* 64`
+ makedev hd$unit b $major $base $disk
+- for part in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
++ for part in 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 32
+ do
+ makedev hd$unit$part b $major $(( $base + $part )) $disk
+ done
+@@ -980,7 +980,7 @@
+ base=`index mn $unit`
+ base=`math $base \* 64`
+ makedev hd$unit b $major $base $disk
+- for part in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
++ for part in 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 32
+ do
+ makedev hd$unit$part b $major $(( $base + $part )) $disk
+ done
+@@ -991,7 +991,7 @@
+ base=`index op $unit`
+ base=`math $base \* 64`
+ makedev hd$unit b $major $base $disk
+- for part in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
++ for part in 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 32
+ do
+ makedev hd$unit$part b $major $(( $base + $part )) $disk
+ done
+@@ -1002,7 +1002,7 @@
+ base=`index qr $unit`
+ base=`math $base \* 64`
+ makedev hd$unit b $major $base $disk
+- for part in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
++ for part in 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 32
+ do
+ makedev hd$unit$part b $major $(( $base + $part )) $disk
+ done
+@@ -1013,7 +1013,7 @@
+ base=`index st $unit`
+ base=`math $base \* 64`
+ makedev hd$unit b $major $base $disk
+- for part in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
++ for part in 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 32
+ do
+ makedev hd$unit$part b $major $(( $base + $part )) $disk
+ done
diff --git a/source/a/devs/makedev_2.3.1-46.2.diff b/source/a/devs/makedev_2.3.1-46.2.diff
new file mode 100644
index 00000000..87ad22f8
--- /dev/null
+++ b/source/a/devs/makedev_2.3.1-46.2.diff
@@ -0,0 +1,2952 @@
+--- makedev-2.3.1.orig/MAKEDEV.man
++++ makedev-2.3.1/MAKEDEV.man
+@@ -124,8 +124,7 @@
+ .BI ttyC x
+ and the corresponding dial-out device is
+ .BI cub x
+-By default devices for 7 lines are created, but this can be changed to
+-15 by removing the comment.
++Devices for 32 lines are created.
+ .TP
+ .B Pseudo Terminals
+ .TP
+@@ -387,4 +386,4 @@
+ Linux Allocated Devices, maintained by H.\ Peter Anvin,
+ <Peter.Anvin@linux.org>.
+ .SH AUTHOR
+-Nick Holloway, <Nick.Hollowa
+\ No newline at end of file
++Nick Holloway, <Nick.Hollowa
+--- makedev-2.3.1.orig/MAKEDEV
++++ makedev-2.3.1/MAKEDEV
+@@ -10,25 +10,38 @@
+ # system, and you may change the permissions to suit your preference. These
+ # lines _must_ be of the format "user group perm".
+
+- public=" root sys 666"
+- system=" root sys 660"
+- kmem=" root kmem 660"
+- tty=" root tty 666"
+- cons=" root tty 622" # 622 for console?
+- vcs=" root sys 600"
+-dialout=" root uucp 660"
+- mouse=" root sys 666"
+-printer=" root daemon 660"
+- floppy=" root floppy 660"
+- disk=" root disk 660"
+- scsi=" root sys 600"
+- cdrom=" root disk 660"
+- tape=" root disk 660"
+- audio=" root sys 666"
+- ibcs2=" root sys 666"
+-scanner=" root sys 666"
++ public=" root root 0666"
++private=" root root 0600"
++ system=" root root 0660"
++ kmem=" root kmem 0640"
++ tty=" root tty 0666"
++ cons=" root tty 0622"
++ vcs=" root root 0600"
++dialout=" root dialout 0660"
++ mouse=" root root 0660"
++printer=" root lp 0660"
++ floppy=" root floppy 0660"
++ disk=" root disk 0660"
++ scsi=" root root 0600"
++ cdrom=" root cdrom 0660"
++ tape=" root tape 0660"
++ audio=" root audio 0660"
++ video=" root video 0660"
++ ibcs2=" root root 0666"
++scanner=" root root 0666"
++ coda=" root root 0600"
++ ipsec=" root root 0200"
++readable=" root root 0444"
+
+-MAXVT=8
++MAXVT=63
++
++# defaults for $major_*
++major_ide0=3
++major_ide1=22
++major_sd=8
++major_lp=6
++
++# Remark: OSS/Linux becomes major_OSSLinux
+
+ #---#---#---#---#---#---#---#---#---#---#---#---#---#---#---#---#---#---#---#
+
+@@ -94,41 +107,30 @@
+
+ #---#---#---#---#---#---#---#---#---#---#---#---#---#---#---#---#---#---#---#
+
+-# For bash and ksh, we can use faster builtin routines to do manipulation,
+-# otherwise (ash) fall back to slower method using `expr'.
+-# The extra level of indirection using `eval' is necessary a) for ksh, and
+-# b) to get past ash.
++# Debian allows us to assume /bin/sh is a POSIX compliant shell, so go for it!
+
+-if [ "$RANDOM" != "$RANDOM" ]
+-then
+- math () {
+- eval echo "\$(($*))"
+- }
+- index () { # index string c
+- eval "I=\${1%$2*}"
+- eval echo "\${#I}"
+- }
+- suffix () {
+- eval echo "\${1#$2}"
+- }
+- strip () {
+- eval echo "\${1% $2 *} \${1#* $2 }"
+- }
+-else
+- math () {
+- expr "$@"
+- }
+- index () { # index string c
+- expr $1 : ".*$2" - 1
+- }
+- suffix () {
+- expr "$1" : "$2\(.*\)"
+- }
+- strip () {
+- echo "[$1][$2]" >&2
+- echo "`expr \"$1\" : \"\(.*\) $2 \"` `expr \"$1\" : \".* $2 \(.*\)\"`"
+- }
+-fi
++math () {
++ eval echo "\$(($*))"
++}
++index () { # index string c
++ eval "I=\${1%$2*}"
++ eval echo "\${#I}"
++}
++suffix () {
++ eval echo "\${1#$2}"
++}
++strip () {
++ eval echo "\${1% $2 *} \${1#* $2 }"
++}
++first () {
++ eval echo "\${1:0:1}"
++}
++second () {
++ eval echo "\${1:1:1}"
++}
++substr () {
++ echo $1 | cut -c $2
++}
+
+ #---#---#---#---#---#---#---#---#---#---#---#---#---#---#---#---#---#---#---#
+
+@@ -140,6 +142,7 @@
+ exec 3<$procfs/devices
+ while read major device <&3
+ do
++ device=`echo $device|tr -d /`
+ case "$major" in
+ Character|Block|'')
+ ;;
+@@ -166,7 +169,7 @@
+ while [ $# -ne 0 ]
+ do
+ case "$1" in
+- mem|tty|ttyp|cua|cub) ;;
++ mem|tty|ttyp|cua|cub|cui) ;;
+ hd) (for d in a b c d e f g h ; do
+ echo -n hd$d " "
+ done) ; echo
+@@ -175,13 +178,16 @@
+ ide1) echo hdc hdd ;;
+ ide2) echo hde hdf ;;
+ ide3) echo hdg hdh ;;
+- sd) echo sda sdb ;;
+- sr) echo scd0 ;;
++ sd) echo sda sdb sdc sdd ;;
++ sg) echo sg ;;
++ sr) echo scd ;;
+ st) echo st0 ;;
+ xd) echo xda xdb ;;
++ ad) echo ada adb ;;
+ fd) echo fd0 fd1 ;;
+ lp) echo lp ;;
+ mt) echo ftape ;;
++ qft) echo ftape ;;
+ loop) echo loop ;;
+ md) echo md ;;
+ ibcs2) echo ibcs2 ;;
+@@ -191,13 +197,31 @@
+ ac4096) echo ac4096 ;;
+ hw) echo helloworld ;;
+ sbpcd | sbpcd[123]) echo $1 ;;
+- Joystick) echo js ;;
++ joystick) echo js ;;
+ apm_bios) echo apm ;;
+ dcf) echo dcf ;;
+ aztcd) echo aztcd ;;
++ cm206cd) echo cm206cd ;;
++ gscd) echo gscd ;;
+ pcmcia) ;; # taken care of by its own driver
+ ttyC) echo cyclades ;;
++ isdn) echo isdnmodem isdnbri dcbri ;;
+ vcs) ;;
++ pty) echo pty ;;
++ misc) echo misc ;;
++ 3dfx) echo 3dfx ;;
++ agpgart) echo agpgart ;;
++ ipmi|ipmikcs) echo ipmi ;;
++ fb) echo fb ;;
++ nb) echo nb0 nb1 ;;
++ netlink) echo netlink ;;
++ hamradio) echo hamradio ;;
++ snd) ;;
++ ptm) ;;
++ pts) ;;
++ ttyS) echo ttyS0 ttyS1 ttyS2 ttyS3 ;;
++ ttyI) echo ttyI0 ttyI1 ttyI2 ttyI3 ;;
++ ircomm|irlpt) irda ;;
+ *) echo "$0: don't know what \"$1\" is" >&2 ;;
+ esac
+ shift
+@@ -206,20 +230,148 @@
+
+ for arg
+ do
++# case `cvt $arg` in
+ case $arg in
+ generic)
++ # pick the right generic-<arch> using dpkg's knowledge
++ case `dpkg --print-installation-architecture` in
++ alpha)
++ $0 $opts generic-alpha
++ ;;
++ arm)
++ $0 $opts generic-arm
++ ;;
++ i386)
++ $0 $opts generic-i386
++ ;;
++ m68k)
++ $0 $opts generic-m68k
++ ;;
++ powerpc)
++ $0 $opts generic-powerpc
++ ;;
++ sparc)
++ $0 $opts generic-sparc
++ ;;
++ *)
++ echo "$0: no support for generic-$arg" >&2
++ exit 1
++ ;;
++ esac
++ ;;
++ generic-alpha)
+ $0 $opts std
+ $0 $opts fd
+ $0 $opts fd0 fd1
+- $0 $opts hda hdb
++ $0 $opts hda hdb hdc hdd
++ $0 $opts xda xdb
++ $0 $opts sda sdb sdc sdd
++ $0 $opts scd0 scd1
++ $0 $opts st0 st1
++ $0 $opts sg
++ $0 $opts pty
++ $0 $opts console
++ $0 $opts ttyS0 ttyS1 ttyS2 ttyS3
++ $0 $opts busmice
++ $0 $opts lp
++ $0 $opts par
++ $0 $opts audio
++ $0 $opts fb
++ ;;
++ generic-arm)
++ $0 $opts std
++ $0 $opts fd
++ $0 $opts fd0 fd1
++ $0 $opts hda hdb hdc hdd
++ $0 $opts xda xdb
++ $0 $opts sda sdb sdc sdd
++ $0 $opts scd0 scd1
++ $0 $opts st0 st1
++ $0 $opts sg
++ $0 $opts pty
++ $0 $opts console
++ $0 $opts ttyS0 ttyS1 ttyS2 ttyS3
++ $0 $opts busmice
++ $0 $opts lp
++ $0 $opts par
++ $0 $opts audio
++ $0 $opts fb
++ ;;
++ generic-i386)
++ $0 $opts std
++ $0 $opts fd
++ $0 $opts fd0 fd1
++ $0 $opts hda hdb hdc hdd
+ $0 $opts xda xdb
+- $0 $opts sda sdb
++ $0 $opts sda sdb sdc sdd
++ $0 $opts scd0 scd1
++ $0 $opts st0 st1
++ $0 $opts sg
+ $0 $opts pty
+ $0 $opts console
+ $0 $opts ttyS0 ttyS1 ttyS2 ttyS3
+ $0 $opts busmice
+ $0 $opts lp
+ $0 $opts par
++ $0 $opts audio
++ $0 $opts fb
++ ;;
++ generic-m68k)
++ $0 $opts std
++ $0 $opts fd
++ $0 $opts fd0-bare fd1-bare
++ $0 $opts hda hdb
++ $0 $opts sda sdb sdc sdd
++ $0 $opts sg
++ $0 $opts ada adb
++ $0 $opts pty
++ $0 $opts console
++ $0 $opts ttyS0 ttyS1 ttyS2 ttyS3 ttyS5
++ $0 $opts m68k-mice
++ $0 $opts lp
++ $0 $opts par
++ $0 $opts nvram
++ $0 $opts audio
++ $0 $opts fb
++ ;;
++ generic-powerpc)
++ $0 $opts std
++ $0 $opts fd
++ $0 $opts fd0-bare fd1-bare
++ $0 $opts hda hdb hdc hdd
++ $0 $opts sda sdb sdc sdd
++ $0 $opts scd0 scd1
++ $0 $opts st0 st1
++ $0 $opts sg
++ $0 $opts pty
++ $0 $opts console
++ $0 $opts ttyS0 ttyS1 ttyS2 ttyS3
++ $0 $opts busmice
++ $0 $opts lp
++ $0 $opts par
++ $0 $opts nvram
++ $0 $opts audio
++ $0 $opts adb
++ $0 $opts fb
++ $0 $opts rtc
++ ;;
++ generic-sparc)
++ $0 $opts std
++ $0 $opts fd0-bare fd1-bare
++ $0 $opts hda hdb
++ $0 $opts sda sdb sdc sdd
++ $0 $opts scd0 scd1
++ $0 $opts st0 st1
++ $0 $opts sg
++ $0 $opts pty
++ $0 $opts console
++ $0 $opts ttyS0 ttyS1 ttyS2 ttyS3
++ $0 $opts fb
++ $0 $opts rtc
++ makedev kbd c 11 0 $cons
++ makedev sunmouse c 10 6 $mouse
++ symlink sunmouse mouse
++ makedev openprom c 10 139 $private
+ ;;
+ local)
+ $0.local $opts
+@@ -232,22 +384,71 @@
+ makedev zero c 1 5 $public
+ symlink core $procfs/kcore
+ makedev full c 1 7 $public
+- $0 ram
++ makedev random c 1 8 $readable
++ makedev urandom c 1 9 $readable
+ makedev tty c 5 0 $tty
++ $0 $opts ram
++ $0 $opts loop
++ ;;
++ hamradio)
++ $0 $opts scc
++ $0 $opts bc
++ ;;
++ scc)
++ for unit in 0 1 2 3 4 5 6 7
++ do
++ makedev scc$unit c 34 $unit $system
++ done
++ ;;
++ bc)
++ for unit in 0 1 2 3
++ do
++ makedev bc$unit c 51 $unit $system
++ done
++ ;;
++ random)
++ makedev random c 1 8 $readable
++ ;;
++ urandom)
++ makedev urandom c 1 9 $readable
+ ;;
+ ram)
+- for i in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 ; do
++ for i in 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 ; do
+ makedev ram$i b 1 $i $disk
+ done
+- ln -sf ram1 ram
++ symlink ram ram1
+ ;;
+- console)
+- major=`Major vcs` # not fatal
+- # console
++ ram[0-9]|ram1[0-6])
++ unit=`suffix $arg ram`
++ makedev ram$unit b 1 $unit $disk
++ ;;
++ initrd)
++ makedev initrd b 1 250 $disk
++ ;;
++ consoleonly)
+ makedev tty0 c 4 0 $cons
+- symlink console tty0
++ # new kernels need a device, old ones a symlink... sigh
++ kern_rev1=`uname -r | awk -F'.' '{print $1}'`
++ kern_rev2=`uname -r | awk -F'.' '{print $2}'`
++ if [ $kern_rev1 -gt 2 ]
++ then
++ makedev console c 5 1 $cons
++ else
++ if [ $kern_rev1 -eq 2 -a $kern_rev2 -ge 1 ]
++ then
++ makedev console c 5 1 $cons
++ else
++ symlink console tty0
++ fi
++ fi
++ ;;
++ console)
++ $0 $opts consoleonly
++ major=`Major vcs 7` # not fatal
+ [ "$major" ] && makedev vcs0 c $major 0 $vcs
+- [ "$major" ] && makedev vcsa c $major 128 $vcs
++ symlink vcs vcs0
++ [ "$major" ] && makedev vcsa0 c $major 128 $vcs
++ symlink vcsa vcsa0
+ # individual vts
+ line=1
+ while [ $line -le $MAXVT -a $line -le 63 ]
+@@ -258,6 +459,32 @@
+ line=`math $line + 1`
+ done
+ ;;
++ adb)
++ # pick the right arch device using dpkg's knowledge
++ case `dpkg --print-installation-architecture` in
++ powerpc)
++ # ADB bus devices (char)
++ makedev adb c 56 0 $mouse
++ makedev adbmouse c 10 10 $mouse
++ ;;
++ m68k)
++ # ACSI disk 2, whole device (block)
++ makedev adb b 28 16 $disk
++ for part in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
++ do
++ minor=$(( 16 + $part ))
++ makedev adb$part b 28 $minor $disk
++ done
++ ;;
++ *)
++ echo "no support for adb on $arg" >&2
++ exit 1
++ ;;
++ esac
++ ;;
++ nvram)
++ makedev nvram c 10 144 $kmem
++ ;;
+ tty[1-9]|tty[1-5][0-9]|tty[6][0-3])
+ line=`suffix $arg tty`
+ makedev tty$line c 4 $line $tty
+@@ -265,8 +492,7 @@
+ ttyS[0-9]|ttyS[1-5][0-9]|ttyS[6][0-3])
+ line=`suffix $arg ttyS`
+ minor=`math 64 + $line`
+- makedev ttyS$line c 4 $minor $tty
+- makedev cua$line c 5 $minor $dialout
++ makedev ttyS$line c 4 $minor $dialout
+ ;;
+ pty[a-ep-z])
+ bank=`suffix $arg pty`
+@@ -285,42 +511,350 @@
+ do
+ ptysufs="$ptysufs pty$i"
+ done
+- $0 $opts $ptysufs
++ $0 $opts $ptysufs ptmx
+ ;;
+- cyclades)
+- major1=`Major ttyC` || continue
+- major2=`Major cub` || continue
++ ptmx)
++ # master pty multiplexer for 2.1 kernels
++ makedev ptmx c 5 2 $tty
++ ;;
++ cyclades|ttyC)
++ major1=`Major ttyC 19` || continue
++ #major2=`Major cub 20` || continue
+ for i in 0 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 32
++ 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
++ do
++ makedev ttyC$i c $major1 $i $dialout
++ #makedev cub$i c $major2 $i $dialout
++ done
++ ;;
++ stallion|ttyE)
++ major1=`Major ttyE 24` || continue
++ #major2=`Major cue 25` || continue
++ majorc=28
++ minor=0
++ until [ $minor -gt 256 ]
++ do
++ makedev ttyE$minor c $major1 $minor $dialout
++ #makedev cue$minor c $major2 $minor $dialout
++ minor=`math $minor + 1`
++ done
++ for i in 0 1 2 3
++ do
++ makedev staliomem$i c $majorc $i $private
++ done
++ ;;
++ chase|ttyH)
++ major1=`Major ttyH 17` || continue
++ #major2=`Major cuh 18` || continue
++ minor=0
++ until [ $minor -gt 16 ] # tell me if 16 is wrong
++ do
++ makedev ttyH$minor c $major1 $minor $dialout
++ #makedev cuh$minor c $major2 $minor $dialout
++ minor=`math $minor + 1`
++ done
++ ;;
++ rocketport|ttyR)
++ major1=`Major ttyR 46` || continue
++ #major2=`Major cur 47` || continue
++ minor=0
++ until [ $minor -gt 64 ] # tell me if 64 is wrong
++ do
++ makedev ttyR$minor c $major1 $minor $dialout
++ #makedev cur$minor c $major2 $minor $dialout
++ minor=`math $minor + 1`
++ done
++ ;;
++ ttyV)
++ major1=`Major ttyV 105` || continue
++ #major2=`Major cuv 106` || continue
++ minor=0
++ until [ $minor -gt 16 ] # tell me if 16 is wrong
++ do
++ makedev ttyV$minor c $major1 $minor $dialout
++ #makedev cuv$minor c $major2 $minor $dialout
++ minor=`math $minor + 1`
++ done
++ ;;
++ digi|ttyD)
++ major1=`Major ttyD 22` || continue
++ #major2=`Major cud 23` || continue
++ minor=0
++ until [ $minor -gt 16 ] # tell me if 16 is wrong
++ do
++ makedev ttyD$minor c $major1 $minor $dialout
++ #makedev cud$minor c $major2 $minor $dialout
++ minor=`math $minor + 1`
++ done
++ ;;
++ specialix|ttyX)
++ major1=`Major ttyX 32` || continue
++ #major2=`Major cux 33` || continue
++ minor=0
++ until [ $minor -gt 16 ] # tell me if 16 is wrong
++ do
++ makedev ttyX$minor c $major1 $minor $dialout
++ #makedev cux$minor c $major2 $minor $dialout
++ minor=`math $minor + 1`
++ done
++ ;;
++ specialixIO8|ttyW)
++ major1=`Major ttyW 75` || continue
++ #major2=`Major cuw 76` || continue
++ minor=0
++ until [ $minor -gt 16 ] # tell me if 16 is wrong
++ do
++ makedev ttyW$minor c $major1 $minor $dialout
++ #makedev cuw$minor c $major2 $minor $dialout
++ minor=`math $minor + 1`
++ done
++ ;;
++ PAM|ttyM)
++ major1=`Major ttyM 79` || continue
++ #major2=`Major cum 80` || continue
++ minor=0
++ until [ $minor -gt 16 ] # tell me if 16 is wrong
++ do
++ makedev ttyM$minor c $major1 $minor $dialout
++ #makedev cum$minor c $major2 $minor $dialout
++ minor=`math $minor + 1`
++ done
++ ;;
++ riscom|ttyL)
++ major=`Major ttyL 48` || continue
++ minor=0
++ until [ $minor -gt 16 ] # tell me if 16 is wrong
++ do
++ makedev ttyL$minor c $major $minor $dialout
++ minor=`math $minor + 1`
++ done
++ ;;
++ computone|ttyF)
++ major=`Major ttyF 71` || continue
++ #major2=`Major cuf 72` || continue
++ minor=0
++ until [ $minor -gt 255 ]
++ do
++ makedev ttyF$minor c $major $minor $dialout
++ #makedev cuf$minor c $major2 $minor $dialout
++ minor=`math $minor + 1`
++ done
++ major=73
++ for i in 0 4 8 12
++ do
++ makedev ip2ipl$i c $major $i $private
++ makedev ip2stat$i c $major `math $i + 1` $private
++ done
++ ;;
++ ESP|ttyP)
++ major=`Major ttyP 57` || continue
++ #major2=`Major cup 58` || continue
++ minor=0
++ until [ $minor -gt 4 ] # tell me if 4 is wrong
++ do
++ makedev ttyP$minor c $major $minor $dialout
++ #makedev cup$minor c $major2 $minor $dialout
++ minor=`math $minor + 1`
++ done
++ ;;
++ COMX|comx)
++ major=`Major comx 88` || continue
++ minor=0
++ until [ $minor -gt 4 ] # tell me if 4 is wrong
++ do
++ makedev comx$minor c $major $minor $private
++ minor=`math $minor + 1`
++ done
++ ;;
++ isdnmodem|ttyI)
++ major1=`Major ttyI 43` || continue
++ #major2=`Major cui 44` || continue
++ minor=0
++ until [ $minor -gt 63 ]
++ do
++ makedev ttyI$minor c $major1 $minor $dialout
++ #makedev cui$minor c $major2 $minor $dialout
++ minor=`math $minor + 1`
++ done
++ ;;
++ isdnbri)
++ major=45
++ minor=0
++ until [ $minor -gt 63 ]
++ do
++ makedev isdn$minor c $major $minor $private
++ makedev isdnctrl$minor c $major `math $minor + 64` $private
++ makedev ippp$minor c $major `math $minor + 128` $private
++ minor=`math $minor + 1`
++ done
++ makedev isdninfo c $major 255 $private
++ ;;
++ dcbri)
++ major=52
++ for i in 0 1 2 3
++ do
++ makedev dcbri$i c $major $i $private
++ done
++ ;;
++ capi)
++ major=68
++ makedev capi20 c $major 0 $private
++ for i in 0 1 2 3 4 5 6 7 8 9
++ do
++ makedev capi20.0$i c $major `math $i + 1` $private
++ done
++ for i in 10 11 12 13 14 15 16 17 18 19
++ do
++ makedev capi20.$i c $major `math $i + 1` $private
++ done
++ ;;
++ fb)
++ for i in 0 1 2 3 4 5 6 7
++ do
++ makedev fb$i c 29 `math 32 \* $i` $cons
++ makedev fb${i}current c 29 `math 32 \* $i` $cons
++ makedev fb${i}autodetect c 29 `math 32 \* $i + 1` $cons
++ done
++ ;;
++ fb[0-7])
++ dev=`suffix $arg fb`
++ base=`math 32 \* $dev`
++ makedev fb$dev c 29 $base $cons
++ makedev fb${dev}current c 29 $base $cons
++ makedev fb${dev}autodetect c 29 `math $base + 1` $cons
++ for i in 0 1 2 3 4 5 6 7
+ do
+- makedev ttyC$i c $major1 $i $tty
+- makedev cub$i c $major2 $i $dialout
++ makedev fb${dev}user$i c 29 `math $base + 24 + $i` $cons
++ done
++ ;;
++ netlink)
++ makedev route c 36 0 $coda
++ makedev skip c 36 1 $coda
++ makedev fwmonitor c 36 3 $coda
++ for i in 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
++ do
++ makedev tap$i c 36 `math $i + 16` $coda
+ done
+ ;;
+ lp)
+- major=`Major lp` || continue
++ major=`Major lp 6` || continue
+ makedev ${arg}0 c $major 0 $printer
+ makedev ${arg}1 c $major 1 $printer
+ makedev ${arg}2 c $major 2 $printer
+ ;;
+ par)
+- major=`Major lp` || continue
++ major=`Major lp 6` || continue
++ makedev ${arg}0 c $major 0 $printer
++ makedev ${arg}1 c $major 1 $printer
++ makedev ${arg}2 c $major 2 $printer
++ ;;
++ parport)
++ major=`Major parport 99` || continue
+ makedev ${arg}0 c $major 0 $printer
+ makedev ${arg}1 c $major 1 $printer
+ makedev ${arg}2 c $major 2 $printer
+ ;;
++ slm)
++ major=`Major slm 28` || continue
++ for i in 0 1 2 3
++ do
++ makedev slm c $major $i $printer
++ done
++ ;;
+ busmice)
+ major=`Major mouse 10` || continue
+- makedev logimouse c $major 0 $mouse
+- makedev psmouse c $major 1 $mouse
+- makedev msmouse c $major 2 $mouse
+- makedev atimouse c $major 3 $mouse
+- makedev jmouse c $major 4 $mouse
++ makedev logibm c $major 0 $mouse
++ makedev psaux c $major 1 $mouse
++ makedev inportbm c $major 2 $mouse
++ makedev atibm c $major 3 $mouse
++ makedev jbm c $major 4 $mouse
++ makedev usbmouse c $major 32 $mouse
++ ;;
++ m68k-mice)
++ major=`Major mouse 10` || continue
++ makedev amigamouse c $major 4 $mouse
++ makedev atarimouse c $major 5 $mouse
++ makedev amigamouse1 c $major 7 $mouse
++ makedev adbmouse c $major 10 $mouse
++ ;;
++ 3dfx)
++ major=`Major $arg 107` || continue
++ makedev $arg c $major 0 $video
++ ;;
++ agpgart)
++ major=`Major $arg 10` || continue
++ makedev $arg c $major 175 $video
++ ;;
++ ipmi|ipmikcs)
++ major=`Major ipmikcs 10` || continue
++ makedev ipmikcs c $major 173 $private
++ ;;
++ irda)
++ for i in 0 1
++ do
++ makedev ircomm$i c 161 $i $mouse
++ makedev irlpt$i c 161 `math $i + 16` $mouse
++ done
++ ;;
++ misc)
++ major=`Major mouse 10` || continue
++ makedev logibm c $major 0 $mouse
++ makedev psaux c $major 1 $mouse
++ makedev inportbm c $major 2 $mouse
++ makedev atibm c $major 3 $mouse
++ makedev jbm c $major 4 $mouse
++ makedev amigamouse c $major 4 $mouse
++ makedev atarimouse c $major 5 $mouse
++ makedev sunmouse c $major 6 $mouse
++ makedev amigamouse1 c $major 7 $mouse
++ makedev smouse c $major 8 $mouse
++ makedev pc110pad c $major 9 $mouse
++ makedev adbmouse c $major 10 $mouse
++ makedev beep c $major 128 $mouse
++ makedev modreq c $major 129 $mouse
++ makedev watchdog c $major 130 $mouse
++ makedev temperature c $major 131 $mouse
++ makedev hwtrap c $major 132 $mouse
++ makedev exttrp c $major 133 $mouse
++ makedev apm_bios c $major 134 $mouse
++ makedev rtc c $major 135 $mouse
++ makedev openprom c $major 139 $mouse
++ makedev relay8 c $major 140 $mouse
++ makedev relay16 c $major 141 $mouse
++ makedev msr c $major 142 $mouse
++ makedev pciconf c $major 143 $mouse
++ makedev nvram c $major 144 $mouse
++ makedev hfmodem c $major 145 $mouse
++ makedev led c $major 151 $mouse
++ makedev mergemem c $major 153 $mouse
++ makedev pmu c $major 154 $mouse
++ ;;
++ smapi|thinkpad)
++ major=`Major mouse 10` || continue
++ makedev smapi c $major 170 $mouse
++ symlink smapi thinkpad
++ ;;
++ rtc)
++ major=`Major mouse 10` || continue
++ makedev rtc c $major 135 $mouse
+ ;;
+ js)
+- major=`Major Joystick` || continue
+- makedev js0 c $major 0 $mouse
+- makedev js1 c $major 1 $mouse
++ major=`Major Joystick 15` || continue
++ for unit in 0 1 2 3
++ do
++ makedev js$unit c $major $unit $readable
++ makedev djs$unit c $major `math $unit + 128` $readable
++ done
++ ;;
++ fd[0-7]-bare)
++ sarg="${arg%-bare}"
++ major=`Major fd 2` || continue
++ base=`suffix $sarg fd`
++ if [ $base -ge 4 ]
++ then
++ base=`math $base + 124`
++ fi
++ makedev ${sarg} b $major $base $floppy
+ ;;
+ fd[0-7])
+ major=`Major fd 2` || continue
+@@ -332,39 +866,47 @@
+ makedev ${arg} b $major $base $floppy
+ makedev ${arg}d360 b $major `math $base + 4` $floppy
+ makedev ${arg}h1200 b $major `math $base + 8` $floppy
+- makedev ${arg}D360 b $major `math $base + 12` $floppy
+- makedev ${arg}D720 b $major `math $base + 16` $floppy
++ makedev ${arg}u360 b $major `math $base + 12` $floppy
++ makedev ${arg}u720 b $major `math $base + 16` $floppy
+ makedev ${arg}h360 b $major `math $base + 20` $floppy
+ makedev ${arg}h720 b $major `math $base + 24` $floppy
+- makedev ${arg}H1440 b $major `math $base + 28` $floppy
+- makedev ${arg}E2880 b $major `math $base + 32` $floppy
++ makedev ${arg}u1440 b $major `math $base + 28` $floppy
++ makedev ${arg}u2880 b $major `math $base + 32` $floppy
+ makedev ${arg}CompaQ b $major `math $base + 36` $floppy
+
+- symlink ${arg}H360 ${arg}D360
+- symlink ${arg}H720 ${arg}D720
+-
+ makedev ${arg}h1440 b $major `math $base + 40` $floppy
+- makedev ${arg}H1680 b $major `math $base + 44` $floppy
++ makedev ${arg}u1680 b $major `math $base + 44` $floppy
+ makedev ${arg}h410 b $major `math $base + 48` $floppy
+- makedev ${arg}H820 b $major `math $base + 52` $floppy
++ makedev ${arg}u820 b $major `math $base + 52` $floppy
+ makedev ${arg}h1476 b $major `math $base + 56` $floppy
+- makedev ${arg}H1722 b $major `math $base + 60` $floppy
++ makedev ${arg}u1722 b $major `math $base + 60` $floppy
+ makedev ${arg}h420 b $major `math $base + 64` $floppy
+- makedev ${arg}H830 b $major `math $base + 68` $floppy
++ makedev ${arg}u830 b $major `math $base + 68` $floppy
+ makedev ${arg}h1494 b $major `math $base + 72` $floppy
+- makedev ${arg}H1743 b $major `math $base + 76` $floppy
++ makedev ${arg}u1743 b $major `math $base + 76` $floppy
+ makedev ${arg}h880 b $major `math $base + 80` $floppy
+- makedev ${arg}D1040 b $major `math $base + 84` $floppy
+- makedev ${arg}D1120 b $major `math $base + 88` $floppy
++ makedev ${arg}u1040 b $major `math $base + 84` $floppy
++ makedev ${arg}u1120 b $major `math $base + 88` $floppy
+ makedev ${arg}h1600 b $major `math $base + 92` $floppy
+- makedev ${arg}H1760 b $major `math $base + 96` $floppy
+- makedev ${arg}H1920 b $major `math $base + 100` $floppy
+- makedev ${arg}E3200 b $major `math $base + 104` $floppy
+- makedev ${arg}E3520 b $major `math $base + 108` $floppy
+- makedev ${arg}E3840 b $major `math $base + 112` $floppy
+- makedev ${arg}H1840 b $major `math $base + 116` $floppy
+- makedev ${arg}D800 b $major `math $base + 120` $floppy
+- makedev ${arg}H1600 b $major `math $base + 124` $floppy
++ makedev ${arg}u1760 b $major `math $base + 96` $floppy
++ makedev ${arg}u1920 b $major `math $base + 100` $floppy
++ makedev ${arg}u3200 b $major `math $base + 104` $floppy
++ makedev ${arg}u3520 b $major `math $base + 108` $floppy
++ makedev ${arg}u3840 b $major `math $base + 112` $floppy
++ makedev ${arg}u1840 b $major `math $base + 116` $floppy
++ makedev ${arg}u800 b $major `math $base + 120` $floppy
++ makedev ${arg}u1600 b $major `math $base + 124` $floppy
++ ;;
++ ed[a-b])
++ major=`Major ed 36` || continue
++ unit=`suffix $arg ed`
++ base=`index ab $unit`
++ base=`math $base \* 64`
++ makedev ed$unit b $major $base $disk
++ for part in 1 2 3 4 5 6 7 8 # 9 10 11 12 13 14 15 16 17 18 19 20
++ do
++ makedev ed$unit$part b $major `math $base + $part` $disk
++ done
+ ;;
+ hd[a-b])
+ major=`Major ide0` || major=`Major hd 3` || continue
+@@ -372,7 +914,7 @@
+ base=`index ab $unit`
+ base=`math $base \* 64`
+ makedev hd$unit b $major $base $disk
+- for part in 1 2 3 4 5 6 7 8 # 9 10 11 12 13 14 15 16 17 18 19 20
++ for part in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
+ do
+ makedev hd$unit$part b $major `math $base + $part` $disk
+ done
+@@ -383,9 +925,9 @@
+ base=`index cd $unit`
+ base=`math $base \* 64`
+ makedev hd$unit b $major $base $disk
+- for part in 1 2 3 4 5 6 7 8 # 9 10 11 12 13 14 15 16 17 18 19 20
++ for part in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
+ do
+- makedev hd$unit$part b $major `expr $base + $part` $disk
++ makedev hd$unit$part b $major $(( $base + $part )) $disk
+ done
+ ;;
+ hd[e-f])
+@@ -394,9 +936,9 @@
+ base=`index ef $unit`
+ base=`math $base \* 64`
+ makedev hd$unit b $major $base $disk
+- for part in 1 2 3 4 5 6 7 8 # 9 10 11 12 13 14 15 16 17 18 19 20
++ for part in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
+ do
+- makedev hd$unit$part b $major `expr $base + $part` $disk
++ makedev hd$unit$part b $major $(( $base + $part )) $disk
+ done
+ ;;
+ hd[g-h])
+@@ -405,18 +947,47 @@
+ base=`index gh $unit`
+ base=`math $base \* 64`
+ makedev hd$unit b $major $base $disk
+- for part in 1 2 3 4 5 6 7 8 # 9 10 11 12 13 14 15 16 17 18 19 20
++ for part in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
++ do
++ makedev hd$unit$part b $major $(( $base + $part )) $disk
++ done
++ ;;
++ hd[i-j])
++ major=`Major ide4 56` || continue
++ unit=`suffix $arg hd`
++ base=`index ij $unit`
++ base=`math $base \* 64`
++ makedev hd$unit b $major $base $disk
++ for part in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
+ do
+- makedev hd$unit$part b $major `expr $base + $part` $disk
++ makedev hd$unit$part b $major $(( $base + $part )) $disk
+ done
+ ;;
+- ht)
++ hd[k-l])
++ major=`Major ide4 57` || continue
++ unit=`suffix $arg hd`
++ base=`index kl $unit`
++ base=`math $base \* 64`
++ makedev hd$unit b $major $base $disk
++ for part in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
++ do
++ makedev hd$unit$part b $major $(( $base + $part )) $disk
++ done
++ ;;
++ ht0)
+ major=`Major ht0 37` || continue
+ # Only one IDE tape drive is currently supported; ht0.
+ makedev ht0 c $major 0 $tape
+- makedev ht0 c $major 0 $tape
+ makedev nht0 c $major 128 $tape
+ ;;
++ pt)
++ major=`Major pt 96` || continue
++ for i in 0 1 2 3
++ do
++ makedev pt$i c $major $i $tape
++ makedev npt$i c $major `math $i + 128` $tape
++ done
++ ;;
+ xd[a-d])
+ major=`Major xd 13` || continue
+ unit=`suffix $arg xd`
+@@ -425,31 +996,139 @@
+ makedev xd$unit b $major $base $disk
+ for part in 1 2 3 4 5 6 7 8 # 9 10 11 12 13 14 15 16 17 18 19 20
+ do
+- makedev xd$unit$part b $major `expr $base + $part` $disk
++ makedev xd$unit$part b $major $(( $base + $part )) $disk
+ done
+ ;;
+- sd[a-h])
++ sd[a-z])
+ major=`Major sd 8` || continue
+ unit=`suffix $arg sd`
+- base=`index abcdefgh $unit`
+- base=`math $base \* 16`
++ base=`index abcdefghijklmnopqrstuvwxyz $unit`
++ base=$(( $base * 16 ))
++ if [ $base -lt 256 ]; then
++ major=8
++ else
++ major=65
++ base=$(( $base - 256 ))
++ fi
++ makedev sd$unit b $major $base $disk
++ for part in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
++ do
++ minor=$(( $base + $part ))
++ makedev sd$unit$part b $major $minor $disk
++ done
++ ;;
++ sd[a-d][a-z])
++ unit=`suffix $arg sd`
++ unitmaj=`first $unit`
++ unitmin=`second $unit`
++ basemaj=`index Xabcd $unitmaj`
++ basemin=`index abcdefghijklmnopqrstuvwxyz $unitmin`
++ basemaj=`math $basemaj \* 416`
++ basemin=`math $basemin \* 16`
++ base=`math $basemaj + $basemin`
++ basemaj=`math $base / 256`
++ base=`math $base % 256`
++ major=`math basemaj \+ 64`
++ if [ $major -gt 71 ]; then
++ echo "$0: don't know how to make device \"$arg\"" >&2
++ exit 0
++ fi
+ makedev sd$unit b $major $base $disk
+- for part in 1 2 3 4 5 6 7 8 # 9 10 11 12 13 14 15
++ for part in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
+ do
+- minor=`expr $base + $part`
++ minor=$(( $base + $part ))
+ makedev sd$unit$part b $major $minor $disk
+ done
++ ;;
++ ad[a-p])
++ major=`Major ad 28` || continue
++ unit=`suffix $arg ad`
++ base=`index abcdefghijklmnop $unit`
++ base=`math $base \* 16`
++ makedev ad$unit b $major $base $disk
++ for part in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
++ do
++ minor=$(( $base + $part ))
++ makedev ad$unit$part b $major $minor $disk
++ done
++ ;;
++ dac960)
++ for ctr in 0 1 2 3 4 5 6 7
++ do
++ $0 $opts dac960.$ctr
++ done
++ ;;
++ dac960.[0-7])
++ [ -d rd ] || {
++ mkdir rd
++ chown root.root rd
++ chmod 755 rd
++ }
++ unit=`suffix $arg dac960.`
++ major=`math 48 + $unit`
++ minor=0
++ for ld in 0 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
++ do
++ makedev rd/c${unit}d${ld} b $major $minor $disk
++ minor=`math $minor + 1`
++ for part in 1 2 3 4 5 6 7
++ do
++ makedev rd/c${unit}d${ld}p$part b $major $minor $disk
++ minor=`math $minor + 1`
++ done
++ done
++ ;;
++ ida)
++ for ctr in 0 1 2 # 3 4 5 6 7
++ do
++ $0 $opts ida.$ctr
++ done
++ ;;
++ ida.[0-7])
++ [ -d ida ] || {
++ mkdir ida
++ chown root.root ida
++ chmod 755 ida
++ }
++ unit=`suffix $arg ida.`
++ major=`math 72 + $unit`
++ minor=0
++ for ld in 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
++ do
++ makedev ida/c${unit}d${ld} b $major $minor $disk
++ minor=`math $minor + 1`
++ for part in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
++ do
++ makedev ida/c${unit}d${ld}p$part b $major $minor $disk
++ minor=`math $minor + 1`
++ done
++ done
++ ;;
++ rom)
++ major=`Major rom 31`
++ for i in 0 1 2 3 4 5 6 7
++ do
++ makedev rom$i b $major $i $disk
++ makedev rrom$i b $major `math $i +8` $disk
++ makedev flash$i b $major `math $i +16` $disk
++ makedev rflash$i b $major `math $i +24` $disk
++ done
++ ;;
++ nb[0-7])
++ major=`Major nbd 43` || continue
++ minor=`suffix $arg nb`
++ makedev nb$minor b $major $minor $disk
+ ;;
+ loop)
+- major=`Major loop` || continue
+ for part in 0 1 2 3 4 5 6 7
+ do
+- makedev loop$part b $major $part $disk
++ makedev loop$part b 7 $part $disk
+ done
+ ;;
+ md)
+- major=`Major md` || continue
+- for part in 0 1 2 3
++ major=`Major md 9` || continue
++ for part in 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
+ do
+ makedev md$part b $major $part $disk
+ done
+@@ -457,42 +1136,129 @@
+ st[0-7])
+ major=`Major st 9`
+ unit=`suffix $arg st`
+- makedev st$unit c $major $unit $tape
+- makedev nst$unit c $major `math 128 + $unit` $tape
++ makedev st${unit} c $major $unit $tape
++ makedev nst${unit} c $major `math 128 + $unit` $tape
++
++ makedev st${unit}l c $major `math 32 + $unit` $tape
++ makedev nst${unit}l c $major `math 160 + $unit` $tape
++
++ makedev st${unit}m c $major `math 64 + $unit` $tape
++ makedev nst${unit}m c $major `math 192 + $unit` $tape
++
++ makedev st${unit}a c $major `math 96 + $unit` $tape
++ makedev nst${unit}a c $major `math 224 + $unit` $tape
+ ;;
+ qic)
+ major=`Major tpqic02 12`
++ makedev ntpqic11 c $major 2 $tape
++ makedev tpqic11 c $major 3 $tape
++ makedev ntpqic24 c $major 4 $tape
++ makedev tpqic24 c $major 5 $tape
++ makedev ntpqic120 c $major 6 $tape
++ makedev tpqic120 c $major 7 $tape
++ makedev ntpqic150 c $major 8 $tape
++ makedev tpqic150 c $major 9 $tape
+ makedev rmt8 c $major 6 $tape
+ makedev rmt16 c $major 8 $tape
+ makedev tape-d c $major 136 $tape
+ makedev tape-reset c $major 255 $tape
++ $0 $opts qft
+ ;;
+ ftape)
+- major=`Major mt 27` || continue
++ major=`Major qft 27` || continue
+ for unit in 0 1 2 3
+ do
+- makedev rft$unit c $major $unit $tape
+- makedev nrft$unit c $major `math $unit + 4` $tape
++ makedev qft$unit c $major $unit $tape
++ makedev nqft$unit c $major `math $unit + 4` $tape
++ makedev zqft$unit c $major `math $unit + 16` $tape
++ makedev nzqft$unit c $major `math $unit + 20` $tape
++ makedev rawqft$unit c $major `math $unit + 32` $tape
++ makedev nrawqft$unit c $major `math $unit + 36` $tape
++ done
++ symlink ftape qft0
++ symlink nftape nqft0
++ ;;
++ sr|scd|scd-all)
++ major=`Major sr 11` || continue
++ for unit in 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
++ do
++ makedev scd$unit b $major $unit $cdrom
++ symlink sr$unit scd$unit
+ done
+- symlink ftape rft0
+- symlink nftape nrft0
+ ;;
+- scd[0-7])
++ cfs0)
++ makedev cfs0 c 67 0 $coda
++ ;;
++ scd[0-9]|scd[0-1][0-9])
+ major=`Major sr 11` || continue
+ unit=`suffix $arg scd`
+ makedev scd$unit b $major $unit $cdrom
++ ln -f scd$unit sr$unit
++ ;;
++ ttyI[0-9]|ttyI[1-5][0-9]|ttyI[6][0-3])
++ major=43
++ unit=`suffix $arg ttyI`
++ makedev ttyI$unit c $major $unit $dialout
++ ;;
++ ippp[0-9]|ippp[1-5][0-9]|ippp[6][0-3])
++ major=45
++ unit=`suffix $arg ippp`
++ minor=`math $unit + 128`
++ makedev ippp$unit c $major $minor $dialout
++ ;;
++ isdn[0-9]|isdn[1-5][0-9]|isdn[6][0-3])
++ major=45
++ unit=`suffix $arg isdn`
++ minor=`math $unit + 0`
++ makedev isdn$unit c $major $minor $dialout
++ ;;
++ isdnctrl[0-9]|isdnctrl[1-5][0-9]|isdnctrl[6][0-3])
++ major=45
++ unit=`suffix $arg isdnctrl`
++ minor=`math $unit + 64`
++ makedev isdnctrl$unit c $major $minor $dialout
++ ;;
++ isdninfo)
++ makedev isdninfo c 45 255 $dialout
++ ;;
++ isdn-tty)
++ major=43
++ for unit in 0 1 2 3 4 5 6 7
++ do
++ makedev ttyI$unit c $major $unit $dialout
++ done
++ ;;
++ isdn-ippp)
++ major=45
++ for unit in 0 1 2 3 4 5 6 7
++ do
++ makedev ippp$unit c $major `math $unit + 128` $dialout
++ done
++ ;;
++ isdn-io)
++ for unit in 0 1 2 3 4 5 6 7
++ do
++ makedev isdn$unit c 45 $unit $dialout
++ makedev isdnctrl$unit c 45 `math $unit + 64` $dialout
++ makedev ippp$unit c 45 `math $unit + 128` $dialout
++ done
++ makedev isdninfo c 45 255 $dialout
+ ;;
+ sonycd)
+- major=`Major cdu31a` || continue
++ major=`Major sonycd 15` || continue
+ makedev $arg b $major 0 $cdrom
+ ;;
+ mcd)
+ major=`Major mcd 23` || continue
+ makedev $arg b $major 0 $cdrom
+ ;;
+- mcdx)
+- major=`Major mcdx 20` || continue
+- makedev $arg b $major 0 $cdrom
++ mcdx|mcdx[0-4])
++ major=`Major $arg 20` || continue
++ for unit in 0 1 2 3 4
++ do
++ makedev mcdx$unit b $major $unit $cdrom
++ done
++ test -r mcdx || symlink mcdx mcdx0
+ ;;
+ cdu535)
+ makedev $arg b 24 0 $cdrom
+@@ -501,28 +1267,51 @@
+ makedev $arg b 24 0 $cdrom
+ ;;
+ sbpcd|sbpcd[123])
+- major=`Major $arg` || continue
++ major=`Major $arg 25` || continue
+ base=`suffix ${arg}0 sbpcd`
+- # base=`expr ${arg}0 : "sbpcd\(.\)"`
+ for minor in 0 1 2 3
+ do
+ # XXX
+- unit=`expr substr 0123456789abcdef \( $base \* 4 + $minor + 1 \) 1`
++ unit=$(substr 0123456789abcdef $(( $base * 4 + $minor + 1 )) )
+ makedev sbpcd$unit b $major $minor $cdrom
+ done
+ [ $arg = sbpcd ] && symlink $arg ${arg}0
+ ;;
+ aztcd)
+- major=`Major $arg` || continue
++ major=`Major $arg 29` || continue
++ makedev ${arg}0 b $major 0 $cdrom
++ ;;
++ cm206cd)
++ major=`Major $arg 30` || continue
++ makedev ${arg}0 b $major 0 $cdrom
++ ;;
++ gscd)
++ major=`Major $arg 16` || continue
+ makedev ${arg}0 b $major 0 $cdrom
+ ;;
+ bpcd)
+ makedev $arg b 41 0 $cdrom
+ ;;
++ optcd)
++ makedev $arg b 17 0 $cdrom
++ ;;
++ sjcd)
++ makedev $arg b 18 0 $cdrom
++ ;;
++ cfs|coda)
++ makedev cfs0 c 67 0 $private
++ ;;
++ xfs|arla)
++ makedev xfs0 c 103 0 $private
++ ;;
+ logiscan)
+ major=`Major logiscan` || continue
+ makedev $arg c $major 0 $scanner
+ ;;
++ toshiba)
++ major=`Major $arg 10` || continue
++ makedev $arg c $major 181 root root 0666
++ ;;
+ m105scan)
+ major=`Major m105` || continue
+ makedev $arg c $major 0 $scanner
+@@ -534,34 +1323,119 @@
+ audio)
+ major=`Major sound 14`
+ makedev mixer c $major 0 $audio
++ makedev mixer1 c $major 16 $audio
++ makedev mixer2 c $major 32 $audio
++ makedev mixer3 c $major 48 $audio
+ makedev sequencer c $major 1 $audio
+ makedev midi00 c $major 2 $audio
+- makedev dsp c $major 3 $audio
+- makedev audio c $major 4 $audio
+- makedev sndstat c $major 6 $audio
+-# makedev sequencer2 c $major 8 $audio
+- makedev mixer1 c $major 16 $audio
+-# makedev patmgr0 c $major 17 $audio
+ makedev midi01 c $major 18 $audio
+- makedev dsp1 c $major 19 $audio
+- makedev audio1 c $major 20 $audio
+-# makedev patmgr1 c $major 33 $audio
+ makedev midi02 c $major 34 $audio
+ makedev midi03 c $major 50 $audio
++ makedev dsp c $major 3 $audio
++ makedev dsp1 c $major 19 $audio
++ makedev dsp2 c $major 35 $audio
++ makedev dsp3 c $major 51 $audio
++ makedev audio c $major 4 $audio
++ makedev audio1 c $major 20 $audio
++ makedev audio2 c $major 36 $audio
++ makedev audio3 c $major 52 $audio
++ makedev sndstat c $major 6 $audio
++ makedev audioctl c $major 7 $audio
++ major=31
++ makedev mpu401data c $major 0 $audio
++ makedev mpu401stat c $major 1 $audio
++ major=35
++ for i in 0 1 2 3
++ do
++ makedev midi$i c $major $i $audio
++ makedev rmidi$i c $major `math $i + 64` $audio
++ makedev smpte$i c $major `math $i + 128` $audio
++ done
+ ;;
+ pcaudio)
+- major=`Major pcsp` || continue
++ major=`Major pcsp 13` || continue
+ makedev pcmixer c $major 0 $audio
+ makedev pcsp c $major 3 $audio
+ makedev pcaudio c $major 4 $audio
+ ;;
+- sg)
++ video|video4linux|v4l|radio)
++ # video4linux api includes radio, teletext, etc.
++ major=`Major video 81` || continue
++ minor=0
++ until [ $minor -gt 63 ]
++ do
++ makedev video$minor c $major $minor $video
++ makedev radio$minor c $major `math $minor + 64` $video
++ minor=`math $minor + 1`
++ done
++ symlink radio radio0
++ minor=0
++ until [ $minor -gt 31 ]
++ do
++ makedev vtx$minor c $major `math $minor + 192` $video
++ makedev vbi$minor c $major `math $minor + 224` $video
++ minor=`math $minor + 1`
++ done
++ symlink video video0
++ symlink vbi vbi0
++ major=82
++ minor=0
++ until [ $minor -gt 1 ]
++ do
++ makedev winradio$minor c $major $minor $video
++ minor=`math $minor + 1`
++ done
++ major=83
++ makedev vtx c $major 0 $video
++ makedev vttuner c $major 16 $video
++ ;;
++ i2c)
++ major=`Major i2c 89` || continue
++ minor=0
++ until [ $minor -gt 1 ] # tell me if 1 is wrong...
++ do
++ makedev i2c-$minor c $major $minor $private
++ minor=`math $minor + 1`
++ done
++ ;;
++ tlk)
++ major=102
++ minor=0
++ until [ $minor -gt 3 ] # tell me if 3 is wrong...
++ do
++ makedev tlk$minor c $major $minor $video
++ minor=`math $minor + 1`
++ done
++ ;;
++ srnd)
++ makedev srnd0 c 110 0 $video
++ makedev srnd1 c 110 1 $video
++ ;;
++ fgrab)
++ makedev mmetfgrab c 40 0 $video
++ makedev wvisfgrab c 26 0 $video
++ for i in 0 1 # more?
++ do
++ makedev iscc$i c 93 $i $video
++ makedev isccctl$i c 93 `math $i + 128` $video
++ done
++ for i in 0 1 # more?
++ do
++ makedev dcxx$i c 94 $i $video
++ done
++ ;;
++ sg|sg-all)
+ major=`Major sg 21`
+- for unit in a b c d e f g h
++ for unit in 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
+ do
+- minor=`index abcdefgh $unit`
+- # minor=`expr abcdefgh : ".*$unit" - 1`
+- makedev $arg$unit c $major $minor $scsi
++ makedev sg$unit c $major $unit $scsi
++ done
++ ;;
++ pg)
++ major=`Major pg 97`
++ for unit in 0 1 2 3
++ do
++ makedev pg$unit c $major $unit $scsi
+ done
+ ;;
+ fd)
+@@ -572,15 +1446,34 @@
+ symlink stderr fd/2
+ ;;
+ ibcs2)
+- major=`Major ibcs2` || continue
++ major=`Major ibcs2 30` || continue
+ makedev socksys c $major 0 $ibcs2
+ symlink nfsd socksys
+ makedev spx c $major 1 $ibcs2
+ symlink X0R null
+ ;;
++ netlink)
++ major=36
++ makedev route c $major 0 $private
++ makedev skip c $major 1 $private
++ ;;
++ enskip)
++ major=64
++ makedev enskip c $major 0 $private
++ ;;
++ ipfilt*)
++ major=95
++ makedev ipl c $major 0 $private
++ makedev ipnat c $major 1 $private
++ makedev ipstate c $major 2 $private
++ makedev ipauth c $major 3 $private
++ ;;
++ qng)
++ makedev qng c 77 0 $private
++ ;;
+ apm)
+- major=`Major apm_bios` || continue
+- makedev $arg c $major 0 $system
++ major=`Major mouse 10` || continue
++ makedev apm_bios c $major 134 $mouse
+ ;;
+ dcf)
+ major=`Major dcf` || continue
+@@ -590,6 +1483,11 @@
+ major=`Major hw` || continue
+ makedev helloworld c $major 0 $public
+ ;;
++ ipsec)
++ # For the Free S/WAN (http://www.xs4all.nl/~freeswan/)
++ # implementation of IPSEC
++ makedev ipsec c 36 10 $ipsec
++ ;;
+ update)
+ if [ ! "$devices" ]
+ then
+@@ -619,7 +1517,6 @@
+ create="$create "`cvt $device`
+ fi
+ devs=`strip " $devs " $device`
+- # devs=`expr "$devs" : "\(.*\) $device"``expr "$devs" : ".* $device\(.*\)"`
+ done
+ exec 3<&-
+ fi
+@@ -637,6 +1534,7 @@
+ ;;
+ *)
+ echo "$0: don't know how to make device \"$arg\"" >&2
++ exit 1
+ ;;
+ esac
+ done
+--- makedev-2.3.1.orig/Makefile
++++ makedev-2.3.1/Makefile
+@@ -1,14 +1,15 @@
+ # $Id: Makefile,v 2.2 1995/05/21 17:45:18 alfie Exp $
+
++BINDIR = $(ROOT)/sbin
+ DEVDIR = $(ROOT)/dev
+-MANDIR = $(ROOT)/usr/man
++MANDIR = $(ROOT)/usr/share/man
+ MANEXT = 8
+
+ default:
+ @echo Nothing to make.
+
+ install:
+- install -m 755 MAKEDEV $(DEVDIR)
++ install -m 755 MAKEDEV $(BINDIR)
+ install -m 644 MAKEDEV.man $(MANDIR)/man$(MANEXT)/MAKEDEV.$(MANEXT)
+
+ clean:
+--- makedev-2.3.1.orig/debian/old/README.debian
++++ makedev-2.3.1/debian/old/README.debian
+@@ -0,0 +1,95 @@
++makedev for DEBIAN
++==================
++
++The /etc/makedev.cfg and /etc/devinfo files are rewritten to fit the
++Debian /dev layout.
++
++Security : all mouse devices are changed to mode 600. Only serial
++devices are mode 660 root:dialout. It's possible to crash x11 and
++console with writing random bytes to a mouse device.
++
++Serial console :
++/dev/console should be a symlink to your real console device.
++If it does not exist, or is not a symlink, it will be replaced with a
++symlink console -> tty0.
++
++This version of makedev will check /dev for tty*/pty* devices, and if
++there are some with the old major number, it will create a
++/etc/rc.boot/makedev script. This will script will change the
++master/slave devices the next time you boot.
++
++serial devices should be owned by user "uucp" and group "dialout".
++former they were owned by root. new devices are created with uucp as
++owner, but you will have to change old devices to user uucp on your own.
++It's new policy to have all serial devices owned by uucp, but the last
++word in this discussion isn't said...
++
++some device names have changed. please read
++/usr/doc/makedev/devices.{txt|html}
++
++the permissions should be secure enough, but if you find any bugs, or
++unfounded hard permissions, please let me know (i don't know much about
++the right permissions for devices, i yust used the value, everybody else
++was using, and made read & write only available for root, whenever i
++found nothing better.
++
++/dev/console is now a symlink to /dev/tty0. for more infomation, please
++look at a new 2.1 linux kernel : Documentation/devices.txt. That is the
++"Linux Allocated Device" paper, the official list of linux devices.
++If your boot console is a serial device, you will have to change that
++symlink.
++
++MAKEDEV-C will not work with any kernel with mcdx support, if
++/proc/devices contains "Mitsumi CD-ROM". if so, patch
++/usr/src/linux/driver/cdrom/mcdx.c :
++1149c1149
++< if (unregister_blkdev(MAJOR_NR, "mcdx") != 0) {
++---
++> if (unregister_blkdev(MAJOR_NR, DEVICE_NAME) != 0) {
++1270c1270
++< if (register_blkdev(MAJOR_NR, "mcdx", &mcdx_fops) != 0) {
++---
++> if (register_blkdev(MAJOR_NR, DEVICE_NAME, &mcdx_fops) != 0) {
++
++
++about call out devices (/dev/cu*) :
++
++ /dev/ttySxx devices are fully POSIX-compliant TTY devices. If you
++ are only going to be using one set of tty devices, you should be
++ using /dev/ttySxx.
++
++ /dev/cuaXX devices are different from /dev/ttySXX in two ways ---
++ first of all, they will allow you to open the device even if
++ CLOCAL is not set and the O_NONBLOCK flag was not given to the
++ open device. This allows programs that don't use the
++ POSIX-mondated interface for opening /dev/ttySxx devices to be
++ able to use /dev/cuaXX to make outgoing phone calls on their modem
++ (cu stands for "callout", and is taken from SunOS).
++
++ The second way in which /dev/cuaXX differs from /dev/ttySXX is
++ that if they are used, they will trigger a simplistic kernel-based
++ locking scheme: If /dev/ttySXX is opened by one or more processes,
++ then an attempt to open /dev/cuaXX will return EAGAIN. If
++ /dev/cuaXX is opened by one or more processes, then an attempt to
++ open /dev/ttySXX will result the open blocking until /dev/cuaXX is
++ closed, and the carrier detect line goes high. the open blocking
++ until /dev/cuaXX is closed, and the carrier detect line goes high.
++
++ While this will allow for simple lockouts between a user using a
++ modem for callout and a getty listening on the line for logins, it
++ doesn't work if you need to arbitrate between multiple programs
++ wanting to do dialout --- for example, users wanting to do dialout
++ and UUCP.
++
++ I originally implemented the cuaXX/ttySXX lockout mechanism back
++ before FSSTND established a standard convention for the use of tty
++ lock files. Now that it's there, people should use the tty lock
++ files and not try using /dev/cuaXX. The only reason why
++ /dev/cuaXX hasn't disappeared yet is for backwards compatibility
++ reasons. -- Theodore Ts'o <tytso@mit.edu>
++
++
++debian has no /dev/cu* devices. But you can create them, if you need
++them. Read devices.txt for details.
++
++Andreas Jellinghaus <aj@debian.org>, Sun, 13 Apr 1997 21:05:58 +0200
+--- makedev-2.3.1.orig/debian/old/devices.sgml
++++ makedev-2.3.1/debian/old/devices.sgml
+@@ -0,0 +1,294 @@
++<!doctype linuxdoc system>
++
++<article>
++
++<title>devices created by makedev
++<author> Andreas Jellinghaus <tt>aj@debian.org</tt>
++<date> version 0.3, based on Linux allocated device 2.1.62
++<abstract>
++ some devices are created by default, some are left out on boot
++ floppies, other devices are only created on demand and some
++ devices are obsolete or have new names.
++</abstract>
++
++<sect> batches <p>
++
++call out devices are not generated by default. however if you need them,
++you can generate them (see below).
++
++<descrip>
++<tag/generic/all standard batches for normal Linux\/i386 systems.
++ (standard misc devices, ttyS[0-3], mouse, printer, tapes
++ (scsi, qic, qic117), audio, scsi generic, standard disk, cdroms
++ and ttys)
++<tag/generic-m68k/all generic devices for m68k (additional
++ framebuffer, some mouse devices and m68k scsi disk devices are
++ included,
++ but busmouse devices and qic and qic117 are left out).
++<tag/boot-floppy/a subset of generic. (no audio, less ttys)
++<tag/std-hd/standard hard disks (hd[a-h,xd[ab],sd[a-h],ram disk,md,loop)
++<tag/std-cdrom/standard cdroms (scsi, old non-scsi non-atapi cdroms)
++<tag/compatiblity/collection of old devices. It is usefull to remove them, but
++make sure, that you have generated the new ones, and that you know, what
++you are doing ! serial-cu, printer-old, mouse-old, sr-old,
++qic-old, misc-old, sg-old
++<tag/update/special tag : reads \/proc\/devices and generates new devices
++ found there.
++</descrip>
++
++<sect> Limits (standard devices) <p>
++
++There are some limits in this version of devinfo : it will only create a
++special number of devices (e.g. ramdisks, hda partitions). If one of
++these limits is unrealistic, please tell me. Most limits have no good
++reason, I just didn't want to create hundreds of devices, so I only
++created a few. If a limit is too low for you : a) please tell me and b)
++modify /etc/devinfo (should be easy). <p>
++
++<descrip>
++<tag/ramdisks/8 devices ram[0-7]
++<tag/ide harddisks/20 partitions each (devices hd[a-h])
++<tag/xt harddisks/20 partitions each (devices xd[ab]
++<tag/loopback/8 devices loop[0-7]
++<tag/metadisk/4 devices md[0-3]
++<tag/scsi cdrom/scd: 8 devices scd[0-7]
++<tag/scsi cdrom/scd-all : 16 devices scd[0-15]
++<tag/scsi generic/sg : 8 devices sg[0-7]
++<tag/scsi generic/sg-all : 16 devices sg[0-15]
++<tag/scsi tapes/8 devices st[0-7]
++<tag/mscdex/4 cdrom devices dos_cd[0-3]
++<tag/joysticks/2 devices each js[0-1] djs[0-1]
++<tag/other cdroms/only one device created : sonycd, gscd, optcd, sjcd,
++hitcd, mcd, cdu535, aztcd, cm206cd, bpcd (if there are several cdroms
++possible : please tell me !)
++<tag/serial/default bootdisks and base system will only have ttyS[0-3],
++but you can create all possible devices ttyS[0-63] with "MAKEDEV serial"
++or several additional devices with "MAKEDEV ttyS4 ttyS5 ...".
++</descrip>
++
++<sect> additional devices <p>
++
++you can create these devices with "MAKEDEV name" and delete them with
++"MAKEDEV -d name". you can either use the name listed here (this will
++create all possible devices), or individual devices (use the device
++name) e.g. "serial" will create all 64 serial devices ttyS[0-63] but
++"ttyS0" will only create this one.
++
++<sect1> serial devices <p>
++
++<descrip>
++<tag/isdn-tty/isdn terminal devices. 8 devices : ttyI[0-7]
++<tag/isdn-tty-all/isdn terminal devices. 64 devices : ttyI[0-63]
++
++<tag/isdn-ppp/isdn sync ppp network devices. 8 devices : ippp[0-7]
++<tag/isdn-ppp-all/isdn sync ppp network devices. 64 devices : ippp[0-63]
++
++<tag/isdn-io/isdn raw and control devices. 18 devices :
++ isdn[0-7] isdnctrl[0-7] isdnctrl isdninfo
++<tag/isdn-io-all/isdn raw and control devices. 130 devices :
++ isdn[0-63] isdnctrl[0-63] isdnctrl isdninfo
++
++<tag/serial-cu/serial callout devices. they are only for compatibility,
++most people don't need them. 64 devices : cua[0-63]
++
++<tag/isdn-cu/isdn call out devices. they are only for compatibility,
++most people don't need them. 64 devices : cui[0-7]
++<tag/isdn-cu-all/isdn call out devices. they are only for compatibility,
++most people don't need them. 64 devices : cui[0-63]
++
++<tag/chase{-cu}/devices for chase serial card (append -cu to create
++call out devices). 32 devices ttyH[0-31] (cuh[0-31])
++
++<tag/cyclades{-cu}/devices for cyclades serial card (append -cu to create
++call out devices). 32 devices ttyC[0-31] (cub[0-31])
++
++<tag/digiboard{-cu}/devices for digiboard serial card (append -cu to create
++call out devices). 32 devices ttyD[0-31] (cud[0-31])
++
++<tag/stallion{-cu}/devices for stallion serial card (append -cu to create
++callout devices). 32 devices ttyE[0-31] (cue[0-31])
++
++<tag/stallion-mem/devices to access stallion serial card. 4 devices
++stallionmem[0-3]
++
++<tag/specialix{-cu}/devices for specialix serial card (append -cu to create
++call out devices). 32 devices ttyX[0-31] (cux[0-31])
++
++<tag/rockport{-cu}/devices for rockport serial card (append -cu to create
++call out devices). 32 devices ttyR[0-31] (cur[0-31])
++
++<tag/riscom{-cu}/devices for riscom serial card (append -cu to create
++call out devices). 32 devices ttyL[0-31] (cul[0-31])
++
++<tag/hayes{-cu}/devices for hayes serial card (append -cu to create
++call out devices). 32 devices ttyP[0-31] (cup[0-31])
++
++<tag/baycom/devices for baycom radio modem. 32 devices bc[0-31]
++
++<tag/computone{-cu}/devices for computone intelliport II serial card
++(append -cu to create call out devices). 32 devices ttyF[0-31]
++(cuf[0-31])
++
++<tag/computone-ctrl/devices to access computone intelliport II serial
++card. 8 devices ip2ipl[0-3] and ip2stat[0-3]
++
++<tag/dcbri/spellcaster datacomm\/bri isdn card. 4 devices dcbri[0-3]
++<tag/specialix{-cu}/devices for specialix IO8+ serial card. 32 devices
++ttyW[0-31] (cuw[0-32])
++<tag/pam{-cu}/devices for PAM Software's mulitmodem boards. 32 devices
++ttyM[0-31] (cum[0-31])
++</descrip>
++
++<sect1> misc devices <p>
++
++<descrip>
++<tag/pty[p-za-e]/master pty devices. 16 devices pty?[0-9a-f] each
++<tag/tty[p-za-e]/slave tty devices. 16 devices pty?[0-9a-f] each
++<tag/floppy-all/generic only includes the fd0 and fd1 devices. this way
++you can generate devices for the 3rd ... 8th floppies. i recommend to
++install fdutils and use MAKEFLOPPIES to create the floppy devices you
++need. 30 devices each fd[0-7]*
++
++<tag/framebuffer/universal frame buffer (68k,sparc).
++ 22 devices fb0* fb1*
++<tag/other-arch/amigamouse, atarimouse, sunmouse, openprom, kbd
++<tag/double/"double" compressed disk. 16 devices [c]double[0-7]
++<tag/ez[a-d]/syquest ex135 parallel port removable drive.
++ 20 partitions each
++<tag/ed[ab]/mca esdi hard disk. 20 partitions ed?* each
++
++<tag/sbpcd[234]/2nd,3rd,4th sound blaster cdrom controller. 4 devices sbpcdXX each
++<tag/mscdex/MSCDEX CD-ROM callback support. 4 devices dos_cd[0-3]
++<tag/cm205cd/cm205 cdrom devices (not supported in 2.x).
++ 2 device cm205cd lmscd
++<tag/ad[a-p]/acsi disc\/cdrom (68k\/atari). 16 devices ad?* each
++<tag/gs4500/genius 4500 handheld scanner. 1 device gs4500
++<tag/slm/atari sm asci laser printer (68k\/atari). 4 devices slm[0-3]
++<tag/ht/ide tape. 2 devices ht0 nht0
++<tag/z2ram/zorro II ramdisk. 1 device z2ram
++<tag/cfs/coda network file-system.
++ 1 device cfs0
++<tag/dtlk/DoubleTalk PC speech synthesizer, from RC Systems. 1 device dtlk
++
++<tag/ibcs2/ibcs2 devices as described in "Linux Allocated Devices".
++you need to create the directory /dev/inet before running makedev.
++ibcs2-unoff has lots more devices (i don't know if all are needed, or
++not. in doubt use ibcs2-unoff). 9 devices (socksys spx nfsd X0R inet/*).
++
++<tag/ibcs2-unoff/ibcs2 devices as described in the ibcs2 package. you
++need to create the directories "X" and "inet" before creating these
++devices. 74 devices (arp egp ggp icmp ip ipip pup rawip rip tcp udp nfsd
++X0R socksys spx pty[10-47] inet/* X/*)
++
++<tag/nvram/some special m68k hardware ? 1 device nvram
++
++<tag/system-sgi/devices for linux/sgi. 5 devices graphics opengl gfx
++input/mouse input/keyboard
++
++<tag/nb/network block devices. 8 devices nb*
++<tag/ftl/flash translatio layer (FTL) filesystems. max. 16 drives a-p
++with each 15 partitions (like scsi disks sd*).
++<tag/qng/Quantum Noice Generator. 1 device qng
++<tag/at200/Photometrics AT200 CCD camera. 1 device at200
++<tag/bttv/Brooktree Bt848 frame grabbers. 12 devices bttv[0-3]
++bttvc[0-3] bttv-vbi[0-3]
++<tag/winradio/WiNRADiO communications receiver card. 4 devices
++winradio[0-3]
++<tag/videotext/Teletext/videotext interfaces 2 devices vtx vttuner
++<tag/ihcp/ikon 1011[57] Versatec Greensheet Interface. 2devices ihcp[0-1]
++<tag/shimq/Linux/SGI shared memory input queue. 5 devices shmiq
++qcntl[0-3]
++<tag/sch/SCSI media changer. 8 devices sch[0-7]
++<tag/controla/Sony control-a1 stereo control bus.
++</descrip>
++
++<sect1> sound <p>
++<descrip>
++<tag/mpu401/mpu401 MIDI data & status ports.
++ 2 devices mpu401{data,stat}
++<tag/tclmidi/tclmidi midi driver.
++ 12 devices midi[0-3] rmidi[0-3] smpte[0-3]
++</descrip>
++
++<sect1> misc <p>
++<descrip>
++<tag/wvisfgrab/quanta winvision frame grabber.
++ 1 device wvisfrab
++<tag/mmetfgrab/matrox meteor frame grabber.
++ 1 device mmetfgrab
++<tag/ml16p[abc]/ml-16p experimental i\/o board.
++ 20 device ml16p?* each
++<tag/scc/Z8530 HDLC driver. 8 devices scc[0-7]
++<tag/rom/rom\/flash memory card.
++ 32 devices rom[0-7] rrom[0-7] flash[0-7] rflash[0-7]
++<tag/netlink/netlink support. 2 devices route skip
++<tag/mlanai/myricom pci myrinet board. 8 devices mlanai[0-7]
++<tag/yamm/yet another micro monitor. 1 device yamm
++<tag/bdm/bdm interface for remote debugging MC683xx mc.
++ 6 devices pd_bdm[0-2] icd_bdm[0-2]
++<tag/holter/electrocardiognosis holter serial port.
++ 3 devices holter[0-2]
++<tag/dsp56k/dsp56001 digital signal processor.
++ 1 device dsp56k
++<tag/adbus/apple desktop bus. this was disabled, because it clashes with
++ab[b], the second acsi device (m68k/atari acsi disk).
++ 1 device adb
++<tag/firewall/sf firewall package.
++ 1 device firewall
++<tag/plink/sundance plink transputer boards.
++ 12 devices [r]plink[0-3][d]
++<tag/enskip/enskip kernel encryption package
++<tag/yppcpci/yarc powerpc pci coprocessor card
++<tag/capi20/CAPI 2.0 interface.
++ 21 devices capi20 capi20.[01-19]
++<tag/ma16/ma16 numeric accelerator card
++<tag/aps/spellcaster protocol service interface.
++ 7 devices aps*
++<tag/sci/dolphin interconnect solutions' pci-sci bridge.
++ 4 devices SCI\/[0-3]
++</descrip>
++
++<sect> compatibility <p>
++
++not all devices have a standard device name shared by all linux
++distributions, and many names have changed in the past. here is a list,
++so you can find new names, create the old devices (if you want), or
++remove them (to get rid of duplicates).
++
++<descrip>
++<tag/call out devices/cu* devices are not created by default. but you
++can create or remove them : serial-cu chase-cu cyclades-cu digiboard-cu
++stallion-cu specialix-cu isdn-cu rockport-cu riscom-cu hayes-cu
++computone-cu
++<tag/printer-old/parallel port devices, standard name is lp[0-3], not par[0-3]
++<tag/mouse-old/(bus-)mouse devices : logimouse(logibm) psmouse(psaux)
++msmouse(inportbm) atimouse(atibm) jmouse(jbm)
++<tag/sr-old/scsi cdrom devices (now called scd)
++<tag/qic-old/qic streamer devices : nqt qt nqt11 qt11 nqt24 qt24 nqt120
++qt120 nqt150 qt150 qt-reset
++<tag/misc-old/for standardized names, some devices got renamed. old :
++midi, sbpcd, aztcd0, vcs0, lmscd, ramdisk
++new : midi00, sbpcd0, aztcd, vcs, ram0, cm205cd, ram0
++<tag/sg-old/scsi generic devices now use numbers (sg[0-7]), not letters
++sg[a-h])
++<tag/isdn-old/an old version created ipp* devices. this was a typo, they
++are called ippp*
++</descrip>
++
++i left some links : even if they are for compatibility, removing them
++might break existing software.
++
++<descrip>
++<tag/isdnctrl/link to "isdnctrl0"
++<tag/mfd0/m68k amiga hd floppy device
++</descrip>
++
++<sect> note about console and tty0 <p>
++
++New standard is : /dev/tty0 is a device (char,4,0).
++console should be a symlink : to tty0, or whatever your console is.
++If it is not a symlink, makedev will replace it with a symlink to tty0.
++Someday there will be a kernel managed device /dev/console to handle
++this (it will be char 5 1).
++
++</article>
+--- makedev-2.3.1.orig/debian/changelog
++++ makedev-2.3.1/debian/changelog
+@@ -0,0 +1,747 @@
++makedev (2.3.1-46.2) stable unstable; urgency=low
++
++ * non-maintainer update
++ * argh, target stable and unstable
++
++ -- Adam Di Carlo <aph@debian.org> Sun, 15 Oct 2000 14:01:16 -0400
++
++makedev (2.3.1-46.1) unstable; urgency=low
++
++ * non-maintainer update
++ * 'symlink mcdx mcdx0' was reversed (one line patch)
++
++ -- Adam Di Carlo <aph@debian.org> Sun, 15 Oct 2000 04:36:30 -0400
++
++makedev (2.3.1-46) stable unstable; urgency=medium
++
++ * fix silly symlink loop between ram and ram1, closes: #69475, #69351
++ * fix similar symlink reversal between scd and sr devices, and make 'sr'
++ a valid target, not just when using 'update', closes: #69500
++ * change agpart to agpgart as per devices.txt, closes: #69319
++ * add sg* devices to generic targets that include SCSI, closes: #69231
++
++ -- Bdale Garbee <bdale@gag.com> Tue, 29 Aug 2000 01:13:30 -0600
++
++makedev (2.3.1-45) stable unstable; urgency=low
++
++ * incorporates work done by Martin Schulze <joey@finlandia.infodrom.north.de>
++ with my profound thanks.
++ * Added gscd and cm206cd device files, closes: #69057
++ * Corrected mcdx drivers, support all five drives, closes: #69058
++ * Corrected symlink creation (i.e. use symlink() instead of ln -s)
++ * Added /dev/toshiba (Toshiba laptop SMM support), closes: #54729, #59242
++ * Added sdc and sdd to generic-m68k since they were missing, closes: #61027
++ * Made joystick devices readable by everybody (closes: Bug#61499)
++ * Added '$opts' whenever $0 aka MAKEDEV gets called, thus `-n' is passed
++ to the child properly, closes: #63159
++ * Added hyphen `-' between i2c and the number as described by devices.txt,
++ closes: #63523
++ * Fixed wrong creation of hdi hdj hdk and hdl, closes: #64881
++ * Added hdc and hdd to generic-powerpc since they were missing,
++ closes: #65852
++ * Added support for ttyI and cui (ignored) to 'update' target by
++ modifying cvt(), closes: #66838
++ * Corrected a whole bunch of math errors where a `$' was missing, trying
++ to add 1 to 'minor', closes: #68915
++ * Fixed /proc/devices-parser to ignore slashes, closes: #31854
++ * Removed out-dated Replaces, closes: #61256
++ * Added audioctl, closes: #60755
++ * Added agpart, closes: #61084
++ * Adjusted 3dfx to have file mode $video instead of $audio
++ * Added ipmikcs (Intelligent Platform Management) with mode 0600 (mode
++ may be unpracticable), closes: #67431
++
++ -- Bdale Garbee <bdale@gag.com> Tue, 15 Aug 2000 21:52:23 -0600
++
++makedev (2.3.1-44) frozen unstable; urgency=low
++
++ * patch from tausq for a case I missed when converting expr to $(( )),
++ fixes problem creating sbpcd devices. Target frozen since this was
++ marked release-critical. Closes: #63585
++
++ -- Bdale Garbee <bdale@gag.com> Sat, 6 May 2000 20:24:40 -0600
++
++makedev (2.3.1-43) frozen unstable; urgency=low
++
++ * add invocation of '/sbin/MAKEDEV std' to postinst to ensure key devices
++ have proper owner/group/perms on upgrades, closes: #61367
++ * replace /dev/MAKEDEV references with /sbin/MAKEDEV references in the
++ postinst
++ * target frozen since broken perms on /dev/tty keeps xterm from working
++ which is very confusing and frustrating on upgrades.
++
++ -- Bdale Garbee <bdale@gag.com> Wed, 3 May 2000 14:27:04 -0600
++
++makedev (2.3.1-42) frozen unstable; urgency=low
++
++ * eliminate the use of expr, since it is in /usr, which may not be mounted
++ during system recovery when makedev is often needed. Target frozen since
++ this was tagged release critical, closes: #62925
++
++ -- Bdale Garbee <bdale@gag.com> Mon, 24 Apr 2000 22:27:18 -0600
++
++makedev (2.3.1-41) frozen unstable; urgency=low
++
++ * Arrange for all scd* devices to have hardlinked sr* counterparts as per
++ devices.txt. Target frozen since this is release critical, closes: #61862
++
++ -- Bdale Garbee <bdale@gag.com> Fri, 7 Apr 2000 20:01:39 -0600
++
++makedev (2.3.1-40) frozen unstable; urgency=low
++
++ * fix flakey code for discovering proper major numbers for several device
++ types. This broke the raidtools postinst in some cases, which I think
++ makes this worth adding to frozen, even though there's no bug in the BTS
++ about it (problem reported and fixed during an IRC session). There are
++ still a few potential major number problems in MAKEDEV, but they're all
++ for obscure devices that are not in devices.txt, and which I'll therefore
++ probably remove entirely when rewriting makedev for woody.
++ * fix type, smtpe should be smpte, closes: #59061
++
++ -- Bdale Garbee <bdale@gag.com> Sun, 19 Mar 2000 20:28:30 -0700
++
++makedev (2.3.1-39) frozen unstable; urgency=low
++
++ * add missing major number clause to thinkpad/smapi device, closes: #57381
++ target frozen since this is clearly release-critical
++
++ -- Bdale Garbee <bdale@gag.com> Wed, 9 Feb 2000 12:07:07 -0700
++
++makedev (2.3.1-38) frozen unstable; urgency=low
++
++ * target frozen since 56724 was tagged release-critical
++ * rework ftape stuff to match 2.2 kernel device definitions, closes: #56724
++ * add code to create /dev/smapi and symlink it as /dev/thinkpad. This can
++ be called as either smapi or thinkpad. Closes: #54714
++ * add /dev/radio symlink to radio0, closes: #55649
++ * update the netlink target to create fwmonitor and the tap* devices,
++ closes: #54772
++ * add IRDA device support, closes: #47296
++
++ -- Bdale Garbee <bdale@gag.com> Thu, 3 Feb 2000 23:51:58 -0700
++
++makedev (2.3.1-37) unstable; urgency=low
++
++ * add openprom entry for Sparc systems, closes: #54296
++
++ -- Bdale Garbee <bdale@gag.com> Fri, 7 Jan 2000 20:03:00 -0700
++
++makedev (2.3.1-36) unstable; urgency=low
++
++ * fix cyclades target to make 32 instead of 33 devices, and update man page
++ to match what the code does, closes: #51892
++ * add st0/st1/scd0/scd1 to generic-i386 and generic-alpha to improve the
++ consistency across platforms, closes: #52871
++ * create an initial generic-arm target, anticipating the need as debian-arm
++ struggles to get ready to release with potato.
++ * update handling of network block devices (nb) so that specifying a single
++ device works as expected. calling for 'nb' will give nb0 and nb1.
++ Closes: #53781
++ * support digital joysticks (djs) in joystick/js target, closes: #53314
++ * update to current policy rev, add Build-Depends.
++
++ -- Bdale Garbee <bdale@gag.com> Fri, 7 Jan 2000 02:14:24 -0700
++
++makedev (2.3.1-35) unstable; urgency=low
++
++ * change group of video4linux devices to new group video appearing in
++ base-passwd 3.0.4, closes: 51429
++
++ -- Bdale Garbee <bdale@gag.com> Sun, 28 Nov 1999 20:00:12 -0700
++
++makedev (2.3.1-34) unstable; urgency=low
++
++ * re-craft 'ida' target the same way we did dac960 to allow the boot-floopies
++ folks to create just one or two cards worth. Closes: #51341
++
++ -- Bdale Garbee <bdale@gag.com> Fri, 26 Nov 1999 17:54:56 -0700
++
++makedev (2.3.1-33) unstable; urgency=low
++
++ * add usbmouse support to busmice target, closes: #50326
++
++ -- Bdale Garbee <bdale@gag.com> Tue, 16 Nov 1999 03:20:03 -0700
++
++makedev (2.3.1-32) unstable; urgency=low
++
++ * add 'audio' to the targets for generic-i386, closes: #49935
++ * craft an initial generic-alpha target to make the boot-floppies stuff
++ work right. For now, just clone the i386 target since I have no idea
++ what is really needed... closes: #49934
++ * add support for creating ramN devices one at a time, closes: #49853
++ * add target 'consoleonly' that creates the minimum number of devices to
++ support /dev/console, and recraft the 'console' target to use it and then
++ add all the vcs* devices, et al. Closes: #49852
++ * re-craft 'dac960' target to be a loop around targets dac960.[0-7] so that
++ boot-floppies creators can create just one or two cards worth of devices
++ instead of having to do them all. Closes: #49864
++
++ -- Bdale Garbee <bdale@gag.com> Mon, 15 Nov 1999 22:38:43 -0700
++
++makedev (2.3.1-31) unstable; urgency=low
++
++ * fixes for major numbers on some oddball CDROM types, needed for boot disks
++
++ -- Bdale Garbee <bdale@gag.com> Wed, 10 Nov 1999 23:58:56 -0700
++
++makedev (2.3.1-30) unstable; urgency=low
++
++ * fill in a few more audio devices, closes: #49107
++
++ -- Bdale Garbee <bdale@gag.com> Wed, 3 Nov 1999 20:28:54 -0700
++
++makedev (2.3.1-29) unstable; urgency=low
++
++ * the /dev/vcs* handling is correct, closes: #42035
++ * fix case construct for ht0, closes: #42519
++ * fix major number determination for several devices, closes: #43560
++ * add js2, js3 to joystick device creation, but leave owner/group/mode
++ the same as for mice until/unless some more compelling argument is
++ presented, closes: #43790
++ * improve consistency of vcs device creation, making vcs0 and vcsa0, with
++ symlinks for vcs and vcsa, closes: #45698
++ * add support for /dev/3dfx, closes: #48734
++ * /dev/sr* is obsolete, use /dev/scd*, closes: #32723
++ * RH 2.5 was merged as of 2.3.1-24, closes: #45153
++ * FHS compliance
++
++ -- Bdale Garbee <bdale@gag.com> Sat, 30 Oct 1999 16:53:32 -0600
++
++makedev (2.3.1-28) unstable; urgency=medium
++
++ * /o\ oops... -27 was broken badly. Close 42355, 42359, 42361.
++
++ -- Bdale Garbee <bdale@gag.com> Tue, 3 Aug 1999 02:38:06 -0600
++
++makedev (2.3.1-27) unstable; urgency=medium
++
++ * fix loop's major number, closes 38559.
++ * fix group of scd* to be cdrom, not disk. Closes 41227, 41812.
++ * add vbi symlink, closes 39406
++
++ -- Bdale Garbee <bdale@gag.com> Mon, 2 Aug 1999 00:59:19 -0600
++
++makedev (2.3.1-26) unstable; urgency=medium
++
++ * fix another syntax error introduced in -25... /o\
++
++ -- Bdale Garbee <bdale@gag.com> Sat, 29 May 1999 03:12:32 -0600
++
++makedev (2.3.1-25) unstable; urgency=medium
++
++ * fix *ugly* typos introduced in -24, closes 38489, 38465.
++ * update MAKEDEV to install the mouse -> sunmouse link in generic-sparc,
++ in addition to making it in the postinst if needed. Closes 38432.
++ * have MAKEDEV exit with error 1 if we hit a "don't know how to make device"
++ situation. I'm a bit concerned about this since it *might* break a
++ package postinst somewhere. However, it is clearly the right thing to do
++ on a purely conceptual level. Closes 29974.
++ * add support for Free S/WAN (IPSEC) device, closes 38372.
++
++ -- Bdale Garbee <bdale@gag.com> Wed, 26 May 1999 14:00:29 -0600
++
++makedev (2.3.1-24) unstable; urgency=low
++
++ * fold in patch from Espy to provide all the functionality of the RedHat
++ makedev 2.5. Leave our version number as 2.3.1-XX for now, since we're
++ not actually cleanly derived from the 2.5 RedHat bits. Closes 37795, 28616.
++ * make 'scd' act like 'scd-all', closes 37071
++ * patch for postinst typo, closes 37612
++ * move MAKEDEV to /sbin, create an init.d fragment to put a symlink in the
++ /dev directory at boot time. This should allow devfs to do its thing,
++ closing 37795, 33025.
++
++ -- Bdale Garbee <bdale@gag.com> Wed, 26 May 1999 14:00:29 -0600
++
++makedev (2.3.1-23) stable unstable; urgency=low
++
++ * fix problems with st* and adb pointed out by Hartmut
++
++ -- Bdale Garbee <bdale@gag.com> Thu, 15 Apr 1999 08:39:39 -0600
++
++makedev (2.3.1-22) unstable; urgency=low
++
++ * add 'hamradio' as a target, which is a macro for the new scc[0-7] and
++ bc[0-3] targets, closes 34773.
++
++ -- Bdale Garbee <bdale@gag.com> Wed, 14 Apr 1999 11:55:46 -0600
++
++makedev (2.3.1-21) stable unstable; urgency=low
++
++ * make /dev/mouse a symlink to /dev/sunmouse on sparc, closes 35616
++ * have postinst create audio devices, closes 35646
++ * also create [alm] suffix versions for st* devices, closes 33041
++ * add support for hd[ijkl]... noticed while investigating bug 33798
++ * use the same owner/group/perms for nvram that we use for kmem, closes 34111
++ * add loop to the std device set, closes 34899
++
++ -- Bdale Garbee <bdale@gag.com> Wed, 14 Apr 1999 11:13:47 -0600
++
++makedev (2.3.1-20) stable unstable; urgency=medium
++
++ * release-critical fixes from Hartmut for powerpc, closes 34004
++
++ -- Bdale Garbee <bdale@gag.com> Wed, 10 Mar 1999 07:51:08 -0700
++
++makedev (2.3.1-19) frozen unstable; urgency=medium
++
++ * fix identification of 'sg' in update, closes the part of 33752 (grave)
++ that I can duplicate on i386 in -18
++
++ -- Bdale Garbee <bdale@gag.com> Tue, 23 Feb 1999 07:44:30 -0700
++
++makedev (2.3.1-18) frozen unstable; urgency=medium
++
++ * as requested by Wichert, have the postinst force /dev/kmem owner, group,
++ and permissions since this is a security issue, closes 33703.
++ * another patch needed for m68k slink boot floppies from Michael Schmitz
++
++ -- Bdale Garbee <bdale@gag.com> Mon, 22 Feb 1999 22:56:47 -0700
++
++makedev (2.3.1-17) frozen unstable; urgency=low
++
++ * Wichert points out that /dev/kmem doesn't need to be group writeable.
++
++ -- Bdale Garbee <bdale@gag.com> Sat, 20 Feb 1999 16:12:29 -0700
++
++makedev (2.3.1-16) frozen unstable; urgency=medium
++
++ * apply patch for m68k that is release-critical for slink
++
++ -- Bdale Garbee <bdale@gag.com> Fri, 19 Feb 1999 20:07:05 -0700
++
++makedev (2.3.1-15) frozen unstable; urgency=medium
++
++ * fix major number for sunmouse as per Eric Delaunay, closes 33425
++ * tighten default permission on mouse and joystick devices, closes 32378
++ * change audio devices to root.audio 660, closes 32849
++ * apply patch from Eric Delaunay to fix problem with scsi devices and 2.2
++ kernels, closes 32999
++ * target 'frozen' since the sunmouse fix at the very least should be in
++ slink...
++
++ -- Bdale Garbee <bdale@gag.com> Wed, 17 Feb 1999 16:53:41 -0700
++
++makedev (2.3.1-14) frozen unstable; urgency=low
++
++ * additions from Eric Delaunay needed for sparc frozen, closes 32458
++
++ -- Bdale Garbee <bdale@gag.com> Wed, 27 Jan 1999 13:54:31 -0700
++
++makedev (2.3.1-13) frozen unstable; urgency=low
++
++ * make random/urandom available separately, not just in std, closes 32145
++
++ -- Bdale Garbee <bdale@gag.com> Tue, 19 Jan 1999 21:27:14 -0700
++
++makedev (2.3.1-12) frozen unstable; urgency=low
++
++ * add random/urandom to the std target, closes 31562 and 29193
++ * update manpage to indicate the manpage is out of date, I need to make a
++ chunk of time at some point to give it a thorough review/update.
++ * don't make /dev/cua*, fix group on /dev/ttyS*, closes 30867
++ * change postinst to use syntax that isn't bash-specific, closes 18807
++ and 30849
++
++ -- Bdale Garbee <bdale@gag.com> Sat, 9 Jan 1999 00:39:25 -0700
++
++makedev (2.3.1-11) frozen unstable; urgency=low
++
++ * allow 16 sd's instead of 8, as the kernel does. closes 30555.
++ * create hdc and hdd in generic-i386, and create 20 partitions per hd
++ instead of 4, closes 30522.
++ * go back (forward?) to using 'u' instead of '[DHE]' in fd entries,
++ closes 30438.
++ * add 'fb' to both the generic-i386 and generic-powerpc clauses, closes
++ 29228
++
++ -- Bdale Garbee <bdale@gag.com> Sat, 12 Dec 1998 08:10:22 -0700
++
++makedev (2.3.1-10) frozen unstable; urgency=low
++
++ * instead of having the postinst explicitly link /dev/console, have it
++ call MAKEDEV if console doesn't exist. Update MAKEDEV to know how to
++ link it for 2.0 kernels and prior, and create the explicit device for
++ 2.1 and later running kernels. Building this based on running kernel
++ revision doesn't feel clean, but I see no better way.
++
++ -- Bdale Garbee <bdale@gag.com> Sun, 8 Nov 1998 18:49:30 -0700
++
++makedev (2.3.1-9) frozen unstable; urgency=low
++
++ * fix postinst to cd to /dev so that devices don't end up in /, now that
++ we don't do the cd in MAKEDEV itself
++ * move 'generic' to 'generic-i386', and have 'generic' use dpkg to determine
++ which generic-<arch> to use... this paves the way for fixing support for
++ other architectures.
++ * Several changes per drow on IRC:
++ change MAXVT from 8 to 63
++ change sd[ab] to create 15 instead of 8 subdevices
++ fix char->block on one scd instance
++ diffs to add support for powerpc machines
++
++ -- Bdale Garbee <bdale@gag.com> Sun, 8 Nov 1998 18:49:30 -0700
++
++makedev (2.3.1-8) frozen unstable; urgency=low
++
++ * add support for ram0 to the ram* list (0 was omitted), part of 28933.
++ * device 'rtc' was part of 'misc', give it a top-level entry too to reduce
++ possible confusion. Part of 28933.
++ * add an entry for 'initrd', closes 28933 (slink release-critical).
++
++ -- Bdale Garbee <bdale@gag.com> Sun, 8 Nov 1998 10:18:37 -0700
++
++makedev (2.3.1-7) frozen unstable; urgency=low
++
++ * now that MAKEDEV is a script, this can be an 'all' package instead of
++ an 'any'. Thanks to Hartmut Koptein for pointing this out.
++
++ -- Bdale Garbee <bdale@gag.com> Fri, 6 Nov 1998 11:42:58 -0700
++
++makedev (2.3.1-6) frozen unstable; urgency=low
++
++ * add ttyS entry so update works with recent 2.1 kernels
++
++ -- Bdale Garbee <bdale@gag.com> Mon, 2 Nov 1998 21:47:34 -0700
++
++makedev (2.3.1-5) frozen unstable; urgency=low
++
++ * fix typo affecting fb devices, closes 28742
++ * fix syntax used for wildcarded devices, part of closing 28769
++ * fix error in minor numbers for isdn-ippp, part of closing 28769
++
++ -- Bdale Garbee <bdale@gag.com> Sun, 1 Nov 1998 23:09:45 -0700
++
++makedev (2.3.1-4) frozen unstable; urgency=low
++
++ * add support for additional scd and sg devices, closes 28029.
++ * change device names for busmice back to what we used in makedev-1.*, which
++ is also what the kernel documentation uses. Closes 28143.
++ * add support for various devices in contemporary kernels, closes 27720.
++
++ -- Bdale Garbee <bdale@gag.com> Wed, 28 Oct 1998 23:41:58 -0700
++
++makedev (2.3.1-3) unstable; urgency=low
++
++ * use 'dialout' instead of 'serial' to select owner/group/perms for ISDN
++ devices, closes 27536
++ * use 'dialout' as group for serial devices instead of 'uucp' to be
++ compatible with prior Debian makedev packages.
++
++ -- Bdale Garbee <bdale@gag.com> Wed, 7 Oct 1998 22:50:36 -0600
++
++makedev (2.3.1-2) unstable; urgency=low
++
++ * fix scd-all and sg-all entry points. The latter is just an alias for 'sg',
++ but the former was genuinely missing. Switch sg devices to numeric suffix
++ to comply with kernel's devices.txt. Closes 27490.
++ * close 26586, since I'm pretty sure it's a weirdy not caused by the package.
++ * add ISDN devices, closes 26971.
++ * add cfs0 for CODA, closes 23815.
++
++ -- Bdale Garbee <bdale@gag.com> Tue, 6 Oct 1998 00:33:59 -0600
++
++makedev (2.3.1-1) unstable; urgency=low
++
++ * New upstream version. This is a *significant* change!
++ This is a move (back?) from the short-lived makedev that depended on a
++ non-free parser to the one that is just a shell script. We will now be
++ more like other Linux distributions, no longer depending on a non-free
++ hunk of code to build the makedev package, and some porting and other
++ issues will get better.
++ * With the major change in upstream code, several bugs are not relevant
++ any more. Therefore, close 12949, 18037, 18807, 20665, 22648, 22868,
++ 23771, 23898, 24477, 24572, 25660, 25840, 26058.
++ * add support for /dev/ptmx, built as part of pty*, closes 23612.
++ * add support for /dev/ed[ab], closes 23887.
++
++ -- Bdale Garbee <bdale@gag.com> Sun, 6 Sep 1998 21:21:32 -0600
++
++makedev (1.6-32) frozen unstable; urgency=medium
++
++ * serial devices now owned by root.dialout, closes 22297 (important)
++ * tape devices now owned by root.tape, closes 11910
++ * be explicit about which 'ls' we're calling, closes 22225
++
++ -- Bdale Garbee <bdale@gag.com> Fri, 22 May 1998 23:52:58 -0600
++
++makedev (1.6-31) unstable; urgency=low
++
++ * add powerpc support, closes 21949
++ * lose the menu entry
++
++ -- Bdale Garbee <bdale@gag.com> Sat, 2 May 1998 01:29:06 -0600
++
++makedev (1.6-30) unstable; urgency=low
++
++ * change from debmake to debhelper
++ * fix errors and warnings reported by lintian
++ * deliver devices.sgml instead of trying to build the .txt and .html files,
++ closes bug 16953
++
++ -- Bdale Garbee <bdale@gag.com> Mon, 9 Feb 1998 22:31:43 -0700
++
++makedev (1.6-29) unstable; urgency=low
++
++ * add arpd device, on request of Elie Rosenblum <erosenbl@nyx.net>.
++
++ -- Bdale Garbee <bdale@gag.com> Wed, 14 Jan 1998 09:42:14 -0700
++
++makedev (1.6-28) unstable; urgency=low
++
++ * new maintainer
++
++ -- Bdale Garbee <bdale@gag.com> Fri, 5 Dec 1997 23:22:57 -0700
++
++makedev (1.6-27) unstable; urgency=low
++
++ * changed /dev/console handling.
++ * updated devinfo to kernel 2.1.62 device list.
++ * changed all device with group "sys" to group "root".
++
++ -- Andreas Jellinghaus <aj@debian.org> Sat, 8 Nov 1997 11:56:18 +0100
++
++makedev (1.6-26) unstable; urgency=low
++
++ * fixed bug #13787 : amigamouse1 was not corrected by postinst.
++ * fixed ad devices.
++ * added nvram device, added ad* to std-hd-m68k, added ttyS4 and ttyS6
++ to m68k boot-floppies and m68k generic
++
++ -- Andreas Jellinghaus <aj@debian.org> Thu, 16 Oct 1997 20:09:14 +0200
++
++makedev (1.6-25) unstable; urgency=low
++
++ * bug #9077 is obsolete (kernel bug, fixed in kernel).
++ * libc6 release : closes bugs #12791 and #13122.
++ * fixed bug #12158 : added sr* and sg* devices.
++ * fixed bug #12385 : wrong standard number.
++
++ -- Andreas Jellinghaus <aj@debian.org> Fri, 19 Sep 1997 16:12:32 +0200
++
++makedev (1.6-24) unstable; urgency=low
++
++ * removed support for old floppy devices.
++ * only create generic floppy devices.
++
++ -- Andreas Jellinghaus <aj@debian.org> Wed, 10 Sep 1997 10:31:53 +0200
++
++makedev (1.6-23) unstable; urgency=low
++
++ * renamed isdn batches : isdn-xx is 8 devices, isdn-xx-all are 64
++ devices (isdn-io, isdn-tty, isdn-ippp, isdn-cu).
++ * increased numer to 5500 devices. (makedev is getting too large).
++
++ -- Andreas Jellinghaus <aj@debian.org> Mon, 8 Sep 1997 21:40:11 +0200
++
++makedev (1.6-22) unstable; urgency=low
++
++ * bugfix with cvstree (i forgot to commit befor tagging :-()
++
++ -- Andreas Jellinghaus <aj@debian.org> Mon, 8 Sep 1997 21:30:08 +0200
++
++makedev (1.6-21) unstable; urgency=low
++
++ * bugfix : out of memory. aarrgg : makedev has fixed size tables.
++
++ -- Andreas Jellinghaus <aj@debian.org> Mon, 8 Sep 1997 21:28:24 +0200
++
++makedev (1.6-20) unstable; urgency=low
++
++ * corrected problem with my own cvs tree
++
++ -- Andreas Jellinghaus <aj@debian.org> Sun, 7 Sep 1997 16:54:10 +0200
++
++makedev (1.6-19) unstable; urgency=low
++
++ * changed /dev/full to mode 0622 (0666 was a security hole, as
++ discussed on linux-kernel).
++
++ -- Andreas Jellinghaus <aj@debian.org> Sun, 7 Sep 1997 16:22:27 +0200
++
++makedev (1.6-18) unstable; urgency=low
++
++ * added isdn-*-small devices (only 8 devices, not 64).
++
++ -- Andreas Jellinghaus <aj@debian.org> Fri, 22 Aug 1997 12:57:20 +0200
++
++makedev (1.6-17) unstable; urgency=low
++
++ * close bug 6541 (missing audio device) : not reproduceable
++ * generate random and urandom, if missing (bug #12134)
++ * enabled makedev to create more sg* and sr* devices (bug #12158)
++ * changed doubletalkt to dtlk as requested
++ * sd[a-h]16 removed (bug, sda16 = sdb, scsi only supports 15
++ partitions)
++
++ -- Andreas Jellinghaus <aj@debian.org> Sun, 17 Aug 1997 19:19:33 +0200
++
++makedev (1.6-16) stable unstable; urgency=low
++
++ * security bug fixed : all mouse devices are now mode 600.
++
++ -- Andreas Jellinghaus <aj@debian.org> Wed, 30 Jul 1997 10:31:04 +0200
++
++makedev (1.6-15) unstable; urgency=low
++
++ * ibcs2 removed from generic set. revised ibcs2-unoff.
++
++ -- Andreas Jellinghaus <aj@debian.org> Tue, 29 Jul 1997 13:13:43 +0200
++
++makedev (1.6-14) unstable; urgency=low
++
++ * bug in postinst : type "MAKDEV" and "/dev/tty0" instead of "tty0" (#11441)
++ * stable version (libc5 compiled) for isdnutils
++
++ -- Andreas Jellinghaus <aj@debian.org> Fri, 25 Jul 1997 10:12:14 +0200
++
++makedev (1.6-13) unstable; urgency=low
++
++ * fixed menu entry (thanks to Abdallah Chatila <acha@poboxes.com>)
++
++ -- Andreas Jellinghaus <aj@debian.org> Wed, 9 Jul 1997 21:33:55 +0200
++
++makedev (1.6-12) unstable; urgency=low
++
++ * bug fix (changed doubletalk to class audio).
++
++ -- Andreas Jellinghaus <aj@debian.org> Wed, 9 Jul 1997 09:45:38 +0200
++
++makedev (1.6-11) unstable; urgency=low
++
++ * Fixed isdn devices (ippp were missing).
++ * No longer create isdn device as default (that is done by isdnutils).
++ * Added doubletalk device. Added more ibcs2 stuff.
++
++ -- Andreas Jellinghaus <aj@debian.org> Tue, 8 Jul 1997 19:04:45 +0200
++
++makedev (1.6-10) unstable stable; urgency=low
++
++ * fixed console device, added documentation.
++
++ -- Andreas Jellinghaus <aj@debian.org> Wed, 25 Jun 1997 13:20:46 +0200
++
++makedev (1.6-9) unstable stable; urgency=low
++
++ * Added comment about cua devices.
++
++ -- Andreas Jellinghaus <aj@debian.org> Tue, 24 Jun 1997 09:21:20 +0200
++
++makedev (1.6-8) unstable stable; urgency=low
++
++ * changed /dev/console to be a symlink to /dev/tty0.
++
++ -- Andreas Jellinghaus <aj@debian.org> Sun, 22 Jun 1997 21:42:35 +0200
++
++makedev (1.6-7) unstable stable; urgency=low
++
++ * fixed bug with possible /dev/console symlink.
++ * fixed bug with not always creating /dev/tty0. (xfree 3.3 need this)
++
++ -- Andreas Jellinghaus <aj@debian.org> Thu, 19 Jun 1997 22:38:46 +0200
++
++makedev (1.6-6) unstable; urgency=low
++
++ * fixed documentation (thanks to David Welton <davidw@efn.org>)
++ * patch for m68k from frank neumann included
++
++ -- Andreas Jellinghaus <aj@debian.org> Mon, 9 Jun 1997 15:45:00 +0200
++
++makedev (1.6-5) unstable; urgency=low
++
++ * libc6 release
++ * added postinst script to change tty/pty devices to new major
++ numbers (the next time you boot).
++ * changed all serial devices from root.dialout to uucp.dialout
++ * added generic-ARCH batches
++ * changed (u)random permissions from 444 to 644
++ * corrected mcd/mcdx handling.
++ * small bugfix in manpages.
++
++ -- Andreas Jellinghaus <aj@debian.org> Thu, 24 Apr 1997 19:12:58 +0200
++
++makedev (1.6-4) unstable frozen; urgency=low
++
++ * fixed manpage, added generic-m68k, added mfd0, changed framebuffer
++ create both : fb[01] and fb[01]current, changed framebuffer
++ class to mode 664. disabled adb (apple desktob bus).
++ this fixes bug #9053
++ * fixed mitsumi cdrom detection.
++
++ -- Andreas Jellinghaus <aj@debian.org> Wed, 23 Apr 1997 16:23:50 +0200
++
++makedev (1.6-3) unstable frozen; urgency=low
++
++ * bug fixed : st?l devices (nor st?1).
++ * only create fd0 and fd1 with generic
++ * seperated old device names to "-old" groups
++ * not generating cm205cd by default
++ * "boot-floppy" added with less devices
++ * documentation in sgml and txt format
++
++ -- Andreas Jellinghaus <aj@debian.org> Wed, 16 Apr 1997 12:58:56 +0200
++
++makedev (1.6-2) unstable frozen; urgency=high
++
++ * new maintainer Andreas Jellinghaus <aj@debian.org>
++ * rewrote devinfo (according to linux allocated devices, 2.0.30,2.1.31
++ * this fixes bug #8396 (isdn devices)
++ * this fixes bug #8399 (don't generate cu* devices)
++ * this fixes bug #7144 (device for goldstar cdrom - gscd)
++ * this fixes bug #8173 (new names for floppy devices fd*)
++ * this fixes bug #8068 (hd[efgh] devises added : now ide[0123])
++ (this includes: renamed all floppy device (bug #8173),
++ * this fixes bug #3493 (isdn devices)
++ * this fixes bug #5542 (ttyS* group dialout, cu* not generated)
++ * this fixes bug #6926 (loop back devices corrected)
++ * this fixes bug #6983 (loop back devices creatable)
++ * this fixes bug #7038 (mcd device creatable (only one))
++ * this fixes bug #7754 (sr* devices are created for compatibility)
++ * this fixes parts of bug #7783 (only new tty/pty are created)
++ * bug #7755 obsolete (old cat file ? current man page is ok)
++ * bug #8009 obsolete (disks 1997-04-04 are ok)
++ * remove from generic : cua[0-3] lmscd ram sbpcd[9-15] vcs0
++ added to generic: X0R aztcd beep bpcd cm205cd cm206cd exttrp gscd
++ hd[efgh]* hitcd hwtrap initrd ippp* jbm loop* mcd md* modreq nsfd
++ nst*[1am] optcd ram[0-7] ramdisk relay16 relay8 rtc sd[abcdefgh][9-16]
++ sequence2 sg[0-7] sjcd socksys spx sr[0-7] st*[1am] tpqic* tty[13-63]
++ ttyI[0-63] urandom vcs vcs[13-63] vcsa vcsa[13-63] watchdog
++ (ca. + 600 devices, size + 11 k in a ext2fs)
++
++ -- Andreas Jellinghaus <aj@debian.org> Sun, 13 Apr 1997 21:06:14 +0200
++
++makedev (1.6-1) unstable; urgency=low
++
++ * New upstream version.
++
++ -- Bruce Perens <bruce@pixar.com> Wed, 19 Mar 1997 20:40:17 -0800
++
++makedev (1.5-4) unstable; urgency=low
++
++ * Add devices. Increase the maximum size of a batch from 32 to 1024.
++
++ -- Bruce Perens <bruce@pixar.com> Tue, 17 Dec 1996 20:34:06 -0800
++
++makedev (1.5-3) unstable; urgency=low
++
++ * Make hd[a-d][8-20] and sd[a-h][8-20]. Remove bad empty "omit" from
++ makedev.cfg
++
++ -- Bruce Perens <bruce@pixar.com> Sun, 8 Dec 1996 09:42:18 -0800
++
++makedev (1.5-2) unstable; urgency=low
++
++ * Change class of ttySn devices to dialout.
++ * Add ISDN.
++
++ -- Bruce Perens <bruce@pixar.com> Fri, 6 Dec 1996 21:17:12 -0800
++
++makedev (1.5-1) unstable; urgency=low
++
++ * Initial Release.
++
++ -- Bruce Perens <bruce@pixar.com> Wed, 30 Oct 1996 20:36:44 -0800
++
++Local variables:
++mode: debian-changelog
++End:
+--- makedev-2.3.1.orig/debian/conffiles
++++ makedev-2.3.1/debian/conffiles
+@@ -0,0 +1 @@
++/etc/init.d/makedev
+--- makedev-2.3.1.orig/debian/control
++++ makedev-2.3.1/debian/control
+@@ -0,0 +1,13 @@
++Source: makedev
++Section: base
++Priority: required
++Maintainer: Bdale Garbee <bdale@gag.com>
++Build-Depends: debhelper
++Standards-Version: 3.1.1.1
++
++Package: makedev
++Architecture: all
++Depends: base-passwd (>= 3.0.4)
++Description: Creates special device files in /dev.
++ The MAKEDEV executable is used to populate the /dev directory with device
++ files.
+--- makedev-2.3.1.orig/debian/copyright
++++ makedev-2.3.1/debian/copyright
+@@ -0,0 +1,45 @@
++This package is maintained for Debian by Bdale Garbee, <bdale@gag.com>.
++
++It was downloaded from ftp.redhat.com, as a source .rpm from the 5.1 release
++tree.
++
++Copyright:
++
++No explicit copyright is asserted. Nick Holloway is the earliest author
++recorded in the sourcecode. I queried him for an explicit statement
++regarding the license status of this work, and this is his reply:
++
++ Date: Tue, 21 Jul 1998 19:57:10 +0100
++ From: Nick Holloway <Nick.Holloway@alfie.demon.co.uk>
++ Message-Id: <199807211857.TAA19068@alfie.demon.co.uk>
++ To: Bdale Garbee <bdale@gag.com>
++ Subject: Re: makedev license?
++
++ > I maintain the makedev package for Debian GNU/Linux. I am about to move
++ > from the ill-fated makedev-1.6 to the makedev-2.3.1 derived from your work
++ > by the folks at Redhat. I don't see any evidence of a copyright assertion
++ > or explicit license statement in the source. Your name appears to be the
++ > earliest attached to the current sourcecode. Am I correct in assuming the
++ > GPL? We try to be meticulous about having our base system be compliant
++ > with our Debian Free Software Guidelines, so I'd like an explicit statement.
++
++ It was never explictly released as GPL, as that would have required
++ including the file COPYING which would have been much larger than the
++ actual MAKEDEV script (I was also too lazy to find out what incantations
++ needed to be made). However, it is intended to be used as anyone sees
++ fit, and the statement under "Copying Policy" is "Freely Redistributable"
++ (see MAKEDEV.lsm from any of the releases I made).
++
++ The more recent modifications were done by Michael K. Johnson at
++ Redhat. I think the understanding was that he would be taking over the
++ maintenance of MAKEDEV (our discussion took place last September).
++
++ The only previous history was (according to an old posting to
++ comp.os.linux) that I started with Jim Winstead's script.
++
++ So, as far as I am concerned, it is consistentwith the Debian FSG.
++
++ --
++ `O O' | Home: Nick.Holloway@alfie.demon.co.uk http://www.alfie.demon.co.uk/
++ // ^ \\ | Work: Nick.Holloway@parallax.co.uk
++
+--- makedev-2.3.1.orig/debian/dirs
++++ makedev-2.3.1/debian/dirs
+@@ -0,0 +1,2 @@
++sbin
++usr/share/man/man8
+--- makedev-2.3.1.orig/debian/init.d
++++ makedev-2.3.1/debian/init.d
+@@ -0,0 +1,21 @@
++#! /bin/sh
++
++PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
++
++set -e
++
++case "$1" in
++ start)
++ ln -fs /sbin/MAKEDEV /dev/MAKEDEV
++ ;;
++ stop|reload|restart|force-reload)
++ ;;
++ *)
++ N=/etc/init.d/makedev
++ # echo "Usage: $N {start|stop|restart|reload|force-reload}" >&2
++ echo "Usage: $N {start|stop|restart|force-reload}" >&2
++ exit 1
++ ;;
++esac
++
++exit 0
+--- makedev-2.3.1.orig/debian/postinst
++++ makedev-2.3.1/debian/postinst
+@@ -0,0 +1,62 @@
++#!/bin/sh
++
++set +e
++
++#DEBHELPER#
++
++cd /dev
++
++/sbin/MAKEDEV std
++
++test -e /dev/console || /sbin/MAKEDEV console
++test -e /dev/tty0 || /sbin/MAKEDEV tty0
++test -e /dev/random || /sbin/MAKEDEV random
++test -e /dev/urandom || /sbin/MAKEDEV urandom
++test -e /dev/full && chmod 0622 /dev/full
++test -e /dev/audio || /sbin/MAKEDEV audio
++
++[ ! -f /dev/mouse -a -f /dev/sunmouse ] && ln -s sunmouse mouse
++
++for A in sda16 sdb16 sdc16 sdd16 sde16 sdf16 sdg16 sdh16 \
++ ada16 adb16 adc16 add16 ade16 adf16 adg16 adh16
++do
++ test -e /dev/$A && rm /dev/$A
++done
++
++for A in logibm psaux inportbm atibm jbm smouse logimouse psmouse \
++msmouse atimouse jmouse amigamouse atarimouse sunmouse amigamouse1
++do
++ test -e /dev/$A && chmod 600 /dev/$A
++done
++
++# fix security hole caused by group-write permissions on kmem
++test -e /dev/kmem && chown root.kmem /dev/kmem && chmod 0640 /dev/kmem
++
++LIST=""
++
++for TYPE in tty pty ; do
++ for LETTER in p q r s t u v w x y z a b c d e ; do
++ if [ -e /dev/$TYPE$LETTER"0" ]; then
++ MAJOR="`/bin/ls -l /dev/$TYPE$LETTER"0"|cut -c33-36`"
++ if [ "$MAJOR" = 4 ] ; then
++ LIST="$LIST $TYPE$LETTER"
++ fi
++ fi
++ done
++done
++
++if [ -n "$LIST" ]; then
++ cat > /etc/rc.boot/makedev << EOF
++#!/bin/sh
++
++echo "Creating new console devices"
++/sbin/MAKEDEV $LIST
++
++rm /etc/rc.boot/makedev ; exit 0
++EOF
++
++chmod 755 /etc/rc.boot/makedev
++
++fi
++
++exit 0
+--- makedev-2.3.1.orig/debian/preinst
++++ makedev-2.3.1/debian/preinst
+@@ -0,0 +1,5 @@
++#!/bin/sh
++
++rm -f /usr/man/man8/MAKEDEV.8 /usr/man/man8/MAKEDEV-C.8 \
++ /usr/man/man8/MAKEDEV-C.8.gz
++exit 0
+--- makedev-2.3.1.orig/debian/rules
++++ makedev-2.3.1/debian/rules
+@@ -0,0 +1,56 @@
++#!/usr/bin/make -f
++# Sample debian/rules that uses debhelper. GNU copyright 1997 by Joey Hess.
++
++# Uncomment this to turn on verbose mode.
++#export DH_VERBOSE=1
++
++build: build-stamp
++build-stamp:
++ dh_testdir
++ touch build-stamp
++
++clean:
++ dh_testdir
++ dh_testroot
++ rm -f build-stamp
++ -$(MAKE) clean
++ -rm -f debian/devices.txt debian/devices*html
++ dh_clean
++
++# Build architecture-independent files here.
++binary-indep: build
++
++# Build architecture-dependent files here.
++binary-arch: build
++# dh_testversion
++ dh_testdir
++ dh_testroot
++ dh_clean -k
++ dh_installdirs
++
++ ROOT=debian/tmp $(MAKE) install
++
++ dh_installdocs
++ dh_installexamples
++ dh_installmenu
++ dh_installinit
++ dh_installcron
++ dh_installmanpages
++ dh_undocumented
++ dh_installchangelogs
++ dh_strip
++ dh_compress
++ dh_fixperms
++ dh_suidregister
++ dh_installdeb
++ dh_shlibdeps
++ dh_gencontrol
++# dh_makeshlibs
++ dh_md5sums
++ dh_builddeb
++
++source diff:
++ @echo >&2 'source and diff are obsolete - use dpkg-source -b'; false
++
++binary: binary-indep binary-arch
++.PHONY: build clean binary-indep binary-arch binary
diff --git a/source/a/devs/makedev_2.3.1.hd.diff b/source/a/devs/makedev_2.3.1.hd.diff
new file mode 100644
index 00000000..4f5058b2
--- /dev/null
+++ b/source/a/devs/makedev_2.3.1.hd.diff
@@ -0,0 +1,71 @@
+--- ./MAKEDEV.orig Sun Feb 24 15:46:03 2002
++++ ./MAKEDEV Sun Feb 24 16:12:18 2002
+@@ -147,7 +147,7 @@
+ Character|Block|'')
+ ;;
+ *)
+- eval "major_$device=$major"
++ # eval "major_$device=$major"
+ devices="$devices $device"
+ ;;
+ esac
+@@ -964,7 +964,7 @@
+ done
+ ;;
+ hd[k-l])
+- major=`Major ide4 57` || continue
++ major=`Major ide5 57` || continue
+ unit=`suffix $arg hd`
+ base=`index kl $unit`
+ base=`math $base \* 64`
+@@ -974,6 +974,50 @@
+ makedev hd$unit$part b $major $(( $base + $part )) $disk
+ done
+ ;;
++ hd[m-n])
++ major=`Major ide6 88` || continue
++ unit=`suffix $arg hd`
++ base=`index mn $unit`
++ base=`math $base \* 64`
++ makedev hd$unit b $major $base $disk
++ for part in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
++ do
++ makedev hd$unit$part b $major $(( $base + $part )) $disk
++ done
++ ;;
++ hd[o-p])
++ major=`Major ide7 89` || continue
++ unit=`suffix $arg hd`
++ base=`index op $unit`
++ base=`math $base \* 64`
++ makedev hd$unit b $major $base $disk
++ for part in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
++ do
++ makedev hd$unit$part b $major $(( $base + $part )) $disk
++ done
++ ;;
++ hd[q-r])
++ major=`Major ide8 90` || continue
++ unit=`suffix $arg hd`
++ base=`index qr $unit`
++ base=`math $base \* 64`
++ makedev hd$unit b $major $base $disk
++ for part in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
++ do
++ makedev hd$unit$part b $major $(( $base + $part )) $disk
++ done
++ ;;
++ hd[s-t])
++ major=`Major ide9 91` || continue
++ unit=`suffix $arg hd`
++ base=`index st $unit`
++ base=`math $base \* 64`
++ makedev hd$unit b $major $base $disk
++ for part in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
++ do
++ makedev hd$unit$part b $major $(( $base + $part )) $disk
++ done
++ ;;
+ ht0)
+ major=`Major ht0 37` || continue
+ # Only one IDE tape drive is currently supported; ht0.
diff --git a/source/a/devs/makedev_2.3.1.slack.diff b/source/a/devs/makedev_2.3.1.slack.diff
new file mode 100644
index 00000000..8a199856
--- /dev/null
+++ b/source/a/devs/makedev_2.3.1.slack.diff
@@ -0,0 +1,19 @@
+--- ./MAKEDEV.orig 2004-05-20 19:27:42.000000000 -0700
++++ ./MAKEDEV 2004-05-20 19:28:47.000000000 -0700
+@@ -17,14 +17,14 @@
+ tty=" root tty 0666"
+ cons=" root tty 0622"
+ vcs=" root root 0600"
+-dialout=" root dialout 0660"
++dialout=" root uucp 0660"
+ mouse=" root root 0660"
+ printer=" root lp 0660"
+ floppy=" root floppy 0660"
+ disk=" root disk 0660"
+ scsi=" root root 0600"
+ cdrom=" root cdrom 0660"
+- tape=" root tape 0660"
++ tape=" root disk 0660"
+ audio=" root audio 0660"
+ video=" root video 0660"
+ ibcs2=" root root 0666"
diff --git a/source/a/devs/slack-desc b/source/a/devs/slack-desc
new file mode 100644
index 00000000..e8b5d1d5
--- /dev/null
+++ b/source/a/devs/slack-desc
@@ -0,0 +1,19 @@
+# HOW TO EDIT THIS FILE:
+# The "handy ruler" below makes it easier to edit a package description. Line
+# up the first '|' above the ':' following the base package name, and the '|'
+# on the right side marks the last column you can put a character in. You must
+# make exactly 11 lines for the formatting to be correct. It's also
+# customary to leave one space after the ':'.
+
+ |-----handy-ruler------------------------------------------------------|
+devs: devs (system device files)
+devs:
+devs: This package creates special files in the /dev directory that
+devs: represent your system's hardware, and a tool (/dev/MAKEDEV) for
+devs: creating new device files. These files are required to access
+devs: hardware on a Linux system.
+devs:
+devs:
+devs:
+devs:
+devs:
diff --git a/source/a/dialog/dialog.SlackBuild b/source/a/dialog/dialog.SlackBuild
new file mode 100755
index 00000000..9c9bd3f6
--- /dev/null
+++ b/source/a/dialog/dialog.SlackBuild
@@ -0,0 +1,119 @@
+#!/bin/sh
+# Copyright 2006, 2007, 2008, 2009 Patrick J. Volkerding, Sebeka, MN, USA
+# All rights reserved.
+#
+# Redistribution and use of this script, with or without modification, is
+# permitted provided that the following conditions are met:
+#
+# 1. Redistributions of this script must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# 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.
+
+
+PKGNAM=dialog
+VERSION=${VERSION:-1.1-20080819}
+ARCH=${ARCH:-x86_64}
+BUILD=${BUILD:-3}
+
+CWD=$(pwd)
+TMP=${TMP:-/tmp}
+PKG=$TMP/package-${PKGNAM}
+rm -rf $PKG
+mkdir -p $TMP $PKG
+
+if [ "$ARCH" = "i386" ]; then
+ SLKCFLAGS="-O2 -march=i386 -mcpu=i686"
+elif [ "$ARCH" = "i486" ]; then
+ SLKCFLAGS="-O2 -march=i486 -mtune=i686"
+elif [ "$ARCH" = "s390" ]; then
+ SLKCFLAGS="-O2"
+elif [ "$ARCH" = "x86_64" ]; then
+ SLKCFLAGS="-O2 -fPIC"
+elif [ "$ARCH" = "arm" ]; then
+ SLKCFLAGS="-O2 -march=armv4 -mtune=xscale"
+ LIBDIRSUFFIX=""
+elif [ "$ARCH" = "armel" ]; then
+ SLKCFLAGS="-O2 -march=armv4t"
+ LIBDIRSUFFIX=""
+fi
+
+cd $TMP
+rm -rf ${PKGNAM}-${VERSION}
+tar xvf $CWD/${PKGNAM}-$VERSION.tar.bz2 || exit 1
+cd ${PKGNAM}-$VERSION || exit 1
+
+zcat $CWD/dialog.smaller.min.height.diff.gz | patch -p1 --verbose || exit 1
+
+# Make sure ownerships and permissions are sane:
+chown -R root:root .
+find . \
+ \( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \
+ -exec chmod 755 {} \; -o \
+ \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
+ -exec chmod 644 {} \;
+
+# Configure:
+CFLAGS="$SLKCFLAGS" \
+./configure \
+ --prefix=/usr \
+ --disable-static \
+ --enable-nls \
+ --with-ncursesw \
+ --enable-widec \
+ --build=$ARCH-slackware-linux
+
+# Build and install:
+make -j4 || exit 1
+make install DESTDIR=$PKG || exit 1
+
+# Keep the old traditional looknfeel :-)
+mkdir -p $PKG/etc
+cat samples/slackware.rc > $PKG/etc/dialogrc
+
+mkdir -p $PKG/bin
+mv $PKG/usr/bin/dialog $PKG/bin
+( cd $PKG/usr/bin
+ ln -sf ../../bin/dialog .
+)
+
+# Strip binaries:
+find $PKG | xargs file | grep -e "executable" -e "shared object" \
+ | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
+
+# Compress and link manpages, if any:
+if [ -d $PKG/usr/man ]; then
+ ( cd $PKG/usr/man
+ for manpagedir in $(find . -type d -name "man*") ; do
+ ( cd $manpagedir
+ for eachpage in $( find . -type l -maxdepth 1) ; do
+ ln -s $( readlink $eachpage ).gz $eachpage.gz
+ rm $eachpage
+ done
+ gzip -9 *.?
+ )
+ done
+ )
+fi
+
+# Add a documentation directory:
+mkdir -p $PKG/usr/doc/${PKGNAM}-$VERSION
+cp -a \
+ CHANGES COPYING README VERSION dialog.lsm \
+ $PKG/usr/doc/${PKGNAM}-$VERSION
+
+mkdir -p $PKG/install
+cat $CWD/slack-desc > $PKG/install/slack-desc
+
+cd $TMP/package-${PKGNAM}
+/sbin/makepkg -l y -c n $TMP/${PKGNAM}-$(echo $VERSION | tr - _)-$ARCH-$BUILD.txz
+
diff --git a/source/a/dialog/dialog.smaller.min.height.diff b/source/a/dialog/dialog.smaller.min.height.diff
new file mode 100644
index 00000000..c9a327af
--- /dev/null
+++ b/source/a/dialog/dialog.smaller.min.height.diff
@@ -0,0 +1,22 @@
+--- ./checklist.c.orig 2008-06-20 15:58:21.000000000 -0500
++++ ./checklist.c 2009-04-22 19:00:18.000000000 -0500
+@@ -31,7 +31,7 @@
+
+ static int list_width, check_x, item_x, checkflag;
+
+-#define MIN_HIGH (1 + (5 * MARGIN))
++#define MIN_HIGH 4
+
+ #define LLEN(n) ((n) * CHECKBOX_TAGS)
+ #define ItemData(i) &items[LLEN(i)]
+--- ./menubox.c.orig 2008-06-19 19:54:16.000000000 -0500
++++ ./menubox.c 2009-04-22 19:00:07.000000000 -0500
+@@ -35,7 +35,7 @@
+ Editing
+ } Mode;
+
+-#define MIN_HIGH (1 + (5 * MARGIN))
++#define MIN_HIGH 4
+
+ #define INPUT_ROWS 3 /* rows per inputmenu entry */
+
diff --git a/source/a/dialog/slack-desc b/source/a/dialog/slack-desc
new file mode 100644
index 00000000..8c20026f
--- /dev/null
+++ b/source/a/dialog/slack-desc
@@ -0,0 +1,19 @@
+# HOW TO EDIT THIS FILE:
+# The "handy ruler" below makes it easier to edit a package description. Line
+# up the first '|' above the ':' following the base package name, and the '|' on
+# the right side marks the last column you can put a character in. You must make
+# exactly 11 lines for the formatting to be correct. It's also customary to
+# leave one space after the ':'.
+
+ |-----handy-ruler------------------------------------------------------|
+dialog: dialog (display dialog boxes from shell scripts)
+dialog:
+dialog: Dialog is a program to present a variety of questions or display
+dialog: messages using dialog boxes from a shell script. The Slackware
+dialog: package management script "pkgtool" uses this, as do various other
+dialog: menu-driven console scripts.
+dialog:
+dialog: Dialog was originally contributed to Slackware by Savio Lam, and has
+dialog: been contributed to by many. Dialog is currently maintained by
+dialog: Thomas E. Dickey.
+dialog:
diff --git a/source/a/dosfstools/dosfstools.SlackBuild b/source/a/dosfstools/dosfstools.SlackBuild
new file mode 100755
index 00000000..ebe99c68
--- /dev/null
+++ b/source/a/dosfstools/dosfstools.SlackBuild
@@ -0,0 +1,74 @@
+#!/bin/sh
+
+# Copyright 2007-2009 Patrick J. Volkerding, Sebeka, Minnesota, USA
+# All rights reserved.
+#
+# Redistribution and use of this script, with or without modification, is
+# permitted provided that the following conditions are met:
+#
+# 1. Redistributions of this script must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# 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.
+
+VERSION=2.11
+ARCH=${ARCH:-x86_64}
+BUILD=${BUILD:-1}
+
+CWD=$(pwd)
+TMP=${TMP:-/tmp}
+PKG=$TMP/package-dosfstools
+
+rm -rf $PKG
+mkdir -p $TMP $PKG
+
+cd $TMP
+rm -rf dosfstools-$VERSION
+tar xzvf $CWD/dosfstools-$VERSION.src.tar.gz
+cd dosfstools-$VERSION
+chown -R root:root .
+make -j4 || exit 1
+
+( cd mkdosfs
+ mkdir -p $PKG/sbin
+ cat mkdosfs > $PKG/sbin/mkdosfs
+ chmod 755 $PKG/sbin/mkdosfs
+ mkdir -p $PKG/usr/man/man8
+ cat mkdosfs.8 | gzip -9c > $PKG/usr/man/man8/mkdosfs.8.gz
+)
+( cd $PKG/sbin ; rm -f mkfs.msdos ; ln -sf mkdosfs mkfs.msdos )
+( cd dosfsck
+ cat dosfsck > $PKG/sbin/dosfsck
+ chmod 755 $PKG/sbin/dosfsck
+ cat dosfsck.8 | gzip -9c > $PKG/usr/man/man8/dosfsck.8.gz
+)
+mkdir -p $PKG/usr/doc/dosfstools-$VERSION
+cp -a \
+ CHANGES README.Atari TODO \
+ $PKG/usr/doc/dosfstools-$VERSION
+mkdir -p $PKG/usr/doc/dosfstools-$VERSION/mkdosfs
+( cd mkdosfs ; cp -a ANNOUNCE COPYING README mkdosfs-ygg-0.3b.lsm $PKG/usr/doc/dosfstools-$VERSION/mkdosfs )
+mkdir -p $PKG/usr/doc/dosfstools-$VERSION/dosfsck
+( cd dosfsck ; cp -a CHANGES COPYING README $PKG/usr/doc/dosfstools-$VERSION/dosfsck )
+
+( cd $PKG
+ find . | xargs file | grep "executable" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
+ find . | xargs file | grep "shared object" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
+)
+
+mkdir -p $PKG/install
+cat $CWD/slack-desc > $PKG/install/slack-desc
+
+# Build the package:
+cd $PKG
+makepkg -l y -c n $TMP/dosfstools-$VERSION-$ARCH-$BUILD.txz
+
diff --git a/source/a/dosfstools/slack-desc b/source/a/dosfstools/slack-desc
new file mode 100644
index 00000000..b070c1e2
--- /dev/null
+++ b/source/a/dosfstools/slack-desc
@@ -0,0 +1,19 @@
+# HOW TO EDIT THIS FILE:
+# The "handy ruler" below makes it easier to edit a package description. Line
+# up the first '|' above the ':' following the base package name, and the '|'
+# on the right side marks the last column you can put a character in. You must
+# make exactly 11 lines for the formatting to be correct. It's also
+# customary to leave one space after the ':'.
+
+ |-----handy-ruler------------------------------------------------------|
+dosfstools: dosfstools (tools for working with FAT filesystems)
+dosfstools:
+dosfstools: Utilities for creating FAT filesystems (mkdosfs), and for checking
+dosfstools: and repairing them (dosfsck).
+dosfstools:
+dosfstools:
+dosfstools:
+dosfstools:
+dosfstools:
+dosfstools:
+dosfstools:
diff --git a/source/a/e2fsprogs/doinst.sh b/source/a/e2fsprogs/doinst.sh
new file mode 100644
index 00000000..c47d7e84
--- /dev/null
+++ b/source/a/e2fsprogs/doinst.sh
@@ -0,0 +1,18 @@
+config() {
+ NEW="$1"
+ OLD="$(dirname $NEW)/$(basename $NEW .new)"
+ # If there's no config file by that name, mv it over:
+ if [ ! -r $OLD ]; then
+ mv $NEW $OLD
+ elif [ "$(cat $OLD | md5sum)" = "$(cat $NEW | md5sum)" ]; then # toss the redundant copy
+ rm $NEW
+ fi
+ # Otherwise, we leave the .new copy for the admin to consider...
+}
+
+config etc/mke2fs.conf.new
+
+if [ -x /usr/bin/install-info ]; then
+ install-info --info-dir=/usr/info /usr/info/libext2fs.info.gz 2> /dev/null
+fi
+
diff --git a/source/a/e2fsprogs/e2fsprogs.SlackBuild b/source/a/e2fsprogs/e2fsprogs.SlackBuild
new file mode 100755
index 00000000..c57cea4f
--- /dev/null
+++ b/source/a/e2fsprogs/e2fsprogs.SlackBuild
@@ -0,0 +1,159 @@
+#!/bin/sh
+
+# Copyright 2008, 2009 Patrick J. Volkerding, Sebeka, MN, USA
+# All rights reserved.
+#
+# Redistribution and use of this script, with or without modification, is
+# permitted provided that the following conditions are met:
+#
+# 1. Redistributions of this script must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# 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.
+
+VERSION=${VERSION:-1.41.8}
+ARCH=${ARCH:-x86_64}
+NUMJOBS=${NUMJOBS:-" -j7 "}
+BUILD=${BUILD:-1}
+
+if [ "$ARCH" = "i486" ]; then
+ SLKCFLAGS="-O2 -march=i486 -mtune=i686"
+ LIBDIRSUFFIX=""
+elif [ "$ARCH" = "s390" ]; then
+ SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
+elif [ "$ARCH" = "x86_64" ]; then
+ SLKCFLAGS="-O2 -fPIC"
+ LIBDIRSUFFIX="64"
+fi
+
+CWD=$(pwd)
+TMP=${TMP:-/tmp}
+PKG=$TMP/package-e2fsprogs
+
+rm -rf $PKG
+mkdir -p $TMP $PKG
+cd $TMP
+rm -rf e2fsprogs-$VERSION
+tar xvf $CWD/e2fsprogs-$VERSION.tar.?z* || exit 1
+cd e2fsprogs-$VERSION || exit 1
+chown -R root:root .
+find . \
+ \( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \
+ -exec chmod 755 {} \; -o \
+ \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
+ -exec chmod 644 {} \;
+
+# Disable --uuidd builds the same functionality into libuuid.*.
+# It's better that way.
+# Keep the included libblkid and libuuid for now, but we'll be using the
+# system-wide one from util-linux-ng sooner or later...
+# fsck.* will also be moving to u-l-ng
+CFLAGS="$SLKCFLAGS" \
+./configure \
+ --prefix= \
+ --libdir=/lib${LIBDIRSUFFIX} \
+ --bindir=/usr/bin \
+ --includedir=/usr/include \
+ --datadir=/usr/share \
+ --mandir=/usr/man \
+ --infodir=/usr/info \
+ --docdir=/usr/doc/e2fsprogs-$VERSION \
+ --enable-elf-shlibs \
+ --enable-libblkid \
+ --enable-libuuid \
+ --disable-uuidd \
+ --build=$ARCH-slackware-linux
+
+make $NUMJOBS || make || exit 1
+make install DESTDIR=$PKG || exit 1
+make install-libs DESTDIR=$PKG || exit 1
+
+# I guess Ted would rather not have this included, so we won't.
+# ( cd misc
+# make findsuper
+# cat findsuper > $PKG/sbin/findsuper
+# chmod 0755 $PKG/sbin/findsuper )
+
+find $PKG | xargs file | grep -e "executable" -e "shared object" | grep ELF \
+ | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
+
+# Don't clobber an existing config file
+mv $PKG/etc/mke2fs.conf $PKG/etc/mke2fs.conf.new
+
+# Fix up package:
+mkdir -p $PKG/usr/lib${LIBDIRSUFFIX}
+mv $PKG/lib${LIBDIRSUFFIX}/pkgconfig $PKG/lib${LIBDIRSUFFIX}/*.so \
+ $PKG/usr/lib${LIBDIRSUFFIX}
+( cd $PKG/usr/lib${LIBDIRSUFFIX}
+ for i in *.so ; do
+ ln -sf /lib${LIBDIRSUFFIX}/$(readlink $i) $i ;
+ done
+)
+( cd $PKG/sbin
+ rm -f \
+ mkfs.ext2 mkfs.ext3 mkfs.ext4 mkfs.ext4dev \
+ fsck.ext2 fsck.ext3 fsck.ext4dev e2label findfs
+ ln -sf mke2fs mkfs.ext2
+ ln -sf mke2fs mkfs.ext3
+ ln -sf mke2fs mkfs.ext4
+ ln -sf mke2fs mkfs.ext4dev
+ ln -sf tune2fs e2label
+ ln -sf tune2fs findfs
+ cat << EOF > fsck.ext2
+#!/bin/sh
+exec /sbin/e2fsck -C 0 \$*
+EOF
+ chmod 0755 fsck.ext2
+ # Why won't symlinks work here? --RW
+ # Because $0 will always be "fsck.ext2" in that case. --PJV
+ cp -a fsck.ext2 fsck.ext3
+ cp -a fsck.ext2 fsck.ext4
+ cp -a fsck.ext2 fsck.ext4dev
+)
+( cd $PKG/usr/man/man3
+ rm -f uuid_generate_random.3 uuid_generate_time.3
+ ln -sf uuid_generate.3 uuid_generate_random.3
+ ln -sf uuid_generate.3 uuid_generate_time.3
+)
+( cd $PKG/usr/man/man8
+ rm -f fsck.ext2.8 fsck.ext3.8 mkfs.ext2.8 mkfs.ext3.8 \
+ mkfs.ext4.8 mkfs.ext4dev.8
+ ln -sf e2fsck.8 fsck.ext2.8
+ ln -sf e2fsck.8 fsck.ext3.8
+ ln -sf e2fsck.8 fsck.ext4.8
+ ln -sf e2fsck.8 fsck.ext4dev.8
+ ln -sf mke2fs.8 mkfs.ext2.8
+ ln -sf mke2fs.8 mkfs.ext3.8
+ ln -sf mke2fs.8 mkfs.ext4.8
+ ln -sf mke2fs.8 mkfs.ext4dev.8
+)
+
+# Compress and link manpages
+( cd $PKG/usr/man
+ find . -type f -exec gzip -9 {} \;
+ for i in $( find . -type l ) ; do ln -s $( readlink $i ).gz $i.gz ; rm $i ; done
+)
+
+mkdir -p $PKG/usr/doc/e2fsprogs-$VERSION
+cp -a \
+ COPYING* INSTALL INSTALL.elfbin README* RELEASE-NOTES SHLIBS \
+ $PKG/usr/doc/e2fsprogs-$VERSION
+chmod 644 $PKG/usr/doc/e2fsprogs-$VERSION/*
+
+mkdir -p $PKG/install
+cat $CWD/slack-desc > $PKG/install/slack-desc
+zcat $CWD/doinst.sh.gz > $PKG/install/doinst.sh
+
+cd $PKG
+/sbin/makepkg -l y -c n $TMP/e2fsprogs-$VERSION-$ARCH-$BUILD.txz
+
diff --git a/source/a/e2fsprogs/slack-desc b/source/a/e2fsprogs/slack-desc
new file mode 100644
index 00000000..e35c02a2
--- /dev/null
+++ b/source/a/e2fsprogs/slack-desc
@@ -0,0 +1,19 @@
+# HOW TO EDIT THIS FILE:
+# The "handy ruler" below makes it easier to edit a package description. Line
+# up the first '|' above the ':' following the base package name, and the '|'
+# on the right side marks the last column you can put a character in. You must
+# make exactly 11 lines for the formatting to be correct. It's also
+# customary to leave one space after the ':'.
+
+ |-----handy-ruler------------------------------------------------------|
+e2fsprogs: e2fsprogs (ext2 and ext3 filesystems utilities)
+e2fsprogs:
+e2fsprogs: Utilities needed to create and maintain ext2 and ext3 filesystems.
+e2fsprogs:
+e2fsprogs: These utilities were written by Remy Card (the developer and
+e2fsprogs: maintainer of the ext2 fs) and Theodore T'so.
+e2fsprogs:
+e2fsprogs:
+e2fsprogs:
+e2fsprogs:
+e2fsprogs:
diff --git a/source/a/ed/ed.SlackBuild b/source/a/ed/ed.SlackBuild
new file mode 100755
index 00000000..534ca116
--- /dev/null
+++ b/source/a/ed/ed.SlackBuild
@@ -0,0 +1,115 @@
+#!/bin/sh
+
+# Copyright 2006, 2007, 2008, 2009 Patrick J. Volkerding, Sebeka, MN, USA
+# All rights reserved.
+#
+# Redistribution and use of this script, with or without modification, is
+# permitted provided that the following conditions are met:
+#
+# 1. Redistributions of this script must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# 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.
+
+
+PKGNAM=ed
+VERSION=${VERSION:-1.3}
+ARCH=${ARCH:-x86_64}
+BUILD=${BUILD:-1}
+
+NUMJOBS=${NUMJOBS:-" -j7 "}
+
+CWD=$(pwd)
+TMP=${TMP:-/tmp}
+PKG=$TMP/package-${PKGNAM}
+rm -rf $PKG
+mkdir -p $TMP $PKG
+
+cd $TMP
+rm -rf ${PKGNAM}-${VERSION}
+tar xvf $CWD/${PKGNAM}-$VERSION.tar.bz2 || exit 1
+cd ${PKGNAM}-$VERSION
+
+# Make sure ownerships and permissions are sane:
+chown -R root:root .
+find . \
+ \( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \
+ -exec chmod 755 {} \; -o \
+ \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
+ -exec chmod 644 {} \;
+
+# Configure:
+CFLAGS="$SLKCFLAGS" \
+./configure \
+ --prefix=/usr \
+ --infodir=/usr/info \
+ --mandir=/usr/man
+
+# Build and install:
+make $NUMJOBS || make || exit 1
+make install DESTDIR=$PKG || exit 1
+
+if [ ! -r $PKG/usr/man/man1/ed.1 ]; then
+ mkdir -p $PKG/usr/man/man1
+ cat doc/ed.1 > $PKG/usr/man/man1/ed.1
+fi
+
+# Traditional:
+( mkdir $PKG/bin
+ rm $PKG/usr/bin/red
+ mv $PKG/usr/bin/ed $PKG/bin
+ cd $PKG/bin
+ ln -sf ed red
+ cd $PKG/usr/bin
+ ln -sf ../../bin/ed .
+ ln -sf ed red
+)
+
+# Strip binaries:
+find $PKG | xargs file | grep -e "executable" -e "shared object" \
+ | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
+
+# Compress and link manpages, if any:
+if [ -d $PKG/usr/man ]; then
+ ( cd $PKG/usr/man
+ for manpagedir in $(find . -type d -name "man*") ; do
+ ( cd $manpagedir
+ for eachpage in $( find . -type l -maxdepth 1) ; do
+ ln -s $( readlink $eachpage ).gz $eachpage.gz
+ rm $eachpage
+ done
+ gzip -9 *.?
+ )
+ done
+ )
+fi
+
+# Compress info files, if any:
+if [ -d $PKG/usr/info ]; then
+ ( cd $PKG/usr/info
+ rm -f dir
+ gzip -9 *
+ )
+fi
+
+# Add a documentation directory:
+mkdir -p $PKG/usr/doc/${PKGNAM}-$VERSION
+cp -a \
+ AUTHORS COPYING* ChangeLog INSTALL NEWS README TODO \
+ $PKG/usr/doc/${PKGNAM}-$VERSION
+
+mkdir -p $PKG/install
+cat $CWD/slack-desc > $PKG/install/slack-desc
+
+cd $TMP/package-${PKGNAM}
+/sbin/makepkg -l y -c n $TMP/${PKGNAM}-$VERSION-$ARCH-$BUILD.txz
+
diff --git a/source/a/ed/slack-desc b/source/a/ed/slack-desc
new file mode 100644
index 00000000..b0121daa
--- /dev/null
+++ b/source/a/ed/slack-desc
@@ -0,0 +1,19 @@
+# HOW TO EDIT THIS FILE:
+# The "handy ruler" below makes it easier to edit a package description. Line
+# up the first '|' above the ':' following the base package name, and the '|'
+# on the right side marks the last column you can put a character in. You must
+# make exactly 11 lines for the formatting to be correct. It's also
+# customary to leave one space after the ':'.
+
+ |-----handy-ruler------------------------------------------------------|
+ed: ed (text editor)
+ed:
+ed: GNU ed is an 8-bit clean, more or less POSIX-compliant implementation
+ed: of the standard Unix line editor. These days, full-screen editors
+ed: have rendered 'ed' mostly of historical interest. Nonetheless, it
+ed: appeals to a handful of aging programmers who still believe that
+ed: "Small is Beautiful".
+ed:
+ed:
+ed:
+ed:
diff --git a/source/a/eject/eject.SlackBuild b/source/a/eject/eject.SlackBuild
new file mode 100755
index 00000000..56d1e79f
--- /dev/null
+++ b/source/a/eject/eject.SlackBuild
@@ -0,0 +1,107 @@
+#!/bin/sh
+
+# Copyright 2006, 2008, 2009 Patrick J. Volkerding, Sebeka, MN, USA
+# All rights reserved.
+#
+# Redistribution and use of this script, with or without modification, is
+# permitted provided that the following conditions are met:
+#
+# 1. Redistributions of this script must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# 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.
+
+
+PKGNAM=eject
+VERSION=${VERSION:-2.1.5}
+ARCH=${ARCH:-x86_64}
+BUILD=${BUILD:-1}
+
+
+CWD=$(pwd)
+TMP=${TMP:-/tmp}
+PKG=$TMP/package-${PKGNAM}
+rm -rf $PKG
+mkdir -p $TMP $PKG
+
+if [ "$ARCH" = "i486" ]; then
+ SLKCFLAGS="-O2 -march=i486 -mtune=i686"
+elif [ "$ARCH" = "s390" ]; then
+ SLKCFLAGS="-O2"
+elif [ "$ARCH" = "x86_64" ]; then
+ SLKCFLAGS="-O2 -fPIC"
+fi
+
+cd $TMP
+rm -rf ${PKGNAM}
+tar xjvf $CWD/${PKGNAM}-$VERSION.tar.bz2
+cd ${PKGNAM}
+
+# Make sure ownerships and permissions are sane:
+chown -R root:root .
+find . \
+ \( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \
+ -exec chmod 755 {} \; -o \
+ \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
+ -exec chmod 644 {} \;
+
+# Configure:
+CFLAGS="$SLKCFLAGS" \
+./configure \
+ --prefix=/usr \
+ $ARCH-slackware-linux
+
+# Build and install:
+make -j4 || exit 1
+make install DESTDIR=$PKG || exit 1
+
+# Strip binaries:
+( cd $PKG
+ find . | xargs file | grep "executable" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
+ find . | xargs file | grep "shared object" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
+)
+
+# Compress and link manpages, if any:
+if [ -d $PKG/usr/man ]; then
+ ( cd $PKG/usr/man
+ for manpagedir in $(find . -type d -name "man*") ; do
+ ( cd $manpagedir
+ for eachpage in $( find . -type l -maxdepth 1) ; do
+ ln -s $( readlink $eachpage ).gz $eachpage.gz
+ rm $eachpage
+ done
+ gzip -9 *.?
+ )
+ done
+ )
+fi
+
+# Compress info files, if any:
+if [ -d $PKG/usr/info ]; then
+ ( cd $PKG/usr/info
+ rm -f dir
+ gzip -9 *
+ )
+fi
+
+# Add a documentation directory:
+mkdir -p $PKG/usr/doc/${PKGNAM}-$VERSION
+cp -a \
+ AUTHORS COPYING NEWS PORTING PROBLEMS README TODO eject-$VERSION.lsm \
+ $PKG/usr/doc/${PKGNAM}-$VERSION
+
+mkdir -p $PKG/install
+cat $CWD/slack-desc > $PKG/install/slack-desc
+
+cd $TMP/package-${PKGNAM}
+makepkg -l y -c n $TMP/${PKGNAM}-$VERSION-$ARCH-$BUILD.txz
+
diff --git a/source/a/eject/slack-desc b/source/a/eject/slack-desc
new file mode 100644
index 00000000..624b05b7
--- /dev/null
+++ b/source/a/eject/slack-desc
@@ -0,0 +1,19 @@
+# HOW TO EDIT THIS FILE:
+# The "handy ruler" below makes it easier to edit a package description. Line
+# up the first '|' above the ':' following the base package name, and the '|'
+# on the right side marks the last column you can put a character in. You must
+# make exactly 11 lines for the formatting to be correct. It's also
+# customary to leave one space after the ':'.
+
+ |-----handy-ruler------------------------------------------------------|
+eject: eject (a tool to eject removable media)
+eject:
+eject: Eject allows removable media (typically a DVD, CD, floppy disk, tape,
+eject: etc.) to be ejected under software control. The command can also
+eject: control some multi-disc changers, the auto-eject feature supported by
+eject: some devices, and can close the disc tray of some drives.
+eject:
+eject: The 'eject' program was written by Jeff Tranter.
+eject:
+eject:
+eject:
diff --git a/source/a/elvis/elvis.SlackBuild b/source/a/elvis/elvis.SlackBuild
new file mode 100755
index 00000000..3bb83ba7
--- /dev/null
+++ b/source/a/elvis/elvis.SlackBuild
@@ -0,0 +1,99 @@
+#!/bin/sh
+
+# Copyright 2005-2009 Patrick J. Volkerding, Sebeka, Minnesota, USA
+# All rights reserved.
+#
+# Redistribution and use of this script, with or without modification, is
+# permitted provided that the following conditions are met:
+#
+# 1. Redistributions of this script must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# 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.
+
+VERSION=2.2_0
+ARCH=${ARCH:-x86_64}
+BUILD=${BUILD:-2}
+
+CWD=$(pwd)
+TMP=${TMP:-/tmp}
+PKG=$TMP/package-elvis
+
+rm -rf $PKG
+mkdir -p $TMP $PKG/usr
+cd $TMP
+rm -rf elvis-$VERSION
+tar xjvf $CWD/elvis-$VERSION.tar.bz2
+cd elvis-$VERSION
+chown -R root:root .
+# Time for a kludge (i.e. don't suggest this kind of thing be
+# done as a rule... I don't know why I'm crazy today).
+# First we build and install this with a bogus --prefix, and
+# then build it again and replace the binaries.
+# (to prevent compiling in /tmp/package-elvis/ paths)
+./configure \
+ --without-x \
+ --without-gnome \
+ --bindir=$PKG/usr/bin \
+ --datadir=$PKG/usr/share/elvis-$VERSION \
+ --docdir=$PKG/usr/share/elvis-$VERSION/doc \
+ --verbose
+make
+make install
+# Now we make the real binaries:
+make clean
+./configure \
+ --without-x \
+ --without-gnome \
+ --bindir=/usr/bin \
+ --datadir=/usr/share/elvis-$VERSION \
+ --docdir=/usr/share/elvis-$VERSION/doc \
+ --verbose
+make
+# And install them:
+cat elvis > $PKG/usr/bin/elvis
+cat elvtags > $PKG/usr/bin/elvtags
+cat ref > $PKG/usr/bin/ref
+# Turn off color highlighting by default. I can't imagine editing files like
+# that all day... (this coming from the inventor of /etc/(DIR|LS)_COLORS ;-)
+cp -a $CWD/elvis.clr* $PKG/usr/share/elvis-$VERSION
+chown root:root $PKG/usr/share/elvis-$VERSION/elvis.clr*
+( cd $PKG
+ find . | xargs file | grep "executable" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
+ find . | xargs file | grep "shared object" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
+)
+# Install the man pages:
+mkdir -p $PKG/usr/man/man1
+( cd doc
+ cat ctags.man | gzip -9c > $PKG/usr/man/man1/elvtags.1.gz
+ cat elvfmt.man | gzip -9c > $PKG/usr/man/man1/elvfmt.1.gz
+ cat elvis.man | gzip -9c > $PKG/usr/man/man1/elvis.1.gz
+ cat ref.man | gzip -9c > $PKG/usr/man/man1/ref.1.gz
+)
+cp -a \
+ BUGS COPYING INSTALL README.html \
+ $PKG/usr/share/elvis-$VERSION
+# If this is actually useful for anything, fill me in on what it's for:
+rm -f $PKG/usr/share/elvis-$VERSION/tags
+rm -f $PKG/usr/share/elvis-$VERSION/doc/*.man
+rm -f $PKG/usr/share/elvis-$VERSION/doc/printdoc.bat
+
+# Add /usr/bin/ex and /usr/bin/vi symlinks.
+( cd $PKG/usr/bin ; ln -sf elvis ex ; ln -sf elvis vi )
+mkdir $PKG/usr/doc
+( cd $PKG/usr/doc ; ln -sf /usr/share/elvis-$VERSION . )
+mkdir -p $PKG/install
+cat $CWD/slack-desc > $PKG/install/slack-desc
+
+cd $PKG
+makepkg -l y -c n $TMP/elvis-$VERSION-$ARCH-$BUILD.txz
+
diff --git a/source/a/elvis/elvis.clr b/source/a/elvis/elvis.clr
new file mode 100644
index 00000000..6b906afa
--- /dev/null
+++ b/source/a/elvis/elvis.clr
@@ -0,0 +1,56 @@
+switch gui
+case windows
+case x11 {
+" color normal black on gray90
+" color argument like keyword green or dark green
+" color bottom like normal
+" color comment italic dark green or light green
+" color cursor blue on navyblue
+" color fixed gray35 or gray80
+" color function Red4 or pink
+" color guide white
+" color hexheading gray70
+" color hlsearch boxed
+" color keyword bold
+" color libt like keyword italic
+" color linenumber gray
+" color link like formatted underlined blue or light blue
+" color number Blue4 or light blue
+" color other like keyword
+" color prep bold Blue4 or light blue
+" color prepquote like string
+" color scroll like tool
+" color scrollbar like toolbar
+" color selection on tan
+" color spell on pink
+" color status like tool
+" color statusbar like toolbar
+" color string tan4 or tan1
+" color tool black on gray75
+" color toolbar white on gray40
+" color variable Gray15 or palegoldenrod
+}
+case vio
+case termcap {
+" color normal yellow or black
+" color char like string
+" color comment italic light green or green
+" color fixed white or gray
+" color function light cyan or cyan
+" color hexheading gray
+" color hlsearch bold
+" color keyword bold white or black
+" color libt like keyword
+" color linenumber gray
+" color link underlined blue or light cyan
+" color number light cyan or blue
+" color other like keyword
+" color prep bold magenta or blue
+" color prepquote like string
+" color regexp like string
+" color ruler blue or light cyan
+" color showmode green boxed
+" color spell red or light magenta
+" color string white or brown
+" color variable like normal
+}
diff --git a/source/a/elvis/elvis.clr.orig b/source/a/elvis/elvis.clr.orig
new file mode 100644
index 00000000..d132c673
--- /dev/null
+++ b/source/a/elvis/elvis.clr.orig
@@ -0,0 +1,56 @@
+switch gui
+case windows
+case x11 {
+ color normal black on gray90
+ color argument like keyword green or dark green
+ color bottom like normal
+ color comment italic dark green or light green
+ color cursor blue on navyblue
+ color fixed gray35 or gray80
+ color function Red4 or pink
+ color guide white
+ color hexheading gray70
+ color hlsearch boxed
+ color keyword bold
+ color libt like keyword italic
+ color linenumber gray
+ color link like formatted underlined blue or light blue
+ color number Blue4 or light blue
+ color other like keyword
+ color prep bold Blue4 or light blue
+ color prepquote like string
+ color scroll like tool
+ color scrollbar like toolbar
+ color selection on tan
+ color spell on pink
+ color status like tool
+ color statusbar like toolbar
+ color string tan4 or tan1
+ color tool black on gray75
+ color toolbar white on gray40
+ color variable Gray15 or palegoldenrod
+}
+case vio
+case termcap {
+ color normal yellow or black
+ color char like string
+ color comment italic light green or green
+ color fixed white or gray
+ color function light cyan or cyan
+ color hexheading gray
+ color hlsearch bold
+ color keyword bold white or black
+ color libt like keyword
+ color linenumber gray
+ color link underlined blue or light cyan
+ color number light cyan or blue
+ color other like keyword
+ color prep bold magenta or blue
+ color prepquote like string
+ color regexp like string
+ color ruler blue or light cyan
+ color showmode green boxed
+ color spell red or light magenta
+ color string white or brown
+ color variable like normal
+}
diff --git a/source/a/elvis/slack-desc b/source/a/elvis/slack-desc
new file mode 100644
index 00000000..f60d350d
--- /dev/null
+++ b/source/a/elvis/slack-desc
@@ -0,0 +1,19 @@
+# HOW TO EDIT THIS FILE:
+# The "handy ruler" below makes it easier to edit a package description. Line
+# up the first '|' above the ':' following the base package name, and the '|'
+# on the right side marks the last column you can put a character in. You must
+# make exactly 11 lines for the formatting to be correct. It's also
+# customary to leave one space after the ':'.
+
+ |-----handy-ruler------------------------------------------------------|
+elvis: elvis (text editor)
+elvis:
+elvis: Elvis is a text editor. It is intended to be a modern replacement
+elvis: for the classic ex/vi editor of UNIX fame. Elvis supports many new
+elvis: features, including multiple edit buffers, multiple windows, and a
+elvis: variety of display modes.
+elvis:
+elvis: As elvis is Slackware's default vi, this is a required package.
+elvis:
+elvis:
+elvis:
diff --git a/source/a/etc/etc.SlackBuild b/source/a/etc/etc.SlackBuild
new file mode 100755
index 00000000..6c708883
--- /dev/null
+++ b/source/a/etc/etc.SlackBuild
@@ -0,0 +1,50 @@
+#!/bin/sh
+
+# Copyright 2005-2009 Patrick J. Volkerding, Sebeka, MN, USA
+# All rights reserved.
+#
+# Redistribution and use of this script, with or without modification, is
+# permitted provided that the following conditions are met:
+#
+# 1. Redistributions of this script must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# 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.
+
+VERSION=13.0
+ARCH=${ARCH:-x86_64}
+BUILD=${BUILD:-2}
+
+CWD=$(pwd)
+TMP=${TMP:-/tmp}
+PKG=$TMP/package-etc
+rm -rf $PKG
+mkdir -p $TMP $PKG
+
+# Explode the package framework:
+cd $PKG
+explodepkg $CWD/_etc.tar.gz
+# Fix for ARCH:
+sed -i -e "s#/i486-slackware-linux#/${ARCH}-slackware-linux#" etc/ld.so.conf.new
+cp -a $CWD/termcap-BSD.gz etc/termcap-BSD.gz
+gzip -d --force etc/termcap-BSD.gz
+chown root:root etc/termcap-BSD
+chmod 644 etc/termcap-BSD
+zcat $CWD/nsswitch.conf.gz > $PKG/etc/nsswitch.conf.new
+
+mkdir -p $PKG/install
+cat $CWD/slack-desc > $PKG/install/slack-desc
+
+# Build the package:
+cd $PKG
+/sbin/makepkg -l y -c n $TMP/etc-$VERSION-$ARCH-$BUILD.txz
+
diff --git a/source/a/etc/nsswitch.conf b/source/a/etc/nsswitch.conf
new file mode 100644
index 00000000..3d993afc
--- /dev/null
+++ b/source/a/etc/nsswitch.conf
@@ -0,0 +1,42 @@
+#
+# /etc/nsswitch.conf
+#
+# An example Name Service Switch config file. This file should be
+# sorted with the most-used services at the beginning.
+#
+# The entry '[NOTFOUND=return]' means that the search for an
+# entry should stop if the search in the previous entry turned
+# up nothing. Note that if the search failed due to some other reason
+# (like no NIS server responding) then the search continues with the
+# next entry.
+#
+# Legal entries are:
+#
+# nisplus or nis+ Use NIS+ (NIS version 3)
+# nis or yp Use NIS (NIS version 2), also called YP
+# dns Use DNS (Domain Name Service)
+# files Use the local files
+# [NOTFOUND=return] Stop searching if not found so far
+#
+
+# passwd: files nis
+# shadow: files nis
+# group: files nis
+
+passwd: compat
+group: compat
+
+hosts: files dns
+networks: files
+
+services: files
+protocols: files
+rpc: files
+ethers: files
+netmasks: files
+netgroup: files
+bootparams: files
+
+automount: files
+aliases: files
+
diff --git a/source/a/etc/slack-desc b/source/a/etc/slack-desc
new file mode 100644
index 00000000..9d9d9bbd
--- /dev/null
+++ b/source/a/etc/slack-desc
@@ -0,0 +1,19 @@
+# HOW TO EDIT THIS FILE:
+# The "handy ruler" below makes it easier to edit a package description. Line
+# up the first '|' above the ':' following the base package name, and the '|'
+# on the right side marks the last column you can put a character in. You must
+# make exactly 11 lines for the formatting to be correct. It's also
+# customary to leave one space after the ':'.
+
+ |-----handy-ruler------------------------------------------------------|
+etc: etc (system configuration files)
+etc:
+etc: System configuration files. The /etc directory is traditionally the
+etc: location where configuration files are found.
+etc:
+etc:
+etc:
+etc:
+etc:
+etc:
+etc:
diff --git a/source/a/etc/termcap-BSD b/source/a/etc/termcap-BSD
new file mode 100644
index 00000000..01094d60
--- /dev/null
+++ b/source/a/etc/termcap-BSD
@@ -0,0 +1,16470 @@
+######## TERMINAL TYPE DESCRIPTIONS SOURCE FILE
+#
+# Version 11.0.1
+# $Date: 2000/03/02 15:51:11 $
+# termcap syntax
+#
+# Eric S. Raymond (current maintainer)
+# John Kunze, Berkeley
+# Craig Leres, Berkeley
+#
+# Please e-mail changes to terminfo@thyrsus.com; the old termcap@berkeley.edu
+# address is no longer valid. The latest version can always be found at
+# <http://www.tuxedo.org/terminfo>.
+#
+# PURPOSE OF THIS FILE:
+#
+# This file describes the capabilities of various character-cell terminals,
+# as needed by software such as screen-oriented editors.
+#
+# Other terminfo and termcap files exist, supported by various OS vendors
+# or as relics of various older versions of UNIX. This one is the longest
+# and most comprehensive one in existence. It subsumes not only the entirety
+# of the historical 4.4BSD, GNU, System V and SCO termcap files and the BRL
+# termcap file, but also large numbers of vendor-maintained termcap and
+# terminfo entries more complete and carefully tested than those in historical
+# termcap/terminfo versions.
+#
+# Pointers to related resources (including the ncurses distribution) may
+# be found at <http://www.tuxedo.org/terminfo>.
+#
+# INTERNATIONALIZATION:
+#
+# This file uses only the US-ASCII character set (no ISO8859 characters).
+#
+# This file assumes a US-ASCII character set. If you need to fix this, start
+# by global-replacing \E(B and \E)B with the appropriate ISO 6429 enablers
+# for your character set. \E(A and \E)A enables the British character set
+# with the pound sign at position 2/3.
+#
+# In a Japanese-processing environment using EUC/Japanese or Shift-JIS,
+# C1 characters are considered the first-byte set of the Japanese encodings,
+# so \E)0 should be avoided in <enacs> and initialization strings.
+#
+# FILE FORMAT:
+#
+# The version you are looking at may be in any of three formats: master
+# (terminfo with OT capabilities), stock terminfo, or termcap. You can tell
+# which by the format given in the header above.
+#
+# The master format is accepted and generated by the terminfo tools in the
+# ncurses suite; it differs from stock (System V-compatible) terminfo only
+# in that it admits a group of capabilities (prefixed `OT') equivalent to
+# various obsolete termcap capabilities. You can, thus, convert from master
+# to stock terminfo simply by filtering with `sed "/OT[^,]*,/s///"'; but if
+# you have ncurses `tic -I' is nicer (among other things, it automatically
+# outputs entries in a canonical form).
+#
+# The termcap version is generated automatically from the master version
+# using tic -C. This filtering leaves in the OT capabilities under their
+# original termcap names. All translated entries fit within the 1023-byte
+# string-table limit of archaic termcap libraries except where explicitly
+# noted below. Note that the termcap translation assumes that your termcap
+# library can handle multiple tc capabilities in an entry. 4.4BSD has this
+# capability. Older versions of GNU termcap, through 1.3, do not.
+#
+# For details on these formats, see terminfo(5) in the ncurses distribution,
+# and termcap(5) in the 4.4BSD Unix Programmer's Manual. Be aware that 4.4BSD
+# curses has been declared obsolete by the caretakers of the 4.4BSD sources
+# as of June 1995; they are encouraging everyone to migrate to ncurses.
+#
+# Note: unlike some other distributed terminfo files (Novell Unix & SCO's),
+# no entry in this file has embedded comments. This is so source translation
+# to termcap only has to carry over leading comments. Also, no name field
+# contains embedded whitespace (such whitespace confuses rdist).
+#
+# Further note: older versions of this file were often installed with an editor
+# script (reorder) that moved the most common terminal types to the front of
+# the file. This should no longer be necessary, as the file is now ordered
+# roughly by type frequency with ANSI/VT100 and other common types up front.
+#
+# Some information has been merged in from terminfo files distributed by
+# USL and SCO (see COPYRIGHTS AND OTHER DELUSIONS below). Much information
+# comes from vendors who maintain official terminfos for their hardware
+# (notably DEC and Wyse).
+#
+# A detailed change history is included at the end of this file.
+#
+# FILE ORGANIZATION:
+#
+# Comments in this file begin with # - they cannot appear in the middle
+# of a terminfo/termcap entry (this feature had to be sacrificed in order
+# to allow standard terminfo and termcap syntax to be generated cleanly from
+# the master format). Individual capabilities are commented out by
+# placing a period between the colon and the capability name.
+#
+# The file is divided up into major sections (headed by lines beginning with
+# the string "########") and minor sections (beginning with "####"); do
+#
+# grep "^####" <file> | more
+#
+# to see a listing of section headings. The intent of the divisions is
+# (a) to make it easier to find things, and (b) to order the database so
+# that important and frequently-encountered terminal types are near the
+# front (so that you'll get reasonable search efficiency from a linear
+# search of the termcap form even if you don't use reorder). Minor sections
+# usually correspond to manufacturers or standard terminal classes.
+# Parenthesized words following manufacturer names are type prefixes or
+# product line names used by that manufacturers.
+#
+# HOW TO READ THE ENTRIES:
+#
+# The first name in an entry is the canonical name for the model or
+# type, last entry is a verbose description. Others are mnemonic synonyms for
+# the terminal.
+#
+# Terminal names look like <manufacturer> <model> - <modes/options>
+# The part to the left of the dash, if a dash is present, describes the
+# particular hardware of the terminal. The part to the right may be used
+# for flags indicating special ROMs, extra memory, particular terminal modes,
+# or user preferences.
+#
+# All names should be in lower case, for consistency in typing.
+#
+# The following are conventionally used suffixes:
+# -2p Has two pages of memory. Likewise 4p, 8p, etc.
+# -am Enable auto-margin.
+# -m Monochrome. Suppress color support
+# -mc Magic-cookie. Some terminals (notably older Wyses) can
+# only support one attribute without magic-cookie lossage.
+# Their base entry is usually paired with another that
+# uses magic cookies to support multiple attributes.
+# -nam No auto-margin - suppress :am: capability
+# -nl No labels - suppress soft labels
+# -ns No status line - suppress status line
+# -rv Terminal in reverse video mode (black on white)
+# -s Enable status line.
+# -vb Use visible bell (:vb:) rather than :bl:.
+# -w Wide - in 132 column mode.
+# If a name has multiple suffixes and one is a line height, that one should
+# go first. Thus `aaa-30-s-rv' is recommended over `aaa-s-rv-30'.
+#
+# Entries with embedded plus signs are designed to be included through use/tc
+# capabilities, not used as standalone entries.
+#
+# To avoid search clashes, some older all-numeric names for terminals have
+# been removed (i.e., "33" for the Model 33 Teletype, "2621" for the HP2621).
+# All primary names of terminals now have alphanumeric prefixes.
+#
+# Comments marked "esr" are mostly results of applying the termcap-compiler
+# code packaged with ncurses and contemplating the resulting error messages.
+# In many cases, these indicated obvious fixes to syntax garbled by the
+# composers. In a few cases, I was able to deduce corrected forms for garbled
+# capabilities by looking at context. All the information in the original
+# entries is preserved in the comments.
+#
+# In the comments, terminfo capability names are bracketed with <> (angle
+# brackets). Termcap capability names are bracketed with :: (colons).
+#
+# INTERPRETATION OF USER CAPABILITIES
+#
+# The System V Release 4 and XPG4 terminfo format defines ten string
+# capabilities for use by applications, <u0>...<u9>. In this file, we use
+# certain of these capabilities to describe functions which are not covered
+# by terminfo. The mapping is as follows:
+#
+# u9 terminal enquire string (equiv. to ANSI/ECMA-48 DA)
+# u8 terminal answerback description
+# u7 cursor position request (equiv. to VT100/ANSI/ECMA-48 DSR 6)
+# u6 cursor position report (equiv. to ANSI/ECMA-48 CPR)
+#
+# The terminal enquire string <u9> should elicit an answerback response
+# from the terminal. Common values for <u9> will be ^E (on older ASCII
+# terminals) or \E[c (on newer VT100/ANSI/ECMA-48-compatible terminals).
+#
+# The cursor position request (<u7>) string should elicit a cursor position
+# report. A typical value (for VT100 terminals) is \E[6n.
+#
+# The terminal answerback description (u8) must consist of an expected
+# answerback string. The string may contain the following scanf(3)-like
+# escapes:
+#
+# %c Accept any character
+# %[...] Accept any number of characters in the given set
+#
+# The cursor position report (<u6>) string must contain two scanf(3)-style
+# %d format elements. The first of these must correspond to the Y coordinate
+# and the second to the %d. If the string contains the sequence %i, it is
+# taken as an instruction to decrement each value after reading it (this is
+# the inverse sense from the cup string). The typical CPR value is
+# \E[%i%d;%dR (on VT100/ANSI/ECMA-48-compatible terminals).
+#
+# These capabilities are used by tac(1m), the terminfo action checker
+# (distributed with ncurses 5.0).
+#
+# TABSET FILES
+#
+# All the entries in this file have been edited to assume that the tabset
+# files directory is /usr/share/tabset, in conformance with the File Hierarchy
+# Standard for Linux and open-source BSD systems. Some vendors (notably Sun)
+# use /usr/lib/tabset or (more recently) /usr/share/lib/tabset.
+#
+# No curses package we know of actually uses these files. If their location
+# is an issue, you will have to hand-patch the file locations before compiling
+# this file.
+#
+# REQUEST FOR CONTACT INFORMATION AND HISTORICAL MATERIAL
+#
+# As the ANSI/ECMA-48 standard and variants take firmer hold, and as
+# character-cell terminals are increasingly replaced by X displays, much of
+# this file is becoming a historical document (this is part of the reason for
+# the new organization, which puts ANSI types, xterm, Unix consoles,
+# and vt100 up front in confidence that this will catch 95% of new hardware).
+#
+# For the terminal types still alive, I'd like to have manufacturer's
+# contact data (Internet address and/or snail-mail + phone).
+#
+# I'm also interested in enriching the comments so that the latter portions of
+# the file do in fact become a potted history of VDT technology as seen by
+# UNIX hackers. Ideally, I'd like the headers for each manufacturer to
+# include its live/dead/out-of-the-business status, and for as many
+# terminal types as possible to be tagged with information like years
+# of heaviest use, popularity, and interesting features.
+#
+# I'm especially interested in identifying the obscure entries listed under
+# `Miscellaneous obsolete terminals, manufacturers unknown' before the tribal
+# wisdom about them gets lost. If you know a lot about obscure old terminals,
+# please go to the terminfo resource page, grab the UFO file (ufo.ti), and
+# eyeball it for things you can identify and describe.
+#
+# If you have been around long enough to contribute, please read the file
+# with this in mind and send me your annotations.
+#
+# COPYRIGHTS AND OTHER DELUSIONS
+#
+# The BSD ancestor of this file had a standard Regents of the University of
+# California copyright with dates from 1980 to 1993.
+#
+# Some information has been merged in from a terminfo file SCO distributes.
+# It has an obnoxious boilerplate copyright which I'm ignoring because they
+# took so much of the content from the ancestral BSD versions of this file
+# and didn't attribute it, thereby violating the BSD Regents' copyright.
+#
+# Not that anyone should care. However many valid functions copyrights may
+# serve, putting one on a termcap/terminfo file with hundreds of anonymous
+# contributors makes about as much sense as copyrighting a wall-full of
+# graffiti -- it's legally dubious, ethically bogus, and patently ridiculous.
+#
+# This file deliberately has no copyright. It belongs to no one and everyone.
+# If you claim you own it, you will merely succeed in looking like a fool.
+# Use it as you like. Use it at your own risk. Copy and redistribute freely.
+# There are no guarantees anywhere. Svaha!
+#
+
+######## ANSI, UNIX CONSOLE, AND SPECIAL TYPES
+#
+# This section describes terminal classes and brands that are still
+# quite common.
+#
+
+#### Specials
+#
+# Special "terminals". These are used to label tty lines when you don't
+# know what kind of terminal is on it. The characteristics of an unknown
+# terminal are the lowest common denominator - they look about like a ti 700.
+#
+
+dumb|80-column dumb tty:\
+ :am:\
+ :co#80:\
+ :bl=^G:cr=^M:do=^J:sf=^J:
+unknown|unknown terminal type:\
+ :gn:tc=dumb:
+lpr|printer|line printer:\
+ :bs:hc:os:\
+ :co#132:li#66:\
+ :bl=^G:cr=^M:do=^J:ff=^L:le=^H:sf=^J:
+glasstty|classic glass tty interpreting ASCII control characters:\
+ :am:bs:\
+ :co#80:\
+ :bl=^G:cl=^L:cr=^M:do=^J:kd=^J:kl=^H:le=^H:nw=^M^J:ta=^I:
+vanilla:\
+ :bs:\
+ :bl=^G:cr=^M:do=^J:sf=^J:
+
+#### ANSI.SYS/ISO 6429/ECMA-48 Capabilities
+#
+# See the end-of-file comment for more on these.
+#
+
+# ANSI capabilities are broken up into pieces, so that a terminal
+# implementing some ANSI subset can use many of them.
+ansi+local1:\
+ :do=\E[B:le=\E[D:nd=\E[C:up=\E[A:
+ansi+local:\
+ :DO=\E[%dB:LE=\E[%dD:RI=\E[%dC:UP=\E[%dA:tc=ansi+local1:
+ansi+tabs:\
+ :bt=\E[Z:ct=\E[2g:st=\EH:ta=^I:
+ansi+inittabs:\
+ :it#8:tc=ansi+tabs:
+ansi+erase:\
+ :cd=\E[J:ce=\E[K:cl=\E[H\E[J:
+ansi+rca:\
+ :ch=\E[%+^AG:cv=\E[%+^Ad:
+ansi+cup:\
+ :cm=\E[%i%d;%dH:ho=\E[H:
+ansi+rep:\
+ :..rp=%p1%c\E[%p2%{1}%-%db:
+ansi+idl1:\
+ :al=\E[L:dl=\E[M:
+ansi+idl:\
+ :AL=\E[%dL:DL=\E[%dM:tc=ansi+idl1:
+ansi+idc:\
+ :IC=\E[%d@:dc=\E[P:ei=\E6:ic=\E[@:im=\E6:
+ansi+arrows:\
+ :kb=^H:kd=\E[B:kh=\E[H:kl=\E[D:kr=\E[C:ku=\E[A:
+ansi+sgr|ansi graphic renditions:\
+ :mb=\E[5m:me=\E[0m:mk=\E[8m:mr=\E[7m:
+ansi+sgrso|ansi standout only:\
+ :se=\E[m:so=\E[7m:
+ansi+sgrul|ansi underline only:\
+ :ue=\E[m:us=\E[4m:
+ansi+sgrbold|ansi graphic renditions; assuming terminal has bold; not dim:\
+ :md=\E[1m:\
+ :..sa=\E[%?%p1%t7;%;%?%p2%t4;%;%?%p3%t7;%;%?%p4%t5;%;%?%p6%t1;%;m:tc=ansi+sgr:tc=ansi+sgrso:tc=ansi+sgrul:
+ansi+sgrdim|ansi graphic renditions; assuming terminal has dim; not bold:\
+ :mh=\E[2m:\
+ :..sa=\E[%?%p1%t7;%;%?%p2%t4;%;%?%p3%t7;%;%?%p4%t5;%;%?%p5%t2;%;m:tc=ansi+sgr:tc=ansi+sgrso:tc=ansi+sgrul:
+ansi+pp|ansi printer port:\
+ :pf=\E[4i:po=\E[5i:ps=\E[0i:
+ansi+csr|ansi scroll-region plus cursor save & restore:\
+ :cs=\E[%i%d;%dr:rc=\E8:sc=\E7:
+
+# The IBM PC alternate character set. Plug this into any Intel console entry.
+# We use \E[11m for rmacs rather than \E[12m so the <acsc> string can use the
+# ROM graphics for control characters such as the diamond, up- and down-arrow.
+# This works with the System V, Linux, and BSDI consoles. It's a safe bet this
+# will work with any Intel console, they all seem to have inherited \E[11m
+# from the ANSI.SYS de-facto standard.
+klone+acs|alternate character set for ansi.sys displays:\
+ :ac=+\020\054\021-\030.^Y0\333`\004a\261f\370g\361h\260j\331k\277l\332m\300n\305o~p\304q\304r\304s_t\303u\264v\301w\302x\263y\363z\362{\343|\330}\234~\376:\
+ :ae=\E[10m:as=\E[11m:
+
+# Highlight controls corresponding to the ANSI.SYS standard. Most
+# console drivers for Intel boxes obey these. Makes the same assumption
+# about \E[11m as klone+acs. True ANSI/ECMA-48 would have :se=\E[27m:,
+# :ue=\E[24m:, but this isn't a documented feature of ANSI.SYS.
+klone+sgr|attribute control for ansi.sys displays:\
+ :S2=\E[11m:S3=\E[10m:mb=\E[5m:md=\E[1m:me=\E[0;10m:\
+ :mk=\E[8m:mr=\E[7m:\
+ :..sa=\E[0;10%?%p1%t;7%;%?%p2%t;4%;%?%p3%t;7%;%?%p4%t;5%;%?%p6%t;1%;%?%p7%t;8%;%?%p9%t;11%;m:\
+ :se=\E[m:so=\E[7m:ue=\E[m:us=\E[4m:\
+ :tc=klone+acs:
+
+# Highlight controls corresponding to the ANSI.SYS standard. *All*
+# console drivers for Intel boxes obey these. Does not assume \E[11m will
+# work; uses \E[12m instead, which is pretty bulletproof but loses you the ACS
+# diamond and arrow characters under curses.
+klone+sgr-dumb|attribute control for ansi.sys displays (no ESC [ 11 m):\
+ :as=\E[12m:mb=\E[5m:md=\E[1m:me=\E[0;10m:mk=\E[8m:\
+ :mr=\E[7m:\
+ :..sa=\E[0;10%?%p1%t;7%;%?%p2%t;4%;%?%p3%t;7%;%?%p4%t;5%;%?%p6%t;1%;%?%p7%t;8%;%?%p9%t;12%;m:\
+ :se=\E[m:so=\E[7m:ue=\E[m:us=\E[4m:\
+ :tc=klone+acs:
+
+# KOI8-R (RFC1489) acs (alternate character set)
+# From: Qing Long <qinglong@Bolizm.ihep.su>, 24 Feb 1996.
+klone+koi8acs|alternate character set for ansi.sys displays with KOI8 charset:\
+ :ac=+\020\054\021-\036.^_0\215`\004a\237f\234g\232h\222i\220j\205k\203l\202m\204n\212o\213p\216q\0r\217s\214t\206u\207v\210w\211x\201y\230z\231{\267|\274}L~\225:\
+ :ae=\E[10m:as=\E[11m:
+
+# ANSI.SYS color control. The setab/setaf caps depend on the coincidence
+# between SVr4/XPG4's color numbers and ANSI.SYS attributes. Here are longer
+# but equivalent strings that don't rely on that coincidence:
+# setb=\E[4%?%p1%{1}%=%t4%e%p1%{3}%=%t6%e%p1%{4}%=%t1%e%p1%{6}%=%t3%e%p1%d%;m,
+# setf=\E[3%?%p1%{1}%=%t4%e%p1%{3}%=%t6%e%p1%{4}%=%t1%e%p1%{6}%=%t3%e%p1%d%;m,
+# The DOS 5 manual asserts that these sequences meet the ISO 6429 standard.
+# They match a subset of ECMA-48.
+klone+color|color control for ansi.sys and ISO6429-compatible displays:\
+ :Co#8:NC#3:pa#64:\
+ :AB=\E[4%p1%dm:AF=\E[3%p1%dm:op=\E[37;40m:
+
+# This is better than klone+color, it doesn't assume white-on-black as the
+# default color pair, but many `ANSI' terminals don't grok the <op> cap.
+ecma+color|color control for ECMA-48-compatible terminals:\
+ :Co#8:NC#3:pa#64:\
+ :AB=\E[4%p1%dm:AF=\E[3%p1%dm:op=\E[39;49m:
+
+# Attribute control for ECMA-48-compatible terminals
+ecma+sgr|attribute capabilities for true ECMA-48 terminals:\
+ :se=\E[27m:ue=\E[24m:\
+ :tc=klone+sgr:
+
+# For comparison, here are all the capabilities implied by the Intel
+# Binary Compatibility Standard (level 2) that fit within terminfo.
+# For more detail on this rather pathetic standard, see the comments
+# near the end of this file.
+ibcs2|Intel Binary Compatibility Standard prescriptions:\
+ :AL=\E[%dL:DC=\E[%dP:DO=\E[%dB:IC=\E[%d@:LE=\E[%dD:\
+ :RA=\E[?7l:RI=\E[%dC:S1=\E=%p1%dg:SA=\E[?7h:SF=\E[%dS:\
+ :SR=\E[%dT:UP=\E[%dA:bt=\E[Z:ch=\E[%i%dG:cl=\Ec:\
+ :cm=\E[%i%d;%dH:ct=\E[g:cv=\E[%i%dd:ec=\E[%dX:ei=:im=:\
+ :rc=\E7:sc=\E7:st=\EH:
+
+#### ANSI/ECMA-48 terminals and terminal emulators
+#
+# See near the end of this file for details on ANSI conformance.
+# Don't mess with these entries! Lots of other entries depend on them!
+#
+# This section lists entries in a least-capable to most-capable order.
+# if you're in doubt about what `ANSI' matches yours, try them in that
+# order and back off from the first that breaks.
+
+# ansi-mr is for ANSI terminals with ONLY relative cursor addressing
+# and more than one page of memory. It uses local motions instead of
+# direct cursor addressing, and makes almost no assumptions. It does
+# assume auto margins, no padding and/or xon/xoff, and a 24x80 screen.
+ansi-mr|mem rel cup ansi:\
+ :am:xo:\
+ :co#80:li#24:tc=vanilla:tc=ansi+erase:tc=ansi+local1:
+
+# ansi-mini is a bare minimum ANSI terminal. This should work on anything, but
+# beware of screen size problems and memory relative cursor addressing.
+ansi-mini|minimum ansi standard terminal:\
+ :am:xo:\
+ :co#80:li#24:tc=vanilla:tc=ansi+cup:tc=ansi+erase:
+
+# ansi-mtabs adds relative addressing and minimal tab support
+ansi-mtabs|any ansi terminal with pessimistic assumptions:\
+ :it#8:\
+ :ta=^I:tc=ansi+local1:tc=ansi-mini:
+
+# ANSI X3.64 from emory!mlhhh (Hugh Hansard) via BRL
+#
+# The following is an entry for the full ANSI 3.64 (1977). It lacks
+# padding, but most terminals using the standard are "fast" enough
+# not to require any -- even at 9600 bps. If you encounter problems,
+# try including the padding specifications.
+#
+# Note: the :as: and :ae: specifications are not implemented here, for
+# the available termcap documentation does not make clear WHICH alternate
+# character set to specify. ANSI 3.64 seems to make allowances for several.
+# Please make the appropriate adjustments to fit your needs -- that is
+# if you will be using alternate character sets.
+#
+# There are very few terminals running the full ANSI 3.64 standard,
+# so I could only test this entry on one verified terminal (Visual 102).
+# I would appreciate the results on other terminals sent to me.
+#
+# Please report comments, changes, and problems to:
+#
+# U.S. MAIL: Hugh Hansard
+# Box: 22830
+# Emory University
+# Atlanta, GA. 30322.
+#
+# USENET {akgua,msdc,sb1,sb6,gatech}!emory!mlhhh.
+#
+# (Added vt100 :rc:,:sc: to quiet a tic warning --esr)
+ansi77|ansi 3.64 standard 1977 version:\
+ :am:bs:mi:\
+ :co#80:it#8:li#24:\
+ :al=5*\E[L:bl=^G:cd=\E[J:ce=\E[K:cl=\E[;H\E[2J:\
+ :cm=\E[%i%d;%dH:cr=^M:cs=\E[%i%d;%dr:dc=\E[P:dl=5*\E[M:\
+ :do=\E[B:ei=\E[4l:ho=\E[H:im=\E[4h:k1=\EOP:k2=\EOR:k4=\EOS:\
+ :kb=^H:kd=\E[B:kh=\E[H:kl=\E[D:kr=\E[C:ku=\E[A:le=^H:\
+ :nd=\E[C:nw=^M\ED:rc=\E8:sc=\E7:se=\E[m:sf=\ED:so=\E[7m:\
+ :sr=\EM:ta=^I:ue=\E[m:up=\E[A:us=\E[4m:
+
+# Procomm and some other ANSI emulations don't recognize all of the ANSI-
+# standard capabilities. This entry deletes :UP:, :RI:, :DO:, :LE:, and
+# <vpa>/<hpa> capabilities, forcing curses to use repetitions of :up:,
+# :nd:, :do: and :le:. Also deleted :IC: and :ic:, as QModem up to
+# 5.03 doesn't recognize these. Finally, we delete :rp: and :sr:, which seem
+# to confuse many emulators. On the other hand, we can count on these programs
+# doing :ae:/:as:/:sa:. Older versions of this entry featured
+# <invis=\E[9m>, but <invis=\E[8m> now seems to be more common under
+# ANSI.SYS influence.
+# From: Eric S. Raymond <esr@snark.thyrsus.com> Oct 30 1995
+pcansi-m|pcansi-mono|ibm-pc terminal programs claiming to be ansi (mono mode):\
+ :am:bs:mi:ms:\
+ :co#80:it#8:li#24:\
+ :al=\E[L:bl=^G:bt=\E[Z:cd=\E[J:ce=\E[K:cl=\E[H\E[J:\
+ :cm=\E[%i%d;%dH:cr=^M:ct=\E[2g:dc=\E[P:dl=\E[M:do=\E[B:\
+ :ho=\E[H:kb=^H:kd=\E[B:kh=\E[H:kl=\E[D:kr=\E[C:ku=\E[A:\
+ :le=\E[D:nd=\E[C:sf=^J:st=\EH:ta=^I:up=\E[A:\
+ :tc=klone+sgr-dumb:
+pcansi-25-m|pcansi25m|ibm-pc terminal programs with 25 lines (mono mode):\
+ :li#25:tc=pcansi-m:
+pcansi-33-m|pcansi33m|ibm-pc terminal programs with 33 lines (mono mode):\
+ :li#33:tc=pcansi-m:
+pcansi-43-m|ansi43m|ibm-pc terminal programs with 43 lines (mono mode):\
+ :li#43:tc=pcansi-m:
+# The color versions. All PC emulators do color...
+pcansi|ibm-pc terminal programs claiming to be ansi:\
+ :tc=klone+color:tc=pcansi-m:
+pcansi-25|pcansi25|ibm-pc terminal programs with 25 lines:\
+ :li#25:tc=pcansi:
+pcansi-33|pcansi33|ibm-pc terminal programs with 33 lines:\
+ :li#33:tc=pcansi:
+pcansi-43|pcansi43|ibm-pc terminal programs with 43 lines:\
+ :li#43:tc=pcansi:
+
+# ansi-m -- full ANSI X3.64 with ANSI.SYS-compatible attributes, no color.
+# If you want pound signs rather than dollars, replace `B' with `A'
+# in the <s0ds>, <s1ds>, <s2ds>, and <s3ds> capabilities.
+# From: Eric S. Raymond <esr@snark.thyrsus.com> Nov 6 1995
+ansi-m|ansi-mono|ANSI X3.64-1979 terminal with ANSI.SYS compatible attributes:\
+ :5i:\
+ :AL=\E[%dL:DC=\E[%dP:DL=\E[%dM:DO=\E[%dB:IC=\E[%d@:\
+ :LE=\E[%dD:RI=\E[%dC:SF=\E[%dS:SR=\E[%dT:UP=\E[%dA:\
+ :cb=\E[1K:ch=\E[%i%dG:ct=\E[2g:cv=\E[%i%dd:ec=\E[%dX:ei=:\
+ :im=:kB=\E[Z:kI=\E[L:kb=^H:kd=\E[B:kl=\E[D:kr=\E[C:ku=\E[A:\
+ :nw=\r\E[S:pf=\E[4i:po=\E[5i:..rp=%p1%c\E[%p2%{1}%-%db:\
+ :s0=\E(B:s1=\E)B:s2=\E*B:s3=\E+B:ta=\E[I:\
+ :tc=pcansi-m:
+
+# ansi -- this terminfo expresses the largest subset of X3.64 that will fit in
+# standard terminfo. Assumes ANSI.SYS-compatible attributes and color.
+# From: Eric S. Raymond <esr@snark.thyrsus.com> Nov 6 1995
+ansi|ansi/pc-term compatible with color:\
+ :u6=\E[%i%d;%dR:u7=\E[6n:..u8=\E[?%[;0123456789]c:\
+ :u9=\E[c:\
+ :tc=ecma+color:tc=klone+sgr:tc=ansi-m:
+
+# ansi-generic is a vanilla ANSI terminal. This is assumed to implement
+# all the normal ANSI stuff with no extensions. It assumes
+# insert/delete line/char is there, so it won't work with
+# vt100 clones. It assumes video attributes for bold, blink,
+# underline, and reverse, which won't matter much if the terminal
+# can't do some of those. Padding is assumed to be zero, which
+# shouldn't hurt since xon/xoff is assumed.
+ansi-generic|generic ansi standard terminal:\
+ :am:xo:\
+ :co#80:li#24:tc=vanilla:tc=ansi+csr:tc=ansi+cup:\
+ :tc=ansi+rca:tc=ansi+erase:tc=ansi+tabs:tc=ansi+local:\
+ :tc=ansi+idc:tc=ansi+idl:tc=ansi+rep:tc=ansi+sgrbold:\
+ :tc=ansi+arrows:
+
+#### Linux consoles
+#
+
+# This entry is good for the 1.2.13 or later version of the Linux console.
+#
+# ***************************************************************************
+# * *
+# * WARNING: *
+# * Linuxes come with a default keyboard mapping kcbt=^I. This entry, in *
+# * response to user requests, assumes kcbt=\E[Z, the ANSI/ECMA reverse-tab *
+# * character. Here are the keymap replacement lines that will set this up: *
+# * *
+# keycode 15 = Tab Tab
+# alt keycode 15 = Meta_Tab
+# shift keycode 15 = F26
+# string F26 ="\033[Z"
+# * *
+# * This has to use a key slot which is unfortunate (any unused one will *
+# * do, F26 is the higher-numbered one). The change ought to be built *
+# * into the kernel tables. *
+# * *
+# ***************************************************************************
+#
+# The 1.3.x kernels add color-change capabilities; if yours doesn't have this
+# and it matters, turn off <ccc>. The %02x escape used to implement this is
+# not back-portable to SV curses and not supported in ncurses versions before
+# 1.9.9. All linux kernels since 1.2.13 (at least) set the screen size
+# themselves; this entry assumes that capability.
+#
+# This entry is good for the 1.2.13 or later version of the Linux console.
+#
+# ***************************************************************************
+# * *
+# * WARNING: *
+# * Linuxes come with a default keyboard mapping kcbt=^I. This entry, in *
+# * response to user requests, assumes kcbt=\E[Z, the ANSI/ECMA reverse-tab *
+# * character. Here are the keymap replacement lines that will set this up: *
+# * *
+# keycode 15 = Tab Tab
+# alt keycode 15 = Meta_Tab
+# shift keycode 15 = F26
+# string F26 ="\033[Z"
+# * *
+# * This has to use a key slot which is unfortunate (any unused one will *
+# * do, F26 is the higher-numbered one). The change ought to be built *
+# * into the kernel tables. *
+# * *
+# ***************************************************************************
+#
+# The 1.3.x kernels add color-change capabilities; if yours doesn't have this
+# and it matters, turn off <ccc>. The %02x escape used to implement this is
+# not back-portable to SV curses and not supported in ncurses versions before
+# 1.9.9. All linux kernels since 1.2.13 (at least) set the screen size
+# themselves; this entry assumes that capability.
+#
+# The 2.2.x kernels add a private mode that sets the cursor type; use that to
+# get a block cursor for cvvis.
+# reported by Frank Heckenbach <frank@g-n-u.de>.
+# (untranslatable capabilities removed to fit entry within 1023 bytes)
+# (sgr removed to fit entry within 1023 bytes)
+# (terminfo-only capabilities suppressed to fit entry within 1023 bytes)
+linux|linux console:\
+ :am:eo:mi:ms:xn:xo:\
+ :it#8:\
+ :AL=\E[%dL:DC=\E[%dP:DL=\E[%dM:IC=\E[%d@:K2=\E[G:al=\E[L:\
+ :bl=^G:cd=\E[J:ce=\E[K:cl=\E[H\E[J:cm=\E[%i%d;%dH:cr=^M:\
+ :cs=\E[%i%d;%dr:ct=\E[3g:dc=\E[P:dl=\E[M:do=^J:ec=\E[%dX:\
+ :ei=\E[4l:ho=\E[H:ic=\E[@:im=\E[4h:k1=\E[[A:k2=\E[[B:\
+ :k3=\E[[C:k4=\E[[D:k5=\E[[E:k6=\E[17~:k7=\E[18~:k8=\E[19~:\
+ :k9=\E[20~:kD=\E[3~:kI=\E[2~:kN=\E[6~:kP=\E[5~:kb=\177:\
+ :kd=\E[B:kh=\E[1~:kl=\E[D:kr=\E[C:ku=\E[A:le=^H:mh=\E[2m:\
+ :mr=\E[7m:nd=\E[C:nw=^M^J:rc=\E8:sc=\E7:se=\E[27m:sf=^J:\
+ :sr=\EM:st=\EH:ta=^I:ue=\E[24m:up=\E[A:us=\E[4m:\
+ :vb=200\E[?5h\E[?5l:ve=\E[?25h\E[?0c:vi=\E[?25l\E[?1c:\
+ :vs=\E[?25h\E[?8c:\
+ :tc=klone+sgr:tc=ecma+color:
+linux-m|Linux console no color:\
+ :Co@:pa@:\
+ :AB@:AF@:Sb@:Sf@:tc=linux:
+linux-c-nc|linux console 1.3.x hack for ncurses only:\
+ :cc:\
+ :..Ic=\E]P%p1%x%p2%{255}%*%{1000}%/%02x%p3%{255}%*%{1000}%/%02x%p4%{255}%*%{1000}%/%02x:\
+ :oc=\E]R:\
+ :tc=linux:
+# From: Dennis Henriksen <opus@osrl.dk>, 9 July 1996
+linux-c|linux console 1.3.6+ with private palette for each virtual console:\
+ :cc:\
+ :Co#8:pa#64:\
+ :..Ic=\E]P%?%p1%{9}%>%t%p1%{10}%-%'a'%+%c%e%p1%d%;%p2%{255}%&%Pr%gr%{16}%/%Px%?%gx%{9}%>%t%gx%{10}%-%'A'%+%c%e%gx%d%;%gr%{15}%&%Px%?%gx%{9}%>%t%gx%{10}%-%'A'%+%c%e%gx%d%;%p3%{255}%&%Pr%gr%{16}%/%Px%?%gx%{9}%>%t%gx%{10}%-%'A'%+%c%e%gx%d%;%gr%{15}%&%Px%?%gx%{9}%>%t%gx%{10}%-%'A'%+%c%e%gx%d%;%p4%{255}%&%Pr%gr%{16}%/%Px%?%gx%{9}%>%t%gx%{10}%-%'A'%+%c%e%gx%d%;%gr%{15}%&%Px%?%gx%{9}%>%t%gx%{10}%-%'A'%+%c%e%gx%d%;:\
+ :oc=\E]R:\
+ :tc=linux:
+
+# See the note on ICH/ICH1 VERSUS RMIR/SMIR near the end of file
+linux-nic|linux with ich/ich1 suppressed for non-curses programs:\
+ :IC@:ei=:ic@:im=:\
+ :tc=linux:
+
+# This assumes you have used setfont(8) to load one of the Linux koi8-r fonts.
+# acsc entry from Pavel Roskin" <pavel@absolute.spb.su>, 29 Sep 1997.
+linux-koi8|linux with koi8 alternate character set:\
+ :ac=+\020\054\021-\030.^Y0\215`\004a\221f\234g\237h\220i\276j\205k\203l\202m\204n\212o~p\0q\0r\0s_t\206u\207v\211w\210x\201y\230z\231{\267|\274~\224:tc=linux:\
+ :tc=klone+koi8acs:
+
+# Another entry for KOI8-r with Qing Long's acsc.
+# (which one better complies with the standard?)
+linux-koi8r|linux with koi8-r alternate character set:\
+ :tc=linux:tc=klone+koi8acs:
+
+# Entry for the latin1 and latin2 fonts
+linux-lat|linux with latin1 or latin2 alternate character set:\
+ :ac=+\020\054\021-\030.^Y0\333`\004a\013f\370g\361h\260i\316j\211k\214l\206m\203n\305o~p\304q\212r\304s_t\207u\215v\301w\302x\205y\363z\362{\343|\330}\234~\376:\
+ :tc=linux:
+
+#### NetBSD consoles
+#
+# pcvt termcap database entries (corresponding to release 3.31)
+# Author's last edit-date: [Fri Sep 15 20:29:10 1995]
+#
+# (For the terminfo master file, I translated these into terminfo syntax.
+# Then I dropped all the pseudo-HP entries. we don't want and can't use
+# the :Xs: flag. Then I split :is: into a size-independent :i1: and a
+# size-dependent :is:. Finally, I added <rmam>/<smam> -- esr)
+
+# NOTE: :ic: has been taken out of this entry. for reference, it should
+# be <ich1=\E[@>. For discussion, see ICH/ICH1 VERSUS RMIR/SMIR below.
+# (esr: added :vi: and :ve: to resolve NetBSD Problem Report #4583)
+pcvtXX|pcvt vt200 emulator (DEC VT220):\
+ :am:km:mi:ms:xn:\
+ :it#8:vt#3:\
+ :AL=\E[%dL:DC=\E[%dP:DL=\E[%dM:DO=\E[%dB:IC=\E[%d@:\
+ :LE=\E[%dD:RA=\E[?7l:RI=\E[%dC:SA=\E[?7h:SF=\E[%dS:\
+ :SR=\E[%dT:UP=\E[%dA:\
+ :ac=++\054\054--..00``aaffgghhiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz~~:\
+ :ae=\E(B:al=\E[L:as=\E(0:bl=^G:cb=\E[1K:cd=\E[J:ce=\E[K:\
+ :cl=\E[H\E[J:cm=\E[%i%d;%dH:cr=^M:cs=\E[%i%d;%dr:\
+ :ct=\E[3g:dc=\E[P:dl=\E[M:do=\E[B:ei=\E[4l:ho=\E[H:\
+ :i1=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h:im=\E[4h:\
+ :k1=\E[17~:k2=\E[18~:k3=\E[19~:k4=\E[20~:k5=\E[21~:\
+ :k6=\E[23~:k7=\E[24~:k8=\E[25~:kD=\E[3~:kH=\E[4~:kI=\E[2~:\
+ :kN=\E[6~:kP=\E[5~:kb=\177:kd=\EOB:ke=\E[?1l\E>:kh=\E[1~:\
+ :kl=\EOD:kr=\EOC:ks=\E[?1h\E=:ku=\EOA:le=^H:mb=\E[5m:\
+ :md=\E[1m:me=\E[m:mr=\E[7m:nd=\E[C:nw=\EE:\
+ :r1=\Ec\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h:rc=\E8:\
+ :rf=/usr/share/tabset/vt100:sc=\E7:se=\E[27m:sf=\ED:\
+ :so=\E[7m:sr=\EM:st=\EH:ta=^I:ue=\E[24m:up=\E[A:us=\E[4m:\
+ :ve=\E[?25h:vi=\E[?25l:
+
+# NetBSD/FreeBSD vt220 terminal emulator console (pc keyboard & monitor)
+# termcap entries for pure VT220-Emulation and 25, 28, 35, 40, 43 and
+# 50 lines entries; 80 columns
+pcvt25|dec vt220 emulation with 25 lines:\
+ :co#80:li#25:\
+ :is=\E[1;25r\E[25;1H:tc=pcvtXX:
+pcvt28|dec vt220 emulation with 28 lines:\
+ :co#80:li#28:\
+ :is=\E[1;28r\E[28;1H:tc=pcvtXX:
+pcvt35|dec vt220 emulation with 35 lines:\
+ :co#80:li#35:\
+ :is=\E[1;35r\E[35;1H:tc=pcvtXX:
+pcvt40|dec vt220 emulation with 40 lines:\
+ :co#80:li#40:\
+ :is=\E[1;40r\E[40;1H:tc=pcvtXX:
+pcvt43|dec vt220 emulation with 43 lines:\
+ :co#80:li#43:\
+ :is=\E[1;43r\E[43;1H:tc=pcvtXX:
+pcvt50|dec vt220 emulation with 50 lines:\
+ :co#80:li#50:\
+ :is=\E[1;50r\E[50;1H:tc=pcvtXX:
+
+# NetBSD/FreeBSD vt220 terminal emulator console (pc keyboard & monitor)
+# termcap entries for pure VT220-Emulation and 25, 28, 35, 40, 43 and
+# 50 lines entries; 132 columns
+pcvt25w|dec vt220 emulation with 25 lines and 132 cols:\
+ :co#132:li#25:\
+ :is=\E[1;25r\E[25;1H:tc=pcvtXX:
+pcvt28w|dec vt220 emulation with 28 lines and 132 cols:\
+ :co#132:li#28:\
+ :is=\E[1;28r\E[28;1H:tc=pcvtXX:
+pcvt35w|dec vt220 emulation with 35 lines and 132 cols:\
+ :co#132:li#35:\
+ :is=\E[1;35r\E[35;1H:tc=pcvtXX:
+pcvt40w|dec vt220 emulation with 40 lines and 132 cols:\
+ :co#132:li#40:\
+ :is=\E[1;40r\E[40;1H:tc=pcvtXX:
+pcvt43w|dec vt220 emulation with 43 lines and 132 cols:\
+ :co#132:li#43:\
+ :is=\E[1;43r\E[43;1H:tc=pcvtXX:
+pcvt50w|dec vt220 emulation with 50 lines and 132 cols:\
+ :co#132:li#50:\
+ :is=\E[1;50r\E[50;1H:tc=pcvtXX:
+
+# Terminfo entries to enable the use of the ncurses library in colour on a
+# NetBSD-arm32 console (only tested on a RiscPC).
+# Created by Dave Millen <dmill@globalnet.co.uk> 22.07.98
+# modified codes for setf/setb to setaf/setab, then to klone+color, corrected
+# typo in invis - TD
+arm100|arm100-am|Arm(RiscPC) ncurses compatible (for 640x480):\
+ :am:ms:ut:xn:xo:\
+ :co#80:it#8:li#30:\
+ :@8=\E[M:DO=\E[%dB:K1=\E[q:K2=\E[r:K3=\E[s:K4=\E[p:K5=\E[n:\
+ :LE=\E[%dD:RA=\E[?7l:RI=\E[%dC:SA=\E[?7h:UP=\E[%dA:\
+ :ac=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~:\
+ :ae=^O:as=^N:bl=^G:cb=\E[1K:cd=\E[J:ce=\E[K:cl=\E[H\E[J:\
+ :cm=\E[%i%d;%dH:cr=^M:cs=\E[%i%d;%dr:ct=\E[3g:do=^J:\
+ :eA=\E(B\E)0:ho=\E[H:k0=\E[y:k1=\E[P:k2=\E[Q:k3=\E[R:\
+ :k4=\E[S:k5=\E[t:k6=\E[u:k7=\E[v:k8=\E[l:k9=\E[w:k;=\E[x:\
+ :kb=^H:kd=\E[B:ke=\E[?1l\E>:kl=\E[D:kr=\E[C:ks=\E[?1h\E=:\
+ :ku=\E[A:le=^H:mb=\E[5m:md=\E[1m:me=\E[m\017:mk=\E[8m:\
+ :mr=\E[6m:nd=\E[C:r2=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h:\
+ :rc=\E8:\
+ :..sa=\E[0%?%p1%p6%|%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;%?%p4%t;5%;m%?%p9%t\016%e\017%;:\
+ :sc=\E7:se=\E[m:sf=^J:so=\E[7m:sr=\EM:st=\EH:ta=^I:ue=\E[m:\
+ :up=\E[A:us=\E[4m:\
+ :tc=ecma+sgr:tc=klone+color:
+arm100-w|arm100-wam|Arm(RiscPC) ncurses compatible (for 1024x768):\
+ :co#132:li#50:tc=arm100:
+
+# NetBSD/x68k console vt200 emulator. This port runs on a 68K machine
+# manufactured by Sharp for the Japenese market.
+# From Minoura Makoto <minoura@netlaputa.or.jp>, 12 May 1996
+x68k|x68k-ite|NetBSD/x68k ITE:\
+ :co#96:li#32:\
+ :%1=\E[28~:kC=\E[9~:tc=vt220:
+
+# <tv@pobox.com>:
+# Entry for the DNARD OpenFirmware console, close to ANSI but not quite.
+#
+# (still unfinished, but good enough so far.)
+ofcons:\
+ :bw:\
+ :co#80:li#30:\
+ :AL=\233%dL:DC=\233%dP:DL=\233%dM:DO=\233%dB:IC=\233%d@:\
+ :LE=\233%dD:RI=\233%dC:UP=\233%dA:al=\233L:bl=^G:cd=\233J:\
+ :ce=\233K:cl=^L:cm=\233%i%d;%dH:cr=^M:dc=\233P:dl=\233M:\
+ :do=\233B:ei=:ic=\233@:im=:k1=\2330P:k2=\2330Q:k3=\2330W:\
+ :k4=\2330x:k5=\2330t:k6=\2330u:k7=\2330q:k8=\2330r:\
+ :k9=\2330p:k;=\2330M:kD=\233P:kN=\233/:kP=\233?:kb=^H:\
+ :kd=\233B:kl=\233D:kr=\233C:ku=\233A:le=\233D:mb=\2337;2m:\
+ :md=\2331m:me=\2330m:mh=\2332m:mk=\2338m:mr=\2337m:\
+ :nd=\233C:nw=^M^J:se=\2330m:sf=^J:ta=^I:ue=\2330m:up=\233A:\
+ :vb=^G:
+
+# NetBSD "wscons" emulator in vt220 mode
+# These are micro-minimal and probably need to be redone for real
+# after the manner of the pcvt entries.
+wsvt25|NetBSD wscons in 25 line DEC VT220 mode:\
+ :co#80:li#25:tc=vt220:
+
+wsvt25m|NetBSD wscons in 25 line DEC VT220 mode with Meta:\
+ :km:\
+ :co#80:li#25:tc=vt220:
+
+# `rasterconsole' provided by 4.4BSD, NetBSD and OpenBSD on SPARC, and
+# DECstation/pmax.
+rcons|BSD rasterconsole:\
+ :tc=sun-il:
+# Color version of above. Color currenly only provided by NetBSD.
+rcons-color|BSD rasterconsole with ANSI color:\
+ :ut:\
+ :Co#8:pa#64:\
+ :AB=\E[4%dm:AF=\E[3%dm:op=\E[m:tc=rcons:
+
+#### FreeBSD console entries
+#
+# From: Andrey Chernov <ache@astral.msk.su> 29 Mar 1996
+# Andrey Chernov maintains the FreeBSD termcap distributions.
+#
+# Note: Users of FreeBSD 2.1.0 and older versions must either upgrade
+# or comment out the :cb: capability in the console entry.
+#
+# Alexander Lukyanov reports:
+# I have seen FreeBSD-2.1.5R... The old el1 bug changed, but it is still there.
+# Now el1 clears not only to the line beginning, but also a large chunk
+# of previous line. But there is another bug - ech does not work at all.
+#
+
+# for syscons
+# common entry without semigraphics
+# Bug: The <op> capability resets attributes.
+# Bug? The ech and el1 attributes appear to move the cursor in some cases; for
+# instance el1 does if the cursor is moved to the right margin first. Removed
+# by T.Dickey 97/5/3 (ech=\E[%p1%dX, el1=\E[1K)
+#
+# Setting colors turns off reverse; we cannot guarantee order, so use ncv.
+# Note that this disables standout with color.
+cons25w|ansiw|ansi80x25-raw|freebsd console (25-line raw mode):\
+ :NP:am:bw:eo:ms:ut:\
+ :Co#8:NC#21:co#80:it#8:li#25:pa#64:\
+ :@7=\E[F:AB=\E[4%p1%dm:AF=\E[3%p1%dm:AL=\E[%dL:DC=\E[%dP:\
+ :DL=\E[%dM:DO=\E[%dB:F1=\E[W:F2=\E[X:IC=\E[%d@:K2=\E[E:\
+ :LE=\E[%dD:RI=\E[%dC:SF=\E[%dS:SR=\E[%dT:UP=\E[%dA:\
+ :al=\E[L:bl=^G:bt=\E[Z:cd=\E[J:ce=\E[K:ch=\E[%i%d`:\
+ :cl=\E[H\E[J:cm=\E[%i%d;%dH:cr=^M:cv=\E[%i%dd:dc=\E[P:\
+ :dl=\E[M:do=\E[B:ei=:ho=\E[H:ic=\E[@:im=:k1=\E[M:k2=\E[N:\
+ :k3=\E[O:k4=\E[P:k5=\E[Q:k6=\E[R:k7=\E[S:k8=\E[T:k9=\E[U:\
+ :k;=\E[V:kB=\E[Z:kD=\177:kI=\E[L:kN=\E[G:kP=\E[I:kb=^H:\
+ :kd=\E[B:kh=\E[H:kl=\E[D:kr=\E[C:ku=\E[A:le=^H:mb=\E[5m:\
+ :md=\E[1m:me=\E[m:mh=\E[30;1m:mr=\E[7m:nd=\E[C:nw=\E[E:\
+ :op=\E[x:r1=\E[x\E[m\Ec:se=\E[m:sf=\E[S:so=\E[7m:sr=\E[T:\
+ :ta=^I:up=\E[A:ve=\E[=0C:vs=\E[=1C:
+cons25|ansis|ansi80x25|freebsd console (25-line ansi mode):\
+ :ac=-\030.^Y0\333`\004a\260f\370g\361h\261i\025j\331k\277l\332m\300n\305q\304t\303u\264v\301w\302x\263y\363z\362~\371:\
+ :tc=cons25w:
+cons25-m|ansis-mono|ansi80x25-mono|freebsd console (25-line mono ansi mode):\
+ :Co@:pa@:\
+ :AB@:AF@:md@:mh@:op@:ue=\E[m:us=\E[4m:tc=cons25:
+cons30|ansi80x30|freebsd console (30-line ansi mode):\
+ :li#30:tc=cons25:
+cons30-m|ansi80x30-mono|freebsd console (30-line mono ansi mode):\
+ :li#30:tc=cons25-m:
+cons43|ansi80x43|freebsd console (43-line ansi mode):\
+ :li#43:tc=cons25:
+cons43-m|ansi80x43-mono|freebsd console (43-line mono ansi mode):\
+ :li#43:tc=cons25-m:
+cons50|ansil|ansi80x50|freebsd console (50-line ansi mode):\
+ :li#50:tc=cons25:
+cons50-m|ansil-mono|ansi80x50-mono|freebsd console (50-line mono ansi mode):\
+ :li#50:tc=cons25-m:
+cons60|ansi80x60|freebsd console (60-line ansi mode):\
+ :li#60:tc=cons25:
+cons60-m|ansi80x60-mono|freebsd console (60-line mono ansi mode):\
+ :li#60:tc=cons25-m:
+cons25r|pc3r|ibmpc3r|cons25-koi8-r|freebsd console w/koi8-r cyrillic:\
+ :ac=-\030.^Y0\215`\004a\220f\234h\221i\025j\205k\203l\202m\204n\212q\0t\206u\207v\211w\210x\201y\230z\231~\225:\
+ :tc=cons25w:
+cons25r-m|pc3r-m|ibmpc3r-mono|cons25-koi8r-m|freebsd console w/koi8-r cyrillic (mono):\
+ :Co@:pa@:\
+ :AB@:AF@:op@:ue=\E[m:us=\E[4m:tc=cons25r:
+cons50r|cons50-koi8r|freebsd console w/koi8-r cyrillic (50 lines):\
+ :li#50:tc=cons25r:
+cons50r-m|cons50-koi8r-m|freebsd console w/koi8-r cyrillic (50-line mono):\
+ :li#50:tc=cons25r-m:
+cons60r|cons60-koi8r|freebsd console w/koi8-r cyrillic (60 lines):\
+ :li#60:tc=cons25r:
+cons60r-m|cons60-koi8r-m|freebsd console w/koi8-r cyrillic (60-line mono):\
+ :li#60:tc=cons25r-m:
+# ISO 8859-1 FreeBSD console
+cons25l1|cons25-iso8859|freebsd console w/iso 8859-1 chars:\
+ :ac=+\253\054\273-\030.\031`\201a\202f\207g\210i\247j\213k\214l\215m\216n\217o\220p\221q\222r\223s\224t\225u\226v\227w\230x\231y\232z\233~\237:\
+ :tc=cons25w:
+cons25l1-m|cons25-iso-m|freebsd console w/iso 8859-1 chars (mono):\
+ :Co@:pa@:\
+ :AB@:AF@:md@:mh@:op@:ue=\E[m:us=\E[4m:tc=cons25l1:
+cons50l1|cons50-iso8859|freebsd console w/iso 8859-1 chars (50 lines):\
+ :li#50:tc=cons25l1:
+cons50l1-m|cons50-iso-m|freebsd console w/iso 8859-1 chars (50-line mono):\
+ :li#50:tc=cons25l1-m:
+cons60l1|cons60-iso|freebsd console w/iso 8859-1 chars (60 lines):\
+ :li#60:tc=cons25l1:
+cons60l1-m|cons60-iso-m|freebsd console w/iso 8859-1 chars (60-line mono):\
+ :li#60:tc=cons25l1-m:
+
+#### 386BSD and BSD/OS Consoles
+#
+
+# This was the original 386BSD console entry (I think).
+# Some places it's named oldpc3|oldibmpc3.
+# From: Alex R.N. Wetmore <aw2t@andrew.cmu.edu>
+origpc3|origibmpc3|IBM PC 386BSD Console:\
+ :am:bw:eo:xo:\
+ :co#80:li#25:\
+ :ac=j\331k\277l\332m\300n\305q\304t\303u\264v\301w\302x\263:\
+ :cd=\E[J:ce=\E[K:cl=\Ec:cm=\E[%i%2;%2H:do=\E[B:ho=\E[H:\
+ :kd=\E[B:kh=\E[Y:kl=\E[D:kr=\E[C:ku=\E[A:le=^H:md=\E[7m:\
+ :me=\E[m\E[1;0x\E[2;7x:nd=\E[C:se=\E[1;0x\E[2;7x:\
+ :sf=\E[S:so=\E[1;7x\E[2;0x:sr=\E[T:ue=\E[1;0x\E[2;7x:\
+ :up=\E[A:us=\E[1;7x\E[2;0x:
+
+# description of BSD/386 console emulator in version 1.0 (supplied by BSDI)
+oldpc3|oldibmpc3|old IBM PC BSD/386 Console:\
+ :km:\
+ :li#25:\
+ :al=\E[L:bl=^G:cr=^M:dl=\E[M:do=^J:kH=\E[F:kI=\E[L:kN=\E[G:\
+ :kP=\E[I:kb=^H:kd=\E[B:kh=\E[H:kl=\E[D:kr=\E[C:ku=\E[A:\
+ :md=\E[=15F:me=\E[=R:mh=\E[=8F:nw=^M^J:sf=^J:ta=^I:
+
+# Description of BSD/OS console emulator in version 1.1, 2.0, 2.1
+# Note, the emulator supports many of the additional console features
+# listed in the iBCS2 (e.g. character-set selection) though not all
+# are described here. This entry really ought to be upgraded.
+# Also note, the console will also work with fewer lines after doing
+# "stty rows NN", e.g. to use 24 lines.
+# (Color support from Kevin Rosenberg <kevin@cyberport.com>, 2 May 1996)
+# Bug: The <op> capability resets attributes.
+bsdos-pc-nobold|BSD/OS PC console w/o bold:\
+ :am:eo:km:xo:\
+ :co#80:it#8:li#25:\
+ :AL=\E[%dL:DL=\E[%dM:DO=\E[%dB:LE=\E[%dD:RI=\E[%dC:\
+ :UP=\E[%dA:al=\E[L:bl=^G:cd=\E[J:ce=\E[K:cl=\Ec:\
+ :cm=\E[%i%d;%dH:cr=^M:dl=\E[M:do=^J:ho=\E[H:kH=\E[F:\
+ :kI=\E[L:kN=\E[G:kP=\E[I:kb=^H:kd=\E[B:kh=\E[H:kl=\E[D:\
+ :kr=\E[C:ku=\E[A:le=^H:nd=\E[C:nw=^M^J:rc=\E8:\
+ :..sa=\E[0;10%?%p1%t;7%;%?%p3%t;7%;%?%p4%t;5%;%?%p6%t;1%;%?%p7%t;8%;%?%p9%t;11%;m%?%p5%t\E[=8F%;:\
+ :sc=\E7:sf=^J:ta=^I:up=\E[A:\
+ :tc=klone+sgr:tc=klone+color:
+bsdos-pc|IBM PC BSD/OS Console:\
+ :..sa=\E[0;10%?%p1%t;7%;%?%p2%t;1%;%?%p3%t;7%;%?%p4%t;5%;%?%p6%t;1%;%?%p7%t;8%;%?%p9%t;11%;m:tc=bsdos-pc-nobold:
+
+# Old names for BSD/OS PC console used in releases before 4.1.
+pc3|BSD/OS on the PC Console:\
+ :tc=bsdos-pc-nobold:
+ibmpc3|pc3-bold|BSD/OS on the PC Console with bold instead of underline:\
+ :tc=bsdos-pc:
+
+# BSD/OS on the SPARC
+bsdos-sparc|Sun SPARC BSD/OS Console:\
+ :tc=sun:
+
+# BSD/OS on the PowerPC
+bsdos-ppc|PowerPC BSD/OS Console:\
+ :tc=bsdos-pc:
+
+#### DEC VT100 and compatibles
+#
+# DEC terminals from the vt100 forward are collected here. Older DEC terminals
+# and micro consoles can be found in the `obsolete' section. More details on
+# the relationship between the VT100 and ANSI X3.64/ISO 6429/ECMA-48 may be
+# found near the end of this file.
+#
+# Except where noted, these entries are DEC's official terminfos.
+# Contact Bill Hedberg <hedberg@hannah.enet.dec.com> of Terminal Support
+# Engineering for more information. Updated terminfos and termcaps
+# are kept available at ftp://gatekeeper.dec.com/pub/DEC/termcaps.
+#
+# In October 1995 DEC sold its terminals business, including the VT and Dorio
+# line and trademark, to SunRiver Data Systems. SunRiver has since changed
+# its name to Boundless Technologies; see http://www.boundless.com.
+#
+
+# NOTE: Any VT100 emulation, whether in hardware or software, almost
+# certainly includes what DEC called the `Level 1 editing extension' codes;
+# only the very oldest VT100s lacked these and there probably aren't any of
+# those left alive. To capture these, use one of the VT102 entries.
+#
+# Note that the :xn: glitch in vt100 is not quite the same as on the Concept,
+# since the cursor is left in a different position while in the
+# weird state (concept at beginning of next line, vt100 at end
+# of this line) so all versions of vi before 3.7 don't handle
+# :xn: right on vt100. The correct way to handle :xn: is when
+# you output the char in column 80, immediately output CR LF
+# and then assume you are in column 1 of the next line. If :xn:
+# is on, am should be on too.
+#
+# I assume you have smooth scroll off or are at a slow enough baud
+# rate that it doesn't matter (1200? or less). Also this assumes
+# that you set auto-nl to "on", if you set it off use vt100-nam
+# below.
+#
+# The padding requirements listed here are guesses. It is strongly
+# recommended that xon/xoff be enabled, as this is assumed here.
+#
+# The vt100 uses <rs2> and <rf> rather than :is:/:ct:/:st: because the
+# tab settings are in non-volatile memory and don't need to be
+# reset upon login. Also setting the number of columns glitches
+# the screen annoyingly. You can type "reset" to get them set.
+#
+# The VT100 series terminals have cursor ("arrows") keys which can operate
+# in two different modes: Cursor Mode and Application Mode. Cursor Mode
+# is the reset state, and is assumed to be the normal state. Application
+# Mode is the "set" state. In Cursor Mode, the cursor keys transmit
+# "Esc [ {code}" sequences, conforming to ANSI standards. In Application
+# Mode, the cursor keys transmit "Esc O <code>" sequences. Application Mode
+# was provided primarily as an aid to the porting of VT52 applications. It is
+# assumed that the cursor keys are normally in Cursor Mode, and expected that
+# applications such as vi will always transmit the :ks: string. Therefore,
+# the definitions for the cursor keys are made to match what the terminal
+# transmits after the :ks: string is transmitted. If the :ks: string
+# is a null string or is not defined, then cursor keys are assumed to be in
+# "Cursor Mode", and the cursor keys definitions should match that assumption,
+# else the appication may fail. It is also expected that applications will
+# always transmit the :ke: string to the terminal before they exit.
+#
+# The VT100 series terminals have an auxilliary keypad, commonly referred to as
+# the "Numeric Keypad", because it is a cluster of numeric and function keys.
+# The Numeric Keypad which can operate in two different modes: Numeric Mode and
+# Application Mode. Numeric Mode is the reset state, and is assumed to be
+# the normal state. Application Mode is the "set" state. In Numeric Mode,
+# the numeric and punctuation keys transmit ASCII 7-bit characters, and the
+# Enter key transmits the same as the Return key (Note: the Return key
+# can be configured to send either LF (\015) or CR LF). In Application Mode,
+# all the keypad keys transmit "Esc O {code}" sequences. The PF1 - PF4 keys
+# always send the same "Esc O {code}" sequences. It is assumed that the keypad
+# is normally in Numeric Mode. If an application requires that the keypad be
+# in Application Mode then it is expected that the user, or the application,
+# will set the TERM environment variable to point to a terminfo entry which has
+# defined the :ks: string to include the codes that switch the keypad into
+# Application Mode, and the terminfo entry will also define function key
+# fields to match the Application Mode control codes. If the :ks: string
+# is a null string or is not defined, then the keypad is assumed to be in
+# Numeric Mode. If the :ks: string switches the keypad into Application
+# Mode, it is expected that the :ke: string will contain the control codes
+# necessary to reset the keypad to "Normal" mode, and it is also expected that
+# applications which transmit the :ks: string will also always transmit the
+# :ke: string to the terminal before they exit.
+#
+# Here's a diagram of the VT100 keypad keys with their bindings.
+# The top line is the name of the key (some DEC keyboards have the keys
+# labelled somewhat differently, like GOLD instead of PF1, but this is
+# the most "official" name). The second line is the escape sequence it
+# generates in Application Keypad mode (where "$" means the ESC
+# character). The third line contains two items, first the mapping of
+# the key in terminfo, and then in termcap.
+# _______________________________________
+# | PF1 | PF2 | PF3 | PF4 |
+# | $OP | $OQ | $OR | $OS |
+# |_kf1__k1_|_kf2__k2_|_kf3__k3_|_kf4__k4_|
+# | 7 8 9 - |
+# | $Ow | $Ox | $Oy | $Om |
+# |_kf9__k9_|_kf10_k;_|_kf0__k0_|_________|
+# | 4 | 5 | 6 | , |
+# | $Ot | $Ou | $Ov | $Ol |
+# |_kf5__k5_|_kf6__k6_|_kf7__k7_|_kf8__k8_|
+# | 1 | 2 | 3 | |
+# | $Oq | $Or | $Os | enter |
+# |_ka1__K1_|_kb2__K2_|_ka3__K3_| $OM |
+# | 0 | . | |
+# | $Op | $On | |
+# |___kc1_______K4____|_kc3__K5_|_kent_@8_|
+#
+# And here, for those of you with orphaned VT100s lacking documentation, is
+# a description of the soft switches invoked when you do `Set Up'.
+#
+# Scroll 0-Jump Shifted 3 0-#
+# | 1-Smooth | 1-British pound sign
+# | Autorepeat 0-Off | Wrap Around 0-Off
+# | | 1-On | | 1-On
+# | | Screen 0-Dark Bkg | | New Line 0-Off
+# | | | 1-Light Bkg | | | 1-On
+# | | | Cursor 0-Underline | | | Interlace 0-Off
+# | | | | 1-Block | | | | 1-On
+# | | | | | | | |
+# 1 1 0 1 1 1 1 1 0 1 0 0 0 0 1 0 <--Standard Settings
+# | | | | | | | |
+# | | | Auto XON/XOFF 0-Off | | | Power 0-60 Hz
+# | | | 1-On | | | 1-50 Hz
+# | | Ansi/VT52 0-VT52 | | Bits Per Char. 0-7 Bits
+# | | 1-ANSI | | 1-8 Bits
+# | Keyclick 0-Off | Parity 0-Off
+# | 1-On | 1-On
+# Margin Bell 0-Off Parity Sense 0-Odd
+# 1-On 1-Even
+#
+# The following SET-UP modes are assumed for normal operation:
+# ANSI_MODE AUTO_XON/XOFF_ON NEWLINE_OFF 80_COLUMNS
+# WRAP_AROUND_ON JUMP_SCROLL_OFF
+# Other SET-UP modes may be set for operator convenience or communication
+# requirements; I recommend
+# AUTOREPEAT_ON BLOCK_CURSOR MARGIN_BELL_OFF SHIFTED_3_#
+# Unless you have a graphics add-on such as Digital Engineering's VT640
+# (and even then, whenever it can be arranged!) you should set
+# INTERLACE_OFF
+#
+# (vt100: I added <rmam>/<smam> based on the init string, also :bs:. -- esr)
+vt100|vt100-am|dec vt100 (w/advanced video):\
+ :am:bs:ms:xn:xo:\
+ :co#80:it#8:li#24:vt#3:\
+ :@8=\EOM:DO=\E[%dB:K1=\EOq:K2=\EOr:K3=\EOs:K4=\EOp:K5=\EOn:\
+ :LE=\E[%dD:RA=\E[?7l:RI=\E[%dC:SA=\E[?7h:UP=\E[%dA:\
+ :ac=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~:\
+ :ae=^O:as=^N:bl=^G:cb=\E[1K:cd=\E[J:ce=\E[K:cl=\E[H\E[J:\
+ :cm=\E[%i%d;%dH:cr=^M:cs=\E[%i%d;%dr:ct=\E[3g:do=^J:\
+ :eA=\E(B\E)0:ho=\E[H:k0=\EOy:k1=\EOP:k2=\EOQ:k3=\EOR:\
+ :k4=\EOS:k5=\EOt:k6=\EOu:k7=\EOv:k8=\EOl:k9=\EOw:k;=\EOx:\
+ :kb=^H:kd=\EOB:ke=\E[?1l\E>:kl=\EOD:kr=\EOC:ks=\E[?1h\E=:\
+ :ku=\EOA:le=^H:mb=\E[5m:md=\E[1m:me=\E[m\017:mr=\E[7m:\
+ :nd=\E[C:r2=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h:rc=\E8:\
+ :..sa=\E[0%?%p1%p6%|%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;%?%p4%t;5%;m%?%p9%t\016%e\017%;:\
+ :sc=\E7:se=\E[m:sf=^J:so=\E[7m:sr=\EM:st=\EH:ta=^I:ue=\E[m:\
+ :up=\E[A:us=\E[4m:
+vt100nam|vt100-nam|vt100 no automargins:\
+ :am@:xn@:tc=vt100-am:
+vt100-vb|dec vt100 (w/advanced video) & no beep:\
+ :bl@:vb=\E[?5h\E[?5l:tc=vt100:
+
+# Ordinary vt100 in 132 column ("wide") mode.
+vt100-w|vt100-w-am|dec vt100 132 cols (w/advanced video):\
+ :co#132:li#24:\
+ :r2=\E>\E[?3h\E[?4l\E[?5l\E[?8h:tc=vt100-am:
+vt100-w-nam|vt100-nam-w|dec vt100 132 cols (w/advanced video no automargin):\
+ :co#132:li#14:vt@:\
+ :r2=\E>\E[?3h\E[?4l\E[?5l\E[?8h:tc=vt100-nam:
+
+# vt100 with no advanced video.
+vt100-nav|vt100 without advanced video option:\
+ :sg#1:\
+ :mb@:md@:me@:mr@:sa@:se=\E[m:so=\E[7m:ue@:us@:tc=vt100:
+vt100-nav-w|vt100-w-nav|dec vt100 132 cols 14 lines (no advanced video option):\
+ :co#132:li#14:tc=vt100-nav:
+
+# vt100 with one of the 24 lines used as a status line.
+# We put the status line on the top.
+vt100-s|vt100-s-top|vt100-top-s|vt100 for use with top sysline:\
+ :es:hs:\
+ :li#23:\
+ :cl=\E[2;1H\E[J:cm=\E[%i%+^A;%dH:cs=\E[%i%i%d;%dr:\
+ :ds=\E7\E[1;24r\E8:fs=\E8:ho=\E[2;1H:is=\E7\E[2;24r\E8:\
+ :ts=\E7\E[1;%p1%dH\E[1K:\
+ :tc=vt100-am:
+
+# Status line at bottom.
+# Clearing the screen will clobber status line.
+vt100-s-bot|vt100-bot-s|vt100 for use with bottom sysline:\
+ :es:hs:\
+ :li#23:\
+ :ds=\E7\E[1;24r\E8:fs=\E8:is=\E[1;23r\E[23;1H:\
+ :ts=\E7\E[24;%p1%dH\E[1K:\
+ :tc=vt100-am:
+
+# Most of the `vt100' emulators out there actually emulate a vt102
+# This entry (or vt102-nsgr) is probably the right thing to use for
+# these.
+vt102|dec vt102:\
+ :mi:\
+ :al=\E[L:dc=\E[P:dl=\E[M:ei=\E[4l:im=\E[4h:tc=vt100:
+vt102-w|dec vt102 in wide mode:\
+ :co#132:\
+ :r3=\E[?3h:tc=vt102:
+
+# Many brain-dead PC comm programs that pretend to be `vt100-compatible'
+# fail to interpret the ^O and ^N escapes properly. Symptom: the :me:
+# string in the canonical vt100 entry above leaves the screen littered
+# with little snowflake or star characters (IBM PC ROM character \017 = ^O)
+# after highlight turnoffs. This entry should fix that, and even leave
+# ACS support working, at the cost of making multiple-highlight changes
+# slightly more expensive.
+# From: Eric S. Raymond <esr@snark.thyrsus.com> July 22 1995
+vt102-nsgr|vt102 no sgr (use if you see snowflakes after highlight changes):\
+ :me=\E[m:sa@:\
+ :tc=vt102:
+
+# VT125 Graphics CRT. Clear screen also erases graphics
+vt125|vt125 graphics terminal:\
+ :cl=\E[H\E[2J\EPpS(E)\E\:tc=vt100:
+
+# This isn't a DEC entry, it came from University of Wisconsin.
+# (vt131: I added <rmam>/<smam> based on the init string, also :bs: -- esr)
+vt131|dec vt131:\
+ :am:bs:xn:\
+ :co#80:it#8:li#24:vt#3:\
+ :RA=\E[?7h:SA=\E[?7h:bl=^G:cd=50\E[J:ce=3\E[K:\
+ :cl=50\E[;H\E[2J:cm=5\E[%i%d;%dH:cr=^M:cs=\E[%i%d;%dr:\
+ :do=^J:ho=\E[H:is=\E[1;24r\E[24;1H:k1=\EOP:k2=\EOQ:\
+ :k3=\EOR:k4=\EOS:kb=^H:kd=\EOB:ke=\E[?1l\E>:kl=\EOD:\
+ :kr=\EOC:ks=\E[?1h\E=:ku=\EOA:le=^H:mb=2\E[5m:md=2\E[1m:\
+ :me=2\E[m:mr=2\E[7m:nd=2\E[C:nw=^M^J:\
+ :r1=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h:rc=\E8:sc=\E7:\
+ :se=2\E[m:so=2\E[7m:sr=5\EM:ta=^I:ue=2\E[m:up=2\E[A:\
+ :us=2\E[4m:
+
+# vt132 - like vt100 but slower and has ins/del line and such.
+# I'm told that :im:/:ei: are backwards in the terminal from the
+# manual and from the ANSI standard, this describes the actual
+# terminal. I've never actually used a vt132 myself, so this
+# is untested.
+#
+vt132|DEC vt132:\
+ :xn:\
+ :al=\E[L:dc=\E[P:dl=\E[M:ei=\E[4h:im=\E[4l:ip=:sf=\n:tc=vt100:
+
+# This vt220 description maps F5--F9 to the second block of function keys
+# at the top of the keyboard. The "DO" key is used as F10 to avoid conflict
+# with the key marked (ESC) on the vt220. See vt220d for an alternate mapping.
+# PF1--PF4 are used as F1--F4.
+#
+vt220-old|vt200-old|DEC VT220 in vt100 emulation mode:\
+ :am:bs:mi:pt:xn:xo:\
+ :co#80:li#24:vt#3:\
+ :@7=\E[4~:RA=\E[?7l:SA=\E[?7h:\
+ :ac=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~:\
+ :ae=\E(B:al=\E[L:as=\E(0:bl=^G:cd=\E[J:ce=\E[K:\
+ :cl=\E[H\E[2J:cm=\E[%i%d;%dH:cr=^M:cs=\E[%i%d;%dr:\
+ :dc=\E[P:dl=\E[M:do=\E[B:ei=\E[4l:ho=\E[H:\
+ :if=/usr/share/tabset/vt100:im=\E[4h:\
+ :is=\E[1;24r\E[24;1H:k1=\EOP:k2=\EOQ:k3=\EOR:k4=\EOS:\
+ :k5=\E[17~:k6=\E[18~:k7=\E[19~:k8=\E[20~:k9=\E[21~:\
+ :k;=\E[29~:kD=\E[3~:kI=\E[2~:kN=\E[6~:kP=\E[5~:kb=^H:\
+ :kd=\E[B:kh=\E[1~:kl=\E[D:kr=\E[C:ku=\E[A:le=^H:mb=\E[5m:\
+ :md=\E[1m:me=\E[m:mr=\E[7m:nd=\E[C:nl=^J:\
+ :r2=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h:rc=\E8:\
+ :rf=/usr/share/tabset/vt100:\
+ :..sa=\E[0%?%p6%t;1%;%?%p2%t;4%;%?%p4%t;5%;%?%p1%p3%|%t;7%;m%?%p9%t\E(0%e\E(B%;:\
+ :sc=\E7:se=\E[27m:sf=20\ED:so=\E[7m:sr=14\EM:ta=^I:\
+ :ue=\E[24m:up=\E[A:us=\E[4m:ve=\E[?25h:vi=\E[?25l:
+
+# A much better description of the VT200/220; used to be vt220-8
+# (untranslatable capabilities removed to fit entry within 1023 bytes)
+# (sgr removed to fit entry within 1023 bytes)
+# (terminfo-only capabilities suppressed to fit entry within 1023 bytes)
+vt220|vt200|dec vt220:\
+ :am:bs:mi:ms:xn:xo:\
+ :co#80:it#8:li#24:vt#3:\
+ :AL=\E[%dL:DC=\E[%dP:DL=\E[%dM:DO=\E[%dB:IC=\E[%d@:\
+ :LE=\E[%dD:RI=\E[%dC:UP=\E[%dA:ae=^O:al=\E[L:as=^N:bl=^G:\
+ :cd=\E[J:ce=\E[K:cl=\E[H\E[J:cm=\E[%i%d;%dH:cr=^M:\
+ :cs=\E[%i%d;%dr:ct=\E[3g:dc=\E[P:dl=\E[M:do=^J:ec=\E[%dX:\
+ :ei=\E[4l:ho=\E[H:if=/usr/share/tabset/vt100:im=\E[4h:\
+ :is=\E[?7h\E[>\E[?1h\E F\E[?4l:k1=\EOP:k2=\EOQ:k3=\EOR:\
+ :k4=\EOS:k6=\E[17~:k7=\E[18~:k8=\E[19~:k9=\E[20~:kI=\E[2~:\
+ :kN=\E[6~:kP=\E[5~:kb=^H:kd=\E[B:kh=\E[H:kl=\E[D:kr=\E[C:\
+ :ku=\E[A:le=^H:mb=\E[5m:md=\E[1m:me=\E[m:mr=\E[7m:nd=\E[C:\
+ :nw=\EE:rc=\E8:sc=\E7:se=\E[27m:sf=\ED:so=\E[7m:sr=\EM:\
+ :st=\EH:ta=^I:ue=\E[24m:up=\E[A:us=\E[4m:vb=\E[?5h\E[?5l:
+vt220-w|vt200-w|DEC vt220 in wide mode:\
+ :co#132:\
+ :r3=\E[?3h:tc=vt220:
+# (untranslatable capabilities removed to fit entry within 1023 bytes)
+# (sgr removed to fit entry within 1023 bytes)
+# (terminfo-only capabilities suppressed to fit entry within 1023 bytes)
+vt220-8bit|vt220-8|vt200-8bit|vt200-8|dec vt220/200 in 8-bit mode:\
+ :am:bs:mi:ms:xn:xo:\
+ :co#80:it#8:li#24:vt#3:\
+ :AL=\233%dL:DC=\233%dP:DL=\233%dM:DO=\233%dB:IC=\233%d@:\
+ :LE=\233%dD:RI=\233%dC:UP=\233%dA:ae=^O:al=\233L:as=^N:\
+ :bl=^G:cd=\233J:ce=\233K:cl=\233H\233J:cm=\233%i%d;%dH:\
+ :cr=^M:cs=\233%i%d;%dr:ct=\2333g:dc=\233P:dl=\233M:do=^J:\
+ :ec=\233%dX:ei=\2334l:ho=\233H:\
+ :if=/usr/share/tabset/vt100:im=\2334h:\
+ :is=\233?7h\233>\233?1h\E F\233?4l:k1=\EOP:k2=\EOQ:\
+ :k3=\EOR:k4=\EOS:k6=\23317~:k7=\23318~:k8=\23319~:\
+ :k9=\23320~:kI=\2332~:kN=\2336~:kP=\2335~:kb=^H:kd=\233B:\
+ :kh=\233H:kl=\233D:kr=\233C:ku=\233A:le=^H:mb=\2335m:\
+ :md=\2331m:me=\233m:mr=\2337m:nd=\233C:nw=\EE:rc=\E8:\
+ :sc=\E7:se=\23327m:sf=\ED:so=\2337m:sr=\EM:st=\EH:ta=^I:\
+ :ue=\23324m:up=\233A:us=\2334m:vb=\233?5h\233?5l:
+
+#
+# vt220d:
+# This vt220 description regards F6--F10 as the second block of function keys
+# at the top of the keyboard. This mapping follows the description given
+# in the VT220 Programmer Reference Manual and agrees with the labeling
+# on some terminals that emulate the vt220. There is no support for an F5.
+# See vt220 for an alternate mapping.
+#
+vt220d|DEC VT220 in vt100 mode with DEC function key labeling:\
+ :F1=\E[23~:F2=\E[24~:F3=\E[25~:F4=\E[26~:F5=\E[28~:\
+ :F6=\E[29~:F7=\E[31~:F8=\E[32~:F9=\E[33~:FA=\E[34~:k5@:\
+ :k6=\E[17~:k7=\E[18~:k8=\E[19~:k9=\E[20~:k;=\E[21~:\
+ :tc=vt220-old:
+
+vt220-nam|v200-nam|VT220 in vt100 mode with no auto margins:\
+ :am@:\
+ :r2=\E>\E[?3l\E[?4l\E[?5l\E[?7l\E[?8h:tc=vt220:
+
+# vt220 termcap written Tue Oct 25 20:41:10 1988 by Alex Latzko
+# (not an official DEC entry!)
+# The problem with real vt220 terminals is they don't send escapes when in
+# in vt220 mode. This can be gotten around two ways. 1> don't send
+# escapes or 2> put the vt220 into vt100 mode and use all the nifty
+# features of vt100 advanced video which it then has.
+#
+# This entry takes the view of putting a vt220 into vt100 mode so
+# you can use the escape key in emacs and everything else which needs it.
+#
+# You probably don't want to use this on a VMS machine since VMS will think
+# it has a vt220 and will get fouled up coming out of emacs
+#
+# From: Alexander Latzko <latzko@marsenius.rutgers.edu>, 30 Dec 1996
+# (Added vt100 :rc:,:sc: to quiet a tic warning -- esr)
+vt200-js|vt220-js|dec vt200 series with jump scroll:\
+ :am:\
+ :co#80:\
+ :al=\E[L:bl=^G:cd=\E[J:ce=\E[K:cl=\E[H\E[J:cm=\E[%i%d;%dH:\
+ :cr=^M:cs=\E[%i%d;%dr:dc=\E[P:dl=\E[M:dm=:do=^J:ed=:\
+ :ei=\E[4l:ho=\E[H:im=\E[4h:\
+ :is=\E[61"p\E[H\E[?3l\E[?4l\E[?1l\E[?5l\E[?6l\E[?7h\E[?8h\E[?25h\E>\E[m:\
+ :k1=\EOP:k2=\EOQ:k3=\EOR:k4=\EOS:kb=^H:kd=\EOB:\
+ :ke=\E[?1l\E>:kl=\EOD:kr=\EOC:ks=\E[?1h\E=:ku=\EOA:le=^H:\
+ :nw=^M\ED:r1=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h:rc=\E8:\
+ :rf=/usr/lib/tabset/vt100:sc=\E7:se=5\E[27m:sf=\ED:\
+ :so=5\E[7m:sr=\EM:ta=^I:ue=\E[24m:up=\E[A:us=\E[4m:
+
+
+# This was DEC's vt320. Use the purpose-built one below instead
+#vt320|DEC VT320 in vt100 emulation mode,
+# use=vt220,
+
+#
+# Use v320n for SCO's LYRIX. Otherwise, use Adam Thompson's vt320-nam.
+#
+vt320nam|v320n|DEC VT320 in vt100 emul. mode with NO AUTO WRAP mode:\
+ :am@:\
+ :r2=\E>\E[?3l\E[?4l\E[?5l\E[?7l\E[?8h:tc=vt220:
+
+# These entries are not DEC's official ones, they were purpose-built for the
+# VT320. Here are the designer's notes:
+# <kel> is end on a PC kbd. Actually 'select' on a VT. Mapped to
+# 'Erase to End of Field'... since nothing seems to use 'end' anyways...
+# khome is Home on a PC kbd. Actually 'FIND' on a VT.
+# Things that use <knxt> usually use tab anyways... and things that don't use
+# tab usually use <knxt> instead...
+# kprv is same as tab - Backtab is useless...
+# I left out :sa: because of its RIDICULOUS complexity,
+# and the resulting fact that it causes the termcap translation of the entry
+# to SMASH the 1k-barrier...
+# From: Adam Thompson <athompso@pangea.ca> Sept 10 1995
+# (vt320: uncommented :fs:, comnmmented out <kslt> to avoid a conflict --esr)
+# (untranslatable capabilities removed to fit entry within 1023 bytes)
+# (sgr removed to fit entry within 1023 bytes)
+# (terminfo-only capabilities suppressed to fit entry within 1023 bytes)
+vt320|vt300|dec vt320 7 bit terminal:\
+ :am:es:hs:mi:ms:xn:\
+ :co#80:li#24:ws#80:\
+ :AL=\E[%dL:DC=\E[%dP:DL=\E[%dM:DO=\E[%dB:IC=\E[%d@:\
+ :K1=\EOw:K2=\EOu:K3=\EOy:K4=\EOq:K5=\EOs:LE=\E[%dD:\
+ :RI=\E[%dC:UP=\E[%dA:ae=\E(B:al=\E[L:as=\E(0:bl=^G:cd=\E[J:\
+ :ce=\E[K:cl=\E[H\E[2J:cm=\E[%i%d;%dH:cr=^M:\
+ :cs=\E[%i%d;%dr:ct=\E[3g:dc=\E[P:dl=\E[M:do=^J:ec=\E[%dX:\
+ :ei=\E[4l:fs=\E[0$}:ho=\E[H:im=\E[4h:\
+ :is=\E>\E[?3l\E[?4l\E[5?l\E[?7h\E[?8h\E[1;24r\E[24;1H:\
+ :k1=\EOP:k2=\EOQ:k3=\EOR:k4=\EOS:k6=\E[17~:k7=\E[18~:\
+ :k8=\E[19~:k9=\E[20~:kD=\E[3~:kI=\E[2~:kN=\E[6~:kP=\E[5~:\
+ :kb=\177:kd=\EOB:ke=\E[?1l\E>:kh=\E[1~:kl=\EOD:kr=\EOC:\
+ :ks=\E[?1h\E=:ku=\EOA:le=^H:mb=\E[5m:md=\E[1m:me=\E[m:\
+ :mr=\E[7m:nd=\E[C:nw=\EE:rc=\E8:sc=\E7:se=\E[m:sf=\ED:\
+ :so=\E[7m:sr=\EM:st=\EH:ta=^I:ts=\E[1$}\E[H\E[K:ue=\E[m:\
+ :up=\E[A:us=\E[4m:ve=\E[?25h:vi=\E[?25l:
+vt320-nam|vt300-nam|dec vt320 7 bit terminal with no am to make SAS happy:\
+ :am@:\
+ :is=\E>\E[?3l\E[?4l\E[5?l\E[?7l\E[?8h\E[1;24r\E[24;1H:\
+ :r2=\E>\E[?3l\E[?4l\E[5?l\E[?7l\E[?8h\E[1;24r\E[24;1H:\
+ :tc=vt320:
+# We have to init 132-col mode, not 80-col mode.
+vt320-w|vt300-w|dec vt320 wide 7 bit terminal:\
+ :co#132:ws#132:\
+ :is=\E>\E[?3h\E[?4l\E[5?l\E[?7h\E[?8h\E[1;24r\E[24;1H:\
+ :r2=\E>\E[?3h\E[?4l\E[5?l\E[?7h\E[?8h\E[1;24r\E[24;1H:\
+ :tc=vt320:
+vt320-w-nam|vt300-w-nam|dec vt320 wide 7 bit terminal with no am:\
+ :am@:\
+ :is=\E>\E[?3h\E[?4l\E[5?l\E[?7l\E[?8h\E[1;24r\E[24;1H:\
+ :r2=\E>\E[?3h\E[?4l\E[5?l\E[?7l\E[?8h\E[1;24r\E[24;1H:\
+ :tc=vt320-w:
+
+# VT330 and VT340 -- These are ReGIS and SIXEL graphics terminals
+# which are pretty much a superset of the VT320. They have the
+# host writable status line, yet another different DRCS matrix size,
+# and such, but they add the DEC Technical character set, Multiple text
+# pages, selectable length pages, and the like. The difference between
+# the vt330 and vt340 is that the latter has only 2 planes and a monochrome
+# monitor, the former has 4 planes and a color monitor. These terminals
+# support VT131 and ANSI block mode, but as with much of these things,
+# termcap/terminfo doesn't deal with these features.
+#
+# Note that this entry is are set up in what was the standard way for GNU
+# Emacs v18 terminal modes to deal with the cursor keys in that the arrow
+# keys were switched into application mode at the same time the numeric pad
+# is switched into application mode. This changes the definitions of the
+# arrow keys. Emacs v19 is smarter and mines its keys directly out of
+# your termcap or terminfo entry,
+#
+# From: Daniel Glasser <dag@persoft.persoft.com>, 13 Oct 1993
+# (vt340: string capability "sb=\E[M" corrected to "sr";
+# also, added <rmam>/<smam> based on the init string -- esr)
+vt340|dec-vt340|vt330|dec-vt330|dec vt340 graphics terminal with 24 line page:\
+ :am:es:hs:mi:ms:xn:xo:\
+ :co#80:it#8:li#24:vt#3:\
+ :AL=\E[%dL:DC=\E[%dP:DL=\E[%dM:DO=\E[%dB:IC=\E[%d@:\
+ :LE=\E[%dD:RA=\E[?7l:RI=\E[%dC:SA=\E[?7h:UP=\E[%dA:\
+ :ac=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~:\
+ :ae=^O:al=\E[L:as=^N:cd=\E[J:ce=\E[K:cl=\E[H\E[J:\
+ :cm=\E[%i%d;%dH:cr=^M:cs=\E[%i%d;%dr:ct=\E[3g:dc=\E[P:\
+ :dl=\E[M:do=^J:ds=\E[2$~\r\E[1$}\E[K\E[$}:ei=\E[4l:\
+ :fs=\E[$}:ho=\E[H:im=\E[4h:\
+ :is=\E<\E F\E>\E[?1h\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h\E[1;24r\E[24;1H:\
+ :k1=\EOP:k2=\EOQ:k3=\EOR:k4=\EOS:k6=\E[17~:k7=\E[18~:\
+ :k8=\E[19~:k9=\E[20~:kb=^H:kd=\EOB:ke=\E[?1l\E>:kl=\EOD:\
+ :kr=\EOC:ks=\E[?1h\E=:ku=\EOA:l1=pf1:l2=pf2:l3=pf3:l4=pf4:\
+ :le=^H:mb=\E[5m:md=\E[1m:me=\E[m:mr=\E[7m:nd=\E[C:nw=^M\ED:\
+ :r1=\E[?3l:rc=\E8:rf=/usr/share/tabset/vt300:sc=\E7:\
+ :se=\E[27m:sf=\ED:so=\E[7m:sr=\EM:st=\EH:ta=^I:\
+ :ts=\E[2$~\E[1$}\E[1;%dH:ue=\E[24m:up=\E[A:us=\E[4m:\
+ :vb=200\E[?5h\E[?5l:ve=\E[?25h:vi=\E[?25l:vs=\E[?25h:
+
+# DEC doesn't supply a vt400 description, so we add Daniel Glasser's
+# (originally written with vt420 as its primary name, and usable for it).
+#
+# VT400/420 -- This terminal is a superset of the vt320. It adds the multiple
+# text pages and long text pages with selectable length of the vt340, along
+# with left and right margins, rectangular area text copy, fill, and erase
+# operations, selected region character attribute change operations,
+# page memory and rectangle checksums, insert/delete column, reception
+# macros, and other features too numerous to remember right now. TERMCAP
+# can only take advantage of a few of these added features.
+#
+# Note that this entry is are set up in what was the standard way for GNU
+# Emacs v18 terminal modes to deal with the cursor keys in that the arrow
+# keys were switched into application mode at the same time the numeric pad
+# is switched into application mode. This changes the definitions of the
+# arrow keys. Emacs v19 is smarter and mines its keys directly out of
+# your termcap entry,
+#
+# From: Daniel Glasser <dag@persoft.persoft.com>, 13 Oct 1993
+# (vt400: string capability ":sb=\E[M:" corrected to ":sr=\E[M:";
+# also, added <rmam>/<smam> based on the init string -- esr)
+# (untranslatable capabilities removed to fit entry within 1023 bytes)
+# (sgr removed to fit entry within 1023 bytes)
+# (terminfo-only capabilities suppressed to fit entry within 1023 bytes)
+vt400|vt400-24|dec-vt400|dec vt400 24x80 column autowrap:\
+ :am:es:hs:mi:ms:xn:xo:\
+ :co#80:it#8:li#24:vt#3:\
+ :AL=\E[%dL:DC=\E[%dP:DL=\E[%dM:DO=\E[%dB:IC=\E[%d@:\
+ :LE=\E[%dD:RI=\E[%dC:UP=\E[%dA:ae=^O:al=\E[L:as=^N:\
+ :cd=10\E[J:ce=4\E[K:cl=10\E[H\E[J:cm=\E[%i%d;%dH:cr=^M:\
+ :cs=\E[%i%d;%dr:ct=\E[3g:dc=\E[P:dl=\E[M:do=^J:\
+ :ds=\E[2$~\r\E[1$}\E[K\E[$}:ei=\E[4l:fs=\E[$}:ho=\E[H:\
+ :ic=\E[@:im=\E[4h:\
+ :is=\E<\E F\E>\E[?1h\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h\E[1;24r\E[24;1H:\
+ :k1=\EOP:k2=\EOQ:k3=\EOR:k4=\EOS:k6=\E[17~:k7=\E[18~:\
+ :k8=\E[19~:k9=\E[20~:kb=^H:kd=\EOB:ke=\E[?1l\E>:kl=\EOD:\
+ :kr=\EOC:ks=\E[?1h\E=:ku=\EOA:le=^H:mb=\E[5m:md=\E[1m:\
+ :me=\E[m:mr=\E[7m:nd=\E[C:nw=^M\ED:rc=\E8:sc=\E7:se=\E[27m:\
+ :sf=\ED:so=\E[7m:sr=\EM:st=\EH:ta=^I:\
+ :ts=\E[2$~\E[1$}\E[1;%dH:ue=\E[24m:up=\E[A:us=\E[4m:\
+ :vb=200\E[?5h\E[?5l:ve=\E[?25h:vi=\E[?25l:vs=\E[?25h:
+
+# (vt420: I removed :k0:, it collided with <kf10>. I also restored
+# a missing :sc: -- esr)
+vt420|DEC VT420:\
+ :am:mi:xn:xo:\
+ :co#80:li#24:vt#3:\
+ :*6=\E[4~:@0=\E[1~:RA=\E[?7l:\
+ :S5=\E[?0;0r\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h:\
+ :SA=\E[?7h:\
+ :ac=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~:\
+ :ae=\E(B:al=\E[L:as=\E(0:bl=^G:cd=\E[J:ce=\E[K:\
+ :cl=\E[H\E[2J:cm=\E[%i%d;%dH:cr=^M:cs=\E[%i%d;%dr:\
+ :dc=\E[P:dl=\E[M:do=\E[B:ei=\E[4l:ho=\E[H:\
+ :i2=\E[?67h\E[64;1"p:if=/usr/share/tabset/vt300:\
+ :im=\E[4h:is=\E[1;24r\E[24;1H:k1=\EOP:k2=\EOQ:k3=\EOR:\
+ :k4=\EOS:k5=\E[17~:k6=\E[18~:k7=\E[19~:k8=\E[20~:\
+ :k9=\E[21~:k;=\E[29~:kD=\E[3~:kI=\E[2~:kN=\E[6~:kP=\E[5~:\
+ :kb=^H:kd=\E[B:ke=\E>:kl=\E[D:kr=\E[C:ks=\E=:ku=\E[A:le=^H:\
+ :mb=\E[5m:md=\E[1m:me=\E[m:mr=\E[7m:nd=\E[C:\
+ :r3=\E[?67h\E[64;1"p:rc=\E8:rf=/usr/share/tabset/vt300:\
+ :..sa=\E[0%?%p6%t;1%;%?%p2%t;4%;%?%p4%t;5%;%?%p1%p3%|%t;7%;m%?%p9%t\E(0%e\E(B%;:\
+ :sc=\E7:se=\E[m:sf=\ED:so=\E[7m:sr=\EM:ta=^I:ue=\E[m:\
+ :up=\E[A:us=\E[4m:
+
+#
+# DEC VT220 and up support DECUDK (user-defined keys). DECUDK (i.e., pfx)
+# takes two parameters, the key and the string. Translating the key is
+# straightforward (keys 1-5 are not defined on real terminals, though some
+# emulators define these):
+#
+# if (key < 16) then value = key;
+# else if (key < 21) then value = key + 1;
+# else if (key < 25) then value = key + 2;
+# else if (key < 27) then value = key + 3;
+# else if (key < 30) then value = key + 4;
+# else value = key + 5;
+#
+# The string must be the hexadecimal equivalent, e.g., "5052494E" for "PRINT".
+# There's no provision in terminfo for emitting a string in this format, so the
+# application has to know it.
+#
+vt420pc|DEC VT420 w/PC keyboard:\
+ :@7=\E[4~:F1=\E[23~:F2=\E[24~:F3=\E[11;2~:F4=\E[12;2~:\
+ :F5=\E[13;2~:F6=\E[14;2~:F7=\E[15;2~:F8=\E[17;2~:\
+ :F9=\E[18;2~:FA=\E[19;2~:FB=\E[20;2~:FC=\E[21;2~:\
+ :FD=\E[23;2~:FE=\E[24;2~:FF=\E[23~:FG=\E[24~:FH=\E[25~:\
+ :FI=\E[26~:FJ=\E[28~:FK=\E[29~:FL=\E[31~:FM=\E[32~:\
+ :FN=\E[33~:FO=\E[34~:FP=\E[35~:FQ=\E[36~:FR=\E[23;2~:\
+ :FS=\E[24;2~:FT=\E[25;2~:FU=\E[26;2~:FV=\E[28;2~:\
+ :FW=\E[29;2~:FX=\E[31;2~:FY=\E[32;2~:FZ=\E[33;2~:\
+ :Fa=\E[34;2~:Fb=\E[35;2~:Fc=\E[36;2~:\
+ :S6=USR_TERM\072vt420pcdos\072:k1=\E[11~:k2=\E[12~:\
+ :k3=\E[13~:k4=\E[14~:k5=\E[15~:k6=\E[17~:k7=\E[18~:\
+ :k8=\E[19~:k9=\E[20~:k;=\E[21~:kD=\177:kh=\E[H:\
+ :..px=\EP1;1|%?%{16}%p1%>%t%{0}%e%{21}%p1%>%t%{1}%e%{25}%p1%>%t%{2}%e%{27}%p1%>%t%{3}%e%{30}%p1%>%t%{4}%e%{5}%;%p1%+%d/%p2%s\E\:tc=vt420:
+
+vt420pcdos|DEC VT420 w/PC for DOS Merge:\
+ :li#25:\
+ :S1=%?%p2%{19}%=%t\E\023\021%e%p2%{32}%<%t\E%p2%c%e%p2%{127}%=%t\E\177%e%p2%c%;:\
+ :S4=\E[?1;2r\E[34h:\
+ :S5=\E[?0;0r\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h:S6@:\
+ :me=\E[m:sa@:\
+ :tc=vt420pc:
+
+vt420f|DEC VT420 with VT kbd; VT400 mode; F1-F5 used as Fkeys:\
+ :F1=\E[23~:F2=\E[24~:F3=\E[25~:F4=\E[26~:F5=\E[28~:\
+ :F6=\E[29~:F7=\E[31~:F8=\E[32~:F9=\E[33~:FA=\E[34~:\
+ :k1=\E[11~:k2=\E[12~:k3=\E[13~:k4=\E[14~:k5=\E[15~:\
+ :k6=\E[17~:k7=\E[18~:k8=\E[19~:k9=\E[20~:k;=\E[21~:\
+ :kD=\177:kh=\E[H:l1=\EOP:l2=\EOQ:l3=\EOR:l4=\EOS:\
+ :tc=vt420:
+
+vt510|DEC VT510:\
+ :tc=vt420:
+vt510pc|DEC VT510 w/PC keyboard:\
+ :tc=vt420pc:
+vt510pcdos|DEC VT510 w/PC for DOS Merge:\
+ :tc=vt420pcdos:
+
+# VT520/VT525
+#
+# The VT520 is a monochrome text terminal capable of managing up to
+# four independent sessions in the terminal. It has multiple ANSI
+# emulations (VT520, VT420, VT320, VT220, VT100, VT PCTerm, SCO Console)
+# and ASCII emulations (WY160/60, PCTerm, 50/50+, 150/120, TVI 950,
+# 925 910+, ADDS A2). This terminfo data is for the ANSI emulations only.
+#
+# Terminal Set-Up is entered by pressing [F3], [Caps Lock]/[F3] or
+# [Alt]/[Print Screen] depending upon which keyboard and which
+# terminal mode is being used. If Set-Up has been disabled or
+# assigned to an unknown key, Set-Up may be entered by pressing
+# [F3] as the first key after power up, regardless of keyboard type.
+# (vt520: I added <rmam>/<smam> based on the init string, also :sc: -- esr)
+# (untranslatable capabilities removed to fit entry within 1023 bytes)
+vt520|DEC VT520:\
+ :am:mi:xn:xo:\
+ :co#80:li#24:vt#3:\
+ :*6=\E[4~:@0=\E[1~:RA=\E[?7l:\
+ :S5=\E[?0;0r\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h:\
+ :SA=\E[?7h:\
+ :ac=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~:\
+ :ae=\E(B:al=\E[L:as=\E(0:bl=^G:cd=\E[J:ce=\E[K:\
+ :cl=\E[H\E[2J:cm=\E[%i%d;%dH:cr=^M:cs=\E[%i%d;%dr:\
+ :dc=\E[P:dl=\E[M:do=\E[B:ei=\E[4l:ho=\E[H:\
+ :i2=\E[?67h\E[64;1"p:if=/usr/share/tabset/vt300:\
+ :im=\E[4h:is=\E[1;24r\E[24;1H:k0=\E[29~:k1=\EOP:k2=\EOQ:\
+ :k3=\EOR:k4=\EOS:k5=\E[17~:k6=\E[18~:k7=\E[19~:k8=\E[20~:\
+ :k9=\E[21~:k;=\E[29~:kD=\E[3~:kI=\E[2~:kN=\E[6~:kP=\E[5~:\
+ :kb=^H:kd=\E[B:kl=\E[D:kr=\E[C:ku=\E[A:le=^H:mb=\E[5m:\
+ :md=\E[1m:me=\E[m:mr=\E[7m:nd=\E[C:r3=\E[?67h\E[64;1"p:\
+ :rc=\E8:rf=/usr/share/tabset/vt300:sc=\E7:se=\E[m:sf=\ED:\
+ :so=\E[7m:sr=\EM:ta=^I:ue=\E[m:up=\E[A:us=\E[4m:
+
+# (vt525: I added <rmam>/<smam> based on the init string;
+# removed :se:=\E[m, :ue:=\E[m, added :sc: -- esr)
+# (untranslatable capabilities removed to fit entry within 1023 bytes)
+vt525|DEC VT525:\
+ :am:mi:xn:xo:\
+ :co#80:li#24:vt#3:\
+ :*6=\E[4~:@0=\E[1~:RA=\E[?7l:\
+ :S5=\E[?0;0r\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h:\
+ :SA=\E[?7h:\
+ :ac=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~:\
+ :ae=\E(B:al=\E[L:as=\E(0:bl=^G:cd=\E[J:ce=\E[K:\
+ :cl=\E[H\E[2J:cm=\E[%i%d;%dH:cr=^M:cs=\E[%i%d;%dr:\
+ :dc=\E[P:dl=\E[M:do=\E[B:ei=\E[4l:ho=\E[H:\
+ :i2=\E[?67h\E[64;1"p:if=/usr/share/tabset/vt300:\
+ :im=\E[4h:is=\E[1;24r\E[24;1H:k0=\E[29~:k1=\EOP:k2=\EOQ:\
+ :k3=\EOR:k4=\EOS:k5=\E[17~:k6=\E[18~:k7=\E[19~:k8=\E[20~:\
+ :k9=\E[21~:k;=\E[29~:kD=\E[3~:kI=\E[2~:kN=\E[6~:kP=\E[5~:\
+ :kb=^H:kd=\E[B:kl=\E[D:kr=\E[C:ku=\E[A:le=^H:mb=\E[5m:\
+ :md=\E[1m:me=\E[m:mr=\E[7m:nd=\E[C:r3=\E[?67h\E[64;1"p:\
+ :rc=\E8:rf=/usr/share/tabset/vt300:sc=\E7:se=\E[m:sf=\ED:\
+ :so=\E[7m:sr=\EM:ta=^I:ue=\E[m:up=\E[A:us=\E[4m:
+
+#### VT100 emulations
+#
+
+# John Hawkinson <jhawk@MIT.EDU> tells us that the EWAN telnet for Windows
+# (the best Windows telnet as of September 1995) presents the name `dec-vt100'
+# to telnetd. Michael Deutschmann <ldeutsch@mail.netshop.net> informs us
+# that this works best with a stock vt100 entry.
+dec-vt100|EWAN telnet's vt100 emulation:\
+ :tc=vt100:
+
+# From: Adrian Garside <94ajg2@eng.cam.ac.uk>, 19 Nov 1996
+dec-vt220|DOS tnvt200 terminal emulator:\
+ :am@:tc=vt220:
+
+# Zstem340 is an (IMHO) excellent VT emulator for PC's. I recommend it to
+# anyone who needs PC VT340 emulation. (or anything below that level, for
+# that matter -- DEC's ALL-in-1 seems happy with it, as does INFOPLUS's
+# RDBM systems, it includes ReGIS and SiXel support! I'm impressed...
+# I can send the address if requested.
+# (z340: changed garbled \E[5?l to \E[?5l, DEC smooth scroll off -- esr)
+# From: Adam Thompson <athompso@pangea.ca> Sept 10 1995
+z340|zstem vt340 terminal emulator 132col 42line:\
+ :li#42:\
+ :is=\E>\E[?3h\E[?4l\E[?5l\E[?7h\E[?8h\E[1;42r\E[42;1H:\
+ :r2=\E>\E[?3h\E[?4l\E[?5l\E[?7h\E[?8h\E[1;42r\E[42;1H:\
+ :tc=vt320-w:
+z340-nam|zstem vt340 terminal emulator 132col 42line (no automatic margins):\
+ :am@:\
+ :is=\E>\E[?3h\E[?4l\E[?5l\E[?7l\E[?8h\E[1;42r\E[42;1H:\
+ :r2=\E>\E[?3h\E[?4l\E[?5l\E[?7l\E[?8h\E[1;42r\E[42;1H:\
+ :tc=z340:
+
+# CRT is shareware. It implements some xterm features, including mouse.
+crt|crt-vt220|CRT 2.3 emulating VT220:\
+ :ms:ut:\
+ :Co#8:pa#64:\
+ :AB=\E[4%p1%dm:AF=\E[3%p1%dm:Sb=\E[4%dm:Sf=\E[3%dm:\
+ :op=\E[39;49m:st=\EH:u6=\E[%i%d;%dR:u7=\E[6n:u8=\E[?1;2c:\
+ :u9=\E[c:\
+ :tc=vt220:
+
+# This entry is for Tera Term Pro version 2.3, for MS-Windows 95/NT written by
+# T. Teranishi dated Mar 10, 1998. It is a free software terminal emulator
+# (communication program) which supports:
+#
+# - Serial port connections.
+# - TCP/IP (telnet) connections.
+# - VT100 emulation, and selected VT200/300 emulation.
+# - TEK4010 emulation.
+# - File transfer protocols (Kermit, XMODEM, ZMODEM, B-PLUS and
+# Quick-VAN).
+# - Scripts using the "Tera Term Language".
+# - Japanese and Russian character sets.
+#
+# The program does not come with terminfo or termcap entries. However, the
+# emulation (testing with vttest and ncurses) is reasonably close to vt100 (no
+# vt52 or doublesize character support; blinking is done with color). Besides
+# the HPA, VPA extensions it also implements CPL and CNL.
+#
+# All of the function keys can be remapped. This description shows the default
+# mapping, as installed. Both vt100 PF1-PF4 keys and quasi-vt220 F1-F4 keys
+# are supported. F13-F20 are obtained by shifting F3-F10. The editing keypad
+# is laid out like vt220, rather than the face codes on the PC keyboard, i.e,
+# kfnd Insert
+# kslt Delete
+# kich1 Home
+# kdch1 PageUp
+# kpp End
+# knp PageDown
+#
+# ANSI colors are implemented, but cannot be combined with video attributes
+# except for reverse.
+#
+# No fonts are supplied with the program, so the acsc string is chosen to
+# correspond with the default Microsoft terminal font.
+#
+# Tera Term recognizes some xterm sequences, including those for setting and
+# retrieving the window title, and for setting the window size (i.e., using
+# "resize -s"), though it does not pass SIGWINCH to the application if the
+# user resizes the window with the mouse.
+teraterm|Tera Term Pro:\
+ :km:xo@:\
+ :NC#43:vt@:\
+ :*6=\E[4~:@0=\E[1~:AL=\E[%dL:DC=\E[%dP:DL=\E[%dM:\
+ :F1=\E[23~:F2=\E[24~:F3=\E[25~:F4=\E[26~:F5=\E[28~:\
+ :F6=\E[29~:F7=\E[31~:F8=\E[32~:F9=\E[33~:FA=\E[34~:\
+ :ac=+\020\054\021-\030.^Y0\333`\004a\261f\370g\361h\260i\316j\331k\277l\332m\300n\305o~p\304q\304r\304s_t\303u\264v\301w\302x\263y\363z\362{\343|\330}\234~\376:\
+ :al=\E[L:cb=\E[1K:cd=\E[J:ce=\E[K:ch=\E[%i%dG:cl=\E[H\E[J:\
+ :cm=\E[%i%d;%dH:cv=\E[%i%dd:dc=\E[P:dl=\E[M:ec=\E[%dX:\
+ :k1=\E[11~:k2=\E[12~:k3=\E[13~:k4=\E[14~:k5=\E[15~:\
+ :k6=\E[17~:k7=\E[18~:k8=\E[19~:k9=\E[20~:k;=\E[21~:\
+ :kD=\E[3~:kI=\E[2~:kN=\E[6~:kP=\E[5~:mb=\E[5m:md=\E[1m:\
+ :me=\E[m:mr=\E[7m:nd=\E[C:op=\E[100m:se=\E[27m:so=\E[7m:\
+ :sr=\EM:u6=\E[%i%d;%dR:u7=\E[6n:u8=\E[?1;2c:u9=\E[c:\
+ :ue=\E[24m:up=\E[A:us=\E[4m:vb=200\E[?5h\E[?5l:\
+ :ve=\E[?25h:vi=\E[?25l:\
+ :tc=klone+color:tc=vt100:
+
+# Tested with WinNT 4.0, the telnet application assumes the screensize is
+# 25x80. This entry uses the 'Terminal' font, to get line-drawing characters.
+ms-vt100|MS telnet imitating dec vt100:\
+ :li#25:\
+ :ac=+\020\054\021-\030.^Y0\333`\004a\261f\370g\361h\260i\316j\331k\277l\332m\300n\305o~p\304q\304r\304s_t\303u\264v\301w\302x\263y\363z\362{\343|\330}\234~\376:\
+ :ct@:u6=\E[%i%d;%dR:u7=\E[6n:u8=\E[?6c:u9=\E[c:\
+ :tc=vt100:
+
+#### X terminal emulators
+#
+# You can add the following line to your .Xdefaults to change the terminal type
+# set by the xterms you start up to my-xterm:
+#
+# *termName: my-xterm
+#
+# System administrators can change the default entry for xterm instances
+# by adding a similar line to /usr/X11/lib/X11/app-defaults/XTerm. In either
+# case, xterm will detect and reject an invalid terminal type, falling back
+# to the default of xterm.
+#
+
+# X10/6.6 11/7/86, minus alternate screen, plus (csr)
+# (xterm: ":MT:" changed to ":km:"; added <smam>/<rmam> based on init string;
+# removed (hs, eslok, tsl=\E[?E\E[?%i%dT, fsl=\E[?F, dsl=\E[?E)
+# as these seem not to work -- esr)
+x10term|vs100-x10|xterm terminal emulator (X10 window system):\
+ :am:bs:km:mi:ms:xn:xo:\
+ :co#80:it#8:li#65:\
+ :AL=\E[%dL:DC=\E[%dP:DL=\E[%dM:RA=\E[?7l:SA=\E[?7h:\
+ :al=\E[L:cd=\E[J:ce=\E[K:cl=\E[H\E[2J:cm=\E[%i%d;%dH:\
+ :cs=\E[%i%d;%dr:dc=\E[P:dl=\E[M:do=^J:ei=\E[4l:ho=\E[H:\
+ :im=\E[4h:is=\E\E[m\E[?7h\E[?1;4l:k1=\EOP:k2=\EOQ:\
+ :k3=\EOR:k4=\EOS:kb=^H:kd=\EOB:ke=\E[?1l\E>:kl=\EOD:\
+ :kr=\EOC:ks=\E[?1h\E=:ku=\EOA:le=^H:md=\E[1m:me=\E[m:\
+ :mr=\E[7m:nd=\E[C:se=\E[m:sf=^J:so=\E[7m:sr=\EM:ta=^I:\
+ :ue=\E[m:up=\E[A:us=\E[4m:
+# Compatible with the R5 xterm
+# (from the XFree86 3.2 distribution, <blink=@> removed)
+# added khome/kend, rmir/smir, rmul/smul based on the R5 xterm code - TD
+# corrected typos in rs2 string - TD
+xterm-r5|xterm R5 version:\
+ :am:bs:km:ms:xn:\
+ :co#80:it#8:li#24:\
+ :@7=\E[4~:AL=\E[%dL:DC=\E[%dP:DL=\E[%dM:DO=\E[%dB:\
+ :F1=\E[23~:F2=\E[24~:IC=\E[%d@:Km=\E[M:LE=\E[%dD:\
+ :RI=\E[%dC:UP=\E[%dA:al=\E[L:bl=^G:cd=\E[J:ce=\E[K:\
+ :cl=\E[H\E[2J:cm=\E[%i%d;%dH:cr=^M:cs=\E[%i%d;%dr:\
+ :ct=\E[3g:dc=\E[P:dl=\E[M:do=^J:ei=\E[4l:ho=\E[H:ic=\E[@:\
+ :im=\E[4h:k0=\EOq:k1=\E[11~:k2=\E[12~:k3=\E[13~:k4=\E[14~:\
+ :k5=\E[15~:k6=\E[17~:k7=\E[18~:k8=\E[19~:k9=\E[20~:\
+ :k;=\E[21~:kA=\E[30~:kD=\E[3~:kE=\E[8~:kI=\E[2~:kL=\E[31~:\
+ :kN=\E[6~:kP=\E[5~:kb=^H:kd=\EOB:ke=\E[?1l\E>:kh=\E[1~:\
+ :kl=\EOD:kr=\EOC:ks=\E[?1h\E=:ku=\EOA:le=^H:md=\E[1m:\
+ :me=\E[m:mr=\E[7m:nd=\E[C:\
+ :r2=\E>\E[?1;3;4;5;6l\E[4l\E[?7h\E[m\E[r\E[2J\E[H:\
+ :rc=\E8:\
+ :..sa=\E[%?%p1%t;7%;%?%p2%t;4%;%?%p3%t;7%;%?%p4%t;5%;%?%p6%t;1%;m:\
+ :sc=\E7:se=\E[m:sf=^J:so=\E[7m:sr=\EM:st=\EH:ta=^I:ue=\E[m:\
+ :up=\E[A:us=\E[4m:
+# Compatible with the R6 xterm
+# (from XFree86 3.2 distribution, <acsc> and :it: added, <blink@> removed)
+# added khome/kend - TD
+# (untranslatable capabilities removed to fit entry within 1023 bytes)
+# (sgr removed to fit entry within 1023 bytes)
+# (terminfo-only capabilities suppressed to fit entry within 1023 bytes)
+xterm-r6|xterm-old|xterm X11R6 version:\
+ :am:bs:km:mi:ms:xn:\
+ :co#80:it#8:li#24:\
+ :AL=\E[%dL:DC=\E[%dP:DL=\E[%dM:DO=\E[%dB:LE=\E[%dD:\
+ :RI=\E[%dC:UP=\E[%dA:ae=^O:al=\E[L:as=^N:bl=^G:cd=\E[J:\
+ :ce=\E[K:cl=\E[H\E[2J:cm=\E[%i%d;%dH:cr=^M:\
+ :cs=\E[%i%d;%dr:ct=\E[3g:dc=\E[P:dl=\E[M:do=^J:ei=\E[4l:\
+ :ho=\E[H:im=\E[4h:\
+ :is=\E7\E[r\E[m\E[?7h\E[?1;3;4;6l\E[4l\E8\E>:k1=\EOP:\
+ :k2=\EOQ:k3=\EOR:k4=\EOS:k5=\E[15~:k6=\E[17~:k7=\E[18~:\
+ :k8=\E[19~:k9=\E[20~:kD=\E[3~:kI=\E[2~:kN=\E[6~:kP=\E[5~:\
+ :kb=^H:kd=\EOB:ke=\E[?1l\E>:kl=\EOD:kr=\EOC:ks=\E[?1h\E=:\
+ :ku=\EOA:le=^H:md=\E[1m:me=\E[m:mr=\E[7m:nd=\E[C:rc=\E8:\
+ :sc=\E7:se=\E[m:sf=^J:so=\E[7m:sr=\EM:ta=^I:\
+ :te=\E[2J\E[?47l\E8:ti=\E7\E[?47h:ue=\E[m:up=\E[A:\
+ :us=\E[4m:
+# This is the base xterm entry for the xterm supplied with XFree86 3.2 & up.
+# The name has been changed and some aliases have been removed.
+# (untranslatable capabilities removed to fit entry within 1023 bytes)
+# (sgr removed to fit entry within 1023 bytes)
+# (terminfo-only capabilities suppressed to fit entry within 1023 bytes)
+xterm-xf86-v32|xterm terminal emulator (XFree86 3.2 Window System):\
+ :am:bs:km:mi:ms:xn:\
+ :co#80:it#8:li#24:\
+ :AL=\E[%dL:DC=\E[%dP:DL=\E[%dM:DO=\E[%dB:IC=\E[%d@:\
+ :K1=\EOw:K2=\EOy:K3=\EOu:K4=\EOq:K5=\EOs:LE=\E[%dD:\
+ :RI=\E[%dC:UP=\E[%dA:ae=^O:al=\E[L:as=^N:bl=^G:bt=\E[Z:\
+ :cd=\E[J:ce=\E[K:cl=\E[H\E[2J:cm=\E[%i%d;%dH:cr=^M:\
+ :cs=\E[%i%d;%dr:ct=\E[3g:dc=\E[P:dl=\E[M:do=^J:ec=\E[%dX:\
+ :ei=\E[4l:ho=\E[H:ic=\E[@:im=\E[4h:\
+ :is=\E7\E[r\E[m\E[?7h\E[?1;3;4;6l\E[4l\E8\E>:\
+ :k1=\E[11~:k2=\E[12~:k3=\E[13~:k4=\E[14~:k5=\E[15~:\
+ :k6=\E[17~:k7=\E[18~:k8=\E[19~:k9=\E[20~:kD=\177:kI=\E[2~:\
+ :kN=\E[6~:kP=\E[5~:kb=^H:kd=\EOB:ke=\E[?1l\E>:kh=\EOH:\
+ :kl=\EOD:kr=\EOC:ks=\E[?1h\E=:ku=\EOA:le=^H:md=\E[1m:\
+ :me=\E[m\017:mr=\E[7m:nd=\E[C:rc=\E8:sc=\E7:se=\E[27m:\
+ :sf=^J:so=\E[7m:sr=\EM:st=\EH:ta=^I:te=\E[2J\E[?47l\E8:\
+ :ti=\E7\E[?47h:ue=\E[24m:up=\E[A:us=\E[4m:\
+ :vb=\E[?5h\E[?5l:ve=\E[?25h:vi=\E[?25l:vs=\E[?25h:
+
+# This is the stock xterm entry supplied with XFree86 3.3, which uses VT100
+# codes for F1-F4 except while in VT220 mode.
+xterm-xf86-v33|xterm terminal emulator (XFree86 3.3 Window System):\
+ :k1=\EOP:k2=\EOQ:k3=\EOR:k4=\EOS:\
+ :tc=xterm-xf86-v32:
+
+# This version was released in XFree86 3.3.3 (November 1998).
+# Besides providing printer support, it exploits a new feature that allows
+# xterm to use terminfo-based descriptions with the titeInhibit resource.
+xterm-xf86-v333|xterm terminal emulator (XFree86 3.3.3 Window System):\
+ :5i:\
+ :*6@:@0@:@7=\E[4~:ei=:ic@:im=:is=\E[\041p\E[?3;4l\E[4l\E>:\
+ :kD=\E[3~:kh=\E[1~:mb=\E[5m:mk=\E[8m:pf=\E[4i:po=\E[5i:\
+ :ps=\E[i:r1=\Ec:r2=\E[\041p\E[?3;4l\E[4l\E>:\
+ :..sa=\E[0%?%p1%p6%|%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;%?%p4%t;5%;%?%p7%t;8%;m%?%p9%t\016%e\017%;:\
+ :te=\E[?1047l\E[?1048l:ti=\E[?1048h\E[?1047h:\
+ :tc=xterm-xf86-v33:
+
+# This beta version will probably be released in XFree86 4.0.
+xterm-xf86-v40|xterm terminal emulator (XFree86 4.0 Window System):\
+ :@7=\EOF:K1=\EOH:K2=\EOE:K3=\E[5~:K4=\EOF:K5=\E[6~:kD=\177:\
+ :kh=\EOH:te=\E[?1049l:ti=\E[?1049h:\
+ :tc=xterm-xf86-v333:
+
+xterm-xfree86|xterm-new|xterm terminal emulator (XFree86 4.0 Window System):\
+ :tc=xterm-xf86-v40:
+
+# From: David J. MacKenzie <djm@va.pubnix.com>, 14 Nov 1997
+xterm-xi|xterm on XI Graphics Accelerated X under BSD/OS 3.1:\
+ :se=\E[m:ue=\E[m:\
+ :tc=xterm-xf86-v33:
+
+# This is one of the variants of XFree86 3.3 xterm, updated for 4.0 (T.Dickey)
+xterm-16color|xterm with 16 colors like aixterm:\
+ :Co#16:NC#32:pa#256:\
+ :AB=\E[%?%p1%{8}%<%t%p1%{40}%+%e%p1%{92}%+%;%dm:\
+ :AF=\E[%?%p1%{8}%<%t%p1%{30}%+%e%p1%{82}%+%;%dm:\
+ :..Sb=%p1%{8}%/%{6}%*%{4}%+\E[%d%p1%{8}%m%Pa%?%ga%{1}%=%t4%e%ga%{3}%=%t6%e%ga%{4}%=%t1%e%ga%{6}%=%t3%e%ga%d%;m:\
+ :..Sf=%p1%{8}%/%{6}%*%{3}%+\E[%d%p1%{8}%m%Pa%?%ga%{1}%=%t4%e%ga%{3}%=%t6%e%ga%{4}%=%t1%e%ga%{6}%=%t3%e%ga%d%;m:\
+ :tc=xterm-xf86-v40:
+
+# This is another variant, for XFree86 4.0 xterm (T.Dickey)
+# This is an 8-bit version of xterm, which emulates DEC vt220 with ANSI color.
+# To use it, your decTerminalID resource must be set to 200 or above.
+#
+# HTS \E H \210
+# RI \E M \215
+# SS3 \E O \217
+# CSI \E [ \233
+#
+# (untranslatable capabilities removed to fit entry within 1023 bytes)
+# (sgr removed to fit entry within 1023 bytes)
+# (terminfo-only capabilities suppressed to fit entry within 1023 bytes)
+xterm-8bit|xterm terminal emulator 8-bit controls (X Window System):\
+ :am:bs:km:mi:ms:xn:\
+ :co#80:it#8:li#24:\
+ :AL=\233%dL:DC=\233%dP:DL=\233%dM:DO=\233%dB:IC=\233%d@:\
+ :K1=\217w:K2=\217y:K3=\217u:K4=\217q:K5=\217s:LE=\233%dD:\
+ :RI=\233%dC:UP=\233%dA:ae=^O:al=\233L:as=^N:bl=^G:bt=\233Z:\
+ :cd=\233J:ce=\233K:cl=\233H\2332J:cm=\233%i%d;%dH:cr=^M:\
+ :cs=\233%i%d;%dr:ct=\2333g:dc=\233P:dl=\233M:do=^J:\
+ :ec=\233%dX:ei=\2334l:ho=\233H:im=\2334h:\
+ :is=\E7\E G\233r\233m\233?7h\233?1;3;4;6l\2334l\E8\E>:\
+ :k1=\23311~:k2=\23312~:k3=\23313~:k4=\23314~:k5=\23315~:\
+ :k6=\23317~:k7=\23318~:k8=\23319~:k9=\23320~:kD=\2333~:\
+ :kI=\2332~:kN=\2336~:kP=\2335~:kb=^H:kd=\217B:\
+ :ke=\233?1l\E>:kh=\2331~:kl=\217D:kr=\217C:ks=\233?1h\E=:\
+ :ku=\217A:le=^H:mb=\2335m:md=\2331m:me=\233m^O:mr=\2337m:\
+ :nd=\233C:rc=\E8:sc=\E7:se=\23327m:sf=^J:so=\2337m:sr=\215:\
+ :st=\210:ta=^I:te=\233?1049l:ti=\233?1049h:ue=\23324m:\
+ :up=\233A:us=\2334m:vb=\233?5h\233?5l:ve=\233?25h:\
+ :vi=\233?25l:vs=\233?25h:
+
+xterm-24|vs100|xterms|xterm terminal emulator (X Window System):\
+ :li#24:tc=xterm:
+
+# This is xterm for ncurses.
+xterm|xterm terminal emulator (X Window System):\
+ :Km=\E[M:\
+ :ac=``aaffggiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~:\
+ :u6=\E[%i%d;%dR:u7=\E[6n:u8=\E[?1;2c:u9=\E[c:\
+ :tc=xterm-r6:
+
+# These entries allow access to the X titlebar and icon name as a status line.
+# Note that twm (and possibly window managers descended from it such as tvtwm,
+# ctwm, and vtwm) track windows by icon-name; thus, you don't want to mess
+# with it.
+xterm+sl|access X title line and icon name:\
+ :hs:\
+ :ws#40:\
+ :ds=\E]0;\007:fs=^G:ts=\E]0;:tc=xterm:
+xterm+sl-twm|access X title line (pacify twm-descended window managers):\
+ :hs:\
+ :ws#40:\
+ :ds=\E]2;\007:fs=^G:ts=\E]2;:tc=xterm:
+
+#
+# The following xterm variants don't depend on your base version
+#
+# xterm with bold instead of underline
+xterm-bold|xterm terminal emulator (X11R6 Window System) standout w/bold:\
+ :so=\E[7m:us=\E[1m:\
+ :tc=xterm:
+# (kterm: this had extension capabilities ":KJ:TY=ascii:" -- esr)
+# (kterm should not invoke DEC Graphics as the alternate character set
+# -- Kenji Rikitake)
+kterm|kterm kanji terminal emulator (X window system):\
+ :es:hs:\
+ :Km=\E[M:ac@:ae@:as@:cs=\E[%i%d;%dr:ds=\E[?H:eA@:fs=\E[?F:\
+ :op=\E[39;49m:rc=\E8:sc=\E7:ts=\E[?E\E[?%i%dT:\
+ :tc=xterm-r6:tc=klone+color:
+# See the note on ICH/ICH1 VERSUS RMIR/SMIR near the end of file
+xterm-nic|xterm with ich/ich1 suppressed for non-curses programs:\
+ :IC@:ei=:ic@:im=:\
+ :tc=xterm:
+# From: Mark Sheppard <kimble@mistral.co.uk>, 4 May 1996
+xterm1|xterm terminal emulator ignoring the alternate screen buffer:\
+ :te@:ti@:\
+ :tc=xterm:
+
+# This describes the capabilities of color_xterm, an xterm variant from
+# before ECMA-64 color support was folded into the main-line xterm release.
+# This entry is straight from color_xterm's maintainer.
+# From: Jacob Mandelson <jlm@ugcs.caltech.edu>, 09 Nov 1996
+# The README's with the distribution also say that it supports SGR 21, 24, 25
+# and 27, but they are not present in the terminfo or termcap.
+# (untranslatable capabilities removed to fit entry within 1023 bytes)
+# (sgr removed to fit entry within 1023 bytes)
+# (terminfo-only capabilities suppressed to fit entry within 1023 bytes)
+color_xterm|cx|cx100|color_xterm color terminal emulator for X:\
+ :am:bs:km:mi:ms:xn:\
+ :co#80:it#8:li#65:\
+ :AL=\E[%dL:DC=\E[%dP:DL=\E[%dM:DO=\E[%dB:IC=\E[%d@:\
+ :K1=\EOw:K2=\EOu:K3=\EOy:K4=\EOq:K5=\EOs:LE=\E[%dD:\
+ :RI=\E[%dC:UP=\E[%dA:ae=^O:al=\E[L:as=^N:bl=^G:cd=\E[J:\
+ :ce=\E[K:cl=\E[H\E[2J:cm=\E[%i%d;%dH:cr=^M:\
+ :cs=\E[%i%d;%dr:dc=\E[P:dl=\E[M:do=^J:ei=\E[4l:ho=\E[H:\
+ :i1=\E[r\E[m\E[?7h\E[?4;6l\E[4l:im=\E[4h:k1=\E[11~:\
+ :k2=\E[12~:k3=\E[13~:k4=\E[14~:k5=\E[15~:k6=\E[17~:\
+ :k7=\E[18~:k8=\E[19~:k9=\E[20~:kI=\E[2~:kN=\E[6~:kP=\E[5~:\
+ :kb=^H:kd=\EOB:kh=\E[7~:kl=\EOD:kr=\EOC:ku=\EOA:le=^H:\
+ :md=\E[1m:me=\E[m:mr=\E[7m:nd=\E[C:rc=\E8:sc=\E7:se=\E[27m:\
+ :sf=^J:so=\E[7m:sr=\EM:ta=^I:te=\E>\E[?41;1r:\
+ :ti=\E[?1;41s\E[?1;41h\E=:ue=\E[24m:up=\E[A:us=\E[4m:
+
+# The 'nxterm' distributed with Redhat Linux is a slight rehack of
+# xterm-sb_right-ansi-3d, which implements ANSI colors, but does not support
+# SGR 39 or 49. SGR 0 does reset colors (along with everything else). This
+# description is "compatible" with color_xterm, rxvt and XFree86 xterm, except
+# that each of those implements the home, end, delete keys differently.
+nxterm|xterm-color|generic color xterm:\
+ :NC@:\
+ :op=\E[m:tc=xterm-r6:tc=klone+color:
+
+# From: Thomas Dickey <dickey@clark.net> 04 Oct 1997
+# Updated: Oezguer Kesim <kesim@math.fu-berlin.de> 02 Nov 1997
+# Notes:
+# rxvt 2.21b uses
+# smacs=\E(B\E)U^N, rmacs=\E(B\E)0^O,
+# but some applications don't work with that.
+# It also has an AIX extension
+# box2=lqkxjmwuvtn,
+# and
+# ech=\E[%p1%dX,
+# but the latter does not work correctly.
+#
+# The distributed terminfo says it implements hpa and vpa, but they are not
+# implemented correctly, using relative rather than absolute positioning.
+#
+# rxvt is normally configured to look for "xterm" or "xterm-color" as $TERM.
+# Since rxvt is not really compatible with xterm, it should be configured as
+# "rxvt" (monochrome) and "rxvt-color".
+# (untranslatable capabilities removed to fit entry within 1023 bytes)
+# (sgr removed to fit entry within 1023 bytes)
+# (terminfo-only capabilities suppressed to fit entry within 1023 bytes)
+rxvt|rxvt terminal base (X Window System):\
+ :am:bs:eo:km:mi:ms:xn:xo:\
+ :co#80:it#8:li#24:\
+ :AL=\E[%dL:DC=\E[%dP:DL=\E[%dM:DO=\E[%dB:IC=\E[%d@:\
+ :K1=\EOw:K2=\EOu:K3=\EOy:K4=\EOq:K5=\EOs:LE=\E[%dD:\
+ :RI=\E[%dC:UP=\E[%dA:ae=^O:al=\E[L:as=^N:bl=^G:cd=\E[J:\
+ :ce=\E[K:cl=\E[H\E[2J:cm=\E[%i%d;%dH:cr=^M:\
+ :cs=\E[%i%d;%dr:ct=\E[3g:dc=\E[P:dl=\E[M:do=^J:ei=\E[4l:\
+ :ho=\E[H:i1=\E[?47l\E=\E[?1l:ic=\E[@:im=\E[4h:\
+ :is=\E[r\E[m\E[2J\E[H\E[?7h\E[?1;3;4;6l\E[4l:\
+ :k0=\E[21~:k1=\E[11~:k2=\E[12~:k3=\E[13~:k4=\E[14~:\
+ :k5=\E[15~:k6=\E[17~:k7=\E[18~:k8=\E[19~:k9=\E[20~:\
+ :kD=\E[3~:kI=\E[2~:kN=\E[6~:kP=\E[5~:kb=^H:kd=\E[B:ke=\E>:\
+ :kh=\E[7~:kl=\E[D:kr=\E[C:ks=\E=:ku=\E[A:le=^H:mb=\E[5m:\
+ :md=\E[1m:me=\E[0m\017:mr=\E[7m:nd=\E[C:rc=\E8:sc=\E7:\
+ :se=\E[27m:sf=^J:so=\E[7m:sr=\EM:st=\EH:ta=^I:\
+ :te=\E[2J\E[?47l\E8:ti=\E7\E[?47h:ue=\E[24m:up=\E[A:\
+ :us=\E[4m:vb=\E[?5h\E[?5l:ve=\E[?25h:vi=\E[?25l:\
+ :vs=\E[?25h:
+rxvt-color|rxvt terminal emulator (X Window System):\
+ :Co#8:pa#64:\
+ :AB=\E[%p1%{40}%+%dm:AF=\E[%p1%{30}%+%dm:me=\E[m\017:\
+ :op=\E[39;49m:\
+ :tc=rxvt:
+
+# These (xtermc and xtermm) are distributed with Solaris. They refer to a
+# variant of xterm which is apparently no longer supported, but are interesting
+# because they illustrate SVr4 curses mouse controls - T.Dickey
+# (untranslatable capabilities removed to fit entry within 1023 bytes)
+xtermm|xterm terminal emulator (monocrome):\
+ :am:bs:km:mi:ms:xn:\
+ :BT#3:co#80:it#8:li#24:\
+ :@7=\E[Y:@8=\EOM:AL=\E[%dL:DC=\E[%dP:DL=\E[%dM:DO=\E[%dB:\
+ :F1=\EOZ:F2=\EOA:Gm=\E[%p1%dY:IC=\E[%d@:K1=\EOq:K2=\EOr:\
+ :K3=\EOs:K4=\EOp:K5=\EOn:Km=\E[^_:LE=\E[%dD:RI=\E[%dC:\
+ :RQ=\E[492Z:UP=\E[%dA:\
+ :ac=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~:\
+ :ae=^O:al=\E[L:as=^N:bl=^G:cb=\E[1K:cd=\E[J:ce=\E[K:\
+ :cl=\E[H\E[2J:cm=\E[%i%d;%dH:cr=^M:cs=\E[%i%d;%dr:\
+ :ct=\E[3g:dc=\E[P:dl=\E[M:do=^J:eA=\E(B\E)0:ei=:ho=\E[H:\
+ :ic=\E[@:im=:k0=\EOy:k1=\EOP:k2=\EOQ:k3=\EOR:k4=\EOS:\
+ :k5=\EOT:k6=\EOU:k7=\EOV:k8=\EOW:k9=\EOX:k;=\EOY:kN=\E[U:\
+ :kP=\E[V:kb=^H:kd=\EOB:kh=\E[H:kl=\EOD:kr=\EOC:ku=\EOA:\
+ :le=\E[1D:mb=@:md=\E[1m:me=\E[m\017:mr=\E[7m:nd=\E[C:\
+ :r1=\E>\E[1;3;4;5;6l\E[?7h\E[m\E[r\E[2J\E[H:\
+ :r2=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h:rc=\E8:sc=\E7:\
+ :se=\E[m:sf=^J:so=\E[7m:sr=\EM:st=\EH:ta=^I:te=\E@0\E[?4r:\
+ :ti=\E@0\E[?4s\E[?4h\E@1:up=\E[A:
+
+xtermc|xterm terminal emulator (color):\
+ :Co#8:NC#7:pa#64:\
+ :AB=\E[4%p1%dm:AF=\E[3%p1%dm:\
+ :..Sb=\E[4%?%p1%{1}%=%t4%e%p1%{3}%=%t6%e%p1%{4}%=%t1%e%p1%{6}%=%t3%e%p1%d%;m:\
+ :..Sf=\E[3%?%p1%{1}%=%t4%e%p1%{3}%=%t6%e%p1%{4}%=%t1%e%p1%{6}%=%t3%e%p1%d%;m:\
+ :op=\E[100m:\
+ :tc=xtermm:
+
+# From: David J. MacKenzie <djm@va.pubnix.com> 20 Apr 1995
+# Here's a termcap entry I've been using for xterm_color, which comes
+# with BSD/OS 2.0, and the X11R6 contrib tape too I think. Besides the
+# color stuff, I also have a status line defined as the window manager
+# title bar. [I have translated it to terminfo -- ESR]
+xterm-pcolor|xterm with color used for highlights and status line:\
+ :md=\E[1m\E[43m:mr=\E[7m\E[34m:so=\E[7m\E[31m:\
+ :us=\E[4m\E[42m:\
+ :tc=xterm+sl:tc=xterm-r6:
+
+# HP ships this, except for the pb#9600 which was merged in from BSD termcap.
+# (hpterm: added empty <acsc>, we have no idea what ACS chars look like --esr)
+hpterm|X-hpterm|hp X11 terminal emulator:\
+ :am:da:db:mi:xs:\
+ :Nl#8:co#80:lh#2:li#24:lm#0:lw#8:pb#9600:sg#0:\
+ :LF=\E&j@:LO=\E&jB:ac=:ae=^O:al=\EL:as=^N:bl=^G:bt=\Ei:\
+ :cd=\EJ:ce=\EK:ch=\E&a%dC:cl=\E&a0y0C\EJ:cm=\E&a%dy%dC:\
+ :cr=^M:ct=\E3:cv=\E&a%dY:dc=\EP:dl=\EM:do=\EB:ei=\ER:im=\EQ:\
+ :k1=\Ep:k2=\Eq:k3=\Er:k4=\Es:k5=\Et:k6=\Eu:k7=\Ev:k8=\Ew:\
+ :kA=\EL:kC=\EJ:kD=\EP:kE=\EK:kF=\ES:kH=\EF:kI=\EQ:kL=\EM:\
+ :kM=\ER:kN=\EU:kP=\EV:kR=\ET:kS=\EJ:kT=\E1:ka=\E3:kb=^H:\
+ :kd=\EB:ke=\E&s0A:kh=\Eh:kl=\ED:kr=\EC:ks=\E&s1A:kt=\E2:\
+ :ku=\EA:le=^H:md=\E&dB:me=\E&d@:mh=\E&dH:ml=\El:mr=\E&dB:\
+ :mu=\Em:nd=\EC:..pk=\E&f%p1%dk%p2%l%dL%p2%s:\
+ :..pl=\E&f1a%p1%dk%p2%l%dL%p2%s:\
+ :..pn=\E&f%p1%dk%p2%l%dd0L%p2%s:\
+ :..px=\E&f2a%p1%dk%p2%l%dL%p2%s:\
+ :..sa=\E&d%?%p7%t%{115}%c%;%p1%p3%|%p6%|%{2}%*%p2%{4}%*%+%p4%+%p5%{8}%*%+%{64}%+%c%?%p9%t%'\016'%c%e%'\017'%c%;:\
+ :se=\E&d@:sf=^J:so=\E&dJ:sr=\ET:st=\E1:ta=^I:ue=\E&d@:\
+ :up=\EA:us=\E&dD:
+
+# This entry describes an xterm with Sun-style function keys enabled
+# via the X resource setting "xterm*sunFunctionKeys:true"
+# To understand <kf11>/<kf12> note that L1,L2 and F11,F12 are the same.
+# The <kf13>...<kf20> keys are L3-L10. We don't set <kf16=\E[197z>
+# because we want it to be seen as <kcpy>.
+# The <kf31>...<kf45> keys are R1-R15. We treat some of these in accordance
+# with their Sun keyboard labels instead.
+# From: Simon J. Gerraty <sjg@zen.void.oz.au> 10 Jan 1996
+xterm-sun|xterm with sunFunctionKeys true:\
+ :%1=\E[196z:&8=\E[195z:@0=\E[200z:@5=\E[197z:@7=\E[220z:\
+ :F1=\E[192z:F2=\E[193z:F3=\E[194z:F4=\E[195z:F5=\E[196z:\
+ :F7=\E[198z:F8=\E[199z:F9=\E[200z:FA=\E[201z:FL=\E[208z:\
+ :FM=\E[209z:FN=\E[210z:FO=\E[211z:FP=\E[212z:FQ=\E[213z:\
+ :FS=\E[215z:FU=\E[217z:FW=\E[219z:FY=\E[221z:K2=\E[218z:\
+ :k1=\E[224z:k2=\E[225z:k3=\E[226z:k4=\E[227z:k5=\E[228z:\
+ :k6=\E[229z:k7=\E[230z:k8=\E[231z:k9=\E[232z:k;=\E[233z:\
+ :kI=\E[2z:kN=\E[222z:kP=\E[216z:kh=\E[214z:\
+ :tc=xterm:
+xterms-sun|small (80x24) xterm with sunFunctionKeys true:\
+ :co#80:li#24:tc=xterm-sun:
+
+# This is for the extensible terminal emulator on the X11R6 contrib tape.
+emu|emu native mode:\
+ :mi:ms:xo:\
+ :Co#15:co#80:it#8:li#24:pa#64:vt#200:\
+ :*6=\Esel:@0=\Efind:@8=^M:AB=\Es%i%p1%d;:AF=\Er%i%p1%d;:\
+ :AL=\EQ%d;:DC=\EI%d;:DL=\ER%d;:DO=\Ep%d;:F1=\EF11:\
+ :F2=\EF12:F3=\EF13:F4=\EF14:F5=\EF15:F6=\EF16:F7=\EF17:\
+ :F8=\EF18:F9=\EF19:FA=\EF20:LE=\Eq-%d;:RI=\Eq%d;:\
+ :UP=\Ep-%d;:\
+ :ac=61a\202f\260g2j\213k\214l\215m\216n\217o\220q\222s\224t\225u\226v\227w\230x\231~\244:\
+ :ae=\0:al=\EQ1;:as=\0:bl=^G:cb=\EL:cd=\EN:ce=\EK:\
+ :cl=\EP\EE0;0;:cm=\EE%d;%d;:cr=^M:cs=\Ek%d;%d;:ct=\Ej:\
+ :dc=\EI1;:dl=\ER1;:do=\EB:eA=\0:ec=\Ej%d;:ei=\EX:\
+ :ho=\EE0;0;:im=\EY:is=\ES\Er0;\Es0;:k0=\EF00:k1=\EF01:\
+ :k2=\EF02:k3=\EF03:k4=\EF04:k5=\EF05:k6=\EF06:k7=\EF07:\
+ :k8=\EF08:k9=\EF09:k;=\EF10:kD=\177:kI=\Eins:kN=\Enext:\
+ :kP=\Eprior:kb=^H:kd=\EB:kl=\EC:kr=\ED:ku=\EA:le=^H:\
+ :mb=\ES\EW:md=\ES\EU:me=\ES:mr=\ES\ET:nd=\ED:\
+ :oc=\Es0;\Er0;:r2=\ES\Es0;\Er0;:se=\ES:sf=\EG:so=\ES\ET:\
+ :sr=\EF:st=\Eh:ta=^I:ue=\ES:up=\EA:us=\ES\EV:ve=\Ea:vi=\EZ:\
+ :vs=\Ea:
+
+######## COMMERCIAL WORKSTATION CONSOLES
+#
+
+#### Alpha consoles
+#
+
+# This is from the OSF/1 Release 1.0 termcap file
+pccons|pcconsole|ANSI (mostly) Alpha PC console terminal emulation:\
+ :am:xo:\
+ :co#80:li#25:\
+ :al=\E[L:bl=^G:ce=\E[K:cl=\E[H\E[2J:cm=\E[%i%d;%dH:cr=^M:\
+ :dc=\E[P:dl=\E[M:do=^J:ei=:ho=\E[H:ic=\E[@:im=:kb=^H:kd=\E[B:\
+ :kh=\E[H:kl=\E[D:kr=\E[C:ku=\E[A:le=^H:me=\E[m:mr=\E[7m:\
+ :nd=\E[C:nw=^M^J:se=\E[m:so=\E[7m:ta=^I:up=\E[A:
+
+#### AT&T consoles
+#
+
+# This actually describes the generic SVr4 display driver for Intel boxes.
+# The :mh=\E[2m: isn't documented and therefore may not be reliable.
+# From: Eric Raymond <esr@snark.thyrsus.com> Mon Nov 27 19:00:53 EST 1995
+att6386|at386|386at|AT&T WGS 6386 console:\
+ :am:bw:eo:xo:\
+ :co#80:it#8:li#25:\
+ :@7=\E[Y:AL=\E[%dL:DC=\E[%dP:DL=\E[%dM:DO=\E[%dB:F1=\EOZ:\
+ :F2=\EOA:IC=\E[%d@:LE=\E[%dD:RI=\E[%dC:SF=\E[%dS:\
+ :SR=\E[%dT:UP=\E[%dA:\
+ :ac=``a1fxgqh0jYk?lZm@nEooppqDrrsstCu4vAwBx3yyzz{{||}}~~:\
+ :ae=\E[10m:al=\E[1L:as=\E[12m:bl=^G:bt=\E[Z:cd=\E[J:\
+ :ce=\E[K:ch=\E[%i%dG:cl=\E[2J\E[H:cm=\E[%i%d;%dH:cr=^M:\
+ :ct=\E[2g:cv=\E[%i%dd:dc=\E[P:dl=\E[1M:do=\E[B:ec=\E[%dX:\
+ :ei=:ho=\E[H:ic=\E[1@:im=:is=\E[0;10;39m:k1=\EOP:k2=\EOQ:\
+ :k3=\EOR:k4=\EOS:k5=\EOT:k6=\EOU:k7=\EOV:k8=\EOW:k9=\EOX:\
+ :k;=\EOY:kB=^]:kD=\E[P:kI=\E[@:kM=\E0:kN=\E[U:kP=\E[V:kb=^H:\
+ :kd=\E[B:kh=\E[H:kl=\E[D:kr=\E[C:ku=\E[A:le=\E[D:mb=\E[5m:\
+ :md=\E[1m:me=\E[0;10m:mh=\E[2m:mk=\E[9m:mr=\E[7m:nd=\E[C:\
+ :nw=\r\E[S:rc=\E8:\
+ :..sa=\E[10m\E[0%?%p1%p3%|%t;7%;%?%p2%t;4%;%?%p4%t;5%;%?%p5%t;2%;%?%p6%t;1%;%?%p9%t;12%e;10%;%?%p7%t;9%;m:\
+ :sc=\E7:se=\E[m:sf=\E[S:so=\E[7m:sr=\E[T:st=\EH:ta=^I:\
+ :ue=\E[m:up=\E[A:us=\E[4m:ve=\E[=1C:vi=\E[=C:\
+ :tc=klone+color:
+# (pc6300plus: removed ":KM=/usr/lib/ua/kmap.s5:"; renamed BO/EE/CI/CV -- esr)
+pc6300plus|AT&T 6300 plus:\
+ :am:bs:xo:\
+ :co#80:li#24:\
+ :al=\E[1L:bl=^G:cd=\E[0J:ce=\E[0K:cl=\E[2J\E[H:\
+ :cm=\E[%i%2;%2H:cr=^M:ct=\E[3g:dc=\E[1P:dl=\E[1M:do=\E[B:\
+ :ei=:ho=\E[H:ic=\E[1@:im=:k1=\EOc:k2=\EOd:k3=\EOe:k4=\EOf:\
+ :k5=\EOg:k6=\EOh:k7=\EOi:k8=\EOj:k9=\EOk:k;=\EOu:kb=^H:\
+ :kd=\E[B:kl=\E[D:kr=\E[C:ku=\E[A:le=^H:mb=\E[5m:md=\E[1m:\
+ :me=\E[m:mh=\E[2m:mk=\E[9m:mr=\E[7m:nd=\E[C:nw=^M^J:\
+ :se=\E[m:sf=^J:so=\E[7m:st=\EH:ue=\E[m:up=\E[A:us=\E[4m:\
+ :ve=\E[=1C:vi=\E[=C:
+
+# From: Benjamin C. W. Sittler <bsittler@nmt.edu>
+#
+# I have a UNIX PC which I use as a terminal attached to my Linux PC.
+# Unfortunately, the UNIX PC terminfo entry that comes with ncurses
+# is broken. All the special key sequences are broken, making it unusable
+# with Emacs. The problem stems from the following:
+#
+# The UNIX PC has a plethora of keys (103 of them, and there's no numeric
+# keypad!), loadable fonts, and strange highlighting modes ("dithered"
+# half-intensity, "smeared" bold, and real strike-out, for example.) It also
+# uses resizable terminal windows, but the bundled terminal program always
+# uses an 80x24 window (and doesn't support seem to support a 132-column
+# mode.)
+#
+# HISTORY: The UNIX PC was one of the first machines with a GUI, and used a
+# library which was a superset of SVr3.5 curses (called tam, for "terminal
+# access method".) tam includes support for real, overlapping windows,
+# onscreen function key labels, and bitmap graphics. But since the primary
+# user interface on the UNIX PC was a GUI program (ua, for "user
+# assistant",) and remote administration was considered important for the
+# machine, tam also supported VT100-compatible terminals attached to the
+# serial port or used across the StarLan network. To simulate the extra keys
+# not present on a VT100, users could press ESC and a two-letter sequence,
+# such as u d (Undo) or U D (Shift-Undo.) These two-letter sequences,
+# however, were not the same as those sent by the actual Undo key. The
+# actual Undo key sends ESC 0 s unshifted, and ESC 0 S shifted, for example.
+# (If you're interested in adding some of the tam calls to ncurses, btw, I
+# have the full documentation and several programs which use tam. It also
+# used an extended terminfo format to describe key sequences, special
+# highlighting modes, etc.)
+#
+# KEYS: This means that ncurses would quite painful on the UNIX PC, since
+# there are two sequences for every key-modifier combination (local keyboard
+# sequence and remote "VT100" sequence.) But I doubt many people are trying
+# to use ncurses on the UNIX PC, since ncurses doesn't properly handle the
+# GUI. Unfortunately, the terminfo entry (and the termcap, too, I presume)
+# seem to have been built from the manual describing the VT100 sequences.
+# This means it doesn't work for a real live UNIX PC.
+#
+# FONTS: The UNIX PC also has a strange interpretation of "alternate
+# character set". Rather than the VT100 graphics you might expect, it allows
+# up to 8 custom fonts to be loaded at any given time. This means that
+# programs expecting VT100 graphics will usually be disappointed. For this
+# reason I have disabled the smacs/rmacs sequences, but they could easily be
+# re-enabled. Here are the relevant control sequences (from the ESCAPE(7)
+# manpage), should you wish to do so:
+#
+# SGR10 - Select font 0 - ESC [ 10 m or SO
+# SGR11 - Select font 1 - ESC [ 11 m or SI
+# SGR12 - Select font 2 - ESC [ 12 m
+# ... (etc.)
+# SGR17 - Select font 7 - ESC [ 17 m
+#
+# Graphics for line drawing are not reliably found at *any* character
+# location because the UNIX PC has dynamically reloadable fonts. I use font
+# 0 for regular text and font 1 for italics, but this is by no means
+# universal. So ASCII line drawing is in order if smacs/rmacs are enabled.
+#
+# MISC: The cursor visible/cursor invisible sequences were swapped in the
+# distributed terminfo.
+#
+# To ameliorate these problems (and fix a few highlighting bugs) I rewrote
+# the UNIX PC terminfo entry. The modified version works great with Lynx,
+# Emacs, and XEmacs running on my Linux PC and displaying on the UNIX PC
+# attached by serial cable. In Emacs, even the Undo key works, and many
+# applications can now use the F1-F8 keys.
+#
+# esr's notes:
+# Terminfo entry for the AT&T Unix PC 7300
+# from escape(7) in Unix PC 7300 Manual.
+# Somewhat similar to a vt100-am (but different enough
+# to redo this from scratch.)
+#
+# /***************************************************************
+# *
+# * FONT LOADING PROGRAM FOR THE UNIX PC
+# *
+# * This routine loads a font defined in the file ALTFONT
+# * into font memory slot #1. Once the font has been loaded,
+# * it can be used as an alternative character set.
+# *
+# * The call to ioctl with the argument WIOCLFONT is the key
+# * to this routine. For more information, see window(7) in
+# * the PC 7300 documentation.
+# ***************************************************************/
+# #include <string.h> /* needed for strcpy call */
+# #include <sys/window.h> /* needed for ioctl call */
+# #define FNSIZE 60 /* font name size */
+# #define ALTFONT "/usr/lib/wfont/special.8.ft" /* font file */
+# /*
+# * The file /usr/lib/wfont/special.8.ft comes with the
+# * standard PC software. It defines a graphics character set
+# * similar to that of the Teletype 5425 terminal. To view
+# * this or other fonts in /usr/lib/wfont, use the command
+# * cfont <filename>. For further information on fonts see
+# * cfont(1) in the PC 7300 documentation.
+# */
+#
+# struct altfdata /* structure for alt font data */
+# {
+# short altf_slot; /* memory slot number */
+# char altf_name[FNSIZE]; /* font name (file name) */
+# };
+# ldfont()
+# {
+# int wd; /* window in which altfont will be */
+# struct altfdata altf;
+# altf.altf_slot=1;
+# strcpy(altf.altf_name,ALTFONT);
+# for (wd =1; wd < 12; wd++) {
+# ioctl(wd, WIOCLFONT,&altf);
+# }
+# }
+#
+# (att7300: added :vi:/:ve:/:ic:/<invis> from the BSDI entry,
+# they're confirmed by the man page for the System V display---esr)
+#
+# (untranslatable capabilities removed to fit entry within 1023 bytes)
+# (sgr removed to fit entry within 1023 bytes)
+# (terminfo-only capabilities suppressed to fit entry within 1023 bytes)
+att7300|unixpc|pc7300|3b1|s4|AT&T UNIX PC Model 7300:\
+ :am:xo:\
+ :co#80:it#8:li#24:\
+ :AL=\E[%dL:DL=\E[%dM:DO=\E[%dB:LE=\E[%dD:RI=\E[%dC:\
+ :UP=\E[%dA:al=\E[L:bl=^G:bt=\E^I:cd=\E[0J:ce=\E[0K:\
+ :cl=\E[2J\E[H:cm=\E[%i%d;%dH:cr=^M:dc=\E[P:dl=\E[M:\
+ :do=\E[B:ei=:ho=\E[H:i1=\017\E[=1w:ic=\E[@:im=:k1=\EOc:\
+ :k2=\EOd:k3=\EOe:k4=\EOf:k5=\EOg:k6=\EOh:k7=\EOi:k8=\EOj:\
+ :kD=\ENf:kI=\ENj:kN=\E[U:kP=\E[V:kb=^H:kd=\E[B:kh=\E[H:\
+ :kl=\E[D:kr=\E[C:ku=\E[A:le=^H:mb=\E[9m:md=\E[1m:\
+ :me=\E[0;10m:mh=\E[2m:mr=\E[7m:nd=\E[C:nw=\EE:se=\E[m:\
+ :sf=^J:so=\E[7m:sr=\EM:ue=\E[m:up=\E[A:us=\E[4m:ve=\E[=0C:\
+ :vi=\E[=1C:
+
+#### Hewlett-Packard consoles
+#
+# These are descriptions for the HP700 series, the workstations formerly
+# known as Apollos. HP terminals are described elsewhere in the file
+#
+
+# From: Victor Duchovni <vic@fine.princeton.edu>
+# (hp700-wy: removed obsolete ":nl=^J:";
+# replaced /usr/share/tabset/hp700-wy with std because :it#8:,:st=\E1: -- esr)
+hp700-wy|HP700/41 emulating wyse30:\
+ :am:bs:bw:mi:ms:\
+ :co#80:it#8:li#24:sg#1:\
+ :al=0.7*\EE:bt=\EI:cd=\EY:ce=10\ET:cl=^Z:cm=\E=%+ %+ :\
+ :cr=^M:ct=\E0:cv=\E[%+ :dc=\EW:dl=\ER:do=^V:ei=\Er:ho=^^:\
+ :i1=\E~"\EC\Er\E(\EG0\003\E`9\E`1:\
+ :if=/usr/share/tabset/stdcrt:im=\Eq:kB=\EI:kC=^Z:kE=\ET:\
+ :kI=\Eq:kM=\Er:kS=\EY:kT=\EI:kb=\177:kd=^V:kh=^^:kl=^H:kr=^L:\
+ :ku=^K:le=^H:ll=^^^K:me=10\EG0:nd=^L:se=10\EG0:so=10\EG4:\
+ :sr=\Ej:st=\E1:ta=^I:ue=10\EG0:up=^K:us=10\EG8:
+hp70092|hp70092a|hp70092A|HP 700/92:\
+ :am:da:db:xs:\
+ :Nl#8:co#80:lh#2:li#24:lm#0:lw#8:\
+ :LF=\E&j@:LO=\E&jB:ac=0cjgktlrmfn/q\054t5u6v8w7x.:ae=^O:\
+ :al=\EL:as=^N:bl=^G:bt=\Ei:ce=\EK:ch=\E&a%dC:\
+ :cl=\E&a0y0C\EJ:cm=\E&a%dy%dC:cr=^M:ct=\E3:cv=\E&a%dY:\
+ :dc=\EP:dl=\EM:do=\EB:ei=\ER:im=\EQ:k1=\Ep:k2=\Eq:k3=\Er:\
+ :k4=\Es:k5=\Et:k6=\Eu:k7=\Ev:k8=\Ew:kA=\EL:kC=\EJ:kD=\EP:\
+ :kE=\EK:kF=\ES:kH=\EF:kI=\EQ:kL=\EM:kM=\ER:kN=\EU:kP=\EV:\
+ :kR=\ET:kS=\EJ:kT=\E1:ka=\E3:kb=^H:kd=\EB:ke=\E&s0A:kh=\Eh:\
+ :kl=\ED:kr=\EC:ks=\E&s1A:kt=\E2:ku=\EA:le=^H:mb=\E&dA:\
+ :md=\E&dB:me=\E&d@:mh=\E&dH:mr=\E&dB:nd=\EC:se=\E&d@:\
+ :so=\E&dJ:sr=\ET:st=\E1:ta=^I:ue=\E&d@:up=\EA:us=\E&dD:
+
+# HP 700/44 Setup parameters:
+# Terminal Mode HP-PCterm
+# Inhibit Auto Wrap NO
+# Status Line Host Writable
+# PC Character Set YES
+# Twenty-Five Line Mode YES
+# XON/XOFF @128 or 64 (sc)
+# Keycode Mode NO or YES (sc)
+# Backspace Key BS or BS/DEL
+#
+# :is: sets pcterm; autowrap; 25 lines; pc char set; prog DEL key;
+# \E\\? does not turn off keycode mode
+# <smsc> sets alternate start/stop; keycode on
+hpansi|hp700|hewlett packard 700/44 in HP-PCterm mode:\
+ :am:eo:xn:xo:\
+ :co#80:li#25:\
+ :@7=\E[4~:RA=\E[?7l:S4=\E[>11h\EPO**x0/65;1/67\E\:\
+ :S5=\E[>11l\EP1**x0/11;1/13\E[m\E\:SA=\E[?7h:XF=g:XN=e:\
+ :ac=j\331k\277l\332m\300n\305q\304t\303u\264v\301w\302x\263:\
+ :al=\E[L:bl=^G:bt=\E[Z:cd=\E[J:ce=\E[K:cl=\E[2J\E[H:\
+ :cm=\E[%i%d;%dH:cr=^M:dc=\E[P:dl=\E[M:do=\E[B:ei=:ho=\E[H:\
+ :ic=\E[@:im=:\
+ :is=\E[44"p\E[?7h\E[>10h\E[>12h\EP1;1|3/7F\E\:\
+ :k1=\E[17~:k2=\E[18~:k3=\E[19~:k4=\E[20~:k5=\E[21~:\
+ :k6=\E[23~:k7=\E[24~:k8=\E[25~:k9=\E[26~:k;=\E[28~:\
+ :kB=\E[Z:kN=\E[6~:kP=\E[5~:kb=^H:kd=\E[B:kh=\E[1~:kl=\E[D:\
+ :kr=\E[C:ku=\E[A:le=\E[D:me=\E[m:nd=\E[C:se=\E[m:sf=^J:\
+ :so=\E[7m:ta=^I:ue=\E[m:up=\E[A:us=\E[4m:ve=\E[?25h:\
+ :vi=\E[?25l:
+
+#### Iris consoles
+#
+
+# Sent by Stefan Stapelberg <stefan@rent-a-guru.de>, 24 Feb 1997, this is
+# from SGI's terminfo database. SGI's entry shows F9-F12 with the codes
+# for the application keypad mode. We have added iris-ansi-ap rather than
+# change the original to keypad mode.
+#
+# (iris-ansi: added rmam/smam based on init string -- esr)
+#
+# This entry, and those derived from it, is used in xwsh (also known as
+# winterm). Some capabilities that do not fit into the terminfo model
+# include the shift- and control-functionkeys:
+#
+# F1-F12 generate different codes when shift or control modifiers are used.
+# For example:
+# F1 \E[001q
+# shift F1 \E[013q
+# control-F1 \E[025q
+#
+# In application keypad mode, F9-F12 generate codes like vt100 PF1-PF4, i.e.,
+# \EOP to \EOS. The shifted and control modifiers still do the same thing.
+#
+# The cursor keys also have different codes:
+# control-up \E[162q
+# control-down \E[165q
+# control-left \E[159q
+# control-right \E[168q
+#
+# shift-up \E[161q
+# shift-down \E[164q
+# shift-left \E[158q
+# shift-right \E[167q
+#
+# control-tab \[072q
+#
+# iris-ansi-net alias helps with IRIX does when you rsh to a remote system.
+iris-ansi|iris-ansi-net|IRIS emulating 40 line ANSI terminal (almost VT100):\
+ :am:\
+ :co#80:it#8:li#40:\
+ :!2=\E[218q:#2=\E[143q:#4=\E[158q:%9=\E[209q:%f=\E[210q:\
+ :%i=\E[167q:&7=\E[217q:*4=\E[P:*7=\E[147q:@7=\E[146q:\
+ :@8=^M:AL=\E[%dL:DL=\E[%dM:DO=\E[%dB:F1=\E[011q:\
+ :F2=\E[012q:LE=\E[%dD:RA=\E[?7l:RI=\E[%dC:SA=\E[?7h:\
+ :UP=\E[%dA:al=\E[L:bl=^G:cb=\E[1K:cd=\E[J:ce=\E[K:\
+ :cl=\E[H\E[2J:cm=\E[%i%d;%dH:cr=^M:ct=\E[3g:dl=\E[M:do=^J:\
+ :ho=\E[H:is=\E[?1l\E>\E[?7h\E[100g\E[0m\E7\E[r\E8:\
+ :k1=\E[001q:k2=\E[002q:k3=\E[003q:k4=\E[004q:k5=\E[005q:\
+ :k6=\E[006q:k7=\E[007q:k8=\E[008q:k9=\E[009q:k;=\E[010q:\
+ :kB=\E[Z:kD=\177:kI=\E[139q:kM=\E[146q:kN=\E[154q:\
+ :kP=\E[150q:kb=^H:kd=\E[B:kh=\E[H:kl=\E[D:kr=\E[C:ku=\E[A:\
+ :le=\E[D:md=\E[1m:me=\E[m:mr=\E[7m:nd=\E[C:nw=\EE:\
+ :pk=\EP101;%d.y%s\E\:rc=\E8:sc=\E7:se=\E[m:sf=\ED:\
+ :so=\E[1;7m:sr=\EM:st=\EH:ta=^I:ue=\E[m:up=\E[A:us=\E[4m:\
+ :ve=\E[9/y\E[12/y\E[=6l:vs=\E[10/y\E[=1h\E[=2l\E[=6h:
+iris-ansi-ap|IRIS ANSI in application-keypad mode:\
+ :@8=\EOM:F1=\E[011q:F2=\E[012q:is=\E[?1l\E=\E[?7h:\
+ :k9=\E[009q:k;=\E[010q:\
+ :tc=iris-ansi:
+
+# From the man-page, this is a quasi-vt100 emulator that runs on SGI's IRIX
+# (T.Dickey 98/1/24)
+iris-color|xwsh|IRIX ANSI with color:\
+ :NC#33:\
+ :DC=\E[%dP:IC=\E[%d@:ZH=\E[3m:ZR=\E[23m:cs=\E[%i%d;%dr:\
+ :ec=\E[%dX:ei=:im=:mh=\E[2m:r1=\Ec:\
+ :r2=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h:rc=\E8:sc=\E7:\
+ :u6=\E[%i%d;%dR:u7=\E[6n:u8=\E[?1;2c:u9=\E[c:ue=\E[24m:\
+ :tc=klone+color:tc=iris-ansi-ap:
+
+# (wsiris: this had extension capabilities
+# :HS=\E7F2:HE=\E7F7:\
+# :CT#2:CZ=*Bblack,red,green,yellow,blue,magenta,cyan,*Fwhite:
+# See the note on Iris extensions near the end of this file.
+# Finally, removed suboptimal :cl:=\EH\EJ and added :do: &
+# :vb: from BRL -- esr)
+wsiris|iris40|iris emulating a 40 line visual 50 (approximately):\
+ :am:bs:nc:pt:\
+ :co#80:it#8:kn#3:li#40:\
+ :al=\EL:bl=^G:cd=\EJ:ce=\EK:cl=\Ev:cm=\EY%+ %+ :dl=\EM:\
+ :do=\EB:ho=\EH:is=\E7B0\E7F7\E7C2\E7R3:k0=\E0:k1=\E1:\
+ :k2=\E2:k3=\E3:k4=\E4:k5=\E5:k6=\E6:k7=\E7:k8=\E8:k9=\E9:\
+ :kd=\EB:kl=\ED:kr=\EC:ku=\EA:le=^H:me=\E7F7:mh=\E7F2:nd=\EC:\
+ :nl=\EB:se=\E0@:sf=^J:so=\E9P:sr=\EI:ta=^I:ue=\E7R3\E0@:\
+ :up=\EA:us=\E7R2\E9P:vb=\E7F4\E7B1\013\E7F7\E7B0:ve=\E>:\
+ :vs=\E;:
+
+#### NeWS consoles
+#
+# Console terminal windows under the NeWS (Sun's Display Postscript windowing
+# environment). Note: these have nothing to do with Sony's News workstation
+# line.
+#
+
+# Entry for NeWS's psterm from Eric Messick & Hugh Daniel
+# (psterm: unknown ":sl=\EOl:el=\ENl:" removed -- esr)
+psterm|psterm-basic|NeWS psterm-80x34:\
+ :am:bs:hs:km:ul:\
+ :co#80:it#8:li#34:\
+ :al=\EA:cd=\EB:ce=\EC:cl=^L:cm=\E%d;%d;:cs=\EE%d;%d;:\
+ :dc=\EF:dl=\EK:do=\EP:ei=\ENi:fs=\ENl:ho=\ER:i1=\EN*:\
+ :im=\EOi:kd=\E[B:kl=\E[D:kr=\E[C:ku=\E[A:le=\ET:ll=\EU:\
+ :mb=\EOb:md=\EOd:me=\EN*:mr=\EOr:nd=\EV:rc=^\:sc=^]:se=\ENo:\
+ :sf=\EW:so=\EOo:sr=\EX:ta=^I:te=\ENt:ti=\EOt:ts=\EOl:\
+ :ue=\ENu:up=\EY:us=\EOu:vb=\EZ:
+psterm-96x48|NeWS psterm 96x48:\
+ :co#96:li#48:tc=psterm:
+psterm-90x28|NeWS psterm 90x28:\
+ :co#90:li#28:tc=psterm:
+psterm-80x24|NeWS psterm 80x24:\
+ :co#80:li#24:tc=psterm:
+# This is a faster termcap for psterm. Warning: if you use this termcap,
+# some control characters you type will do strange things to the screen.
+# (psterm-fast: unknown ":sl=^Ol:el=^Nl:" -- esr)
+psterm-fast|NeWS psterm fast version (flaky ctrl chars):\
+ :am:bs:hs:km:ul:\
+ :co#80:it#8:li#34:\
+ :al=^A:cd=^B:ce=^C:cl=^L:cm=\004%d;%d;:cs=\005%d;%d;:dc=^F:\
+ :dl=^K:do=^P:ei=^Ni:fs=^Nl:ho=^R:i1=^N*:im=^Oi:kd=\E[B:\
+ :kl=\E[D:kr=\E[C:ku=\E[A:le=^T:ll=^U:mb=^Ob:md=^Od:me=^N*:\
+ :mr=^Or:nd=^V:rc=^\:sc=^]:se=^No:sf=^W:so=^Oo:sr=^X:ta=^I:\
+ :te=^Nt:ti=^Ot:ts=^Ol:ue=^Nu:up=^Y:us=^Ou:vb=^Z:
+
+#### NeXT consoles
+#
+# Use `glasstty' for the Workspace application
+#
+
+# From: Dave Wetzel <dave@turbocat.snafu.de> 22 Dec 1995
+next|NeXT console:\
+ :am:xt:\
+ :co#80:it#8:li#24:\
+ :bl=^G:ce=\E[K:cl=^L:cm=\E[%i%d;%dH:cr=^M:do=^J:ho=\E[H:\
+ :kb=^H:kd=^J:kl=^H:le=^H:me=\E[m:nd=\E[C:nw=^M^J:se=\E[4;1m:\
+ :sf=^J:so=\E[4;2m:ta=^I:up=\E[A:
+nextshell|NeXT Shell application:\
+ :am:\
+ :co#80:\
+ :bl=^G:cr=^M:do=^J:kb=^H:kd=^J:kl=^H:le=^H:nw=^M^J:ta=^I:
+
+#### SCO consoles
+#
+
+# SCO console and SOS-Syscons console for 386bsd
+# (scoansi: had unknown capabilities
+# :Gc=N:Gd=K:Gh=M:Gl=L:Gu=J:Gv=\072:\
+# :GC=E:GD=B:GH=D:GL=\64:GU=A:GV=\63:GR=C:
+# :G1=?:G2=Z:G3=@:G4=Y:G5=;:G6=I:G7=H:G8=<:\
+# :CW=\E[M:NU=\E[N:RF=\E[O:RC=\E[P:\
+# :WL=\E[S:WR=\E[T:CL=\E[U:CR=\E[V:\
+# I renamed GS/GE/HM/EN/PU/PD/RT and added klone+sgr-dumb, based
+# on the :as:=\E[12m -- esr)
+# SCO function keys and <acsc> corrected by Thomas Dickey.
+# In this description based on SCO's keyboard(HW) manpage list of default function key
+# values:
+# F13-F24 are shifted F1-F12
+# F25-F36 are control F1-F12
+# F37-F48 are shift+control F1-F12
+# (untranslatable capabilities removed to fit entry within 1023 bytes)
+scoansi|SCO Extended ANSI standard crt:\
+ :am:eo:xo:\
+ :Co#8:co#80:it#8:li#25:pa#64:\
+ :@1=\E[E:@7=\E[F:AB=\E[4%p1%dm:AF=\E[3%p1%dm:F1=\E[W:\
+ :F2=\E[X:F3=\E[Y:F5=\E[a:F6=\E[b:F7=\E[c:F8=\E[d:F9=\E[e:\
+ :FA=\E[f:FB=\E[g:FC=\E[h:FD=\E[i:FE=\E[j:FF=\E[k:FG=\E[l:\
+ :FH=\E[m:FI=\E[n:FJ=\E[o:FK=\E[p:FL=\E[q:FM=\E[r:FN=\E[s:\
+ :FO=\E[t:FP=\E[u:FQ=\E[v:FR=\E[w:FS=\E[x:FT=\E[y:FU=\E[z:\
+ :FV=\E[@:FW=\E[[:FX=\E[\:FY=\E[]:FZ=\E[\136:Fa=\E[_:\
+ :Fb=\E[`:Fc=\E[{:\
+ :ac=0[5566778899\072\072;;<<==>>FFGGHHIIJJKKLLMMNNOOPPQQRRSSTTUUVVWWXX`ja0fxgqh2jYk?lZm@nEqDtCu4vAwBx3~y:\
+ :ae=\E[10m:al=\E[L:as=\E[12m:bt=\E[Z:cd=\E[J:ce=\E[K:\
+ :cl=\E[H\E[2J:cm=\E[%i%d;%dH:dc=\E[P:dl=\E[M:do=\E[B:ei=:\
+ :ho=\E[H:ic=\E[@:im=:k1=\E[M:k2=\E[N:k3=\E[O:k4=\E[P:\
+ :k5=\E[Q:k6=\E[R:k7=\E[S:k8=\E[T:k9=\E[U:k;=\E[V:kB=\E[Z:\
+ :kI=\E[L:kN=\E[G:kP=\E[I:kb=^H:kd=\E[B:kh=\E[H:kl=\E[D:\
+ :kr=\E[C:ku=\E[A:le=\E[D:mb=\E[5m:md=\E[1m:me=\E[0;10m:\
+ :mk=\E[8m:mr=\E[7m:nd=\E[C:op=\E[37;40m:se=\E[m:sf=\E[S:\
+ :so=\E[7m:sr=\E[T:ta=^I:ue=\E[m:up=\E[A:us=\E[4m:
+
+#### Sun consoles
+#
+
+# :is1: resets scrolling region in case a previous user had used "tset vt100"
+oldsun|Sun Microsystems Workstation console:\
+ :am:bs:km:mi:ms:\
+ :co#80:it#8:li#34:\
+ :AL=\E[%dL:DC=\E[%dP:DL=\E[%dM:IC=\E[%d@:al=\E[L:bl=^G:\
+ :cd=\E[J:ce=\E[K:cl=^L:cm=\E[%i%d;%dH:cr=^M:dc=\E[P:\
+ :dl=\E[M:do=\E[B:ei=:i1=\E[1r:ic=\E[@:im=:k1=\EOP:k2=\EOQ:\
+ :k3=\EOR:k4=\EOS:kd=\E[B:kh=\E[H:kl=\E[D:kr=\E[C:ku=\E[A:\
+ :le=^H:me=\E[m:nd=\E[C:se=\E[m:sf=^J:so=\E[7m:ta=^I:up=\E[A:
+# From: Alexander Lukyanov <lav@video.yars.free.net>, 14 Nov 1995
+# :li: capability later corrected by J.T. Conklin <jtc@cygnus.com>
+# SGR 1, 4 aren't supported - removed bold/underline (T.Dickey 17 Jan 1998)
+sun-il|Sun Microsystems console with working insert-line:\
+ :am:km:ms:\
+ :co#80:li#34:\
+ :%7=\E[194z:&5=\E[193z:&8=\E[195z:@7=\E[220z:AL=\E[%dL:\
+ :DC=\E[%dP:DL=\E[%dM:F1=\E[234z:F2=\E[235z:IC=\E[%d@:\
+ :K2=\E[218z:al=\E[L:bl=^G:cd=\E[J:ce=\E[K:cl=^L:\
+ :cm=\E[%i%d;%dH:cr=^M:dc=\E[P:dl=\E[M:do=^J:ei=:ic=\E[@:im=:\
+ :k1=\E[224z:k2=\E[225z:k3=\E[226z:k4=\E[227z:k5=\E[228z:\
+ :k6=\E[229z:k7=\E[230z:k8=\E[231z:k9=\E[232z:k;=\E[233z:\
+ :kD=\177:kN=\E[222z:kP=\E[216z:kb=^H:kd=\E[B:kh=\E[214z:\
+ :kl=\E[D:kr=\E[C:ku=\E[A:le=^H:md@:me=\E[m:mr=\E[7m:nd=\E[C:\
+ :r2=\E[s:\
+ :..sa=\E[0%?%p6%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;m:\
+ :se=\E[m:sf=^J:so=\E[7m:ta=^I:u8=\E[1t:u9=\E[11t:ue@:\
+ :up=\E[A:us@:
+# On a SparcStation 5, :al:/:AL: flake out on the last line.
+# Unfortunately, without them the terminal has no way to scroll.
+sun-ss5|Sun SparcStation 5 console:\
+ :AL@:al@:tc=sun-il:
+# If you are using an SS5, change the sun definition to use sun-ss5.
+sun|sun1|sun2|Sun Microsystems Inc. workstation console:\
+ :tc=sun-il:
+
+# From: <john@ucbrenoir> Tue Sep 24 13:14:44 1985
+sun-s|Sun Microsystems Workstation window with status line:\
+ :hs:\
+ :ds=\E]l\E\:fs=\E\:ts=\E]l:tc=sun:
+sun-e-s|sun-s-e|Sun Microsystems Workstation with status hacked for emacs:\
+ :hs:\
+ :ds=\E]l\E\:fs=\E\:ts=\E]l:tc=sun-e:
+sun-48|Sun 48-line window:\
+ :co#80:li#48:tc=sun:
+sun-34|Sun 34-line window:\
+ :co#80:li#34:tc=sun:
+sun-24|Sun 24-line window:\
+ :co#80:li#24:tc=sun:
+sun-17|Sun 17-line window:\
+ :co#80:li#17:tc=sun:
+sun-12|Sun 12-line window:\
+ :co#80:li#12:tc=sun:
+sun-1|Sun 1-line window for sysline:\
+ :es:hs:\
+ :co#80:li#1:\
+ :ds=^L:fs=\E[K:ts=^M:tc=sun:
+sun-e|sun-nic|sune|Sun Microsystems Workstation without insert character:\
+ :ei@:ic@:im@:\
+ :tc=sun:
+sun-c|sun-cmd|Sun Microsystems Workstation console with scrollable history:\
+ :li#35:\
+ :te=\E[>4h:ti=\E[>4l:tc=sun:
+
+#### Common Desktop Environment
+#
+
+# This ships with Sun's CDE in Solaris 2.5
+# Corrected Sun Aug 9 1998 by Alexander V. Lukyanov <lav@video.yars.free.net>
+# (untranslatable capabilities removed to fit entry within 1023 bytes)
+# (sgr removed to fit entry within 1023 bytes)
+# (terminfo-only capabilities suppressed to fit entry within 1023 bytes)
+dtterm|CDE desktop terminal:\
+ :am:mi:ms:xn:xo:\
+ :co#80:it#8:li#24:lm#0:\
+ :AL=\E[%dL:DC=\E[%dP:DL=\E[%dM:DO=\E[%dB:IC=\E[%d@:\
+ :LE=\E[%dD:RI=\E[%dC:UP=\E[%dA:ae=^O:al=\E[L:as=^N:bl=^G:\
+ :cd=\E[J:ce=\E[K:cl=\E[H\E[J:cm=\E[%i%d;%dH:cr=^M:\
+ :cs=\E[%i%d;%dr:ct=\E[3g:dc=\E[P:dl=\E[M:do=^J:ec=\E[%dX:\
+ :ei=\E[4l:ho=\E[H:im=\E[4h:\
+ :is=\E F\E>\E[?1l\E[?7h\E[?45l:k1=\E[11~:k2=\E[12~:\
+ :k3=\E[13~:k4=\E[14~:k5=\E[15~:k6=\E[17~:k7=\E[18~:\
+ :k8=\E[19~:k9=\E[20~:kD=\E[3~:kI=\E[2~:kN=\E[6~:kP=\E[5~:\
+ :kb=^H:kd=\E[B:kl=\E[D:kr=\E[C:ku=\E[A:le=^H:mb=\E[5m:\
+ :md=\E[1m:me=\E[m\017:mh=\E[2m:mr=\E[7m:nd=\E[C:nw=\EE:\
+ :rc=\E8:sc=\E7:se=\E[22;27m:sf=\ED:so=\E[2;7m:sr=\EM:\
+ :st=\EH:ta=^I:ue=\E[24m:up=\E[A:us=\E[4m:vb=\E[?5h\E[?5l:\
+ :ve=\E[?25h:vi=\E[?25l:
+
+#### Mach
+#
+
+# From: Matthew Vernon <mcv21@pick.sel.cam.ac.uk>
+mach|Mach Console:\
+ :am:km:\
+ :co#80:it#8:li#25:\
+ :@7=\E[Y:AL=\E[%dL:DL=\E[%dM:DO=\E[%dB:LE=\E[%dD:\
+ :RI=\E[%dC:UP=\E[%dA:al=\E[L:bl=^G:cd=\E[J:ce=\E[K:cl=\Ec:\
+ :cm=\E[%i%d;%dH:cr=^M:dl=\E[M:do=^J:ho=\E[H:k1=\EOP:\
+ :k2=\EOQ:k3=\EOR:k4=\EOS:k5=\EOT:k6=\EOU:k7=\EOV:k8=\EOW:\
+ :k9=\EOX:k;=\EOY:kD=\E[9:kH=\E[F:kI=\E[@:kN=\E[U:kP=\E[V:\
+ :kb=^H:kd=\E[B:kh=\E[H:kl=\E[D:kr=\E[C:ku=\E[A:le=^H:\
+ :mb=\E[5m:md=\E[1m:me=\E[0m:mr=\E[7m:nd=\E[C:nw=^M^J:\
+ :se=\E[0m:sf=^J:so=\E[7m:ta=^I:up=\E[A:
+mach-bold|Mach Console with bold instead of underline:\
+ :ue=\E[0m:us=\E[1m:\
+ :tc=mach:
+
+#### OSF Unix
+#
+
+# OSF/1 1.1 Snapshot 2
+pmcons|pmconsole|PMAX console:\
+ :am:\
+ :co#128:li#57:\
+ :bl=^G:cl=^L:cr=^M:do=^J:k1=\EOP:k2=\EOQ:k3=\EOR:k4=\EOS:\
+ :kd=\E[B:kl=\E[D:kr=\E[C:ku=\E[A:le=^H:sf=^J:ta=^I:up=^K:
+
+######## UNIX VIRTUAL TERMINALS AND TELNET CLIENTS
+#
+
+#### FSF virtual terminal types
+#
+
+# The codes supported by the term.el terminal emulation in GNU Emacs 19.30
+eterm|gnu emacs term.el terminal emulation:\
+ :am:mi:xn:\
+ :co#80:li#24:\
+ :AL=\E[%dL:DC=\E[%dP:DL=\E[%dM:DO=\E[%dB:IC=\E[%d@:\
+ :LE=\E[%dD:RI=\E[%dC:UP=\E[%dA:al=\E[L:bl=^G:cb=\E[1K:\
+ :cd=\E[J:ce=\E[K:cl=\E[H\E[J:cm=\E[%i%d;%dH:cr=^M:\
+ :cs=\E[%i%d;%dr:dc=\E[P:dl=\E[M:do=^J:ei=\E[4l:ho=\E[H:\
+ :im=\E[4h:le=^H:md=\E[1m:me=\E[m:mr=\E[7m:nd=\E[C:se=\E[m:\
+ :sf=^J:so=\E[7m:ta=^I:te=\E[2J\E[?47l\E8:ti=\E7\E[?47h:\
+ :ue=\E[m:up=\E[A:us=\E[4m:
+
+# Entries for use by the `screen' program by Juergen Weigert,
+# Michael Schroeder, Oliver Laumann. The screen and
+# screen-w entries came with version 3.7.1. The screen2 and screen3 entries
+# come from University of Wisconsin and may be older.
+# (screen: added :ve: on ANSI model -- esr)
+# (screen: added <el1> -- TD)
+
+screen|VT 100/ANSI X3.64 virtual terminal:\
+ :am:km:mi:ms:xn:\
+ :Co#8:co#80:it#8:li#24:pa#64:\
+ :AL=\E[%dL:DC=\E[%dP:DL=\E[%dM:DO=\E[%dB:F1=\E[23~:\
+ :F2=\E[24~:IC=\E[%d@:LE=\E[%dD:RI=\E[%dC:UP=\E[%dA:\
+ :ac=++\054\054--..00``aaffgghhiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~:\
+ :ae=^O:al=\E[L:as=^N:bl=^G:bt=\E[Z:cb=\E[1K:cd=\E[J:ce=\E[K:\
+ :cl=\E[H\E[J:cm=\E[%i%d;%dH:cr=^M:cs=\E[%i%d;%dr:\
+ :ct=\E[3g:dc=\E[P:dl=\E[M:do=^J:eA=\E(B\E)0:ei=\E[4l:\
+ :ho=\E[H:im=\E[4h:is=\E)0:k1=\EOP:k2=\EOQ:k3=\EOR:k4=\EOS:\
+ :k5=\E[15~:k6=\E[17~:k7=\E[18~:k8=\E[19~:k9=\E[20~:\
+ :k;=\E[21~:kD=\E[3~:kH=\E[4~:kI=\E[2~:kN=\E[6~:kP=\E[5~:\
+ :kb=^H:kd=\EOB:ke=\E[?1l\E>:kh=\E[1~:kl=\EOD:kr=\EOC:\
+ :ks=\E[?1h\E=:ku=\EOA:le=^H:mb=\E[5m:md=\E[1m:me=\E[m:\
+ :mr=\E[7m:nd=\E[C:nw=\EE:r2=\Ec:rc=\E8:sc=\E7:se=\E[23m:\
+ :sf=^J:so=\E[3m:sr=\EM:st=\EH:ta=^I:ue=\E[24m:up=\EM:\
+ :us=\E[4m:vb=\Eg:ve=\E[34h\E[?25h:vi=\E[?25l:vs=\E[34l:\
+ :tc=ecma+color:
+
+screen-w|VT 100/ANSI X3.64 virtual terminal with 132 cols:\
+ :co#132:tc=screen:
+
+screen2|old VT 100/ANSI X3.64 virtual terminal:\
+ :co#80:it#8:li#24:\
+ :AL=\E[%dL:DC=\E[%dP:DL=\E[%dM:DO=\E[%dB:IC=\E[%d@:\
+ :LE=\E[%dD:RI=\E[%dC:UP=\E[%dA:al=\E[L:bt=\E[Z:cd=\E[J:\
+ :ce=\E[K:cl=\E[2J\E[H:cm=\E[%i%d;%dH:cr=^M:ct=\E[3g:\
+ :dc=\E[P:dl=\E[M:do=\E[B:ei=\E[4l:ic=:im=\E[4h:k0=\E~:\
+ :k1=\ES:k2=\ET:k3=\EU:k4=\EV:k5=\EW:k6=\EP:k7=\EQ:k8=\ER:\
+ :k9=\E0I:kb=^H:kd=\EB:kh=\EH:kl=\ED:kr=\EC:ku=\EA:le=^H:\
+ :me=\E[m:nd=\E[C:nw=^M^J:r1=\Ec:rc=\E8:sc=\E7:se=\E[23m:\
+ :sf=^J:so=\E[3m:sr=\EM:st=\EH:ta=^I:ue=\E[24m:up=\E[A:\
+ :us=\E[4m:
+# (screen3: removed unknown ":xv:LP:G0:" -- esr)
+screen3|older VT 100/ANSI X3.64 virtual terminal:\
+ :km:mi:ms:\
+ :co#80:it#8:li#24:\
+ :AL=\E[%dL:DC=\E[%dP:DL=\E[%dM:DO=\E[%dB:IC=\E[%d@:\
+ :LE=\E[%dD:RI=\E[%dC:UP=\E[%dA:al=\E[L:bl=^G:bt=\E[Z:\
+ :cd=\E[J:ce=\E[K:cl=\E[H\E[J:cm=\E[%i%d;%dH:cr=^M:\
+ :cs=\E[%i%d;%dr:ct=\E[3g:dc=\E[P:dl=\E[M:do=^J:ei=\E[4l:\
+ :ho=\E[H:im=\E[4h:is=\E)0:k1=\EOP:k2=\EOQ:k3=\EOR:k4=\EOS:\
+ :kb=^H:kd=\EOB:ke=\E>:kl=\EOD:kr=\EOC:ks=\E=:ku=\EOA:le=^H:\
+ :mb=\E[5m:md=\E[1m:me=\E[m:mr=\E[7m:nd=\E[C:nw=\EE:r1=\Ec:\
+ :rc=\E8:sc=\E7:se=\E[23m:sf=^J:so=\E[3m:sr=\EM:st=\EH:ta=^I:\
+ :ue=\E[24m:up=\EM:us=\E[4m:
+
+# Francesco Potorti <F.Potorti@cnuce.cnr.it>:
+# NCSA telnet is one of the most used telnet clients for the Macintosh. It has
+# been maintained until recently by the National Center for Supercomputer
+# Applications, and it is feature rich, stable and free. It can be downloaded
+# from www.ncsa.edu. This terminfo description file is based on xterm-vt220,
+# xterm+sl, and the docs at NCSA. It works well.
+#
+# NCSA Telnet 2.6 for Macintosh in vt220 8-bit emulation mode
+# The terminal options should be set as follows:
+# Xterm sequences ON
+# use VT wrap mode ON
+# use Emacs arrow keys OFF
+# CTRL-COMND is Emacs meta ON
+# 8 bit mode ON
+# answerback string: "ncsa-vt220-8"
+# setup keys: all disabled
+#
+# Application mode is not used.
+#
+# Other special mappings:
+# Apple VT220
+# HELP Find
+# HOME Insert here
+# PAGEUP Remove
+# DEL Select
+# END Prev Screen
+# PAGEDOWN Next Screen
+#
+# Though it supports ANSI color, NCSA Telnet uses color to represent blinking
+# text.
+#
+# The status-line manipulation is a mapping of the xterm-compatible control
+# sequences for setting the window-title. So you must use tsl and fsl in
+# pairs, since the latter ends the string that is loaded to the window-title.
+# (untranslatable capabilities removed to fit entry within 1023 bytes)
+# (sgr removed to fit entry within 1023 bytes)
+# (terminfo-only capabilities suppressed to fit entry within 1023 bytes)
+ncsa-m|ncsa-vt220-8|NCSA Telnet 2.6 for Macintosh in vt220-8 mode:\
+ :am:hs:km:mi:ms:xn:\
+ :AL=\E[%dL:DC=\E[%dP:DL=\E[%dM:DO=\E[%dB:IC=\E[%d@:\
+ :LE=\E[%dD:RI=\E[%dC:UP=\E[%dA:ae=^O:al=\E[L:as=^N:bl=^G:\
+ :cd=\E[J:ce=\E[K:cl=\E[H\E[2J:cm=\E[%i%d;%dH:cr=^M:\
+ :cs=\E[%i%d;%dr:ct=\E[3g:dc=\E[P:dl=\E[M:do=^J:\
+ :ds=\E]0;\007:ei=\E[4l:fs=^G:ho=\E[H:\
+ :if=/usr/share/tabset/vt100:im=\E[4h:\
+ :is=\E7\E[r\E[m\E[?7h\E[?1;4;6l\E[4l\E8\E>:k1=\E[17~:\
+ :k2=\E[18:k3=\E[19~:k4=\E[20~:k5=\E[21~:k6=\E23~:\
+ :k7=\E[24~:k8=\E[25~:k9=\E[26~:kD=\E[4~:kN=\E[6~:kP=\E[3~:\
+ :kb=^H:kd=\E[B:kh=\E[2~:kl=\E[D:kr=\E[C:ku=\E[A:le=^H:\
+ :mb=\E[5m:md=\E[1m:me=\E[m\017:mr=\E[7m:nd=\E[C:rc=\E8:\
+ :sc=\E7:se=\E[27m:sf=\n:so=\E[7m:sr=\EM:st=\EH:ta=^I:\
+ :te=\E[2J\E8:ti=\E7:ts=\E]0;:ue=\E[24m:up=\E[A:us=\E[4m:\
+ :vb=\E[?5h\E[?5l:ve=\E[?25h:vi=\E[?25l:
+ncsa|NCSA Telnet 2.7 for Macintosh in vt220-8 mode:\
+ :tc=ncsa-m:tc=klone+color:
+ncsa-ns|NCSA Telnet 2.7 for Macintosh in vt220-8 mode:\
+ :hs@:\
+ :ds@:fs@:ts@:tc=ncsa:
+ncsa-m-ns|NCSA Telnet 2.6 for Macintosh in vt220-8 mode:\
+ :hs@:\
+ :ds@:fs@:ts@:tc=ncsa-m:
+# alternate -TD:
+# The documented function-key mapping refers to the Apple Extended Keyboard
+# (e.g., NCSA Telnet's F1 corresponds to a VT220 F6). We use the VT220-style
+# codes, however, since the numeric keypad (VT100) PF1-PF4 are available on
+# some keyboards and many applications require these as F1-F4.
+#
+ncsa-vt220|NCSA Telnet using vt220-compatible function keys:\
+ :F1=\E[23~:F2=\E[24~:F3=\E[25~:F4=\E[26~:F5=\E[28~:\
+ :F6=\E[29~:F7=\E[31~:F8=\E[32~:F9=\E[33~:FA=\E[34~:\
+ :k1=\EOP:k2=\EOQ:k3=\EOR:k4=\EOS:k6=\E[17~:k7=\E[18~:\
+ :k8=\E[19~:k9=\E[20~:k;=\E[21~:\
+ :tc=ncsa:
+
+#### Pilot Pro Palm-Top
+#
+
+# From: Jason Downs <downsj@downsj.com>, 15 Jun 1997 (Top Gun Telnet's author)
+pilot|tgtelnet|Top Gun Telnet on the Palm Pilot Professional:\
+ :am:xn:\
+ :co#39:li#16:\
+ :bl=^G:cl=\Ec:cm=\Em%+ %+ :cr=^M:do=^J:ho=\Em :kN=^L:kP=^K:\
+ :kb=^H:kd=^J:kl=^H:le=^H:nw=\Em~ :se=\EB:sf=^J:so=\Eb:ta=^I:
+
+######## NON-UNIX CONSOLES
+#
+
+#### MGR
+#
+# MGR is a Bell Labs window system lighter-weight than X.
+# These entries describe MGR's xterm-equivalent.
+# They are courtesy of Vincent Broman <broman@nosc.mil> 14 Jan 1997
+#
+
+mgr|Bellcore MGR (non X) window system terminal emulation:\
+ :am:km:\
+ :AL=\E%da:DC=\E%dE:DL=\E%dd:IC=\E%dA:RA=\E5S:SA=\E5s:\
+ :al=\Ea:bl=^G:cd=\EC:ce=\Ec:cl=^L:cm=\E%r%d;%dM:cr=^M:\
+ :cs=\E%d;%dt:dc=\EE:dl=\Ed:do=\Ef:ei=:hd=\E1;2f:hu=\E1;2u:\
+ :ic=\EA:im=:kb=^H:kd=\E[B:kl=\E[D:kr=\E[C:ku=\E[A:le=^H:\
+ :md=\E2n:me=\E0n:mr=\E1n:nd=\Er:nw=^M^J:se=\E0n:sf=^J:\
+ :so=\E1n:ta=^I:ue=\E0n:up=\Eu:us=\E4n:ve=\Eh:vi=\E9h:\
+ :vs=\E0h:
+mgr-sun|Mgr window with Sun keyboard:\
+ :%1=\E[207z:%6=\E[198z:&8=\E[195z:@0=\E[200z:@5=\E197z:\
+ :@7=\E[220z:@8=\E[250z:F1=\E[234z:F2=\E[235z:K1=\E[214z:\
+ :K2=\E[218z:K3=\E[216z:K4=\E[220z:K5=\E[222z:k1=\E[224z:\
+ :k2=\E[225z:k3=\E[226z:k4=\E[227z:k5=\E[228z:k6=\E[229z:\
+ :k7=\E[230z:k8=\E[231z:k9=\E[232z:k;=\E[233z:kN=\E[222z:\
+ :kP=\E[216z:kh=\E[214z:\
+ :tc=mgr:
+mgr-linux|Mgr window with Linux keyboard:\
+ :@7=\E[4~:F1=\E[23~:F2=\E[24~:K1=\E[H:K2=\E[G:K3=\E[5~:\
+ :K4=\E[Y:K5=\E[6~:k0=\E[[J:k1=\E[[A:k2=\E[[B:k3=\E[[C:\
+ :k4=\E[[D:k5=\E[[E:k6=\E[17~:k7=\E[18~:k8=\E[19~:\
+ :k9=\E[20~:k;=\E[21~:kD=\E[3~:kN=\E[6~:kP=\E[5~:kh=\E[1~:tc=mgr:
+
+#### BeOS
+#
+# BeOS entry for Terminal program Seems to be almost ANSI
+beterm|BeOS Terminal:\
+ :am:eo:mi:ms:xn:xo:\
+ :Co#8:NC#5:co#80:it#8:li#25:pa#64:\
+ :&7=^Z:@7=\E[4~:AB=\E[4%p1%dm:AF=\E[3%p1%dm:AL=\E[%dL:\
+ :DC=\E[%dP:DL=\E[%dM:F1=\E[21~:F2=\E[22~:IC=\E[%d@:\
+ :Sb=\E[%+(m:Sf=\E[%+^^m:al=\E[L:bl=^G:cd=\E[J:ce=\E[K:\
+ :ch=\E[%i%dG:cl=\E[H\E[J:cm=\E[%i%d;%dH:cr=^M:\
+ :cs=\E[%i%d;%dr:cv=\E[%i%dd:dc=\E[P:dl=\E[M:do=^J:\
+ :ei=\E[4l:ho=\E[H:ic=\E[@:im=\E[4h:k1=\E[11~:k2=\E[12~:\
+ :k3=\E[13~:k4=\E[14~:k5=\E[15~:k6=\E[16~:k7=\E[17~:\
+ :k8=\E[18~:k9=\E[19~:k;=\E[20~:kD=\E[3~:kI=\E[2~:kN=\E[6~:\
+ :kP=\E[5~:kb=^H:kd=\E[B:kh=\E[1~:kl=\E[D:kr=\E[C:ku=\E[A:\
+ :le=^H:md=\E[1m:me=\E[0;10m:mr=\E[7m:nd=\E[C:nw=^M^J:\
+ :op=\E[m:r1=\Ec:rc=\E8:sc=\E7:se=\E[m:sf=^J:so=\E[7m:sr=\EM:\
+ :st=\EH:ta=^I:u6=\E[%i%d;%dR:u7=\E[6n:ue=\E[24m:up=\E[A:\
+ :us=\E[4m:
+
+#### QNX
+#
+
+# QNX 4.0 Console
+# Michael's original version of this entry had <am@>, :ti=\Ei:,
+# :te=\Eh\ER:; this was so terminfo applications could write the lower
+# right corner without triggering a scroll. The ncurses terminfo library can
+# handle this case with the :ic: capability, and prefers :am: for better
+# optimization. Bug: The <op> capability resets attributes.
+# From: Michael Hunter <mphunter@qnx.com> 30 Jul 1996
+# (removed: :sa=%?%p1%t\E<%;%p2%t\E[%;%p3%t\E(%;%p4%t\E{%;%p6%t\E<%;,:)
+# (untranslatable capabilities removed to fit entry within 1023 bytes)
+# (sgr removed to fit entry within 1023 bytes)
+# (terminfo-only capabilities suppressed to fit entry within 1023 bytes)
+qnx|qnx4|qnx console:\
+ :km:mi:ms:xt:\
+ :co#80:it#4:li#25:\
+ :al=\EE:bl=^G:cd=\EJ:ce=\EK:cl=\EH\EJ:cm=\EY%+ %+ :cr=^M:\
+ :dc=\Ef:dl=\EF:do=^J:ei=:ho=\EH:ic=\Ee:im=:k1=\377\201:\
+ :k2=\377\202:k3=\377\203:k4=\377\204:k5=\377\205:\
+ :k6=\377\206:k7=\377\207:k8=\377\210:k9=\377\211:\
+ :kD=\377\254:kI=\377\253:kN=\377\252:kP=\377\242:\
+ :kd=\377\251:kh=\377\240:kl=\377\244:kr=\377\246:\
+ :ku=\377\241:le=^H:mb=\E{:md=\E<:me=\E}\E]\E>\E):mr=\E(:\
+ :nd=\EC:rp=\Eg%r%+ %.:se=\E):sf=^J:so=\E(:sr=\EI:ta=^I:\
+ :te=\Eh\ER:ti=\Ei:ue=\E]:up=\EA:us=\E[:ve=\Ey1:vi=\Ey0:\
+ :vs=\Ey2:
+
+# From: Federico Bianchi <bianchi@pc-arte2.arte.unipi.it>, 1 Jul 1998
+# (esr: commented out <scp> and :te: to avoid warnings.)
+# (TD: derive from original qnx4 entry)
+qnxt2|qnx 2.15 serial terminal:\
+ :am:\
+ :!3@:%h@:%j@:&7@:Sb@:Sf@:dc@:ei=:ic@:im=:rp@:se=\E>:so=\E<:te@:ti@:\
+ :ve@:vi@:vs@:\
+ :tc=qnx4:
+
+#### DOS ANSI.SYS variants
+#
+# This completely describes the sequences specified in the DOS 2.1 ANSI.SYS
+# documentation (except for the keyboard key reassignment feature, which
+# doen't fit the <pfkey> model well). The klone+acs sequences were valid
+# though undocumented. The <pfkey> capability is untested but should work for
+# keys F1-F10 (%p1 values outside this range will yield unpredictable results).
+# From: Eric S. Raymond <esr@snark.thyrsus.com> Nov 7 1995
+ansi.sys-old|ANSI.SYS under PC-DOS 2.1:\
+ :am:bs:mi:ms:xo:\
+ :co#80:li#25:\
+ :RA=\E[?7l:SA=\E[?7h:ce=\E[k:cl=\E[2J:cm=\E[%i%d;%dH:\
+ :do=\E[B:ho=\E[H:is=\E[m\E[?7h:kd=^J:kh=^^:kl=^H:kr=^L:\
+ :ku=^K:le=^H:nd=\E[C:pk=\E[0;%+:;"%s":rc=\E[u:sc=\E[s:\
+ :u6=\E[%i%d;%dR:u7=\E[6n:up=\E[A:\
+ :tc=klone+color:tc=klone+sgr:
+ansi.sys|ANSI.SYS 3.1 and later versions:\
+ :ce=\E[K:tc=ansi.sys-old:
+
+#
+# Define IBM PC keypad keys for vi as per MS-Kermit while using ANSI.SYS.
+# This should only be used when the terminal emulator cannot redefine the keys.
+# Since redefining keys with ansi.sys also affects PC-DOS programs, the key
+# definitions must be restored. If the terminal emulator is quit while in vi
+# or others using :ks:/:ke:, the keypad will not be defined as per PC-DOS.
+# The PgUp and PgDn are prefixed with ESC so that tn3270 can be used on Unix
+# (^U and ^D are already defined for tn3270). The ESC is safe for vi but it
+# does "beep". ESC ESC i is used for Ins to avoid tn3270 ESC i for coltab.
+# Note that :kl: is always BS, because PC-dos can tolerate this change.
+# Caution: vi is limited to 256 string bytes, longer crashes or weirds out vi.
+# Consequently the End keypad key could not be set (it is relatively safe and
+# actually useful because it sends ^@ O, which beeps and opens a line above).
+ansi.sysk|ansisysk|PC-DOS 3.1 ANSI.SYS with keypad redefined for vi:\
+ :is=U2 PC-DOS 3.1 ANSI.SYS with keypad redefined for vi 9-29-86\n\E[;75;8p:\
+ :ke=\E[;71;0;71p\E[;72;0;72p\E[;73;0;73p\E[;77;0;77p\E[;80;0;80p\E[;81;0;81p\E[;82;0;82p\E[;83;0;83p:\
+ :ks=\E[;71;30p\E[;72;11p\E[;73;27;21p\E[;77;12p\E[;80;10p\E[;81;27;4p\E[;82;27;27;105p\E[;83;127p:\
+ :tc=ansi.sys:
+#
+# Adds ins/del line/character, hence vi reverse scrolls/inserts/deletes nicer.
+nansi.sys|nansisys|PC-DOS Public Domain NANSI.SYS:\
+ :al=\E[1L:dc=\E[1P:dl=\E[1M:ei=:ic=\E[1@:im=:\
+ :is=U3 PC-DOS Public Domain NANSI.SYS 9-23-86\n:tc=ansi.sys:
+#
+# See ansi.sysk and nansi.sys above.
+nansi.sysk|nansisysk|PC-DOS Public Domain NANSI.SYS with keypad redefined for vi:\
+ :al=\E[1L:dc=\E[1P:dl=\E[1M:ei=:ic=\E[1@:im=:\
+ :is=U4 PC-DOS Public Domain NANSI.SYS with keypad redefined for vi 9-29-86\n\E[;75;8p:tc=ansi.sysk:
+
+#### OS/2
+#
+
+# Except for the "-emx" suffixes, these are as distributed with EMX 0.9b,
+# a Unix-style environment used on OS/2. (Note that the suffix makes some
+# names longer than 14 characters, the nominal maximum).
+#
+# Removed: rmacs=\E[10m, smacs=\E[11m, because OS/2 does not implement acs.
+ansi-emx|ANSI.SYS color:\
+ :am:eo:mi:ms:ut:xn:xo:\
+ :Co#16:co#80:it#8:li#25:pa#64:\
+ :&7=^Z:AB=\E[4%p1%dm:AF=\E[3%p1%dm:DC=\E[%dp:IC=\E[%d@:\
+ :K2=\E[G:S2=\E[11m:S3=\E[10m:bl=^G:cd=\E[J:ce=\E[K:\
+ :cl=\E[1;33;44m\E[H\E[J:cm=\E[%i%d;%dH:cr=^M:ct=\E[3g:\
+ :do=^J:ei=\E[4l:ho=\E[H:ic=\E[@:im=\E[4h:k0=\0D:k1=\0;:\
+ :k2=\0<:k3=\0=:k4=\0>:k5=\0?:k6=\0@:k7=\0A:k8=\0B:k9=\0C:\
+ :kH=\0O:kI=\0R:kN=\0Q:kP=\0I:kb=^H:kd=\0P:kh=\0G:kl=\0K:\
+ :kr=\0M:ku=\0H:le=^H:mb=\E[5m:md=\E[1m:\
+ :me=\E[0m\E[1;33;44m:mr=\E[5;37;41m:nd=\E[C:nw=^M^J:\
+ :r1=\Ec:se=\E[0;44m\E[1;33m:sf=^J:so=\E[0;31;47m:st=\EH:\
+ :ta=^I:u8=\E[?6c:u9=\E[c:ue=\E[0;44m\E[1;33m:up=\E[A:\
+ :us=\E[1;31;44m:vb=\E[?5h\E[?5l:ve=\E[?25h:vi=\E[?25l:
+ansi-color-2-emx|ANSI.SYS color 2:\
+ :am:eo:mi:ms:ut:xn:xo:\
+ :Co#16:co#80:it#8:li#25:pa#64:\
+ :&7=^Z:AB=\E[4%p1%dm:AF=\E[3%p1%dm:DC=\E[%dp:IC=\E[%d@:\
+ :K2=\E[G:S2=\E[11m:S3=\E[10m:bl=^G:cd=\E[J:ce=\E[K:\
+ :cl=\E[0;37;44m\E[H\E[J:cm=\E[%i%d;%dH:cr=^M:ct=\E[3g:\
+ :do=^J:ei=\E[4l:ho=\E[H:ic=\E[@:im=\E[4h:k0=\0D:k1=\0;:\
+ :k2=\0<:k3=\0=:k4=\0>:k5=\0?:k6=\0@:k7=\0A:k8=\0B:k9=\0C:\
+ :kH=\0O:kI=\0R:kN=\0Q:kP=\0I:kb=^H:kd=\0P:kh=\0G:kl=\0K:\
+ :kr=\0M:ku=\0H:le=^H:mb=\E[5m:md=\E[1m:me=\E[0;37;44m:\
+ :mr=\E[1;37;46m:nd=\E[C:nw=^M^J:r1=\Ec:se=\E[0;37;44m:\
+ :sf=^J:so=\E[1;37;46m:st=\EH:ta=^I:u8=\E[?6c:u9=\E[c:\
+ :ue=\E[0;37;44m:up=\E[A:us=\E[1;36;44m:vb=\E[?5h\E[?5l:\
+ :ve=\E[?25h:vi=\E[?25l:
+ansi-color-3-emx|ANSI.SYS color 3:\
+ :am:eo:mi:ms:ut:xn:xo:\
+ :Co#16:co#80:it#8:li#25:pa#64:\
+ :&7=^Z:AB=\E[4%p1%dm:AF=\E[3%p1%dm:DC=\E[%dp:IC=\E[%d@:\
+ :K2=\E[G:S2=\E[11m:S3=\E[10m:bl=^G:cd=\E[J:ce=\E[K:\
+ :cl=\E[0;37;40m\E[H\E[J:cm=\E[%i%d;%dH:cr=^M:ct=\E[3g:\
+ :do=^J:ei=\E[4l:ho=\E[H:ic=\E[@:im=\E[4h:k0=\0D:k1=\0;:\
+ :k2=\0<:k3=\0=:k4=\0>:k5=\0?:k6=\0@:k7=\0A:k8=\0B:k9=\0C:\
+ :kH=\0O:kI=\0R:kN=\0Q:kP=\0I:kb=^H:kd=\0P:kh=\0G:kl=\0K:\
+ :kr=\0M:ku=\0H:le=^H:mb=\E[5m:md=\E[1m:me=\E[0;10m:\
+ :mr=\E[1;37;46m:nd=\E[C:nw=^M^J:r1=\Ec:se=\E[0;37;40m:\
+ :sf=^J:so=\E[1;37;46m:st=\EH:ta=^I:u8=\E[?6c:u9=\E[c:\
+ :ue=\E[0;37;40m:up=\E[A:us=\E[0;36;40m:vb=\E[?5h\E[?5l:\
+ :ve=\E[?25h:vi=\E[?25l:
+mono-emx|stupid monochrome ansi terminal with only one kind of emphasis:\
+ :am:\
+ :co#80:it#8:li#24:\
+ :K2=\E[G:ce=\E[K:cl=\E[H\E[2J:cm=\E[%i%d;%dH:do=\E[B:\
+ :ho=\E[H:k0=\0D:k1=\0;:k2=\0<:k3=\0=:k4=\0>:k5=\0?:k6=\0@:\
+ :k7=\0A:k8=\0B:k9=\0C:kH=\0O:kI=\0R:kN=\0Q:kP=\0I:kb=^H:\
+ :kd=\0P:kh=\0G:kl=\0K:kr=\0M:ku=\0H:le=\E[D:me=\E[0m:\
+ :mr=\E[7m:nd=\E[C:nw=^M^J:ta=^I:up=\E[A:
+
+# Use this for cygwin32 (tested with beta 19.1)
+# underline is colored bright magenta
+# shifted kf1-kf12 are kf11-kf22
+cygwin|ansi emulation for cygwin32:\
+ :@7=\E[4~:F1=\E[23~:F2=\E[24~:F3=\E[25~:F4=\E[26~:\
+ :F5=\E[28~:F6=\E[29~:F7=\E[31~:F8=\E[32~:F9=\E[33~:\
+ :FA=\E[34~:RA@:SA@:k1=\E[[A:k2=\E[[B:k3=\E[[C:k4=\E[[D:\
+ :k5=\E[[E:k6=\E[17~:k7=\E[18~:k8=\E[19~:k9=\E[20~:\
+ :k;=\E[21~:kD=\E[3~:kI=\E[2~:kN=\E[6~:kP=\E[5~:kd=\E[B:\
+ :kh=\E[1~:kl=\E[D:kr=\E[C:ku=\E[A:\
+ :tc=ansi.sys:
+
+
+#### Windows NT
+#
+# This entry fits the Windows NT console when the _POSIX_TERM environment
+# variable is set to 'on'. While the Windows NT POSIX console is seldom used,
+# the Telnet client supplied with both the Windows for WorkGroup 3.11 TCP/IP
+# stack and the Win32 (i.e., Windows 95 and Windows NT 3.1 or later) operating
+# systems is not, and (surprise!) they match very well.
+#
+# See: MS Knowledge Base item Q108581, dated 13-MAY-1997, titled "Setting Up
+# VI POSIX Editor for Windows NT 3.1". True to Microsoft form, not only
+# are the installation instructions a pile of mind-numbing bureaucratese,
+# but the termcap entry is actually broken and unusable as given; the :do:
+# capability is misspelled "d".
+#
+# To use this, you need to a bunch of environment variables:
+#
+# SET _POSIX_TERM=on
+# SET TERM=ansi
+# SET TERMCAP=location of termcap file in POSIX file format
+# which is case-sensitive.
+# e.g. SET TERMCAP=//D/RESKIT35/posix/termcap
+# SET TMP=//C/TEMP
+#
+# Important note: setting the TMP environment variable in POSIX style renders
+# it incompatible with a lot of other applications, including Visual C++. So
+# you should have a separate command window just for vi. All the other
+# variables may be permanently set in the Control Panel\System applet.
+#
+# You can find out more about the restrictions of this facility at
+# <http://www.nentug.org/unix-to-nt/ntposix.htm>.
+#
+# From: Federico Bianchi <bianchi@magna.cisid.unipi.it>, 15 Jan 1997
+ansi-nt|psx_ansi|Microsoft Windows NT console POSIX ANSI mode:\
+ :am:bw:ms:\
+ :co#80:it#8:li#25:\
+ :bl=^G:cd=\E[J:ce=\E[K:cl=\E[2J:cm=\E[%i%d;%dH:cr=^M:do=^J:\
+ :ho=\E[H:kb=^H:kd=\E[V:kl=\E[D:kr=\E[C:ku=\E[A:le=^H:\
+ :me=\E[0m:mr=\E[7m:nd=\E[C:nw=\r\E[S:rc=\E[u:sc=\E[s:\
+ :se=\E[m:sf=\E[S:so=\E[7m:sr=\E[T:ta=^I:up=\E[A:
+# From: jew@venus.sunquest.com
+# Date: 19 Feb 93 23:41:07 GMT
+# Here's a combination of ansi and vt100 termcap
+# entries that works nearly perfectly for me
+# (Gateway 2000 Handbook and Microsoft Works 3.0):
+pcmw|PC running Microsoft Works:\
+ :am:xn:\
+ :co#80:it#8:li#24:vt#3:\
+ :bl=^G:cd=50\E[J:ce=3\E[K:cl=50\E[;H\E[2J:\
+ :cm=5\E[%i%d;%dH:cr=^M:ct=2\E[3g:do=^J:ho=\E[H:\
+ :is=\E[1;24r\E[24;1H:k1=\EOP:k2=\EOQ:k3=\EOR:k4=\EOS:\
+ :kb=^H:kd=\EOB:kl=\EOD:kr=\EOC:ku=\EOA:le=^H:mb=2\E[5m:\
+ :md=2\E[1m:me=2\E[m:mr=2\E[7m:nd=2\E[C:nw=5\r\ED:\
+ :r2=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h:rc=\E8:\
+ :rf=/usr/share/lib/tabset/vt100:sc=\E7:se=2\E[m:sf=5\ED:\
+ :so=2\E[7m:sr=5\EM:st=2\EH:ta=^I:ue=2\E[m:up=2\E[A:\
+ :us=2\E[4m:
+
+######## COMMON TERMINAL TYPES
+#
+# This section describes terminal classes and maker brands that are still
+# quite common, but have proprietary command sets not blessed by ANSI.
+#
+
+#### Lear-Siegler (adm)
+#
+# These guys are long since out of the terminals business, but
+# in 1995 many current terminals still have an adm type as one of their
+# emulations (usually their stupidest, and usually labeled adm3, though
+# these `adm3' emulations normally have adm3a+ capabilities).
+#
+# WARNING: Some early ADM terminals (including the ADM3 and ADM5) had a
+# `diagnostic feature' that sending them a ^G while pin 22 (`Ring Indicator')
+# was being held to ground would trigger a send of the top line on the screen.
+# A quick fix might be to drop back to a cheesy 4-wire cable with pin 22
+# hanging in the air. (Thanks to Eric Fischer, <eric@fudge.uchicago.edu>,
+# for clearing up this point.)
+#
+
+adm1a|adm1|lsi adm1a:\
+ :am:\
+ :co#80:li#24:\
+ :bl=^G:cl=\E;:cm=\E=%+ %+ :cr=^M:do=^J:ho=^^:le=^H:nd=^L:\
+ :sf=^J:up=^K:
+adm2|lsi adm2:\
+ :am:bs:\
+ :co#80:li#24:\
+ :al=\EE:bl=^G:cd=\EY:ce=\ET:cl=\E;:cm=\E=%+ %+ :cr=^M:\
+ :dc=\EW:dl=\ER:do=^J:ei=:ho=^^:ic=\EQ:im=:kd=^J:kh=^^:kl=^H:\
+ :kr=^L:ku=^K:le=^H:nd=^L:sf=^J:up=^K:
+# (adm3: removed obsolete ":ma=^K^P:" -- esr)
+adm3|lsi adm3:\
+ :am:bs:\
+ :co#80:li#24:\
+ :bl=^G:cl=^Z:cr=^M:do=^J:le=^H:sf=^J:
+# The following ADM-3A switch settings are assumed for normal operation:
+# SPACE U/L_DISP CLR_SCRN 24_LINE
+# CUR_CTL LC_EN AUTO_NL FDX
+# Other switches may be set for operator convenience or communication
+# requirements. I recommend
+# DISABLE_KB_LOCK LOCAL_OFF 103 202_OFF
+# ETX_OFF EOT_OFF
+# Most of these terminals required an option ROM to support lower case display.
+# Open the case and look at the motherboard; if you see an open 24-pin DIP
+# socket, you may be out of luck.
+#
+# (adm3a: some capabilities merged in from BRl entry -- esr)
+adm3a|lsi adm3a:\
+ :am:bs:\
+ :co#80:li#24:\
+ :bl=^G:cl=1\032:cm=\E=%+ %+ :cr=^M:do=^J:ho=^^:kd=^J:kl=^H:\
+ :kr=^L:ku=^K:le=^H:ma=^K^P:nd=^L:nl=^J:r1=^N:rs=^N:sf=^J:\
+ :up=^K:
+adm3a+|adm3a plus:\
+ :kb=^H:tc=adm3a:
+# (adm5: removed obsolete ":ma=^Hh^Jj^Kk^Ll^^H:" & duplicate ":do=^J:" -- esr)
+adm5|lsi adm5:\
+ :sg#1:\
+ :bl=^G:cd=\EY:ce=\ET:cr=^M:do=^J:kb=^H:kh=^^:se=\EG:so=\EG:tc=adm3a+:
+# A lot of terminals other than adm11s use these. Wherever you see
+# use=adm+sgr with some of its capabilities disabled, try the
+# disabled ones. They may well work but not have been documented or
+# expressed in the using entry. We'd like to cook up an :sa: but the
+# :ae:/:as: sequences of the using entries vary too much.
+adm+sgr|adm style highlight capabilities:\
+ :me=\EG0:mk=\EG1:mr=\EG4:se=\EG0:so=\EG4:ue=\EG0:us=\EG8:
+# LSI ADM-11 from George William Hartwig, Jr. <geo@BRL-TGR.ARPA> via BRL
+# Status line additions from Stephen J. Muir <stephen%comp.lancs.ac.uk@ucl-cs>
+# :kh: from <stephen%comp.lancs.ac.uk@ucl-cs.arpa>. :cl: could also
+# be ^Z, according to his entry.
+# (adm11: :us:=\EG4 was obviously erroneous because it also said
+# :mr:=\EG4. Looking at other ADMs confirms this -- esr)
+adm11|LSI ADM-11:\
+ :am:bs:hs:\
+ :co#80:kn#8:li#24:\
+ :bl=^G:cd=\EY:ce=\ET:cl=\E*:cm=\E=%+ %+ :cr=^M:do=^J:ds=\Eh:\
+ :fs=\E(\r:ho=^^:k1=^A@\r:k2=^AA\r:k3=^AB\r:k4=^AC\r:\
+ :k5=^AD\r:k6=^AE\r:k7=^AF\r:k8=^AG\r:kb=^H:kd=^J:kh=^^:\
+ :kl=^H:kr=^L:ku=^K:le=^H:mb=\EG2:nd=^L:nl=^J:nw=^M^J:ta=^I:\
+ :ts=\EF\E):up=^K:\
+ :tc=adm+sgr:
+# From: Andrew Scott Beals <bandy@lll-crg.ARPA>
+# Corrected by Olaf Siebert <rhialto@polder.ubc.kun.nl>, 11 May 1995
+# Supervisor mode info by Ari Wuolle, <awuolle@delta.hut.fi>, 27 Aug 1996
+# (adm12: removed obsolete ":kn:ma=j^Jk^P^K^Pl ^R^L^L :". This formerly had
+# :is:=\Eq but that looked wrong; this :is: is from Dave Yost <esquire!yost>
+# via BRL. That entry asserted :sg#1:, but I've left that out because
+# neither earlier nor later ADMSs have it -- esr)
+#
+# You will need to get into the supervisor setup before you can set
+# baudrate etc. for your ADM-12+. Press Shift-Ctrl-Setup and you should
+# see a lot more setup options.
+#
+# While in supervisor setup you can also use following codes:
+#
+# Ctrl-P Personality character selections (configure for example what
+# arrow keys send, if I recall correctly)
+# Ctrl-T tabs 1-80 use left&right to move and up to set and
+# Ctrl-V tabs 81-158 down to clear tab. Shift-Ctrl-M sets right margin at cursor
+# Ctrl-B Binary setup (probably not needed. I think that everything can
+# be set using normal setup)
+# Ctrl-A Answerback mode (enter answerback message)
+# Ctrl-U User friendly mode (normal setup)
+# Ctrl-D Defaults entire setup and function keys from EPROM tables
+# Ctrl-S Save both setup and functions keys. Takes from 6 to 10 seconds.
+# Ctrl-R Reads both setup and functions keys from NVM.
+# Shift-Ctrl-X Unlock keyboard and cancel received X-OFF status
+#
+# ADM-12+ supports hardware handshaking, but it is DTR/CTS as opposed to
+# RTS/CTS used nowadays with virtually every modem and computer. 19200
+# bps works fine with hardware flow control.
+#
+# The following null-modem cable should fix this and enable you to use
+# RTS/CTS handshaking (which Linux supports, use CRTSCTS setting). Also
+# set ADM-12+ for DTR handshaking from supervisor setup.
+#
+# PC Serial ADM-12+
+# -------- -------
+# 2 - 3
+# 3 - 2
+# 4 - 5
+# 5 - 20
+# 6,8 - 4
+# 7 - 7
+# 20 - 6,8
+#
+adm12|lsi adm12:\
+ :am:bs:mi:pt:\
+ :co#80:it#8:li#24:\
+ :al=\EE:bl=^G:cd=\EY:ce=\ET:cl=^Z:cm=\E=%+ %+ :cr=^M:ct=\E0:\
+ :dc=\EW:dl=\ER:do=^J:ei=\Er:ho=^^:ic=\EQ:im=\Eq:\
+ :is=\E0 \E1 \E1 \E1 \E1 \E1 \E1 \E1 \E1:\
+ :k0=^A0\r:k1=^A1\r:k2=^A2\r:k3=^A3\r:k4=^A4\r:k5=^A5\r:\
+ :k6=^A6\r:k7=^A7\r:k8=^A8\r:k9=^A9\r:kd=^J:kl=^H:kr=^L:\
+ :ku=^K:le=^H:nd=^L:st=\E1:up=^K:\
+ :tc=adm+sgr:
+# (adm20: removed obsolete ":kn#7:" -- esr)
+adm20|lear siegler adm20:\
+ :am:bs:\
+ :co#80:it#8:li#24:\
+ :al=\EE:bl=^G:bt=\EI:cd=\EY:ce=\ET:cl=^Z:\
+ :cm=\E=%i%r%+^_%+^_:cr=^M:dc=\EW:dl=\ER:ei=:ho=^^:ic=\EQ:\
+ :im=:k1=^A:k2=^B:k3=^W:k4=^D:k5=^E:k6=^X:k7=^Z:le=^H:me=\E(:\
+ :nd=^L:se=\E(:so=\E):ta=^I:up=^K:
+adm21|lear siegler adm21:\
+ :sg#1:\
+ :al=30*\EE:bl=^G:cd=\EY:ce=\ET:cr=^M:dc=\EW:dl=30*\ER:do=^J:\
+ :ei=:ic=\EQ:im=:kb=^H:kd=^J:kh=^^:kl=^H:kr=^L:ku=^K:mk@:sf=^J:\
+ :tc=adm+sgr:tc=adm3a:
+# (adm22: ":em=:" was an obvious typo for ":ei=:"; also,
+# removed obsolete ":kn#7:ma=j^Jk^P^K^Pl ^R^L^L :";
+# removed bogus-looking \200 from before :cm:. -- esr)
+adm22|lsi adm22:\
+ :am:bs:\
+ :co#80:li#24:\
+ :al=\EE:bl=^G:bt=\EI:cd=\Ey:ce=\Et:cl=\E+:cm=\E=%+ %+ :\
+ :cr=^M:dc=\EW:dl=\ER:do=^J:ei=:ho=^^:ic=\EQ:im=:\
+ :is=\E%\014\014\014\016\003\0\003\002\003\002\0\0\0\0\0\0\0\0\0\0\0:\
+ :k1=^A@\r:k2=^AA\r:k3=^AB\r:k4=^AC\r:k5=^AD\r:k6=^AE\r:\
+ :k7=^AF\r:kb=^H:kd=^J:kh=^^:kl=^H:kr=^L:ku=^K:l1=F1:l2=F2:\
+ :l3=F3:l4=F4:l5=F5:l6=F6:l7=F7:le=^H:me=\E(:nd=^L:se=\E(:\
+ :so=\E):ta=\Ei:up=^K:
+# ADM 31 DIP Switches
+#
+# This information comes from two versions of the manual for the
+# Lear-Siegler ADM 31.
+#
+# Main board:
+# rear of case
+# +-||||-------------------------------------+
+# + S1S2 ||S +
+# + ||3 +
+# + +
+# + ||S +
+# + ||4 +
+# + +
+# + +
+# + +
+# + +
+# + +
+# +-+ +-+
+# + +
+# + S5 S6 S7 +
+# + == == == +
+# +----------------------------------------------+
+# front of case (keyboard)
+#
+# S1 - Data Rate - Modem
+# S2 - Data Rate - Printer
+# ------------------------
+# Data Rate Setting
+# -------------------
+# 50 0 0 0 0
+# 75 1 0 0 0
+# 110 0 1 0 0
+# 134.5 1 1 0 0
+# 150 0 0 1 0
+# 300 1 0 1 0
+# 600 0 1 1 0
+# 1200 1 1 1 0
+# 1800 0 0 0 1
+# 2000 1 0 0 1
+# 2400 0 1 0 1
+# 3600 1 1 0 1
+# 4800 0 0 1 1
+# 7200 1 0 1 1
+# 9600 0 1 1 1
+# x 1 1 1 1
+#
+# S3 - Interface/Printer/Attributes
+# ---------------------------------
+# Printer Busy Control
+# sw1 sw2 sw3
+# ---------------
+# off off off Busy not active, CD disabled
+# off off on Busy not active, CD enabled
+# off on off Busy active on J5-20, CD disabled
+# on off off Busy active on J5-19, CD disabled - Factory Set.
+# on off on Busy active on J5-19, CD enabled
+#
+# sw4 Used in conjuction with S4 for comm interface control - Fact 0
+#
+# sw5 Secondary Channel Control (Hardware implementation only) - Fact 0
+#
+# sw6 ON enables printer BUSY active LOW - Factory Setting
+# OFF enables printer BUSY active HIGH - If set to this, ADM31 senses
+#
+# sw7 ON - steady cursor - Factory Setting
+# OFF - blinking cursor
+#
+# sw8 ON causes selected attribute character to be displayed
+# OFF causes SPACE to be displayed instead - Factory Setting
+#
+# S4 - Interface
+# --------------
+# Modem Interface
+# S3 S4 S4 S4 S4
+# sw4 sw1 sw2 sw3 sw4
+# ---------------------------
+# OFF ON OFF ON OFF Enable RS-232C interface, Direct Connect and
+# Current Loop disabled - Factory Setting
+# ON ON OFF ON OFF Enable Current Loop interface, Direct Connect
+# disabled
+# OFF OFF ON OFF ON Enable Direct Connect interface, RS-232C and
+# Current Loop Disabled
+#
+# sw5 ON disables dot stretching mode - Factory Setting
+# OFF enables dot stretching mode
+# sw6 ON enables blanking function
+# OFF enables underline function - Factory Setting
+# sw7 ON causes NULLS to be displayed as NULLS
+# OFF causes NULLS to be displayed as SPACES - Factory Setting
+#
+# S5 - Word Structure
+# -------------------
+# sw1 ON enables BREAK key - Factory Setting
+# OFF disables BREAK key
+# sw2 ON selects 50Hz monitor refresh rate
+# OFF selects 60Hz monitor refresh rate - Factory Setting
+#
+# Modem Port Selection
+# sw3 sw4 sw5
+# ---------------
+# ON ON ON Selects 7 DATA bits, even parity, 2 STOP bits
+# OFF ON ON Selects 7 DATA bits, odd parity, 2 STOP bits
+# ON OFF ON Selects 7 DATA bits, even parity, 1 STOP bit - Factory Set.
+# OFF OFF ON Selects 7 DATA bits, odd parity, 1 STOP bit
+# ON ON OFF Selects 8 DATA bits, no parity, 2 STOP bits
+# OFF ON OFF Selects 8 DATA bits, no parity, 1 STOP bit
+# ON OFF OFF Selects 8 DATA bits, even parity, 1 STOP bit
+# OFF OFF OFF Selects 8 DATA bits, odd parity, 1 STOP bit
+#
+# sw6 ON sends bit 8 a 1 (mark)
+# OFF sends bit 8 as 0 (space) - Factory Setting
+# sw7 ON selects Block Mode
+# OFF selects Conversation Mode - Factory Setting
+# sw8 ON selects Full Duplex operation
+# OFF selects Half Duplex operation - Factory Setting
+#
+# S6 - Printer
+# ------------
+# sw1, sw2, sw6, sw7 Reserved - Factory 0
+#
+# Printer Port Selection
+# same as Modem above, bit 8 (when 8 DATA bits) is always = 0
+#
+# sw8 ON enables Printer Port
+# OFF disables Printer Port - Factory Setting
+#
+# S7 - Polling Address
+# --------------------
+# sw1-7 Establish ASCII character which designates terminal polling address
+# ON = logic 0
+# OFF = logic 1 - Factory Setting
+# sw8 ON enables Polling Option
+# OFF disables Polling Option - Factory Setting
+#
+#
+# On some older adm31s, S4 does not exist, and S5-sw6 is not defined.
+#
+# This adm31 entry uses underline as the standout mode.
+# If the adm31 gives you trouble with standout mode, check the DIP switch in
+# position 6, bank @c11, 25% from back end of the circuit board. Should be
+# OFF. If there is no such switch, you have an old adm31 and must use oadm31.
+# (adm31: removed obsolete ":ma=j^Jk^P^K^Pl ^R^L^L :" -- esr)
+adm31|lsi adm31 with sw6 set for underline mode:\
+ :am:bs:mi:\
+ :co#80:li#24:\
+ :al=\EE:bl=^G:cd=\EY:ce=\ET:cl=\E*:cm=\E=%+ %+ :cr=^M:\
+ :dc=\EW:dl=\ER:do=^J:ei=\Er:ho=^^:im=\Eq:is=\Eu\E0:k0=^A0\r:\
+ :k1=^A1\r:k2=^A2\r:k3=^A3\r:k4=^A4\r:k5=^A5\r:k6=^A6\r:\
+ :k7=^A7\r:k8=^A8\r:k9=^A9\r:kd=^J:kl=^H:kr=^L:ku=^K:le=^H:\
+ :me=\EG0:nd=^L:se=\EG0:sf=^J:so=\EG1:ue=\EG0:up=^K:us=\EG1:
+adm31-old|o31|old adm31:\
+ :so=\EG4:ue@:us@:tc=adm31:
+# LSI ADM-36 from Col. George L. Sicherman <gloria!colonel> via BRL
+adm36|LSI ADM36:\
+ :bs:pt:\
+ :kn#4:\
+ :if=/usr/lib/tabset/vt100:\
+ :is=\E<\E>\E[6;?2;?7;?8h\E[4;20;?1;?3;?4;?5;?6;?18;?19l:tc=vt100:
+# (adm42: removed obsolete ":ma=^K^P:" -- esr)
+adm42|lsi adm42:\
+ :am:bs:\
+ :co#80:li#24:\
+ :al=\EE:bl=^G:bt=\EI:cd=\EY:ce=\ET:cl=\E;:cm=\E=%+ %+ :\
+ :cr=^M:dc=\EW:dl=\ER:do=^J:ei=\Er:im=\Eq:ip=:kd=^J:kh=^^:\
+ :kl=^H:kr=^L:ku=^K:le=^H:mk@:nd=^L:pc=\177:sf=^J:ta=^I:ue@:\
+ :up=^K:us@:vs=\EC\E3 \E3(:\
+ :tc=adm+sgr:
+# The following termcap for the Lear Siegler ADM-42 leaves the
+# "system line" at the bottom of the screen blank (for those who
+# find it distracting otherwise)
+adm42-ns|lsi adm-42 with no system line:\
+ :al=\EE\EF \011:bt=\EI\EF \011:cd=\EY\EF \011:\
+ :ce=\ET\EF \011:cl=\E;\EF \011:cm=\E=%+ %+ \EF \011:\
+ :dc=\EW\EF \011:dl=\ER\EF \011:ei=\Er\EF \011:\
+ :im=\Eq\EF \011:tc=adm42:
+# ADM 1178 terminal -- rather like an ADM-42. Manual is dated March 1 1985.
+# The insert mode of this terminal is commented out because it's broken for our
+# purposes in that it will shift the position of every character on the page,
+# not just the cursor line!
+# From: Michael Driscoll <fenris@lightspeed.net> 10 July 1996
+adm1178|1178|lsi adm1178:\
+ :am:\
+ :co#80:li#24:sg#1:\
+ :al=\EE:bl=^G:bt=\EI:cd=\EY:ce=\ET:cl=\E+:cm=\E=%+ %+ :\
+ :cr=^M:dc=\EW:dl=\ER:do=^J:ho=^^:ip=6*:kb=^H:kd=^J:kl=^H:\
+ :le=^H:md=\E(:me=\E):mr=\EG4:nd=^L:nw=^M^J:pc=\177:se=\EG0:\
+ :sf=^J:so=\EG4:ta=^I:ue=\EG0:up=^K:us=\EG1:vs=\EC\E3 \E3(:
+
+#### Qume (qvt)
+#
+# Qume, Inc.
+# 3475-A North 1st Street
+# San Jose CA 95134
+# Vox: (800)-457-4447
+# Fax: (408)-473-1510
+# Net: josed@techsupp.wyse.com (Jose D'Oliveira)
+#
+# Qume was bought by Wyse, but still (as of early 1995) has its own support
+# group and production division.
+#
+# Discontinued Qume models:
+#
+# The qvt101 and qvt102 listed here are long obsolete; so is the qvt101+
+# built to replace them, and a qvt119+ which was a 101+ with available wide
+# mode (132 columns). There was a qvt103 which added vt100/vt131 emulations
+# and an ANSI-compatible qvt203 that replaced it. Qume started producing
+# ANSI-compatible terminals with the qvt323 and qvt61.
+#
+# Current Qume models (as of February 1995):
+#
+# All current Qume terminals have ANSI-compatible operation modes.
+# Qume is still producing the qvt62, which features emulations for other
+# popular lines such as ADDS, and dual-host capabilities. The qvt82 is
+# designed for use as a SCO ANSI terminal. The qvt70 is a color terminal
+# with many emulations including Wyse370, Wyse 325, etc. Their newest
+# model is the qvt520, which is vt420-compatible.
+#
+# There are some ancient printing Qume terminals under `Daisy Wheel Printers'
+#
+# If you inherit a Qume without docs, try Ctrl-Shift-Setup to enter its
+# setup mode. Shift-s should be a configuration save to NVRAM.
+
+qvt101|qvt108|qume qvt 101 and QVT 108:\
+ :sg#1:tc=qvt101+:
+
+# This used to have :vs=\E.2: but no :ve: or :vi:. The BSD termcap
+# file had :vs=\EM4 \200\200\200:. I've done the safe thing and yanked
+# both. The :mr: is from BSD, which also claimed bold=\E( and dim=\E).
+# What seems to be going on here is that this entry was designed so that
+# the normal highlight is bold and standout is dim plus something else
+# (reverse-video maybe? But then, are there two :mr: sequences?)
+qvt101+|qvt101p|qume qvt 101 PLUS product:\
+ :am:bw:hs:ul:\
+ :co#80:li#24:sg#0:\
+ :al=\EE:bl=^G:bt=\EI:cd=\EY:ce=\ET:cl=^Z:cm=\E=%+ %+ :cr=^M:\
+ :ct=\E3:dc=\EW:dl=\ER:do=^J:ds=\Eg\Ef\r:ei=:fs=^M:ho=^^:\
+ :ic=\EQ:im=:k1=^A@\r:k2=^AA\r:k3=^AB\r:k4=^AC\r:k5=^AD\r:\
+ :k6=^AE\r:k7=^AF\r:k8=^AG\r:k9=^AH\r:k;=^AI\r:kA=\EE:\
+ :kB=\EI:kE=\ET:kI=\EQ:kL=\ER:kS=\EY:kb=^H:kd=^J:kh=^^:kl=^H:\
+ :kr=^L:ku=^K:le=^H:mk@:nd=^L:pf=\EA:po=\E@:se=\E(:sf=^J:\
+ :so=\E0P\E):st=\E1:ta=^I:ts=\Eg\Ef:up=^K:vb=\Eb\Ed:ve=\E.4:\
+ :tc=adm+sgr:
+qvt102|qume qvt 102:\
+ :ve=\E.:tc=qvt101:
+# (qvt103: added <rmam>/<smam> based on init string -- esr)
+qvt103|qume qvt 103:\
+ :am:xn:xo:\
+ :co#80:it#8:li#24:vt#3:\
+ :DO=\E[%dB:LE=\E[%dD:RA=\E[?7l:RI=\E[%dC:SA=\E[?7h:\
+ :UP=\E[%dA:bl=^G:cd=\E[J:ce=\E[K:cl=\E[H\E[2J:\
+ :cm=\E[%i%d;%dH:cr=^M:cs=\E[%i%d;%dr:ct=\E[3g:do=^J:\
+ :ho=\E[H:k1=\EOP:k2=\EOQ:k3=\EOR:k4=\EOS:kb=^H:kd=\EOB:\
+ :ke=\E[?1l\E>:kl=\EOD:kr=\EOC:ks=\E[?1h\E=:ku=\EOA:le=^H:\
+ :mb=\E[5m:md=\E[1m:me=\E[m:mr=\E[7m:nd=\E[C:\
+ :r2=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h:rc=\E8:\
+ :..sa=\E[%?%p1%t;7%;%?%p2%t;4%;%?%p3%t;7%;%?%p4%t;5%;%?%p6%t;1%;m:\
+ :sc=\E7:se=\E[m:sf=^J:so=\E[7m:sr=\EM:st=\EH:ta=^I:ue=\E[m:\
+ :up=\E[A:us=\E[4m:
+qvt103-w|qume qvt103 132 cols:\
+ :co#132:li#24:\
+ :r2=\E>\E[?3h\E[?4l\E[?5l\E[?8h:tc=qvt103:
+qvt119+|qvt119p|qvt119|qume qvt 119 and 119PLUS terminals:\
+ :am:hs:mi:ms:\
+ :co#80:li#24:sg#0:\
+ :al=\EE:bl=^G:bt=\EI:cd=\Ey:ce=\Et:cl=\E*1:cm=\E=%+ %+ :\
+ :cr=^M:ct=\E3:dc=\EW:dl=\ER:do=^J:ds=\Eg\Ef\r:ei=\Er:fs=^M:\
+ :ho=^^:im=\Eq:is=\EDF\EC\EG0\Er\E(\E%EX:k0=^AI\r:\
+ :k1=^A@\r:k2=^AA\r:k3=^AB\r:k4=^AC\r:k5=^AD\r:k6=^AE\r:\
+ :k7=^AF\r:k8=^AG\r:k9=^AH\r:kb=^H:kd=^J:kh=^^:kl=^H:kr=^L:\
+ :ku=^K:le=^H:nd=^L:pf=\EA:po=\E@:sf=^J:sr=\EJ:st=\E1:ta=^I:\
+ :ts=\Eg\Ef:up=^K:us=\EG8:vb=\En0\En1:ve=\E.4:vs=\E.2:\
+ :tc=adm+sgr:
+qvt119+-25|qvt119p-25|QVT 119 PLUS with 25 data lines:\
+ :li#25:tc=qvt119+:
+qvt119+-w|qvt119p-w|qvt119-w|QVT 119 and 119 PLUS in 132 column mode:\
+ :co#132:\
+ :is=\EDF\EC\EG0\Er\E(\E%\EX\En4:tc=qvt119+:
+qvt119+-25-w|qvt119p-25-w|qvt119-25-w|QVT 119 and 119 PLUS 132 by 25:\
+ :li#25:tc=qvt119+:
+qvt203|qvt203+|qume qvt 203 Plus:\
+ :al=\E[L:dc=\E[P:dl=\E[M:ei=\E[4l:im=\E[4h:ip=:k0=\E[29~:\
+ :k1=\E[17~:k2=\E[18~:k3=\E[19~:k4=\E[20~:k5=\E[21~:\
+ :k6=\E[23~:k7=\E[24~:k8=\E[25~:k9=\E[28~:sf=\n:\
+ :tc=qvt103:
+qvt203-w|qvt203-w-am|qume qvt 203 PLUS in 132 cols (w/advanced video):\
+ :co#132:li#24:\
+ :r2=\E>\E[?3h\E[?4l\E[?5l\E[?8h:tc=qvt203:
+#
+# Since a command is present for enabling 25 data lines,
+# a specific terminfo entry may be generated for the 203.
+# If one is desired for the QVT 119 PLUS then 25 lines must
+# be selected in the status line (setup line 9).
+#
+qvt203-25|QVT 203 PLUS with 25 by 80 column mode:\
+ :co#80:li#25:\
+ :is=\E[=40h\E[?3l:tc=qvt203:
+qvt203-25-w|QVT 203 PLUS with 25 by 132 columns:\
+ :co#132:li#25:\
+ :r2=\E[?3h\E[=40h:tc=qvt203:
+
+#### Televideo (tvi)
+#
+# TeleVideo
+# 550 East Brokaw Road
+# PO Box 49048 95161
+# San Jose CA 95112
+# Vox: (408)-954-8333
+# Fax: (408)-954-0623
+#
+#
+# There are some tvi terminals that require incredible amounts of padding and
+# some that don't. I'm assuming tvi912 and tvi920 are the old slow ones, and
+# tvi912b, tvi912c, tvi920b, tvi920c are the new ones that don't need padding.
+#
+# All of these terminals (912 to 970 and the tvipt) are discontinued. Newer
+# Televideo terminals are ANSI and PC-ANSI compatible.
+
+tvi803|televideo 803:\
+ :cl=\E*:tc=tvi950:
+
+# Vanilla tvi910 -- W. Gish <cswarren@violet> 10/29/86
+# Switch settings are:
+#
+# S1 1 2 3 4
+# D D D D 9600
+# D D D U 50
+# D D U D 75
+# D D U U 110
+# D U D D 135
+# D U D U 150
+# D U U D 300
+# D U U U 600
+# U D D D 1200
+# U D D U 1800
+# U D U D 2400
+# U D U U 3600
+# U U D D 4800
+# U U D U 7200
+# U U U D 9600
+# U U U U 19200
+#
+# S1 5 6 7 8
+# U D X D 7N1 (data bits, parity, stop bits) (X means ignored)
+# U D X U 7N2
+# U U D D 7O1
+# U U D U 7O2
+# U U U D 7E1
+# U U U U 7E2
+# D D X D 8N1
+# D D X U 8N2
+# D U D D 8O1
+# D U U U 8E2
+#
+# S1 9 Autowrap
+# U on
+# D off
+#
+# S1 10 CR/LF
+# U do CR/LF when CR received
+# D do CR when CR received
+#
+# S2 1 Mode
+# U block
+# D conversational
+#
+# S2 2 Duplex
+# U half
+# D full
+#
+# S2 3 Hertz
+# U 50
+# D 60
+#
+# S2 4 Edit mode
+# U local
+# D duplex
+#
+# S2 5 Cursor type
+# U underline
+# D block
+#
+# S2 6 Cursor down key
+# U send ^J
+# D send ^V
+#
+# S2 7 Screen colour
+# U green on black
+# D black on green
+#
+# S2 8 DSR status (pin 6)
+# U disconnected
+# D connected
+#
+# S2 9 DCD status (pin 8)
+# U disconnected
+# D duplex
+#
+# S2 10 DTR status (pin 20)
+# U disconnected
+# D duplex
+# (tvi910: removed obsolete ":ma=^Kk^Ll^R^L:"; added :kh:, :le:, :do:,
+# :sf:, <hpa>, <vpa>, :am:, :ms: from SCO entry -- esr)
+tvi910|televideo model 910:\
+ :am:bs:ms:\
+ :co#80:it#8:li#24:sg#1:\
+ :bl=^G:bt=\EI:cd=\EY:ce=\ET:ch=\E]%+ :cl=^Z:cm=\E=%+ %+ :\
+ :cr=^M:cv=\E[%+ :do=^J:ho=\E=\001\001:\
+ :if=/usr/share/tabset/stdcrt:k0=^AI\r:k1=^A@\r:k2=^AA\r:\
+ :k3=^AB\r:k4=^AC\r:k5=^AD\r:k6=^AE\r:k7=^AF\r:k8=^AG\r:\
+ :k9=^AH\r:kb=^H:kd=^J:kh=^^:kl=^H:kr=^L:ku=^K:le=^H:mk@:nd=^L:\
+ :sf=^J:ta=^I:up=^K:\
+ :tc=adm+sgr:
+# From: Alan R. Rogers <rogers%albany@csnet-relay>
+# as subsequently hacked over by someone at SCO
+# (tvi910+: removed obsolete ":ma=^K^P^L :" -- esr)
+#
+# Here are the 910+'s DIP switches (U = up, D = down, X = don't care):
+#
+# S1 1 2 3 4:
+# D D D D 9600 D D D U 50 D D U D 75 D D U U 110
+# D U D D 135 D U D U 150 D U U D 300 D U U U 600
+# U D D D 1200 U D D U 1800 U D U D 2400 U D U U 3600
+# U U D D 4800 U U D U 7200 U U U D 9600 U U U U 19200
+#
+# S1 5 6 7 8:
+# U D X D 7N1 U D X U 7N2 U U D D 7O1 U U D U 7O2
+# U U U D 7E1 U U U U 7E2 D D X D 8N1 D D X U 8N2
+# D U D D 8O1 D U U U 8E2
+#
+# S1 9 Autowrap (U = on, D = off)
+# S1 10 CR/LF (U = CR/LF on CR received, D = CR on CR received)
+# S2 1 Mode (U = block, D = conversational)
+# S2 2 Duplex (U = half, D = full)
+# S2 3 Hertz (U = 50, D = 60)
+# S2 4 Edit mode (U = local, D = duplex)
+# S2 5 Cursor type (U = underline, D = block)
+# S2 6 Cursor down key (U = send ^J, D = send ^V)
+# S2 7 Screen colour (U = green on black, D = black on green)
+# S2 8 DSR status (pin 6) (U = disconnected, D = connected)
+# S2 9 DCD status (pin 8) (U = disconnected, D = connected)
+# S2 10 DTR status (pin 20) (U = disconnected, D = connected)
+#
+tvi910+|televideo 910+:\
+ :al=\EE:dc=\EW:dl=\ER:ei=:ho=^^:ic=\EQ:im=:k0=^A@\r:k1=^AA\r:\
+ :k2=^AB\r:k3=^AC\r:k4=^AD\r:k5=^AE\r:k6=^AF\r:k7=^AG\r:\
+ :k8=^AH\r:k9=^AI\r:ll=\E=7 :\
+ :tc=tvi910:
+
+# (tvi912: removed obsolete ":ma=^K^P^L :", added :vb: and
+# :kh: from BRL entry -- esr)
+tvi912|tvi914|tvi920|old televideo 912/914/920:\
+ :am:bs:ms:pt:\
+ :co#80:it#8:li#24:sg#1:\
+ :al=\EE:bl=^G:cd=\Ey:ce=\ET:cl=^Z:cm=\E=%+ %+ :cr=^M:ct=\E3:\
+ :dc=\EW:dl=\ER:do=^J:ei=:ho=^^:ic=\EQ:\
+ :if=/usr/share/tabset/stdcrt:im=:k0=^AI\r:k1=^A@\r:\
+ :k2=^AA\r:k3=^AB\r:k4=^AC\r:k5=^AD\r:k6=^AE\r:k7=^AF\r:\
+ :k8=^AG\r:k9=^AH\r:kb=^H:kd=^J:kh=^^:kl=^H:kr=^L:ku=^K:le=^H:\
+ :nd=^L:se=\Ek:sf=^J:so=\Ej:st=\E1:ta=^I:ue=\Em:up=^K:us=\El:\
+ :vb=\Eb\Ed:
+# the 912 has a <funct> key that's like shift: <funct>8 xmits "^A8\r".
+# The 920 has this plus real function keys that xmit different things.
+# Terminfo makes you use the funct key on the 912 but the real keys on the 920.
+tvi912c|tvi912b|new televideo 912:\
+ :al=\EE:dl=\ER:tc=tvi912:
+# set to page 1 when entering curses application (\E-17 )
+# reset to page 0 when exiting curses application (\E-07 )
+tvi912-2p|tvi920-2p|tvi-2p|televideo w/2 pages:\
+ :te=\E-07 :ti=\E-17 :tc=tvi912:
+# We got some new tvi912c terminals that act really weird on the regular
+# termcap, so one of our gurus worked this up. Seems that cursor
+# addressing is broken.
+tvi912cc|tvi912 at cowell college:\
+ :cm@:tc=tvi912c:
+
+# Here are the switch settings for the tvi920c:
+#
+# S1 (Line), and S3 (Printer) baud rates -- put one, and only one, switch down:
+# 2: 9600 3: 4800 4: 2400 5: 1200
+# 6: 600 7: 300 8: 150 9: 75
+# 10: 110
+#
+# S2 UART/Terminal options:
+# Up Down
+# 1: Not used Not allowed
+# 2: Alternate character set Standard character set
+# 3: Full duplex Half duplex
+# 4: 50 Hz refresh 60 Hz refresh
+# 5: No parity Send parity
+# 6: 2 stop bits 1 stop bit
+# 7: 8 data bits 7 data bits
+# 8: Not used Not allowed on Rev E or lower
+# 9: Even parity Odd parity
+# 10: Steady cursor Blinking cursor
+# (On Rev E or lower, use W25 instead of switch 10.)
+#
+# S5 UART/Terminal options:
+# Open Closed
+# 1: P3-6 Not connected DSR received on P3-6
+# 2: P3-8 Not connected DCD received on P3-8
+#
+# 3 Open, 4 Open: P3-20 Not connected
+# 3 Open, 4 Closed: DTR on when terminal is on
+# 3 Closed, 4 Open: DTR is connected to RTS
+# 3 Closed, 4 Closed: Not allowed
+#
+# 5 Closed: HDX printer (hardware control) Rev. K with extension port off,
+# all data transmitted out of the modem port (P3) will also be
+# transmitted out of the printer port (P4).
+#
+# 6 Open, 7 Open: Not allowed
+# 6 Open, 7 Closed: 20ma current loop input
+# 6 Closed, 7 Open: RS232 input
+# 6 Closed, 7 Closed: Not allowed
+#
+# Jumper options:
+# If the jumper is installed, the effect will occur (the next time the terminal
+# is switched on).
+#
+# S4/W31: Enables automatic LF upon receipt of CR from
+# remote or keyboard.
+# S4/W32: Enables transmission of EOT at the end of Send. If not
+# installed, a carriage return is sent.
+# S4/W33: Disables automatic carriage return in column 80.
+# S4/W34: Selects Page Print Mode as initial condition. If not
+# installed, Extension Mode is selected.
+#
+tvi920b|tvi920c|new televideo 920:\
+ :al=\EE:dl=\ER:k0=^AI\r:k1=^A@\r:k2=^AA\r:k3=^AB\r:\
+ :k4=^AC\r:k5=^AD\r:k6=^AE\r:k7=^AF\r:k8=^AG\r:k9=^AH\r:\
+ :tc=tvi912:
+
+# Televideo 921 and variants
+# From: Tim Theisen <tim@cs.wisc.edu> 22 Sept 1995
+# (tvi921: removed :ko=bt: before translation, I see no backtab cap;
+# also added empty <acsc> to suppress tic warning -- esr)
+tvi921|televideo model 921 with sysline same as page & real vi function:\
+ :am:bs:hs:pt:xn:xs:\
+ :co#80:li#24:sg#0:\
+ :ac=:ae=\E%:al=\EE:as=\E$:cd=\EY:ce=\ET:cl=^Z:cm=3\E=%+ %+ :\
+ :cr=^M:dc=\EW:dl=1*\ER:do=^V:ds=\Ef\r\Eg:ei=:fs=\Eg:ho=^^:\
+ :ic=\EQ:if=/usr/share/tabset/stdcrt:im=:\
+ :is=\El\E"\EF1\E.3\017\EA\E<:kA=\EE:kC=^Z:kD=\EW:kE=\ET:\
+ :kI=\EQ:kL=1*\ER:kS=\EY:kb=^H:kd=^V:kl=^H:kr=^L:ku=^K:le=^H:\
+ :mk@:nd=^L:nw=^M^J:sf=^J:ta=^I:ts=\Ef\EG0:up=^K:ve=\E.3:\
+ :vs=\E.2:\
+ :tc=adm+sgr:
+# without the beeper
+# (tvi92B: removed :ko=bt: before translation, I see no backtab cap;
+# also added empty <acsc> to suppress tic warning -- esr)
+tvi92B|televideo model 921 with sysline same as page & real vi function & no beeper:\
+ :am:hs:xn:xs:\
+ :co#80:li#24:sg#0:\
+ :ac=:ae=\E%:al=\EE:as=\E$:cd=\EY:ce=\ET:cl=^Z:cm=3\E=%+ %+ :\
+ :cr=^M:dc=\EW:dl=1*\ER:do=^V:ds=\Ef\r\Eg:ei=:fs=\Eg:ho=^^:\
+ :ic=\EQ:if=/usr/share/tabset/stdcrt:im=:\
+ :is=\El\E"\EF1\E.3\017\EA\E<:kA=\EE:kC=^Z:kD=\EW:kE=\ET:\
+ :kI=\EQ:kL=1*\ER:kS=\EY:kb=^H:kd=^V:kl=^H:kr=^L:ku=^K:le=^H:\
+ :mk@:nd=^L:nw=^M^J:sf=^J:ta=^I:ts=\Ef\EG0:up=^K:vb=\Eb\Ed:\
+ :ve=\E.3:vs=\E.2:\
+ :tc=adm+sgr:
+# (tvi92D: removed :ko=bt: before translation, I see no backtab cap -- esr)
+tvi92D|tvi92B with DTR instead of XON/XOFF & better padding:\
+ :al=2*\EE:dl=2*\ER:is=\El\E"\EF1\E.3\016\EA\E<:kA=2*\EE:\
+ :kL=2*\ER:\
+ :tc=tvi92B:
+
+# (tvi924: This used to have :ds=\Es0:, :fs=\031:. I put the new strings
+# in from a BSD termcap file because it looks like they do something the
+# old ones skip -- esr)
+tvi924|televideo tvi924:\
+ :am:bw:hs:in:mi:ms:xn:xo:\
+ :co#80:it#8:li#24:sg#0:ws#80:\
+ :F1=^AK\r:F2=^AL\r:F3=^AM\r:F4=^AN\r:F5=^AO\r:al=\EE:bl=^G:\
+ :bt=\EI:cd=\Ey:ce=\Et:cl=\E*0:cm=\E=%+ %+ :cr=^M:\
+ :cs=\E_%+ %+ :ct=\E3:dc=\EW:dl=\ER:do=^V:ds=\Es0\Ef\031:\
+ :ei=:fs=\031\Es1:ho=^^:\
+ :i1=\017\E%\E'\E(\EDF\EC\EG0\EN0\Es0\Ev0:ic=\EQ:\
+ :if=/usr/share/tabset/stdcrt:im=:k0=^A@\r:k1=^AA\r:\
+ :k2=^AB\r:k3=^AC\r:k4=^AD\r:k5=^AE\r:k6=^AF\r:k7=^AG\r:\
+ :k8=^AH\r:k9=^AI\r:k;=^AJ\r:kA=\EE:kC=\E*0:kD=\EW:kE=\Et:\
+ :kI=\EQ:kL=\ER:kS=\Ey:kb=^H:kd=^V:kh=^^:kl=^H:kr=^L:ku=^K:\
+ :l0=F1:l1=F2:l2=F3:l3=F4:l4=F5:l5=F6:l6=F7:l7=F8:l8=F9:l9=F10:\
+ :la=F11:le=^H:mb=\EG2:mk@:nd=^L:pk=\E|%+1%s\031:sf=^J:\
+ :sr=\Ej:st=\E1:ta=^I:ts=\Ef:up=^K:vb=\Eb\Ed:ve=\E.3:vi=\E.0:\
+ :vs=\E.1:\
+ :tc=adm+sgr:
+
+# TVI925 DIP switches. In each of these, D = Down and U = Up,
+#
+# Here are the settings for the external (baud) switches (S1):
+#
+# Position Baud
+# 7 8 9 10 [Printer]
+# 1 2 3 4 [Main RS232]
+# -----------------------------------------------------
+# D D D D 9600
+# D D D U 50
+# D D U D 75
+# D D U U 110
+# D U D D 135
+# D U D U 150
+# D U U D 300
+# D U U U 600
+# U D D D 1200
+# U D D U 1800
+# U D U D 2400
+# U D U U 3600
+# U U D D 4800
+# U U D U 7200
+# U U U D 9600
+# U U U U 19200
+#
+#
+# Settings for word length and stop-bits (S1)
+#
+# Position Description
+# 5 6
+# ---------------------------
+# U - 7-bit word
+# D - 8-bit word
+# - U 2 stop bits
+# - D 1 stop bit
+#
+#
+# S2 (external) settings
+#
+# Position Up Dn Description
+# --------------------------------------------
+# 1 X Local edit
+# X Duplex edit (transmit editing keys)
+# --------------------------------------------
+# 2 X 912/920 emulation
+# X 925
+# --------------------------------------------
+# 3 X
+# 4 X No parity
+# 5 X
+# --------------------------------------------
+# 3 X
+# 4 X Odd parity
+# 5 X
+# --------------------------------------------
+# 3 X
+# 4 X Even parity
+# 5 X
+# --------------------------------------------
+# 3 X
+# 4 X Mark parity
+# 5 X
+# --------------------------------------------
+# 3 X
+# 4 X Space parity
+# 5 X
+# --------------------------------------------
+# 6 X White on black display
+# X Black on white display
+# --------------------------------------------
+# 7 X Half Duplex
+# 8 X
+# --------------------------------------------
+# 7 X Full Duplex
+# 8 X
+# --------------------------------------------
+# 7 X Block mode
+# 8 X
+# --------------------------------------------
+# 9 X 50 Hz
+# X 60 Hz
+# --------------------------------------------
+# 10 X CR/LF (Auto LF)
+# X CR only
+#
+# S3 (internal switch) settings:
+#
+# Position Up Dn Description
+# --------------------------------------------
+# 1 X Keyclick off
+# X Keyclick on
+# --------------------------------------------
+# 2 X English
+# 3 X
+# --------------------------------------------
+# 2 X German
+# 3 X
+# --------------------------------------------
+# 2 X French
+# 3 X
+# --------------------------------------------
+# 2 X Spanish
+# 3 X
+# --------------------------------------------
+# 4 X Blinking block cursor
+# 5 X
+# --------------------------------------------
+# 4 X Blinking underline cursor
+# 5 X
+# --------------------------------------------
+# 4 X Steady block cursor
+# 5 X
+# --------------------------------------------
+# 4 X Steady underline cursor
+# 5 X
+# --------------------------------------------
+# 6 X Screen blanking timer (ON)
+# X Screen blanking timer (OFF)
+# --------------------------------------------
+# 7 X Page attributes
+# X Line attributes
+# --------------------------------------------
+# 8 X DCD disconnected
+# X DCD connected
+# --------------------------------------------
+# 9 X DSR disconnected
+# X DSR connected
+# --------------------------------------------
+# 10 X DTR Disconnected
+# X DTR connected
+# --------------------------------------------
+#
+# (tvi925: BSD has :cl=\E*:. I got :is: and :sr: from there -- esr)
+tvi925|televideo 925:\
+ :am:bs:bw:hs:ul:\
+ :co#80:li#24:sg#1:\
+ :al=\EE:bl=^G:bt=\EI:cd=\EY:ce=\ET:cl=^Z:cm=\E=%+ %+ :cr=^M:\
+ :ct=\E3:dc=\EW:dl=\ER:do=^V:ds=\Eh:ei=:fs=^M\Eg:ho=^^:ic=\EQ:\
+ :im=:is=\El\E":k0=^AI\r:k1=^A@\r:k2=^AA\r:k3=^AB\r:\
+ :k4=^AC\r:k5=^AD\r:k6=^AE\r:k7=^AF\r:k8=^AG\r:k9=^AH\r:\
+ :kA=\EE:kC=^Z:kD=\EW:kE=\ET:kI=\EQ:kL=\ER:kS=\EY:kb=^H:kd=^V:\
+ :kh=^^:kl=^H:kr=^L:ku=^K:le=^H:mk@:nd=^L:sf=^J:sr=\Ej:st=\E1:\
+ :ta=^I:ts=\Eh\Ef:up=^K:vb=\Eb\Ed:ve=\E.4:vs=\E.2:\
+ :tc=adm+sgr:
+# TeleVideo 925 from Mitch Bradley <sun!wmb> via BRL
+# to avoid "magic cookie" standout glitch:
+tvi925-hi|TeleVideo Model 925 with half intensity standout mode:\
+ :sg@:\
+ :kb=^H:kd=^J:kl=^H:se=\E(:so=\E):tc=tvi925:
+
+# From: Todd Litwin <litwin@litwin.jpl.nasa.gov> 28 May 1993
+# Originally Tim Curry, Univ. of Central Fla., <duke!ucf-cs!tim> 5/21/82
+# for additional capabilities,
+# The following tvi descriptions from B:pjphar and virus!mike
+# is for all 950s. It sets the following attributes:
+# full duplex (\EDF) write protect off (\E()
+# conversation mode (\EC) graphics mode off (\E%)
+# white on black (\Ed) auto page flip off (\Ew)
+# turn off status line (\Eg) clear status line (\Ef\r)
+# normal video (\E0) monitor mode off (\EX or \Eu)
+# edit mode (\Er) load blank char to space (\Ee\040)
+# line edit mode (\EO) enable buffer control (^O)
+# protect mode off (\E\047) duplex edit keys (\El)
+# program unshifted send key to send line all (\E016)
+# program shifted send key to send line unprotected (\E004)
+# set the following to nulls:
+# field delimiter (\Ex0\200\200)
+# line delimiter (\Ex1\200\200)
+# start-protected field delimiter (\Ex2\200\200)
+# end-protected field delimiter (\Ex3\200\200)
+# set end of text delimiter to carriage return/null (\Ex4\r\200)
+#
+# TVI 950 Switch Setting Reference Charts
+#
+# TABLE 1:
+#
+# S1 1 2 3 4 5 6 7 8 9 10
+# +-----------------------+-----+-----+-----------------------+
+# | Computer Baud Rate |Data |Stop | Printer Baud Rate |
+# | |Bits |Bits | |
+# +------+-----------------------+-----+-----+-----------------------+
+# | Up | See | 7 | 2 | See |
+# +------+-----------------------+-----+-----+-----------------------+
+# | Down | TABLE 2 | 8 | 1 | TABLE 2 |
+# +------+-----------------------+-----+-----+-----------------------+
+#
+#
+# S2 1 2 3 4 5 6 7 8 9 10
+# +-----+-----+-----------------+-----+-----------+-----+-----+
+# |Edit |Cursr| Parity |Video|Transmiss'n| Hz |Click|
+# +------+-----+-----+-----------------+-----+-----------+-----+-----+
+# | Up | Dplx|Blink| See |GonBk| See | 60 | Off |
+# +------+-----+-----+-----------------+-----+-----------+-----+-----+
+# | Down |Local|St'dy| TABLE 3 |BkonG| CHART | 50 | On |
+# +------+-----+-----+-----------------+-----+-----------+-----+-----+
+#
+# TABLE 2:
+#
+# +-----------+-----+-----+-----+-----+-----------+
+# | Display | 1 | 2 | 3 | 4 | Baud |
+# +-----------+-----+-----+-----+-----+ |
+# | Printer | 7 | 8 | 9 | 10 | Rate |
+# +-----------+-----+-----+-----+-----+-----------+
+# | D | D | D | D | 9600 |
+# | U | D | D | D | 50 |
+# | D | U | D | D | 75 |
+# | U | U | D | D | 110 |
+# | D | D | U | D | 135 |
+# | U | D | U | D | 150 |
+# | D | U | U | D | 300 |
+# | U | U | U | D | 600 |
+# | D | D | D | U | 1200 |
+# | U | D | D | U | 1800 |
+# | D | U | D | U | 2400 |
+# | U | U | D | U | 3600 |
+# | D | D | U | U | 4800 |
+# | U | D | U | U | 7200 |
+# | D | U | U | U | 9600 |
+# | U | U | U | U | 19200 |
+# +-----+-----+-----+-----+-----------+
+#
+# TABLE 3:
+# +-----+-----+-----+-----------+
+# | 3 | 4 | 5 | Parity |
+# +-----+-----+-----+-----------+
+# | X | X | D | None |
+# | D | D | U | Odd |
+# | D | U | U | Even |
+# | U | D | U | Mark |
+# | U | U | U | Space |
+# +-----+-----+-----+-----------+
+# X = don't care
+#
+# CHART:
+# +-----+-----+-----------------+
+# | 7 | 8 | Communication |
+# +-----+-----+-----------------+
+# | D | D | Half Duplex |
+# | D | U | Full Duplex |
+# | U | D | Block |
+# | U | U | Local |
+# +-----+-----+-----------------+
+#
+# (tvi950: early versions had obsolete ":ma=^Vj^Kk^Hh^Ll^^H:".
+# I also inserted :ic: and :kI:; the :ko: string indicated that :IC:
+# should be present and all tvi native modes use the same string for this.
+# Finally, note that BSD has cud1=^V. -- esr)
+tvi950|televideo 950:\
+ :am:bs:hs:mi:ms:xn:xo:\
+ :co#80:it#8:li#24:sg#1:\
+ :ac=b\011c\014d\re\ni\013:ae=^X:al=\EE:as=^U:bl=^G:bt=\EI:\
+ :cd=\Ey:ce=\Et:cl=\E*:cm=\E=%+ %+ :cr=^M:ct=\E3:dc=\EW:\
+ :dl=\ER:do=^J:ds=\Eg\Ef\r:ei=\Er:fs=^M:ho=^^:ic=\EQ:im=\Eq:\
+ :is=\EDF\EC\Ed\EG0\Eg\Er\EO\E'\E(\E%\Ew\EX\Ee \017\011\El\E016\E004\Ex0\0\0\Ex1\0\0\Ex2\0\0\011\Ex3\0\0\Ex4\r\0\Ef\r:\
+ :k0=^A0\r:k1=^A@\r:k2=^AA\r:k3=^AB\r:k4=^AC\r:k5=^AD\r:\
+ :k6=^AE\r:k7=^AF\r:k8=^AG\r:k9=^AH\r:kA=\EE:kB=\EI:kC=\E*:\
+ :kD=\EW:kE=\Et:kI=\EQ:kL=\ER:kS=\Ey:kb=^H:kd=^V:kh=^^:kl=^H:\
+ :kr=^L:ku=^K:le=^H:mk@:nd=^L:pf=\Ea:po=\E`:sf=^J:sr=\Ej:\
+ :st=\E1:ta=^I:ts=\Eg\Ef:up=^K:vb=\Eb\Ed:\
+ :tc=adm+sgr:
+#
+# is for 950 with two pages adds the following:
+# set 48 line page (\E\\2)
+# place cursor at page 0, line 24, column 1 (\E-07 )
+# set local (no send) edit keys (\Ek)
+#
+# two page 950 adds the following:
+# when entering ex, set 24 line page (\E\\1)
+# when exiting ex, reset 48 line page (\E\\2)
+# place cursor at 0,24,1 (\E-07 )
+# set duplex (send) edit keys (\El) when entering vi
+# set local (no send) edit keys (\Ek) when exiting vi
+#
+tvi950-2p|televideo950 w/2 pages:\
+ :is=\EDF\EC\Ed\EG0\Eg\Er\EO\E'\E(\E%\Ew\EX\Ee \017\011\Ek\E016\E004\Ex0\0\0\Ex1\0\0\Ex2\0\0\011\Ex3\0\0\Ex4\r\0\E\2\E-07 \011:\
+ :ke=\Ek:ks=\El:te=\E\2\E-07 :ti=\E\1\E-07 :\
+ :tc=tvi950:
+#
+# is for 950 with four pages adds the following:
+# set 96 line page (\E\\3)
+# place cursor at page 0, line 24, column 1 (\E-07 )
+#
+# four page 950 adds the following:
+# when entering ex, set 24 line page (\E\\1)
+# when exiting ex, reset 96 line page (\E\\3)
+# place cursor at 0,24,1 (\E-07 )
+#
+tvi950-4p|televideo950 w/4 pages:\
+ :is=\EDF\EC\Ed\EG0\Eg\Er\EO\E'\E(\E%\Ew\EX\Ee \017\011\Ek\E016\E004\Ex0\0\0\Ex1\0\0\Ex2\0\0\011\Ex3\0\0\Ex4\r\0\E\3\E-07 \011:\
+ :ke=\Ek:ks=\El:te=\E\3\E-07 :ti=\E\1\E-07 :\
+ :tc=tvi950:
+#
+# :is: for reverse video 950 changes the following:
+# set reverse video (\Ed)
+#
+# set vb accordingly (\Ed ...delay... \Eb)
+#
+tvi950-rv|televideo950 rev video:\
+ :is=\EDF\EC\Eb\EG0\Eg\Er\EO\E'\E(\E%\Ew\EX\Ee \017\011\El\E016\E004\Ex0\0\0\Ex1\0\0\Ex2\0\0\011\Ex3\0\0\Ex4\r\0:\
+ :vb=\Ed\Eb:\
+ :tc=tvi950:
+
+# tvi950-rv-2p uses the appropriate entries from 950-2p and 950-rv
+tvi950-rv-2p|televideo950 rev video w/2 pages:\
+ :is=\EDF\EC\Eb\EG0\Eg\Er\EO\E'\E(\E%\Ew\EX\Ee \017\011\Ek\E016\E004\Ex0\0\0\Ex1\0\0\Ex2\0\0\011\Ex3\0\0\Ex4\r\0\E\2\E-07 :\
+ :ke=\Ek:ks=\El:te=\E\2\E-07 :ti=\E\1\E-07 :vb=\Ed\Eb:\
+ :tc=tvi950:
+
+# tvi950-rv uses the appropriate entries from 950-4p and 950-rv
+tvi950-rv-4p|televideo950 rev video w/4 pages:\
+ :is=\EDF\EC\Eb\EG0\Er\EO\E'\E(\E%\Ew\EX\Ee \017\011\Ek\E016\E004\Ex0\0\0\Ex1\0\0\Ex2\0\0\011\Ex3\0\0\Ex4\r\0\E\3\E-07 :\
+ :ke=\Ek:ks=\El:te=\E\3\E-07 :ti=\E\1\E-07 :vb=\Ed\Eb:\
+ :tc=tvi950:
+# From: Andreas Stolcke <stolcke@icsi.berkeley.edu>
+# (tvi955: removed obsolete ":ma:=^Vj^Kk^Hh^Ll^^H";
+# removed incorrect (and overridden) ":do=^J:"; fixed broken continuations in
+# the :rs: string, inserted the :IC: implied by the termcap :ko: string. Note
+# the :ko: string had :cl: in it, which means that one of the original
+# :cl=\E*:, <kclr=\EY> had to be wrong; set <kclr=\E*> because that's what
+# the 950 has. Finally, corrected the <kel> string to match the 950 and what
+# ko implies -- esr)
+# If the BSD termcap file was right, :cm=\E=%p1%{32}%+%c%p2%{32}%+%c: would
+# also work.
+tvi955|televideo 955:\
+ :5i:bs:ms@:\
+ :it#8:sg@:\
+ :RA=\E[=7l:RX=^N:SA=\E[=7h:SX=^O:\
+ :ac=0_`RjHkGlFmEnIoPqKsQtMuLvOwNxJ:ae=\E%:as=\E$:\
+ :cm=\E[%i%d;%dH:do=^V:is=\E[=3l\EF1\Ed\EG0\E[=5l\E%\El:\
+ :kM=\EQ:kN=\EK:kP=\EJ:kT=\E1:ka=\E3:kt=\E2:mb=\EG2:\
+ :me=\EG0\E[=5l:mh=\E[=5h:mk=\EG1:ps=\EP:\
+ :r1=\EDF\EC\Eg\Er\EO\E'\E(\Ew\EX\Ee \017\E0P\E6\0\E0p\E4\0\Ef\r:\
+ :sf@:ve=\E.2:vi=\E.0:vs=\E.1:\
+ :tc=tvi950:
+tvi955-w|955-w|televideo955 w/132 cols:\
+ :co#132:\
+ :is=\E[=3h\EF1\Ed\EG0\E[=5l\E%\El:tc=tvi955:
+# use half-intensity as normal mode, full intensity as :md:
+tvi955-hb|955-hb|televideo955 half-bright:\
+ :is=\E[=3l\EF1\Ed\EG0\E[=5h\E%\El:md=\E[=5l:\
+ :me=\EG0\E[=5h:mh@:tc=tvi955:
+# From: Humberto Appleton <beto@cs.utexas.edu>, 880521 UT Austin
+# (tvi970: removed ":sg#0:"; removed :se:=\E[m, :ue:=\E[m;
+# added :am:/:cs:/:ho:/<hpa>/<vpa>/:ti:/:te: from BRL.
+# According to BRL we could have :ke:=\E>, :ks:=\E= but I'm not sure what
+# it does to the function keys. I deduced <rmam>/<smam>.
+# also added empty <acsc> to suppress tic warning, -- esr)
+tvi970|televideo 970:\
+ :am:bs:da:db:mi:ms:pt:\
+ :co#80:it#8:li#24:\
+ :RA=\E[?7h:SA=\E[?7l:ac=:ae=\E(B:al=\E[L:as=\E(B:bt=\E[Z:\
+ :cd=\E[J:ce=\E[K:ch=\E[%i%dG:cl=\E[H\E[2J:cm=\E[%i%d;%df:\
+ :cs=\E[%i%d;%dr:cv=\E[%i%dd:dc=\E[P:dl=\E[M:do=\ED:\
+ :ds=\Eg\Ef\r:ei=\E[4l:ho=\E[H:im=\E[4h:\
+ :is=\E<\E[?21l\E[19h\E[1Q\E[10l\E[7l\E[H\E[2J:k1=\E?a:\
+ :k2=\E?b:k3=\E?c:k4=\E?d:k5=\E?e:k6=\E?f:k7=\E?g:k8=\E?h:\
+ :k9=\E?i:kb=^H:kd=\E[B:kh=\E[H:kl=\E[D:kr=\E[C:ku=\E[A:\
+ :le=^H:me=\E[m:nd=\E[C:se=\E[m:so=\E[7m:sr=\EM:ta=^I:te=:\
+ :ti=\E[?20l\E[?7h\E[1Q:ue=\E[m:up=\EM:us=\E[4m:\
+ :vb=\E[5m\E[m:vs=\E[1Q:
+tvi970-vb|televideo 970 with visual bell:\
+ :vb=\E[?5h\0\0\0\0\0\0\0\0\0\0\0\0\0\E[?5l:tc=tvi970:
+tvi970-2p|televideo 970 with using 2 pages of memory:\
+ :te=\E[H\E[J\E[V:ti=\E[U\E[?20l\E[?7h\E[1Q:\
+ :tc=tvi970:
+# Works with vi and rogue. NOTE: Esc v sets autowrap on, Esc u sets 80 chars
+# per line (rather than 40), Esc K chooses the normal character set. Not sure
+# padding is needed, but adapted from the tvi920c termcap. The :so: and
+# :us: strings are klutzy, but at least use no screen space.
+# (tvipt: removed obsolete ":ma=^Kk^Ll^R^L:". I wish we knew <rmam>,
+# its absence means <smam>=\Ev isn't safe to use. -- esr)
+# From: Gene Rochlin <armsis@amber.berkeley.edu> 9/19/84.
+# The :cd:/:k0:/:k1:/:kh:/<mc4>, and <mc5> caps are from BRL, which says:
+# F1 and F2 should be programmed as ^A and ^B; required for UNIFY.
+tvipt|televideo personal terminal:\
+ :am:bs:\
+ :co#80:li#24:\
+ :al=\EE:bt=\EI:cd=\EY:ce=\ET:cl=^Z:cm=\E=%+ %+ :dl=\ER:\
+ :ho=^^:if=/usr/share/tabset/stdcrt:is=\Ev\Eu\EK:k0=^A:\
+ :k1=^B:kb=^H:kd=^J:kh=^^:kl=^H:kr=^L:ku=^K:le=^H:nd=^L:pf=^T:\
+ :po=^R:se=\EF:so=\EG1@A\EH:ue=\EF:up=^K:us=\EG1B@\EH:
+# From: Nathan Peterson <nathan@sco.com>, 03 Sep 1996
+# (untranslatable capabilities removed to fit entry within 1023 bytes)
+# (sgr removed to fit entry within 1023 bytes)
+# (terminfo-only capabilities suppressed to fit entry within 1023 bytes)
+tvi9065|televideo 9065:\
+ :am:bw:hs:mi:ms:xn:xo:\
+ :co#80:it#8:li#25:lm#0:ma#4:vt#0:ws#30:\
+ :AL=\E[%dL:DC=\E[%dP:DL=\E[%dM:DO=\E[%dB:IC=\E[%d@:\
+ :LE=\E[%dD:RI=\E[%dC:SF=\E[%dS:SR=\E[%dT:UP=\E[%dA:ae=\E%:\
+ :al=\EE:as=\E$:bl=^G:bt=\EI:cd=\EY:ce=\ET:cl=^Z:\
+ :cm=\E=%+ %+ :cr=^M:cs=\E[%i%d;%dr:ct=\E3:dc=\EW:dl=\ER:\
+ :dm=\Er:do=^V:ds=\E_30\r:ec=\E[%d@:ed=\0:ei=\Er:fs=^M:ho=^^:\
+ :i1=\E"\E%\E'\E(\EG@\EO\EX\E[=5l\E[=6l\E[=7h\Ed\Er:\
+ :i2=\E<\E[=4l\E[=8h:if=/usr/share/tabset/stdcrt:im=\Eq:\
+ :ip=:is=\EF2\EG0\E\L:k1=^A@\r:k2=^AA\r:k3=^AB\r:k4=^AC\r:\
+ :k5=^AD\r:k6=^AE\r:k7=^AF\r:k8=^AG\r:k9=^AH\r:kD=\EW:kb=^H:\
+ :kd=^V:kh=^^:kl=^H:kr=^L:ku=^K:le=^H:ll=\E[25;1H:mb=\EG2:\
+ :md=\EG\054:me=\EG0:mh=\EGp:mr=\EG4:nd=^L:nw=^M^J:\
+ :rp=\E[%r%db%.:se=\EG0:sf=^J:so=\EGt:sr=\Ej:st=\E1:ta=^I:\
+ :te=\E.3\Er\E[1;25r\E[25;0H:ti=\E.2:ts=\E[4;1v\E_30:\
+ :uc=\EG8\EG0:ue=\EG0:up=^K:us=\EG8:vb=\Eb\Ed:ve=\E.3:\
+ :vi=\E.0:vs=\E.2:
+
+#### Visual (vi)
+#
+# In September 1993, Visual Technology of Westboro, Massachusetts,
+# merged with White Pine Software of Nashua, New Hampshire.
+#
+# White Pine Software may be contacted at +1 603/886-9050.
+# Or visit White Pine on the World Wide Web at URL http://www.wpine.com.
+#
+
+# Visual 50 from Beau Shekita, BTL-Whippany <whuxlb!ejs>
+# Recently I hacked together the following termcap for Visual
+# Technology's Visual 50 terminal. It's a slight modification of
+# the vt52 termcap.
+# It's intended to run when the Visual 50 is in vt52 emulation mode
+# (I know what you're thinking; if it's emulating a vt52, then why
+# another termcap? Well, it turns out that the Visual 50 can handle
+# :dl: and db(?) among other things, which the vt52 can't)
+# The termcap works OK for the most part. The only problem is on
+# character inserts. The whole line gets painfully redrawn for each
+# character typed. Any suggestions?
+# Beau's entry is combined with the vi50 entry from University of Wisconsin.
+# Note especially the :al: function. :k4:-:k6: are really l4-l6 in
+# disguise; :k7:-:k9: are really l1-l3.
+vi50|visual 50:\
+ :am:bs:da:db:ms:pt:\
+ :co#80:it#8:li#24:\
+ :al=\EL:bl=^G:bt=4\Ez:cd=\EJ:ce=16\EK:cl=\EH\EJ:\
+ :cm=\EY%+ %+ :cr=^M:dl=3*\EM:do=\EB:ho=\EH:k1=\EP:k2=\EQ:\
+ :k3=\ER:k4=\EV:k5=\EE:k6=\E]:k7=\EL:k8=\Ev:k9=\EM:kb=^H:\
+ :kd=\EB:kh=\EH:kl=\ED:kr=\EC:ku=\EA:le=^H:nd=\EC:nl=^J:\
+ :nw=^M^J:se=\ET:sf=^J:so=\EU:sr=\EI:ta=^I:ue=\EW:up=\EA:\
+ :us=\ES:
+# this one was BSD & SCO's vi50
+vi50adm|visual 50 in adm3a mode:\
+ :am:ms:\
+ :co#80:it#8:li#24:\
+ :al=\EL:bl=^G:cd=\Ek:ce=\EK:cl=^Z:cm=\E=%+ %+ :cr=^M:dl=\EM:\
+ :do=^J:ho=\EH:kb=^H:kd=\EB:kh=\EH:kl=\ED:kr=\EC:ku=\EA:le=^H:\
+ :nd=^L:se=\ET:sf=^J:so=\EU:ta=^I:up=^K:
+# From: Jeff Siegal <jbs@quiotix.com>
+vi55|Visual 55:\
+ :am:bs:mi:ms:\
+ :co#80:it#8:li#24:\
+ :al=\EL:cd=\EJ:ce=\EK:cl=\Ev:cm=\EY%+ %+ :cs=\E_%+A%+A:\
+ :dc=\Ew:dl=\EM:do=^J:ei=\Eb:ho=\EH:im=\Ea:\
+ :is=\Ev\E_AX\Eb\EW\E9P\ET:kb=^H:kd=\EB:kl=\ED:kr=\EC:\
+ :ku=\EA:le=^H:nd=\EC:se=\ET:so=\EU:sr=\EI:ta=^I:up=\EA:
+
+# Visual 200 from BRL
+# The following switch settings are assumed for normal operation:
+# FULL_DUPLEX SCROLL CR
+# AUTO_NEW_LINE_ON VISUAL_200_EMULATION_MODE
+# Other switches may be set for operator convenience or communication
+# requirements.
+# Character insertion is kludged in order to get around the "beep" misfeature.
+# (This cap is commented out because :im:/:ei: is more efficient -- esr)
+# Supposedly "4*" delays should be used for :al:, :cd:, :cl:, :dc:,
+# and :dl: strings, but we seem to get along fine without them.
+vi200|visual 200:\
+ :am:bs:mi:ms:pt:\
+ :co#80:it#8:kn#10:li#24:\
+ :ac=:ae=\EG:al=\EL:as=\EF:bl=^G:bt=\Ez:cd=\Ey:ce=\Ex:cl=\Ev:\
+ :cm=\EY%+ %+ :cr=^M:ct=\Eg:dc=\EO:dl=\EM:do=^J:ho=\EH:\
+ :k0=\E?p:k1=\E?q:k2=\E?r:k3=\E?s:k4=\E?t:k5=\E?u:k6=\E?v:\
+ :k7=\E?w:k8=\E?x:k9=\E?y:kA=\EL:kC=\Ev:kD=\EO:kE=\Et:kI=\Ei:\
+ :kL=\EM:kM=\Ej:kS=\EJ:kT=\E1:kb=^H:kd=\EB:ke=\E>:kh=\EH:\
+ :kl=\ED:kr=\EC:ks=\E=:kt=\E2:ku=\EA:le=^H:me=\E3\Eb:mh=\E4:\
+ :mk=\Ea:nd=\EC:pf=\EX:po=\EW:ps=\EH\E]:\
+ :r1=\E3\Eb\Ej\E\El\EG\Ec\Ek\EX:se=\E3:sf=^J:so=\E4:\
+ :sr=\EI:st=\E1:ta=^I:up=\EA:ve=\Ec:vs=\Ed:
+# The older Visuals didn't come with function keys. This entry uses
+# :ks: and :ke: so that the keypad keys can be used as function keys.
+# If your version of vi doesn't support function keys you may want
+# to use vi200-f.
+vi200-f|visual 200 no function keys:\
+ :is=\E3\Eb\Ej\E\\El\EG\Ed\Ek:k0=\E?p:k1=\E?q:k2=\E?r:\
+ :k3=\E?s:k4=\E?t:k5=\E?u:k6=\E?v:k7=\E?w:k8=\E?x:k9=\E?y:\
+ :ke=\E>:ks=\E=:se@:so@:\
+ :tc=vi200:
+vi200-rv|visual 200 reverse video:\
+ :se=\E3:so=\E4:sr@:ve@:vs@:tc=vi200:
+
+# the function keys are programmable but we don't reprogram them to their
+# default values with :is: because programming them is very verbose. maybe
+# an initialization file should be made for the 300 and they could be stuck
+# in it.
+# (vi300: added <rmam>/<smam> based on init string -- esr)
+vi300|visual 300 ansi x3.64:\
+ :am:bw:mi:xn:\
+ :co#80:li#24:\
+ :RA=\E[?7l:SA=\E[?7h:al=\E[L:bl=^G:bt=\E[Z:cd=\E[J:ce=\E[K:\
+ :cl=\E[H\E[2J:cm=\E[%i%d;%dH:cr=^M:dc=\E[P:dl=\E[M:\
+ :do=\E[B:ei=\E[4l:ho=\E[H:im=\E[4h:\
+ :is=\E[7s\E[2;3;4;20;?5;?6l\E[12;?7h\E[1Q\E[0;1(D\E[8s:\
+ :k1=\E_A\E\:k2=\E_B\E\:k3=\E_C\E\:k4=\E_D\E\:k5=\E_E\E\:\
+ :k6=\E_F\E\:k7=\E_G\E\:k8=\E_H\E\:k9=\E_I\E\:kd=\E[B:\
+ :kh=\E[H:kl=\E[D:kr=\E[C:ku=\E[A:le=^H:me=\E[m:nd=\E[C:\
+ :se=\E[m:sf=^J:so=\E[1m:sr=\EM:ta=^I:ue=\E[m:up=\E[A:\
+ :us=\E[4m:
+# some of the vi300s have older firmware that has the command
+# sequence for setting editing extent reversed.
+vi300-old|visual 300 with old firmware (set edit extent reversed):\
+ :is=\E[7s\E[2;3;4;20;?5;?6l\E[12;?7h\E[2Q\E[0;1(D\E[8s:\
+ :tc=vi300:
+
+# Visual 500 prototype entry from University of Wisconsin.
+# The best place to look for the escape sequences is page A1-1 of the
+# Visual 500 manual. The initialization sequence given here may be
+# overkill, but it does leave out some of the initializations which can
+# be done with the menus in set-up mode.
+# The :xp: line below is so that emacs can understand the padding requirements
+# of this slow terminal. :xp: is 10 time the padding factor.
+# (vi500: removed unknown :xp#4: termcap;
+# also added empty <acsc> to suppress tic warning -- esr)
+vi500|visual 500:\
+ :am:mi:ms:\
+ :co#80:it#8:li#33:\
+ :ac=:ae=^O:al=3*\EL\Ex:as=^N:bt=4\Ez:cd=3*\Ey:ce=16\Ex:\
+ :cl=6*\Ev:cm=\EY%+ %+ :cr=^M:cs=\E(%+ %+ :dc=3*\EO:\
+ :dl=3*\EM:do=\EB:ei=\Ej:ho=\EH:im=\Ei:\
+ :is=\E3\E\001\E\007\E\003\Ek\EG\Ed\EX\El\E>\Eb\E\:\
+ :kb=^H:kd=\EB:kh=\EH:kl=\ED:kr=\EC:ku=\EA:le=^H:nd=\EC:\
+ :nw=^M^J:se=\E^G:sf=^J:so=\E^H:ta=8\011:ue=\E^C:up=\EA:\
+ :us=\E^D:
+
+# The visual 550 is a visual 300 with tektronix graphics,
+# and with 33 lines. clear screen is modified here to
+# also clear the graphics.
+vi550|visual 550 ansi x3.64:\
+ :li#33:\
+ :cl=\030\E[H\E[2J:tc=vi300:
+
+vi603|visual603|visual 603:\
+ :hs:mi:\
+ :al=\E[L:bl=^G:cd=\E[J:ce=\E[K:cl=\E[H\E[J:cm=\E[%i%d;%dH:\
+ :cs=\E[%i%d;%dr:dc=\E[P:dl=\E[M:ds=\EP2;1~\E\:ei=\E[4l:\
+ :fs=\E\:i1=\E>\E[?3l\E[?4l\E[?7h\E[?8h\E[1;24r:\
+ :im=\E[4h:mb=\E[5m:md=\E[1m:me=\E[m:mr=\E[7m:nd=\E[C:\
+ :se=\E[27m:sf=\ED:so=\E[7m:sr=\EM:ts=\EP2~:ue=\E[24m:\
+ :up=\E[A:us=\E[4m:\
+ :tc=vt100:
+
+#### Wyse (wy)
+#
+# Wyse Technology
+# 3471 North First Street
+# San Jose, CA 95134
+# Vox: (408)-473-1200
+# Fax: (408) 473-1222
+# Web: http://www.wyse.com
+#
+# Wyse sales can be reached by phone at 1-800-GET-WYSE. Tech support is at
+# (800)-800-WYSE (option 5 gets you a human). There's a Web page at the
+# obvious address, <http://www.wyse.com>. They keep terminfo entries at
+# <http://www.wyse.co.uk/support/appnotes/idxappnt.htm>.
+#
+# Wyse bought out Link Technology, Inc. in 1990 and closed it down in 1995.
+# They now own the Qume and Amdek brands, too. So these are the people to
+# talk with about all Link, Qume, and Amdek terminals.
+#
+# These entries include a few small fixes.
+# I canceled the bel capacities in the vb entries.
+# I made two trivial syntax fixes in the wyse30 entry.
+# I made some entries relative to adm+sgr.
+#
+#
+# Note: The wyse75, wyse85, and wyse99 have been discontinued.
+
+# Although the Wyse 30 can support more than one attribute
+# it requires magic cookies to do so. Many applications do not
+# function well with magic cookies. The following terminfo uses
+# the protect mode to support one attribute (dim) without cookies.
+# If more than one attribute is needed then the wy30-mc terminfo
+# should be used.
+#
+wy30|wyse30|Wyse 30:\
+ :5i:am:bw:hs:mi:ms:xo:\
+ :Nl#8:co#80:lh#1:li#24:lw#8:ma#1:ws#45:\
+ :#2=\E{:&3=\Er:@8=\E7:LF=\EA11:LO=\EA10:\
+ :ac=0wa_h[jukslrmqnxqzttuyv]wpxv:ae=\EH^C:al=\EE:\
+ :as=\EH^B:bl=^G:bt=\EI:cd=\EY:ce=\ET:cl=\E+:cm=\E=%+ %+ :\
+ :cr=^M:ct=\E0:dc=\EW:dl=\ER:do=^J:ds=\EF\r:ei=\Er:fs=^M:\
+ :ho=^^:im=\Eq:ip=:is=\E'\E(\E\1363\E`9\016\024:k1=^A@\r:\
+ :k2=^AA\r:k3=^AB\r:k4=^AC\r:k5=^AD\r:k6=^AE\r:k7=^AF\r:\
+ :k8=^AG\r:kA=\EE:kB=\EI:kD=\EW:kE=\ET:kI=\EQ:kL=\ER:kN=\EK:\
+ :kP=\EJ:kS=\EY:kb=^H:kd=^J:kh=^^:kl=^H:kr=^L:ku=^K:le=^H:\
+ :ll=^^^K:me=\E(\EH\003:mh=\E`7\E):mp=\E`7\E):nd=^L:\
+ :nw=^M^J:pf=^T:pn=\Ez%+/%s\r:po=^X:ps=\EP:px=\Ez%+?%s\177:\
+ :..sa=%?%p1%p5%p8%|%|%t\E`7\E)%e\E(%;%?%p9%t\EH\002%e\EH\003%;:\
+ :se=\E(:sf=\n:so=\E`7\E):sr=\Ej:st=\E1:ta=\011:ts=\EF:up=^K:\
+ :vb=\E`8\E`9:ve=\E`1:vi=\E`0:
+#
+# This terminal description uses the non-hidden attribute mode
+# (with magic cookie).
+#
+# (wy30-mc: added :ti: to suppress tic warning --esr)
+wy30-mc|wyse30-mc|wyse 30 with magic cookies:\
+ :ms@:\
+ :ma@:sg#1:\
+ :ae=\EG0\EH\003:as=\EG0\EH\002:mb=\EG2:\
+ :me=\EG0\E(\EH\003:mh=\EGp:mp=\EG0\E):\
+ :..sa=\EG%{48}%?%p2%p6%|%t%{8}%|%;%?%p1%p3%|%p6%|%t%{4}%|%;%?%p4%t%{2}%|%;%?%p1%p5%|%t%{64}%|%;%?%p7%t%{1}%|%;%c%?%p8%t\E)%e\E(%;%?%p9%t\EH\002%e\EH\003%;:\
+ :se=\EG0:so=\EG4:te=\EG0:ti=:\
+ :tc=wy30:tc=adm+sgr:
+# The mandatory pause used by :vb: does not work with
+# older versions of terminfo. If you see this effect then
+# unset xon and delete the / from the delay.
+# i.e. change $<100/> to $<100>
+wy30-vb|wyse30-vb|wyse 30 visible bell:\
+ :bl@:tc=wy30:
+#
+# The Wyse 50 can support one attribute (e.g. Dim, Inverse,
+# Normal) without magic cookies by using the protect mode.
+# The following description uses this feature, but when more
+# than one attribute is put on the screen at once, all attributes
+# will be changed to be the same as the last attribute given.
+# The Wyse 50 can support more attributes when used with magic
+# cookies. The wy50-mc terminal description uses magic cookies
+# to correctly handle multiple attributes on a screen.
+#
+wy50|wyse50|Wyse 50:\
+ :5i:am:bw:hs:mi:ms:xo:\
+ :Nl#8:co#80:lh#1:li#24:lw#8:ma#1:ws#45:\
+ :#2=\E{:%9=\EP:&3=\Er:@8=\E7:F1=^AJ\r:F2=^AK\r:F3=^AL\r:\
+ :F4=^AM\r:F5=^AN\r:F6=^AO\r:LF=\EA11:LO=\EA10:\
+ :ac=0wa_h[jukslrmqnxqzttuyv]wpxv:ae=\EH^C:al=\EE:\
+ :as=\EH^B:bl=^G:bt=\EI:cd=\EY:ce=\ET:cl=\E+:cm=\E=%+ %+ :\
+ :cr=^M:ct=\E0:dc=\EW:dl=\ER:do=^J:ds=\EF\r:ei=\Er:fs=^M:\
+ :ho=^^:i1=\E`\072\E`9:im=\Eq:ip=:is=\016\024\E'\E(:\
+ :k1=^A@\r:k2=^AA\r:k3=^AB\r:k4=^AC\r:k5=^AD\r:k6=^AE\r:\
+ :k7=^AF\r:k8=^AG\r:k9=^AH\r:k;=^AI\r:kA=\EE:kB=\EI:kD=\EW:\
+ :kE=\ET:kI=\EQ:kL=\ER:kN=\EK:kP=\EJ:kS=\EY:kb=^H:kd=^J:kh=^^:\
+ :kl=^H:kr=^L:ku=^K:le=^H:ll=^^^K:me=\E(\EH\003:mh=\E`7\E):\
+ :mp=\E`7\E):mr=\E`6\E):nd=^L:nw=^M^J:pf=^T:pn=\Ez%+/%s\r:\
+ :po=^X:ps=\EP:px=\Ez%+?%s\177:\
+ :..sa=%?%p1%p3%|%t\E`6\E)%e%p5%p8%|%t\E`7\E)%e\E(%;%?%p9%t\EH\002%e\EH\003%;:\
+ :se=\E(:sf=\n:so=\E`6\E):sr=\Ej:st=\E1:ta=^I:ts=\EF:up=^K:\
+ :vb=\E`8\E`9:ve=\E`1:vi=\E`0:
+#
+# This terminal description uses the non-hidden attribute mode
+# (with magic cookie).
+#
+# The mandatory pause used by flash does not work with some
+# older versions of terminfo. If you see this effect then
+# unset :xo: and delete the / from the delay.
+# i.e. change $<100/> to $<100>
+# (wy50-mc: added :ti: to suppress tic warning --esr)
+wy50-mc|wyse50-mc|wyse 50 with magic cookies:\
+ :ms@:\
+ :ma@:sg#1:\
+ :ae=\EG0\EH\003:as=\EG0\EH\002:mb=\EG2:\
+ :me=\EG0\E(\EH\003:mh=\EGp:mp=\EG0\E):mr=\EG4:\
+ :..sa=\EG%{48}%?%p2%p6%|%t%{8}%|%;%?%p1%p3%|%p6%|%t%{4}%|%;%?%p4%t%{2}%|%;%?%p1%p5%|%t%{64}%|%;%?%p7%t%{1}%|%;%c%?%p8%t\E)%e\E(%;%?%p9%t\EH\002%e\EH\003%;:\
+ :se=\EG0:so=\EGt:te=\EG0:ti=:\
+ :tc=wy50:tc=adm+sgr:
+wy50-vb|wyse50-vb|wyse 50 visible bell:\
+ :bl@:tc=wy50:
+wy50-w|wyse50-w|wyse 50 132-column:\
+ :Nl#16:co#132:lw#7:ws#97:\
+ :cm=\Ea%i%dR%dC:dc=\EW:i1=\E`;\E`9:tc=wy50:
+wy50-wvb|wyse50-wvb|wyse 50 132-column visible bell:\
+ :bl@:\
+ :tc=wy50-w:
+#
+# The Wyse 350 is a Wyse 50 with color.
+# Unfortunately this means that it has magic cookies.
+# The color attributes are designed to overlap the reverse, dim and
+# underline attributes. This is nice for monochrome applications
+# because you can make underline stuff green (or any other color)
+# but for true color applications it's not so hot because you cannot
+# mix color with reverse, dim or underline.
+# To further complicate things one of the attributes must be
+# black (either the foreground or the background). In reverse video
+# the background changes color with black letters. In normal video
+# the foreground changes colors on a black background.
+# This terminfo uses some of the more advanced features of curses
+# to display both color and blink. In the final analysis I am not
+# sure that the wy350 runs better with this terminfo than it does
+# with the wy50 terminfo (with user adjusted colors).
+#
+# The mandatory pause used by flash does not work with
+# older versions of terminfo. If you see this effect then
+# unset xon and delete the / from the delay.
+# i.e. change $<100/> to $<100>
+#
+# Bug: The <op> capability resets attributes.
+# (untranslatable capabilities removed to fit entry within 1023 bytes)
+wy350|wyse350|Wyse 350:\
+ :5i:am:bw:hs:mi:xo:\
+ :Co#8:NC#55:Nl#8:co#80:lh#1:li#24:lw#8:pa#8:sg#1:ws#45:\
+ :#2=\E{:%9=\EP:&3=\Er:@8=\E7:F1=^AJ\r:F2=^AK\r:F3=^AL\r:\
+ :F4=^AM\r:F5=^AN\r:F6=^AO\r:LF=\EA11:LO=\EA10:Sb=:\
+ :ac=0wa_h[jukslrmqnxqzttuyv]wpxv:ae=\EG0\EH\003:al=\EE:\
+ :as=\EG0\EH\002:bl=^G:bt=\EI:cd=\EY:ce=\ET:cl=\E+:\
+ :cm=\E=%+ %+ :cr=^M:ct=\E0:dc=\EW:dl=\ER:do=^J:ds=\EF\r:\
+ :ei=\Er:fs=^M:ho=^^:i1=\E`\072\E`9:i2=\E%?:im=\Eq:ip=:\
+ :is=\016\024\E'\E(:k1=^A@\r:k2=^AA\r:k3=^AB\r:k4=^AC\r:\
+ :k5=^AD\r:k6=^AE\r:k7=^AF\r:k8=^AG\r:k9=^AH\r:k;=^AI\r:\
+ :kA=\EE:kB=\EI:kD=\EW:kE=\ET:kI=\EQ:kL=\ER:kN=\EK:kP=\EJ:\
+ :kS=\EY:kb=^H:kd=^J:kh=^^:kl=^H:kr=^L:ku=^K:le=^H:ll=^^^K:\
+ :mb=\EG2:me=\EG0\E(\EH\003%{0}%PA%{0}%PC:mh=\EGp:\
+ :mp=\EG0\E):nd=^L:nw=^M^J:oc=\E%?:op=\EG0:pf=^T:\
+ :pn=\Ez%+/%s\r:po=^X:ps=\EP:px=\Ez%+?%s\177:sf=\n:sr=\Ej:\
+ :st=\E1:ta=^I:ts=\EF:up=^K:vb=\E`8\E`9:ve=\E`1:vi=\E`0:\
+ :tc=adm+sgr:
+wy350-vb|wyse350-vb|wyse 350 visible bell:\
+ :bl@:tc=wy350:
+wy350-w|wyse350-w|wyse 350 132-column:\
+ :Nl#16:co#132:lw#7:ws#97:\
+ :cm=\Ea%i%dR%dC:dc=\EW:i1=\E`;\E`9:tc=wy350:
+wy350-wvb|wyse350-wvb|wyse 350 132-column visible bell:\
+ :bl@:\
+ :tc=wy350-w:
+#
+# This terminfo description is untested.
+# The wyse100 emulates an adm31, so the adm31 entry should work.
+#
+wy100|wyse 100:\
+ :hs:mi:\
+ :co#80:li#24:sg#1:\
+ :al=\EE:bl=^G:cd=\EY:ce=\ET:cl=\E;:cm=\E=%+ %+ :cr=^M:\
+ :dc=\EW:dl=\ER:do=^J:ds=\EA31:ei=\Er:fs=^M:im=\Eq:is=\Eu\E0:\
+ :k1=^A@\r:k2=^AA\r:k3=^AB\r:k4=^AC\r:k5=^AD\r:k6=^AE\r:\
+ :k7=^AF\r:k8=^AG\r:kb=^H:kd=^J:kh=\E{:kl=^H:kr=^L:ku=^K:\
+ :le=^H:mk@:nd=^L:sf=^J:ts=\EF:up=^K:\
+ :tc=adm+sgr:
+#
+# The Wyse 120/150 has most of the features of the Wyse 60.
+# This terminal does not need padding up to 9600 baud!
+# :ms: should be set but the clear screen fails when in
+# alt-charset mode. Try \EcE\s\s\E+\s if the screen is really clear
+# then set :ms:.
+#
+# (untranslatable capabilities removed to fit entry within 1023 bytes)
+# (sgr removed to fit entry within 1023 bytes)
+# (terminfo-only capabilities suppressed to fit entry within 1023 bytes)
+wy120|wyse120|wy150|wyse150|Wyse 120/150:\
+ :am:bw:hs:km:mi:ms:xo:\
+ :co#80:it#8:li#24:pb#9601:ws#45:\
+ :ae=\EcD:al=\EE:as=\EcE:bl=^G:bt=\EI:cd=\EY:ce=\ET:cl=\E+:\
+ :cm=\E=%+ %+ :cr=^M:ct=\E0:dc=\EW:dl=\ER:do=^J:ds=\EF\r:\
+ :ei=\Er:fs=^M:ho=^^:i1=\EcB0\EcC1:i2=\EwJ\Ew1:im=\Eq:ip=:\
+ :is=\Ed$\EcD\E'\Er\EH\003\Ed/\EO\Ee1\Ed*\E`@\E`9\E`1\016\024\El:\
+ :k1=^A@\r:k2=^AA\r:k3=^AB\r:k4=^AC\r:k5=^AD\r:k6=^AE\r:\
+ :k7=^AF\r:k8=^AG\r:k9=^AH\r:kD=\EW:kI=\EQ:kN=\EK:kP=\EJ:\
+ :kb=^H:kd=^J:kh=^^:kl=^H:kr=^L:ku=^K:le=^H:ll=^^^K:mb=\EG2:\
+ :me=\E(\EH\003\EG0\EcD:mh=\EGp:nd=^L:nw=\r\n:sf=\n:\
+ :so=\EGt:sr=\Ej:st=\E1:ta=\011:te=\Ew1:ti=\Ew0:ts=\EF:up=^K:\
+ :vb=\E`8\E`9:ve=\E`1:vi=\E`0:\
+ :tc=adm+sgr:
+#
+wy120-w|wyse120-w|wy150-w|wyse150-w|wyse 120/150 132-column:\
+ :Nl#16:co#132:lw#7:ws#97:\
+ :cm=\Ea%i%dR%dC:dc=\EW:ip=:r2=\E`;:tc=wy120:
+#
+wy120-25|wyse120-25|wy150-25|wyse150-25|wyse 120/150 80-column 25-lines:\
+ :Nl@:lh@:li#25:lw@:\
+ :pn@:r3=\EwG\Ee):tc=wy120:
+#
+wy120-25-w|wyse120-25-w|wy150-25-w|wyse150-25-w|wyse 120/150 132-column 25-lines:\
+ :Nl@:lh@:li#25:lw@:\
+ :pn@:r3=\EwG\Ee):tc=wy120-w:
+#
+wy120-vb|wyse120-vb|wy150-vb|wyse150-vb|Wyse 120/150 visible bell:\
+ :bl@:\
+ :tc=wy120:
+#
+wy120-w-vb|wy120-wvb|wyse120-wvb|wy150-w-vb|wyse150-w-vb|Wyse 120/150 132-column visible bell:\
+ :bl@:\
+ :tc=wy120-w:
+#
+# The Wyse 60 is like the Wyse 50 but with more padding.
+# The reset strings are slow and the pad times very depending
+# on other parameters such as font loading. I have tried
+# to follow the following outline:
+#
+# <rs1> -> set personality
+# <rs2> -> set number of columns
+# <rs3> -> set number of lines
+# :i1: -> select the proper font
+# :is: -> do the initialization
+# :i3: -> set up display memory (2 pages)
+#
+# The Wyse 60's that have vt100 emulation are slower than the
+# older Wyse 60's. This change happened mid-1987.
+# The capabilities effected are :dc: :dl: :al: :sf: :sr:
+#
+# The meta key is only half right. This terminal will return the
+# high order bit set when you hit CTRL-function_key
+#
+# It may be useful to assign two function keys with the
+# values \E=(\s look at old data in page 1
+# \E=W, look at bottom of page 1
+# where \s is a space ( ).
+#
+# Note:
+# The Wyse 60 runs faster when the XON/XOFF
+# handshake is turned off.
+#
+# (wy60: we use \E{ rather than ^^ for home (both are documented) to avoid
+# a bug reported by Robert Dunn, <rcdii@inlink.com> -- esr)
+# (untranslatable capabilities removed to fit entry within 1023 bytes)
+# (sgr removed to fit entry within 1023 bytes)
+# (terminfo-only capabilities suppressed to fit entry within 1023 bytes)
+wy60|wyse60|Wyse 60:\
+ :am:bw:hs:km:mi:ms:\
+ :co#80:li#24:ws#45:\
+ :ae=\EcD:al=\EE:as=\EcE:bl=^G:bt=\EI:cd=\EY:ce=\ET:cl=\E+:\
+ :cm=\E=%+ %+ :cr=^M:ct=\E0:dc=\EW:dl=\ER:do=^J:ds=\EF\r:\
+ :ei=\Er:fs=^M:ho=\E{:i1=\EcB0\EcC1:i2=\EwJ\Ew1:im=\Eq:ip=:\
+ :is=\Ed$\EcD\E'\Er\EH\003\Ed/\EO\Ee1\Ed*\E`@\E`9\E`1\016\024\El:\
+ :k1=^A@\r:k2=^AA\r:k3=^AB\r:k4=^AC\r:k5=^AD\r:k6=^AE\r:\
+ :k7=^AF\r:k8=^AG\r:k9=^AH\r:kD=\EW:kI=\EQ:kN=\EK:kP=\EJ:\
+ :kb=^H:kd=^J:kh=^^:kl=^H:kr=^L:ku=^K:le=^H:ll=\E{^K:mb=\EG2:\
+ :me=\E(\EH\003\EG0\EcD:mh=\EGp:nd=^L:nw=\r\n:sf=\n:\
+ :so=\EGt:sr=\Ej:st=\E1:ta=\011:te=\Ew1:ti=\Ew0:ts=\EF:up=^K:\
+ :vb=\E`8\E`9:ve=\E`1:vi=\E`0:\
+ :tc=adm+sgr:
+#
+wy60-w|wyse60-w|wyse 60 132-column:\
+ :Nl#16:co#132:lw#7:ws#97:\
+ :cm=\Ea%i%dR%dC:dc=\EW:ip=:r2=\EeF\E`;:tc=wy60:
+#
+wy60-25|wyse60-25|wyse 60 80-column 25-lines:\
+ :Nl@:lh@:li#25:lw@:\
+ :pn@:r3=\EwG\Ee):tc=wy60:
+wy60-25-w|wyse60-25-w|wyse 60 132-column 25-lines:\
+ :Nl@:lh@:li#25:lw@:\
+ :pn@:r3=\EwG\Ee):tc=wy60-w:
+#
+wy60-42|wyse60-42|wyse 60 80-column 42-lines:\
+ :li#42:\
+ :al=\EE:cd=\Ey:cl=\E+:cm=\E=%+ %+ :dc=\EW:dl=\ER:\
+ :i1=\EcB2\EcC3:ip=:nw=\r\n:r3=\Ee*:sf=\n:sr=\Ej:tc=wy60:
+wy60-42-w|wyse60-42-w|wyse 60 132-column 42-lines:\
+ :Nl#16:co#132:lw#7:ws#97:\
+ :cd=\Ey:cl=\E+:cm=\Ea%i%dR%dC:dc=\EW:ho=\036:ip=:nw=\r\n:\
+ :r2=\EeF\E`;:\
+ :tc=wy60-42:
+#
+wy60-43|wyse60-43|wyse 60 80-column 43-lines:\
+ :Nl@:lh@:li#43:lw@:\
+ :pn@:r3=\Ee+:tc=wy60-42:
+wy60-43-w|wyse60-43-w|wyse 60 132-column 43-lines:\
+ :Nl@:lh@:li#43:lw@:\
+ :pn@:r3=\Ee+:tc=wy60-42-w:
+#
+wy60-vb|wyse60-vb|Wyse 60 visible bell:\
+ :bl@:tc=wy60:
+wy60-w-vb|wy60-wvb|wyse60-wvb|Wyse 60 132-column visible bell:\
+ :bl@:\
+ :tc=wy60-w:
+
+# The Wyse-99GT looks at lot like the Wyse 60 except that it
+# does not have the 42/43 line mode. In the Wyse-60 the "lines"
+# setup parameter controls the number of lines on the screen.
+# For the Wyse 99GT the "lines" setup parameter controls the
+# number of lines in a page. The screen can display 25 lines max.
+# The Wyse-99GT also has personalities for the VT220 and
+# Tektronix 4014. But this has no bearing on the native mode.
+#
+# (msgr) should be set but the clear screen fails when in
+# alt-charset mode. Try \EcE\s\s\E+\s if the screen is really clear
+# then set msgr, else use msgr@.
+#
+# u0 -> enter Tektronix mode
+# u1 -> exit Tektronix mode
+#
+wy99gt|wyse99gt|Wyse 99gt:\
+ :ms@:\
+ :al=\EE:cd=\Ey:ce=\Et:cl=\E+:dc=\EW:dl=\ER:i2=\Ew0:ip=:nw@:\
+ :r2=\E`\072:sf=\n:sr=\Ej:ta=\011:te=\Ew0:ti=\Ew1:\
+ :u0=\E~>\E8:u1=\E[42h:vb=\E`8\E`9:tc=wy60:
+#
+wy99gt-w|wyse99gt-w|wyse 99gt 132-column:\
+ :Nl#16:co#132:lw#7:ws#97:\
+ :cd=\Ey:cl=\E+:cm=\Ea%i%dR%dC:dc=\EW:ip=:r2=\E`;:tc=wy99gt:
+#
+wy99gt-25|wyse99gt-25|wyse 99gt 80-column 25-lines:\
+ :Nl@:lh@:li#25:lw@:\
+ :pn@:r2=\E`\072:r3=\EwG\Ee):tc=wy99gt:
+#
+wy99gt-25-w|wyse99gt-25-w|wyse 99gt 132-column 25-lines:\
+ :Nl@:lh@:li#25:lw@:\
+ :pn@:r2=\E`;:tc=wy99gt-w:
+#
+wy99gt-vb|wyse99gt-vb|Wyse 99gt visible bell:\
+ :bl@:tc=wy99gt:
+#
+wy99gt-w-vb|wy99gt-wvb|wyse99gt-wvb|Wyse 99gt 132-column visible bell:\
+ :bl@:\
+ :tc=wy99gt-w:
+#
+# The Wyse 160 is combination of the WY-60 and the WY-99gt.
+# The reset strings are slow and the pad times very depending
+# on other parameters such as font loading. I have tried
+# to follow the following outline:
+#
+# <rs1> -> set personality
+# <rs2> -> set number of columns
+# <rs3> -> set number of lines
+# :i1: -> select the proper font
+# :is: -> do the initialization
+# :i3: -> set up display memory (2 pages)
+#
+# The display memory may be used for either text or graphics.
+# When "Display Memory = Shared" the terminal will have more pages
+# but garbage may be left on the screen when you switch from
+# graphics to text. If "Display Memory = Unshared" then the
+# text area will be only one page long.
+#
+# (wy160: we use \E{ rather than ^^ for home (both are documented) to avoid
+# a bug reported by Robert Dunn, <rcdii@inlink.com> -- esr)
+# (untranslatable capabilities removed to fit entry within 1023 bytes)
+# (sgr removed to fit entry within 1023 bytes)
+# (terminfo-only capabilities suppressed to fit entry within 1023 bytes)
+wy160|wyse160|Wyse 160:\
+ :am:bw:hs:km:mi:ms:\
+ :co#80:li#24:ws#38:\
+ :ae=\EcD:al=\EE:as=\EcE:bl=^G:bt=\EI:cd=\EY:ce=\ET:cl=\E+:\
+ :cm=\E=%+ %+ :cr=^M:ct=\E0:dc=\EW:dl=\ER:do=^J:ds=\EF\r:\
+ :ei=\Er:fs=^M:ho=\E{:i1=\EcB0\EcC1:i2=\Ew0:im=\Eq:ip=:\
+ :is=\Ed$\EcD\E'\Er\EH\003\Ed/\EO\Ee1\Ed*\E`@\E`9\E`1\016\024\El:\
+ :k1=^A@\r:k2=^AA\r:k3=^AB\r:k4=^AC\r:k5=^AD\r:k6=^AE\r:\
+ :k7=^AF\r:k8=^AG\r:k9=^AH\r:kD=\EW:kI=\EQ:kN=\EK:kP=\EJ:\
+ :kb=^H:kd=^J:kh=^^:kl=^H:kr=^L:ku=^K:le=^H:ll=\E{^K:mb=\EG2:\
+ :me=\E(\EH\003\EG0\EcD:mh=\EGp:nd=^L:nw=\r\n:sf=\n:\
+ :so=\EGt:sr=\Ej:st=\E1:ta=^I:te=\Ew0:ti=\Ew1:ts=\EF:up=^K:\
+ :vb=\E`8\E`9:ve=\E`1:vi=\E`0:\
+ :tc=adm+sgr:
+#
+wy160-w|wyse160-w|wyse 160 132-column:\
+ :Nl#16:co#132:lw#7:ws#90:\
+ :cm=\Ea%i%dR%dC:dc=\EW:r2=\EeF\E`;:tc=wy160:
+#
+wy160-25|wyse160-25|wyse 160 80-column 25-lines:\
+ :Nl@:lh@:li#25:lw@:\
+ :pn@:r3=\EwG\Ee):tc=wy160:
+wy160-25-w|wyse160-25-w|wyse 160 132-column 25-lines:\
+ :Nl@:lh@:li#25:lw@:\
+ :pn@:r3=\EwG\Ee):tc=wy160-w:
+#
+wy160-42|wyse160-42|wyse 160 80-column 42-lines:\
+ :li#42:\
+ :al=\EE:cd=\Ey:cl=\E+:dl=\ER:i1=\EcB2\EcC3:nw=\r\n:r3=\Ee*:\
+ :sf=\n:sr=\Ej:\
+ :tc=wy160:
+wy160-42-w|wyse160-42-w|wyse 160 132-column 42-lines:\
+ :Nl#16:co#132:lw#7:ws#90:\
+ :cm=\Ea%i%dR%dC:dc=\EW:ip=:r2=\EeF\E`;:tc=wy160-42:
+#
+wy160-43|wyse160-43|wyse 160 80-column 43-lines:\
+ :Nl@:lh@:li#43:lw@:\
+ :pn@:r3=\Ee+:tc=wy160-42:
+wy160-43-w|wyse160-43-w|wyse 160 132-column 43-lines:\
+ :Nl@:lh@:li#43:lw@:\
+ :pn@:r3=\Ee+:tc=wy160-42-w:
+#
+wy160-vb|wyse160-vb|Wyse 160 visible bell:\
+ :bl@:tc=wy160:
+wy160-w-vb|wy160-wvb|wyse160-wvb|Wyse 160 132-column visible bell:\
+ :bl@:\
+ :tc=wy160-w:
+#
+# The Wyse 75 is a vt100 lookalike without advanced video.
+#
+# The Wyse 75 can support one attribute (e.g. Dim, Inverse,
+# Underline) without magic cookies. The following description
+# uses this capability, but when more than one attribute is
+# put on the screen at once, all attributes will be changed
+# to be the same as the last attribute given.
+# The Wyse 75 can support more attributes when used with magic
+# cookies. The wy75-mc terminal description uses magic cookies
+# to correctly handle multiple attributes on a screen.
+#
+# (untranslatable capabilities removed to fit entry within 1023 bytes)
+# (sgr removed to fit entry within 1023 bytes)
+# (terminfo-only capabilities suppressed to fit entry within 1023 bytes)
+wy75|wyse75|wyse 75:\
+ :am:hs:mi:ms:xn:xo:\
+ :co#80:li#24:ma#1:pb#1201:ws#78:\
+ :AL=\E[%dL:DC=\E[%dP:DL=\E[%dM:DO=\E[%dB:IC=\E[%d@:\
+ :K1=\EOw:K2=\EOu:K3=\EOy:K4=\EOq:K5=\EOs:LE=\E[%dD:\
+ :RI=\E[%dC:UP=\E[%dA:ae=^O:al=\E[L:as=^N:bl=^G:bt=\E[Z:\
+ :cd=\E[J:ce=\E[K:cl=\E[H\E[J:cm=\E[%i%d;%dH:cr=^M:\
+ :cs=\E[%i%d;%dr:ct=\E[3g:dc=\E[P:dl=\E[M:do=^J:\
+ :ds=\E[>\054\001\001\E[>-\001\001:ec=\E[%dX:ei=\E[4l:\
+ :fs=^A:ho=\E[H:\
+ :i1=\E[2;4;20;30l\E[?1;10l\E[12h\E[?7;8;25h:i2=\E[m:\
+ :im=\E[4h:ip=:is=\E>\E(B\E)0\017:k1=\E[?5i:k2=\E[?3i:\
+ :k3=\E[2i:k4=\E[@:k5=\E[M:k6=\E[17~:k7=\E[18~:k8=\E[19~:\
+ :k9=\E[20~:kI=\E[@:kN=\E[6~:kP=\E[5~:kb=^H:kd=\E[B:ke=\E>:\
+ :kh=\E[H:kl=\E[D:kr=\E[C:ks=\E[?1l\E[?7h\E=:ku=\E[A:le=^H:\
+ :me=\E[m\017:mh=\E[0t\E[2m:mr=\E[1t\E[7m:nd=\E[C:rc=\E8:\
+ :sc=\E7:se=\E[m:sf=\n:so=\E[1t\E[7m:sr=\EM:st=\EH:ta=^I:\
+ :ts=\E[>\054\001:ue=\E[m:up=\E[A:us=\E[2t\E[4m:\
+ :vb=\E[30h\E\054\E[30l:ve=\E[?25h:vi=\E[?25l:
+#
+# This terminal description uses the non-hidden attribute mode
+# (with magic cookie).
+#
+wy75-mc|wyse75-mc|wyse 75 with magic cookies:\
+ :ms@:\
+ :ma@:sg#1:\
+ :ae=\E[0p\017:as=\E[0p\016:i2=\E[m\E[p:mb=\E[2p:\
+ :me=\E[0p\017:mh=\E[1p:mk=\E[4p:mr=\E[16p:\
+ :..sa=\E[%{0}%?%p2%p6%|%t%{8}%|%;%?%p1%p3%|%p6%|%t%{16}%|%;%?%p4%t%{2}%|%;%?%p1%p5%|%t%{1}%|%;%?%p7%t%{4}%|%;%dp%?%p9%t\016%e\017%;:\
+ :se=\E[0p:so=\E[17p:ue=\E[0p:us=\E[8p:\
+ :tc=wy75:
+wy75-vb|wyse75-vb|wyse 75 with visible bell:\
+ :pb@:\
+ :bl@:tc=wy75:
+wy75-w|wyse75-w|wyse 75 in 132 column mode:\
+ :co#132:ws#130:\
+ :r2=\E[35h\E[?3h:tc=wy75:
+wy75-wvb|wyse75-wvb|wyse 75 with visible bell 132 columns:\
+ :pb@:\
+ :bl@:tc=wy75-w:
+#
+# Wyse 85 emulating a vt220 7 bit mode.
+# 24 line screen with status line.
+#
+# The vt220 mode permits more function keys but it wipes out
+# the escape key. I strongly recommend that <f11> be set to
+# escape (esc).
+# The terminal may have to be set for 8 data bits and 2 stop
+# bits for the arrow keys to work.
+# The Wyse 85 runs faster with XON/XOFF enabled. Also the
+# :DC: and :IC: work best when XON/XOFF is set. :IC: and
+# :DC: leave trash on the screen when used without XON/XOFF.
+#
+# (untranslatable capabilities removed to fit entry within 1023 bytes)
+# (sgr removed to fit entry within 1023 bytes)
+# (terminfo-only capabilities suppressed to fit entry within 1023 bytes)
+wy85|wyse85|wyse 85:\
+ :am:hs:mi:ms:xn:xo:\
+ :co#80:it#8:li#24:ws#80:\
+ :AL=\E[%dL:DC=\E[%dP:DL=\E[%dM:DO=\E[%dB:IC=\E[%d@:\
+ :K1=\EOw:K2=\EOu:K3=\EOy:K4=\EOq:K5=\EOs:LE=\E[%dD:\
+ :RI=\E[%dC:UP=\E[%dA:ae=^O:al=\E[L:as=^N:bl=^G:bt=\E[Z:\
+ :cd=\E[J:ce=\E[K:cl=\E[H\E[J:cm=\E[%i%d;%dH:cr=^M:\
+ :cs=\E[%i%d;%dr:ct=\E[3g:dc=\E[P:dl=\E[M:do=^J:ds=\E[40l:\
+ :ec=\E[%dX:ei=\E[4l:fs=\E[1;24r\E8:ho=\E[H:\
+ :i1=\E[62;1"p\E[?5W:i2=\E>\E(B\E)0\017\E[m:im=\E[4h:ip=:\
+ :is=\E[2;4;20;30l\E[?1;4;10;16l\E[12h\E[?7;8;25h:\
+ :k1=\EOP:k2=\EOQ:k3=\EOR:k4=\EOS:k6=\E[17~:k7=\E[18~:\
+ :k8=\E[19~:k9=\E[20~:kD=\E[3~:kI=\E[2~:kN=\E[6~:kP=\E[5~:\
+ :kb=^H:kd=\E[B:ke=\E>:kh=\E[26~:kl=\E[D:kr=\E[C:\
+ :ks=\E[?1l\E=:ku=\E[A:le=^H:mb=\E[5m:md=\E[1m:me=\E[m\017:\
+ :mh=\E[2m:mr=\E[7m:nd=\E[C:rc=\E8:sc=\E7:se=\E[m:sf=\n:\
+ :so=\E[7m:sr=\EM:st=\EH:ta=\011:\
+ :ts=\E[40h\E7\E[25;%i%p1%dH:ue=\E[m:up=\E[A:us=\E[4m:\
+ :vb=\E[30h\E\054\E[30l:ve=\E[?25h:vi=\E[?25l:
+#
+# Wyse 85 with visual bell.
+wy85-vb|wyse85-vb|wyse 85 with visible bell:\
+ :bl@:vb=\E[30h\E\054\E[30l:tc=wy85:
+#
+# Wyse 85 in 132-column mode.
+wy85-w|wyse85-w|wyse 85 in 132-column mode:\
+ :co#132:ws#132:\
+ :r2=\E[35h\E[?3h:tc=wy85:
+#
+# Wyse 85 in 132-column mode with visual bell.
+wy85-wvb|wyse85-wvb|wyse 85 with visible bell 132-columns:\
+ :bl@:\
+ :tc=wy85-w:
+#
+# Wyse 185 emulating a vt320 7 bit mode.
+#
+# This terminal always displays 25 lines. These lines may be used
+# as 24 data lines and a terminal status line (top or bottom) or
+# 25 data lines. The 48 and 50 line modes change the page size
+# and not the number of lines on the screen.
+#
+# The Compose Character key can be used as a meta key if changed
+# by set-up.
+#
+# (untranslatable capabilities removed to fit entry within 1023 bytes)
+# (sgr removed to fit entry within 1023 bytes)
+# (terminfo-only capabilities suppressed to fit entry within 1023 bytes)
+wy185|wyse185|wyse 185:\
+ :am:hs:km:mi:ms:xn:xo:\
+ :co#80:it#8:li#24:ws#80:\
+ :AL=\E[%dL:DC=\E[%dP:DL=\E[%dM:DO=\E[%dB:IC=\E[%d@:\
+ :K1=\EOw:K2=\EOu:K3=\EOy:K4=\EOq:K5=\EOs:LE=\E[%dD:\
+ :RI=\E[%dC:UP=\E[%dA:ae=^O:al=\E[L:as=^N:bl=^G:bt=\E[Z:\
+ :cd=\E[J:ce=\E[K:cl=\E[H\E[J:cm=\E[%i%d;%dH:cr=^M:\
+ :cs=\E[%i%d;%dr:ct=\E[3g:dc=\E[P:dl=\E[M:do=^J:\
+ :ds=\E7\E[99;0H\E[K\E8:ec=\E[%dX:ei=\E[4l:\
+ :fs=\E[1;24r\E8:ho=\E[H:i1=\E[?5W:\
+ :i2=\E>\E(B\E)0\017\E[m:im=\E[4h:ip=:\
+ :is=\E[2;4;20;30l\E[?1;4;10;16l\E[12h\E[?7;8;25h:\
+ :k1=\EOP:k2=\EOQ:k3=\EOR:k4=\EOS:k6=\E[17~:k7=\E[18~:\
+ :k8=\E[19~:k9=\E[20~:kD=\E[3~:kI=\E[2~:kN=\E[6~:kP=\E[5~:\
+ :kb=^H:kd=\E[B:ke=\E>:kh=\E[26~:kl=\E[D:kr=\E[C:\
+ :ks=\E[?1l\E=:ku=\E[A:le=^H:mb=\E[5m:md=\E[1m:me=\E[m\017:\
+ :mh=\E[2m:mr=\E[7m:nd=\E[C:rc=\E8:sc=\E7:se=\E[27m:sf=\n:\
+ :so=\E[7m:sr=\EM:st=\EH:ta=^I:te=\E[ R:ti=\E[ Q:\
+ :ts=\E7\E[99;%i%p1%dH:ue=\E[24m:up=\E[A:us=\E[4m:\
+ :vb=\E[30h\E\054\E[30l:ve=\E[34h\E[?25h:vi=\E[?25l:\
+ :vs=\E[?25h\E[34l:
+#
+# Wyse 185 with 24 data lines and top status (terminal status)
+wy185-24|wyse185-24|wyse 185 with 24 data lines:\
+ :hs@:\
+ :ds@:fs@:r3=\E[?5l\E[47h\E[40l\E[1;24r:ts@:tc=wy185:
+#
+# Wyse 185 with visual bell.
+wy185-vb|wyse185-vb|wyse 185+flash:\
+ :bl@:tc=wy185:
+#
+# Wyse 185 in 132-column mode.
+wy185-w|wyse185-w|wyse 185 in 132-column mode:\
+ :co#132:ws#132:\
+ :DC=\E[%dP:IC=\E[%d@:dc=\E[P:ei=:im=:ip=:r2=\E[35h\E[?3h:tc=wy185:
+#
+# Wyse 185 in 132-column mode with visual bell.
+wy185-wvb|wyse185-wvb|wyse 185+flash+132 cols:\
+ :bl@:tc=wy185-w:
+
+# wy325 terminfo entries
+# Done by Joe H. Davis 3-9-92
+
+# lines 25 columns 80
+#
+# (untranslatable capabilities removed to fit entry within 1023 bytes)
+wy325|wyse325|Wyse epc:\
+ :5i:am:bw:hs:mi:\
+ :Nl#8:co#80:lh#1:li#24:lw#8:pb#9601:ws#45:\
+ :#2=\E{:%9=\EP:&3=\Er:@8=\E7:F1=^AJ\r:F2=^AK\r:F3=^AL\r:\
+ :F4=^AM\r:F5=^AN\r:F6=^AO\r:LF=\EA11:LO=\EA10:RA=\Ed.:\
+ :SA=\Ed/:\
+ :ac=+/\054.0[Iha2fxgqh1jYk?lZm@nEqDtCu4vAwBx3yszr{c~~:\
+ :ae=\EcD:al=\EE:as=\EcE:bl=^G:bt=\EI:cd=\EY:ce=\ET:cl=\E+:\
+ :cm=\E=%+ %+ :cr=^M:ct=\E0:dc=\EW:dl=\ER:do=^J:ds=\EF\r:\
+ :ei=\Er:fs=^M:ho=^^:i1=\EcB0\EcC1:i2=\Ew0:im=\Eq:ip=:\
+ :is=\EcD\E'\Er\EH\003\Ed/\EO\Ee1\Ed*\E`@\E`9\E`1\016\024\El:\
+ :k1=^A@\r:k2=^AA\r:k3=^AB\r:k4=^AC\r:k5=^AD\r:k6=^AE\r:\
+ :k7=^AF\r:k8=^AG\r:k9=^AH\r:k;=^AI\r:kA=\EE:kB=\EI:kD=\EW:\
+ :kE=\ET:kI=\Eq:kL=\ER:kN=\EK:kP=\EJ:kS=\EY:kb=^H:kd=^J:kh=^^:\
+ :kl=^H:kr=^L:ku=^K:le=^H:ll=^^^K:mb=\EG2:\
+ :me=\E(\EH\003\EG0\EcD:mh=\EGp:mp=\E):nd=^L:pf=^T:\
+ :pl=\EZ2%+?%s\177:pn=\Ez%+/%s\r:po=\Ed#:ps=\EP:\
+ :px=\EZ1%+?%s\177:r1=\E~\041\E~4:r2=\EeF\E`\072:\
+ :r3=\EwG\Ee(:sf=\n:so=\EGt:sr=\Ej:st=\E1:ta=^I:te=\Ew0:\
+ :ti=\Ew1:ts=\EF:up=^K:vb=\E`8\E`9:ve=\E`1:vi=\E`0:\
+ :tc=adm+sgr:
+
+#
+# lines 24 columns 80 vb
+#
+wy325-vb|wyse325-vb|wyse-325 with visual bell:\
+ :bl@:tc=wy325:
+
+#
+# lines 24 columns 132
+#
+wy325-w|wyse325-w|wy325w-24|wyse-325 in wide mode:\
+ :Nl#16:co#132:lw#7:ws#97:\
+ :cm=\Ea%i%dR%dC:dc=\EW:ip=:r2=\E`;:tc=wy325:
+#
+# lines 25 columns 80
+#
+wy325-25|wyse325-25|wy325-80|wyse-325|wyse-325 25 lines:\
+ :Nl@:lh@:li#25:lw@:\
+ :pn@:r3=\EwG\Ee):tc=wy325:
+#
+# lines 25 columns 132
+#
+wy325-25w|wyse325-25w|wy325 132 columns:\
+ :Nl@:lh@:li#25:lw@:\
+ :pn@:r3=\EwG\Ee):tc=wy325-w:
+#
+# lines 25 columns 132 vb
+#
+wy325-w-vb|wy325-wvb|wyse325-wvb|wyse-325 wide mode reverse video:\
+ :bl@:\
+ :tc=wy325-w:
+
+#
+# lines 42 columns 80
+#
+wy325-42|wyse325-42|wyse-325 42 lines:\
+ :Nl@:lh@:li#42:lw@:\
+ :pn@:r3=\EwG\Ee):tc=wy325:
+#
+# lines 42 columns 132
+#
+wy325-42w|wyse325-42w|wyse-325 42 lines wide mode:\
+ :Nl@:lh@:li#42:lw@:\
+ :pn@:r3=\EwG\Ee):tc=wy325-w:
+#
+# lines 42 columns 132 vb
+#
+wy325-42w-vb|wy325-42wvb|wyse-325 42 lines wide mode visual bell:\
+ :bl@:\
+ :tc=wy325-w:
+#
+# lines 43 columns 80
+#
+wy325-43|wyse325-43|wyse-325 43 lines:\
+ :Nl@:lh@:li#43:lw@:\
+ :pn@:tc=wy325:
+#
+# lines 43 columns 132
+#
+wy325-43w|wyse325-43w|wyse-325 43 lines wide mode:\
+ :Nl@:lh@:li#43:lw@:\
+ :pn@:r3=\EwG\Ee):tc=wy325-w:
+#
+# lines 43 columns 132 vb
+#
+wy325-43w-vb|wy325-43wvb|wyse-325 43 lines wide mode visual bell:\
+ :bl@:\
+ :tc=wy325-w:
+
+# Wyse 370 -- 24 line screen with status line.
+#
+# The terminal may have to be set for 8 data bits and 2 stop
+# bits for the arrow keys to work.
+#
+# If you change keyboards the terminal will send different
+# escape sequences.
+# The following definition is for the basic terminal without
+# function keys.
+#
+# <u0> -> enter Tektronix 4010/4014 mode
+# <u1> -> exit Tektronix 4010/4014 mode
+# <u2> -> enter ASCII mode (from any ANSI mode)
+# <u3> -> exit ASCII mode (goto native ANSI mode)
+# <u4> -> enter Tek 4207 ANSI mode (from any ANSI mode)
+# <u5> -> exit Tek 4207 mode (goto native ANSI mode)
+#
+# Bug: The <op> capability resets attributes.
+# (untranslatable capabilities removed to fit entry within 1023 bytes)
+# (sgr removed to fit entry within 1023 bytes)
+# (terminfo-only capabilities suppressed to fit entry within 1023 bytes)
+wy370-nk|wyse 370 without function keys:\
+ :am:hs:mi:ms:xn:xo:\
+ :co#80:it#8:li#24:ws#80:\
+ :AL=\E[%dL:DC=\E[%dP:DL=\E[%dM:DO=\E[%dB:IC=\E[%d@:\
+ :LE=\E[%dD:RI=\E[%dC:UP=\E[%dA:ae=^O:al=\E[L:as=^N:bl=^G:\
+ :bt=\E[Z:cd=\E[J:ce=\E[K:cl=\E[H\E[J:cm=\E[%i%d;%dH:cr=^M:\
+ :cs=\E[%i%d;%dr:ct=\E[3g:dc=\E[P:dl=\E[M:do=^J:ds=\E[40l:\
+ :ec=\E[%dX:ei=\E[4l:fs=\E[1;24r\E8:ho=\E[H:\
+ :i1=\E[90;1"p\E[?5W:i2=\E>\017\E)0\E(B\E[63;0w\E[m:\
+ :im=\E[4h:ip=:\
+ :is=\E[2;4;20;30;40l\E[?1;10;16l\E[12h\E[?7;8;25h:\
+ :ke=\E>:ks=\E[?1l\E=:le=^H:mb=\E[5m:md=\E[1m:me=\E[m\017:\
+ :mh=\E[2m:mr=\E[7m:nd=\E[C:rc=\E8:sc=\E7:se=\E[27m:sf=\n:\
+ :so=\E[7m:sr=\EM:st=\EH:ta=\011:te=\E[ R:ti=\E[ Q:\
+ :ts=\E[40l\E[40h\E7\E[99;%i%p1%dH:ue=\E[24m:up=\E[A:\
+ :us=\E[4m:vb=\E[30h\E\054\E[30l:ve=\E[34h\E[?25h:\
+ :vi=\E[?25l:vs=\E[?25h\E[34l:
+#
+# Function key set for the ASCII (wy-50 compatible) keyboard
+# This is the default 370.
+#
+wy370|wyse370|wy370-101k|Wyse 370 with 101 key keyboard:\
+ :@8=\EOM:F1=\E[23~:F2=\E[24~:F3=\E[25~:F4=\E[26~:\
+ :F5=\E[28~:F6=\E[29~:k1=\E[?4i:k2=\E[?3i:k3=\E[2i:k4=\E[@:\
+ :k5=\E[M:k6=\E[17~:k7=\E[18~:k8=\E[19~:k9=\E[20~:\
+ :k;=\E[21~:kA=\EOP:kB=\E[Z:kD=\EOQ:kI=\EOP:kL=\EOQ:kN=\E[U:\
+ :kP=\E[V:kb=^H:kd=\E[B:kh=\E[H:kl=\E[D:kr=\E[C:ku=\E[A:\
+ :tc=wy370-nk:
+#
+# Function key set for the VT-320 (and wy85) compatible keyboard
+#
+wy370-105k|Wyse 370 with 105 key keyboard:\
+ :%1=\E[28~:*6=\E[4~:@0=\E[1~:@8=\EOM:F1=\E[23~:F2=\E[24~:\
+ :F3=\E[25~:F4=\E[26~:F5=\E[28~:F6=\E[29~:F7=\E[31~:\
+ :F8=\E[32~:F9=\E[33~:FA=\E[34~:K1=\EOw:K2=\EOu:K3=\EOy:\
+ :K4=\EOq:K5=\EOs:k1=\EOP:k2=\EOQ:k3=\EOR:k4=\EOS:k6=\E[17~:\
+ :k7=\E[18~:k8=\E[19~:k9=\E[20~:k;=\E[21~:kD=\E[3~:\
+ :kI=\E[2~:kN=\E[6~:kP=\E[5~:kb=^H:kd=\E[B:kh=\E[26~:\
+ :kl=\E[D:kr=\E[C:ku=\E[A:l1=PF1:l2=PF2:l3=PF3:l4=PF4:\
+ :tc=wy370-nk:
+#
+# Function key set for the PC compatible keyboard
+#
+wy370-EPC|Wyse 370 with 102 key keyboard:\
+ :@7=\E[1~:@8=\EOM:F1=\E[23~:F2=\E[24~:k1=\EOP:k2=\EOQ:\
+ :k3=\EOR:k4=\EOS:k5=\E[M:k6=\E[17~:k7=\E[18~:k8=\E[19~:\
+ :k9=\E[20~:k;=\E[21~:kB=\E[Z:kI=\E[2~:kN=\E[U:kP=\E[V:\
+ :kb=^H:kd=\E[B:kh=\E[H:kl=\E[D:kr=\E[C:ku=\E[A:\
+ :tc=wy370-nk:
+#
+# Wyse 370 with visual bell.
+wy370-vb|Wyse 370 with visible bell:\
+ :bl@:tc=wy370:
+#
+# Wyse 370 in 132-column mode.
+wy370-w|Wyse 370 in 132-column mode:\
+ :co#132:ws#132:\
+ :r2=\E[35h\E[?3h:tc=wy370:
+#
+# Wyse 370 in 132-column mode with visual bell.
+wy370-wvb|Wyse 370 with visible bell 132-columns:\
+ :vb=\E[30h\E\054\E[30l:tc=wy370-w:
+wy370-rv|Wyse 370 reverse video:\
+ :r3=\E[32h\E[?5h:tc=wy370:
+#
+# Wyse 99gt Tektronix 4010/4014 emulator,
+#
+wy99gt-tek|Wyse 99gt Tektronix 4010/4014 emulator:\
+ :am:os:\
+ :co#74:li#35:\
+ :bl=^G:cl=\E^L:\
+ :..cm=\035%{3040}%{89}%p1%*%-%Py%p2%{55}%*%Px%gy%{128}%/%{31}%&%{32}%+%c%gy%{3}%&%{4}%*%gx%{3}%&%+%{96}%+%c%gy%{004}%/%{31}%&%{96}%+%c%gx%{128}%/%{31}%&%{32}%+%c%gx%{004}%/%{31}%&%{64}%+%c\037:\
+ :cr=^M:do=^J:ff=^L:\
+ :hd=\036HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH\037:\
+ :ho=^]7`x @\037:\
+ :hu=\036DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD\037:\
+ :is=\E8:le=^H:nd= :nw=^M^J:u0=\E~>\E8:u1=\E[42h:up=^K:
+#
+# Wyse 160 Tektronix 4010/4014 emulator,
+#
+wy160-tek|Wyse 160 Tektronix 4010/4014 emulator:\
+ :..cm=\035%{3103}%{91}%p1%*%-%Py%p2%{55}%*%Px%gy%{128}%/%{31}%&%{32}%+%c%gy%{3}%&%{4}%*%gx%{3}%&%+%{96}%+%c%gy%{004}%/%{31}%&%{96}%+%c%gx%{128}%/%{31}%&%{32}%+%c%gx%{004}%/%{31}%&%{64}%+%c\037:\
+ :ho=^]8`g @\037:\
+ :tc=wy99gt-tek:
+#
+# Wyse 370 Tektronix 4010/4014 emulator,
+#
+wy370-tek|Wyse 370 Tektronix 4010/4014 emulator:\
+ :am:os:\
+ :co#80:li#36:\
+ :bl=^G:cl=\E^L:\
+ :..cm=\035%{775}%{108}%p1%*%{5}%/%-%Py%p2%{64}%*%{4}%+%{5}%/%Px%gy%{32}%/%{31}%&%{32}%+%c%gy%{31}%&%{96}%+%c%gx%{32}%/%{31}%&%{32}%+%c%gx%{31}%&%{64}%+%c\037:\
+ :cr=^M:do=^J:ff=^L:\
+ :hd=\036HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH\037:\
+ :ho=^]8g @\037:\
+ :hu=\036DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD\037:\
+ :is=\E8:kb=^H:kd=^J:kl=^H:kr=^I:ku=^K:le=^H:nd= :nw=^M^J:\
+ :u0=\E[?38h\E8:u1=\E[?38l\E)0:up=^K:
+
+# Vendor-supplied Wyse entries end here.
+
+# Can't set tabs! Other bugs (ANSI mode only):
+# - can't redefine function keys (anyway, key redefinition in ANSI mode
+# is too much complex to be described);
+# - meta key can't be described (the terminal forgets it when reset);
+# The xon-xoff handshaking can't be disabled while in ansi personality, so
+# emacs can't work at speed greater than 9600 baud. No padding is needed at
+# this speed.
+# dch1 has been commented out because it causes annoying glittering when
+# vi deletes one character at the beginning of a line with tabs in it.
+# dch makes sysgen(1M) have a horrible behaviour when deleting
+# a screen and makes screen(1) behave badly, so it is disabled too. The nice
+# thing is that vi goes crazy if smir-rmir are present and both dch-dch1 are
+# not, so smir and rmir are commented out as well.
+# From: Francesco Potorti` <F.Potorti@cnuce.cnr.it>, 24 Aug 1998
+# (untranslatable capabilities removed to fit entry within 1023 bytes)
+# (sgr removed to fit entry within 1023 bytes)
+# (terminfo-only capabilities suppressed to fit entry within 1023 bytes)
+wy99-ansi|Wyse WY-99GT in ansi mode (int'l PC keyboard):\
+ :am:km:mi:ms:xn:\
+ :co#80:it#8:li#25:vt#3:\
+ :AL=\E[%dL:DL=\E[%dM:DO=\E[%dB:IC=\E[%d@:LE=\E[%dD:\
+ :RI=\E[%dC:UP=\E[%dA:ae=^O:al=\E[L:as=^N:bl=^G:bt=\E[Z:\
+ :cd=\E[J:ce=\E[K:cl=\E[H\E[J:cm=\E[%i%d;%dH:cr=^M:\
+ :cs=\E[%i%d;%dr:dl=\E[M:do=\ED:ec=\E[%dX:ei=\E[4l:ho=\E[H:\
+ :im=\E[4h:\
+ :is=\E7\E[1r\E8\E[2;3;4;13;20;34;39;36l\E[12;16;34h\E[?1;3;4;5;10;18l\E[?7;8;25h\E>\E[?5W\E(B\017\E[4i:\
+ :k1=\EOP:k2=\EOQ:k3=\EOR:k4=\EOS:k5=\E[M:k6=\E[17~:\
+ :k7=\E[18~:k8=\E[19~:k9=\E[20~:kb=^H:kd=\EOB:ke=\E[?1l:\
+ :kl=\EOD:kr=\EOC:ks=\E[?1h:ku=\EOA:le=\010:ll=\E[24E:\
+ :mb=\E[5m:md=\E[1m:me=\E[m\017\E["q:mh=\E[2m:mr=\E[7m:\
+ :nd=\E[C:nw=\EE:rc=\E8:sc=\E7:se=\E[27m:sf=\n:so=\E[7m:\
+ :sr=\EM:ta=^I:ue=\E[24m:up=\EM:us=\E[4m:vb=\E[?5h\E[?5l:\
+ :ve=\E[34h\E[?25h:vi=\E[?25l:vs=\E[34l\E[?25h:
+
+# This is the american terminal. Here tabs work fine.
+# From: Francesco Potorti` <F.Potorti@cnuce.cnr.it>, 24 Aug 1998
+wy99a-ansi|Wyse WY-99GT in ansi mode (US PC keyboard):\
+ :ct=\E[3g:i2=\E[?5l:r3=\E[?5l:st=\EH:\
+ :tc=wy99-ansi:
+
+# This terminal (firmware version 02) has a lot of bugs:
+# - can't set tabs;
+# - other bugs in ANSI modes (see above).
+# This description disables handshaking when using cup. This is because
+# GNU emacs doesn't like Xon-Xoff handshaking. This means the terminal
+# cannot be used at speeds greater than 9600 baud, because at greater
+# speeds handshaking is needed even for character sending. If you use
+# DTR handshaking, you can use even greater speeds.
+# From: Francesco Potorti` <F.Potorti@cnuce.cnr.it>, 24 Aug 1998
+# (untranslatable capabilities removed to fit entry within 1023 bytes)
+# (sgr removed to fit entry within 1023 bytes)
+# (terminfo-only capabilities suppressed to fit entry within 1023 bytes)
+wy99f|wy99fgt|wy-99fgt|Wyse WY-99GT (int'l PC keyboard):\
+ :am:bw:hs:km:mi:ms:xo:\
+ :co#80:it#8:li#25:ws#46:\
+ :K1=^^:K3=\EJ:K4=\ET:K5=\EK:ae=\EcD:al=\EE:as=\EcE:bl=^G:\
+ :bt=\EI:cd=\EY:ce=\ET:cl=\E'\E(\032:cm=\E=%+ %+ :cr=^M:\
+ :dc=\EW:dl=\ER:do=\Ej:ds=\EF\r:ei=\Er:fs=^M:ho=^^:im=\Eq:\
+ :is=\Eu\Ee6\EC\EDF\Ec21\Ec31\Ec62\Ec72\Ee;\016\E'\EeL\E`9\E\1360\E`1\E`4\Ee.\E`\072\Ee1\EG0\E(\Ed/\Ee4\Ed*\EO\E`I\Er\Ee"\EcD\024:\
+ :k1=^A@\r:k2=^AA\r:k3=^AB\r:k4=^AC\r:k5=^AD\r:k6=^AE\r:\
+ :k7=^AF\r:k8=^AG\r:k9=^AH\r:kb=^H:kd=^J:kl=^H:kr=^L:ku=^K:\
+ :le=^H:mb=\EG2:me=\E(\EG0:mh=\EGp:mr=\EG4:nd=^L:nw=^_:\
+ :se=\EG0:sf=^J:so=\EG4:sr=\Ej:ta=^I:te=\Ec21\Ec31:\
+ :ti=\Ec20\Ec30:ts=\EF:up=^K:vb=\E\1361\E\1360:\
+ :ve=\E`4\E`1:vi=\E`0:vs=\E`2\E`1:
+
+# This is the american terminal. Here tabs work.
+# From: Francesco Potorti` <F.Potorti@cnuce.cnr.it>, 24 Aug 1998
+wy99fa|wy99fgta|wy-99fgta|Wyse WY-99GT (US PC keyboard):\
+ :ct=\E0:st=\E1:\
+ :tc=wy99f:
+
+#
+#TITLE: TERMINFO ENTRY WY520
+#DATE: 8/5/93
+# The WY520 terminfo is based on the WY285 entry published on the WYSE
+# BBS with the addition of more function keys and special keys.
+#
+# rs1 -> set personality
+# rs2 -> set number of columns
+# rs3 -> set number of lines
+# is1 -> select the proper font
+# is2 -> do the initialization
+# is3 -> If this string is empty then rs3 gets sent.
+#
+# Wyse 520 emulating a vt420 7 bit mode with default ANSI keyboard
+# - The BS key is programmed to generate BS in smcup since
+# is2 doesn't seem to work.
+# - Remove and shift/Remove: delete a character
+# - Insert : enter insert mode
+# - Find : delete to end of file
+# - Select : clear a line
+# - F11, F12, F13: send default sequences (not ESC, BS, LF)
+# - F14 : Home key
+# - Bottom status line (host writable line) is used.
+# - smkx,rmkx are removed because this would put the numeric
+# keypad in Dec application mode which doesn't seem to work
+# with SCO applications.
+#
+# (untranslatable capabilities removed to fit entry within 1023 bytes)
+# (sgr removed to fit entry within 1023 bytes)
+# (terminfo-only capabilities suppressed to fit entry within 1023 bytes)
+wy520|wyse520|wyse 520:\
+ :am:hs:km:mi:xn:xo:\
+ :co#80:it#8:li#24:ws#80:\
+ :AL=\E[%dL:DC=\E[%dP:DL=\E[%dM:DO=\E[%dB:IC=\E[%d@:\
+ :K1=\EOw:K2=\EOy:K3=\EOu:K4=\EOq:K5=\EOs:LE=\E[%dD:\
+ :RI=\E[%dC:UP=\E[%dA:ae=^O:al=\E[L:as=^N:bl=^G:bt=\E[Z:\
+ :cd=\E[J:ce=\E[K:cl=\E[H\E[J:cm=\E[%i%d;%dH:cr=^M:\
+ :cs=\E[%i%d;%dr:ct=\E[3g:dc=\E[P:dl=\E[M:do=^J:ds=\E[0$~:\
+ :ec=\E[%dX:ei=\E[4l:fs=\E[0$}:ho=\E[H:i1=\E[?5W:\
+ :i2=\E>\E(B\E)0\017\E[m:im=\E[4h:ip=:\
+ :is=\E[2;4;20;30l\E[?1;4;10;16l\E[12h\E[?7;8;25;67h:\
+ :k1=\EOP:k2=\EOQ:k3=\EOR:k4=\EOS:k6=\E[17~:k7=\E[18~:\
+ :k8=\E[19~:k9=\E[20~:kD=\E[3~:kI=\E[2~:kN=\E[6~:kP=\E[5~:\
+ :kb=^H:kd=\E[B:kh=\E[26~:kl=\E[D:kr=\E[C:ku=\E[A:le=^H:\
+ :mb=\E[5m:md=\E[1m:me=\E[m\017:mh=\E[2m:mr=\E[7m:nd=\E[C:\
+ :rc=\E8:sc=\E7:se=\E[m:sf=\n:so=\E[7m:sr=\EM:st=\EH:ta=^I:\
+ :te=\E[ R:ti=\E[ Q\E[?67;8h:ts=\E[2$~\E[1$}\E[%i%p1%d`:\
+ :ue=\E[24m:up=\E[A:us=\E[4m:ve=\E[34h\E[?25h:vi=\E[?25l:\
+ :vs=\E[?25h\E[34l:
+#
+# Wyse 520 with 24 data lines and status (terminal status)
+wy520-24|wyse520-24|wyse 520 with 24 data lines:\
+ :hs@:\
+ :ds@:fs@:r3=\E[?5l\E[47h\E[40l\E[1;24r:ts@:tc=wy520:
+#
+# Wyse 520 with visual bell.
+wy520-vb|wyse520-vb|wyse 520 with visible bell:\
+ :vb=\E[30h\E\054\E[30l:tc=wy520:
+#
+# Wyse 520 in 132-column mode.
+wy520-w|wyse520-w|wyse 520 in 132-column mode:\
+ :co#132:ws#132:\
+ :DC=\E[%dP:IC=\E[%d@:dc=\E[P:ei=:im=:ip=:r2=\E[35h\E[?3h:tc=wy520:
+#
+# Wyse 520 in 132-column mode with visual bell.
+wy520-wvb|wyse520-wvb|wyse 520 with visible bell 132-columns:\
+ :vb=\E[30h\E\054\E[30l:\
+ :tc=wy520-w:
+#
+#
+# Wyse 520 emulating a vt420 7 bit mode.
+# The DEL key is programmed to generate BS in is2.
+# With EPC keyboard.
+# - 'End' key will clear till end of line on EPC keyboard
+# - Shift/End : ignored.
+# - Insert : enter insert mode.
+# - Delete : delete a character (have to change interrupt character
+# to CTRL-C: stty intr '^c') for it to work since the
+# Delete key sends 7FH.
+wy520-epc|wyse520-epc|wyse 520 with EPC keyboard:\
+ :@7=\E[4~:k0=\E[21~:k1=\E[11~:k2=\E[12~:k3=\E[13~:\
+ :k4=\E[14~:k5=\E[15~:kD=\177:kE=\E[4~:kh=\E[H:\
+ :tc=wy520:
+#
+# Wyse 520 with 24 data lines and status (terminal status)
+# with EPC keyboard.
+wy520-epc-24|wyse520-pc-24|wyse 520 with 24 data lines and EPC keyboard:\
+ :hs@:\
+ :ds@:fs@:r3=\E[?5l\E[47h\E[40l\E[1;24r:ts@:tc=wy520-epc:
+#
+# Wyse 520 with visual bell.
+wy520-epc-vb|wyse520-pc-vb|wyse 520 with visible bell and EPC keyboard:\
+ :vb=\E[30h\E\054\E[30l:\
+ :tc=wy520-epc:
+#
+# Wyse 520 in 132-column mode.
+wy520-epc-w|wyse520-epc-w|wyse 520 in 132-column mode with EPC keyboard:\
+ :co#132:ws#132:\
+ :DC=\E[%dP:IC=\E[%d@:dc=\E[P:ei=:im=:ip=:r2=\E[35h\E[?3h:tc=wy520-epc:
+#
+# Wyse 520 in 132-column mode with visual bell.
+wy520-epc-wvb|wyse520-p-wvb|wyse 520 with visible bell 132-columns and EPC keyboard:\
+ :vb=\E[30h\E\054\E[30l:\
+ :tc=wy520-epc-w:
+#
+# Wyse 520 in 80-column, 36 lines
+wy520-36|wyse520-36|wyse 520 with 36 data lines:\
+ :hs@:\
+ :li#36:\
+ :ds@:fs@:r3=\E[?5l\E[36*|\E[36t\E[40l\E[1;36r:ts@:tc=wy520:
+#
+# Wyse 520 in 80-column, 48 lines
+wy520-48|wyse520-48|wyse 520 with 48 data lines:\
+ :hs@:\
+ :li#48:\
+ :ds@:fs@:r3=\E[?5l\E[48*|\E[48t\E[40l\E[1;48r:ts@:tc=wy520:
+#
+# Wyse 520 in 132-column, 36 lines
+wy520-36w|wyse520-36w|wyse 520 with 132 columns and 36 data lines:\
+ :co#132:ws#132:\
+ :r2=\E[?3h:\
+ :r3=\E[?5l\E[36*|\E[36t\E[40l\E[1;36r\E[132$|:tc=wy520-36:
+#
+# Wyse 520 in 132-column, 48 lines
+wy520-48w|wyse520-48w|wyse 520 with 48 data lines:\
+ :co#132:ws#132:\
+ :r2=\E[?3h:\
+ :r3=\E[?5l\E[48*|\E[48t\E[40l\E[1;48r\E[132$|:tc=wy520-48:
+#
+#
+# Wyse 520 in 80-column, 36 lines with EPC keyboard
+wy520-36pc|wyse520-36pc|wyse 520 with 36 data lines and EPC keyboard:\
+ :hs@:\
+ :li#36:\
+ :ds@:fs@:r3=\E[?5l\E[36*|\E[36t\E[40l\E[1;36r:ts@:tc=wy520-epc:
+#
+# Wyse 520 in 80-column, 48 lines with EPC keyboard
+wy520-48pc|wyse520-48pc|wyse 520 with 48 data lines and EPC keyboard:\
+ :hs@:\
+ :li#48:\
+ :ds@:fs@:r3=\E[?5l\E[48*|\E[48t\E[40l\E[1;48r:ts@:tc=wy520-epc:
+#
+# Wyse 520 in 132-column, 36 lines with EPC keyboard
+wy520-36wpc|wyse520-36wpc|wyse 520 with 36 data lines and EPC keyboard:\
+ :co#132:ws#132:\
+ :r2=\E[?3h:\
+ :r3=\E[?5l\E[36*|\E[36t\E[40l\E[1;36r\E[132$|:tc=wy520-36pc:
+#
+# Wyse 520 in 132-column, 48 lines with EPC keyboard
+wy520-48wpc|wyse520-48wpc|wyse 520 with 48 data lines and EPC keyboard:\
+ :co#132:ws#132:\
+ :r2=\E[?3h:\
+ :r3=\E[?5l\E[48*|\E[48t\E[40l\E[1;48r\E[132$|:tc=wy520-48pc:
+
+# From: John Gilmore <hoptoad!gnu@lll-crg.arpa>
+# (wyse-vp: removed :if=/usr/share/tabset/wyse-adds:, there's no such
+# file and we don't know what :st: is -- esr)
+wyse-vp|Wyse 50 in ADDS Viewpoint emulation mode with "enhance" on:\
+ :am:bs:\
+ :co#80:it#8:li#24:\
+ :al=\EM:bl=^G:cd=\Ek:ce=\EK:cl=^L:cm=\EY%+ %+ :cr=^M:dc=\EW:\
+ :dl=\El:do=^J:ei=\Er:ho=^A:im=\Eq:is=\E`\072\E`9\017\Er:\
+ :kb=^H:kd=^J:kh=^A:kl=^U:kr=^F:ku=^Z:le=^H:ll=^A^Z:me=^O:\
+ :nd=^F:nw=^M^J:r1=\E`\072\E`9\017\Er:se=^O:sf=^J:so=^N:\
+ :ta=^I:ue=^O:up=^Z:us=^N:
+
+wy75ap|wyse75ap|wy-75ap|wyse-75ap|Wyse WY-75 Applications and Cursor keypad:\
+ :is=\E[1;24r\E[?10;3l\E[?1;25h\E[4l\E[m\E(B\E=:kb=^H:\
+ :kd=\EOB:ke=10\E[?1l\E>:kh=\EOH:kl=\EOD:kr=\EOC:\
+ :ks=10\E[?1h\E=:ku=\EOA:tc=wy75:
+
+# From: Kevin Turner <kevint@aracnet.com>, 12 Jul 1998
+# This copes with an apparent firmware bug in the wy85. He writes:
+# "What I did was change leave the terminal cursor keys set to Normal
+# (instead of application), and change \E[ to \233 for all the keys in
+# terminfo. At one point, I found some reference indicating that this
+# terminal bug (not sending \E[) was acknowledged by Wyse (so it's not just
+# me), but I can't find that and the server under my bookmark to "Wyse
+# Technical" isn't responding. So there's the question of wether the wy85
+# terminfo should reflect the manufactuer's intended behaviour of the terminal
+# or the actual."
+# (untranslatable capabilities removed to fit entry within 1023 bytes)
+# (sgr removed to fit entry within 1023 bytes)
+# (terminfo-only capabilities suppressed to fit entry within 1023 bytes)
+wy85-8bit|wyse85-8bit|wyse 85 in 8-bit mode:\
+ :am:hs:mi:ms:xn:xo:\
+ :co#80:it#8:li#24:ws#80:\
+ :AL=\E[%dL:DC=\E[%dP:DL=\E[%dM:DO=\E[%dB:IC=\E[%d@:\
+ :K1=\EOw:K2=\EOu:K3=\EOy:K4=\EOq:K5=\EOs:LE=\E[%dD:\
+ :RI=\E[%dC:UP=\E[%dA:ae=^O:al=\E[L:as=^N:bl=^G:bt=\E[Z:\
+ :cd=\E[J:ce=\E[K:cl=\E[H\E[J:cm=\E[%i%d;%dH:cr=^M:\
+ :cs=\E[%i%d;%dr:ct=\E[3g:dc=\E[P:dl=\E[M:do=^J:ds=\E[40l:\
+ :ec=\E[%dX:ei=\E[4l:fs=\E[1;24r\E8:ho=\E[H:\
+ :i1=\E[62;1"p\E[?5W:i2=\E>\E(B\E)0\017\E[m:im=\E[4h:ip=:\
+ :is=\E[2;4;20;30l\E[?1;4;10;16l\E[12h\E[?7;8;25h:\
+ :k1=\EOP:k2=\EOQ:k3=\EOR:k4=\EOS:k6=\23317~:k7=\23318~:\
+ :k8=\23319~:k9=\23320~:kD=\2333~:kI=\2332~:kN=\2336~:\
+ :kP=\2335~:kb=^H:kd=\233B:ke=\E>:kh=\23326~:kl=\233D:\
+ :kr=\233C:ks=\E[?1l\E=:ku=\233A:le=^H:mb=\E[5m:md=\E[1m:\
+ :me=\E[m\017:mh=\E[2m:mr=\E[7m:nd=\E[C:rc=\E8:sc=\E7:\
+ :se=\E[m:sf=\n:so=\E[7m:sr=\EM:st=\EH:ta=\011:\
+ :ts=\E[40h\E7\E[25;%i%p1%dH:ue=\E[m:up=\E[A:us=\E[4m:\
+ :vb=\E[30h\E\054\E[30l:ve=\E[?25h:vi=\E[?25l:
+
+# From: Eric Freudenthal <freudent@eric.ultra.nyu.edu>
+wy100q|Wyse 100 for Quotron:\
+ :bs:\
+ :co#80:li#24:sg#1:\
+ :al=\EE:bt=\EI:cd=\EY:ce=\ET:cl=^Z:cm=\E=%+ %+ :dc=\EW:\
+ :dl=\ER:do=^J:ei=\Er:ho=^^:im=\Eq:\
+ :is=\E`\072\0\EC\EDF\E0\E'\E(\EA21:kd=^J:kl=^H:kr=^L:\
+ :ku=^K:le=^H:mk@:nd=^L:sr=\Ej:up=^K:\
+ :tc=adm+sgr:
+
+#### Kermit terminal emulations
+#
+# Obsolete Kermit versions may be listed in the section describing obsolete
+# non-ANSI terminal emulators later in the file.
+#
+
+# KERMIT standard all versions.
+# Straight ascii keyboard. :sr=\EI: not avail. many versions + bug prone in vi.
+# (kermit: removed obsolete ":ma=^Hh^Jj^Kk^Ll^^H:" -- esr)
+# From: greg small <gts@populi.berkeley.edu> 9-25-84
+kermit|standard kermit:\
+ :bs:\
+ :co#80:li#24:\
+ :cd=\EJ:ce=\EK:cl=\EE:cm=\EY%+ %+ :ho=\EH:\
+ :is=K0 Standard Kermit 9-25-84\n:kd=^J:kh=^^:kl=^H:\
+ :kr=^L:ku=^K:le=^H:nd=\EC:up=\EA:
+kermit-am|standard kermit plus auto-margin:\
+ :am:\
+ :is=K1 Standard Kermit plus Automatic Margins\n:tc=kermit:
+# IBMPC Kermit 1.2.
+# Bugs: :cd:, :ce:: do not work except at beginning of line! :cl: does
+# not work, but fake with :cl=\EH\EJ (since :cd=\EJ: works at beginning of
+# line).
+# From: greg small <gts@populi.berkeley.edu> 8-30-84
+pckermit|pckermit12|UCB IBMPC Kermit 1.2:\
+ :am:\
+ :li#25:\
+ :cd@:ce@:cl=\EH\EJ:\
+ :is=K2 UCB IBMPC Kermit 1.2 8-30-84\n:tc=kermit:
+# IBMPC Kermit 1.20
+# Cannot use line 25, now acts funny like ansi special scrolling region.
+# Initialization must escape from that region by cursor position to line 24.
+# Cannot use character insert because 1.20 goes crazy if insert at col 80.
+# Does not use :am: because autowrap is lost when kermit dropped and restarted.
+# From: greg small <gts@populi.berkeley.edu> 12-19-84
+pckermit120|UCB IBMPC Kermit 1.20:\
+ :it#8:li#24:\
+ :al=\EL:dc=\EN:dl=\EM:do=\EB:ei@:im@:\
+ :is=\EO\Eq\EJ\EY7 K3 UCB IBMPC Kermit 1.20 12-19-84\n:\
+ :se=\Eq:so=\Ep:ta=^I:vs=\EO\Eq\EEK3:\
+ :tc=kermit:
+# MS-DOS Kermit 2.27 for the IBMPC
+# Straight ascii keyboard. :sr=\EI: not avail. many versions + bug prone in vi.
+# Cannot use line 25, now acts funny like ansi special scrolling region.
+# Initialization must escape from that region by cursor position to line 24.
+# Does not use am: because autowrap is lost when kermit dropped and restarted.
+# Reverse video for standout like H19.
+# (msk227: removed obsolete ":ma=^Hh^Jj^Kk^Ll^^H:" -- esr)
+# From: greg small <gts@populi.berkeley.edu> 3-17-85
+msk227|mskermit227|MS-DOS Kermit 2.27 for the IBMPC:\
+ :am@:bs:\
+ :co#80:it#8:li#24:\
+ :al=\EL:cd=\EJ:ce=\EK:cl=\EE:cm=\EY%+ %+ :dc=\EN:dl=\EM:\
+ :do=\EB:ei=\EO:ho=\EH:im=\E@:\
+ :is=\EO\Eq\EG\Ew\EJ\EY7 K4 MS Kermit 2.27 for the IBMPC 3-17-85\n:\
+ :kd=^J:kh=^^:kl=^H:kr=^L:ku=^K:le=^H:nd=\EC:rc=\Ek:sc=\Ej:\
+ :se=\Eq:so=\Ep:ta=^I:up=\EA:vs=\EO\Eq\EG\EwK4:
+# MS-DOS Kermit 2.27 with automatic margins
+# From: greg small <gts@populi.berkeley.edu> 3-17-85
+msk227am|mskermit227am|UCB MS-DOS Kermit 2.27 with automatic margins:\
+ :am:\
+ :is=\EO\Eq\EG\Ev\EJ\EY7 K5 MS Kermit 2.27 +automatic margins 3-17-85\n:\
+ :vs=\EO\Eq\EG\EvK5:\
+ :tc=msk227:
+# MS-DOS Kermit 2.27 UCB 227.14 for the IBM PC
+# Automatic margins now default. Use ansi :sa: for highlights.
+# Define function keys.
+# (msk22714: removed obsolete ":kn#10:" -- esr)
+# From: greg small <gts@populi.berkeley.edu> 3-17-85
+msk22714|mskermit22714|UCB MS-DOS Kermit 2.27 UCB 227.14 IBM PC:\
+ :am:\
+ :is=\EO\Eq\EG\Ev\EJ\EY7 K6 MS Kermit 2.27 UCB 227.14 IBM PC 3-17-85\n:\
+ :k0=\E0:k1=\E1:k2=\E2:k3=\E3:k4=\E4:k5=\E5:k6=\E6:k7=\E7:\
+ :k8=\E8:k9=\E9:md=\E[1m:me=\E[m:mr=\E[7m:se=\E[m:so=\E[1m:\
+ :ue=\E[m:us=\E[4m:vs=\EO\Eq\EG\EvK6:\
+ :tc=mskermit227:
+# This was designed for a VT320 emulator, but it is probably a good start
+# at support for the VT320 itself.
+# Please send changes with explanations to bug-gnu-emacs@prep.ai.mit.edu.
+# (vt320-k3: I added <rmam>/<smam> based on the init string -- esr)
+# (untranslatable capabilities removed to fit entry within 1023 bytes)
+# (sgr removed to fit entry within 1023 bytes)
+# (terminfo-only capabilities suppressed to fit entry within 1023 bytes)
+vt320-k3|MS-Kermit 3.00's vt320 emulation:\
+ :am:es:hs:km:mi:ms:xn:\
+ :co#80:it#8:li#49:pb#9600:vt#3:\
+ :AL=\E[%dL:CC=\E:DC=\E[%dP:DL=\E[%dM:DO=\E[%dB:IC=\E[%d@:\
+ :LE=\E[%dD:RI=\E[%dC:SR=\E[%dL:UP=\E[%dA:ae=\E(B:al=\E[L:\
+ :as=\E(0:bl=^G:cd=\E[J:ce=\E[K:cl=\E[H\E[J:cm=\E[%i%d;%dH:\
+ :cr=^M:cs=\E[%i%d;%dr:ct=\E[3g:dc=\E[P:dl=\E[M:do=^J:\
+ :ds=\E[0$~:ec=\E[%dX:ei=\E[4l:fs=\E[0$}:ho=\E[H:im=\E[4h:\
+ :is=\E>\E F\E[?1l\E[?7h\E[r\E[2$~:k0=\E[21~:k1=\EOP:\
+ :k2=\EOQ:k3=\EOR:k4=\EOS:k6=\E[17~:k7=\E[18~:k8=\E[19~:\
+ :k9=\E[20~:kI=\E[2~:kN=\E[6~:kP=\E[5~:kb=^H:kd=\EOB:\
+ :ke=\E[?1l\E>:kl=\EOD:kr=\EOC:ks=\E[?1h\E=:ku=\EOA:le=^H:\
+ :mb=\E[5m:md=\E[1m:me=\E[m:mr=\E[7m:nd=\E[C:nw=^M^J:rc=\E8:\
+ :sc=\E7:se=\E[27m:sf=^J:so=\E[7m:sr=\EM:st=\EH:ta=^I:\
+ :ts=\E[1$}\r\E[K:ue=\E[24m:up=\E[A:us=\E[4m:\
+ :vb=\E[?5h\E[?5l\E[?5h\E[?5l\E[?5h\E[?5l:ve=\E[?25h:\
+ :vi=\E[?25l:
+# From: Joseph Gil <yogi@cs.ubc.ca> 13 Dec 1991
+# ACS capabilities from Philippe De Muyter <phdm@info.ucl.ac.be> 30 May 1996
+# (I removed a bogus boolean :mo: and added :ms:, <smam>, <rmam> -- esr)
+vt320-k311|dec vt320 series as defined by kermit 3.11:\
+ :am:es:hs:mi:ms:xn:xo:\
+ :co#80:it#8:li#24:vt#3:\
+ :AL=\E[%dL:DC=\E[%dP:DL=\E[%dM:DO=\E[%dB:IC=\E[%d@:\
+ :LE=\E[%dD:RA=\E[?7l:RI=\E[%dC:SA=\E[?7h:UP=\E[%dA:\
+ :ac=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~:\
+ :ae=^O:al=3\E[L:as=^N:bl=^G:cd=\E[J:ce=\E[K:cl=\E[;H\E[2J:\
+ :cm=\E[%i%d;%dH:cr=^M:cs=\E[%i%d;%dr:ct=\E[3g:dc=\E[P:\
+ :dl=\E[M:do=^J:ds=\E[2$~\r\E[1$}\E[K\E[$}:ei=\E[4l:\
+ :fs=\E[$}:ho=\E[H:im=\E[4h:\
+ :is=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h\E[1;24r\E[24;1H:\
+ :k1=\EOP:k2=\EOQ:k3=\EOR:k4=\EOS:k6=\E[17~:k7=\E[18~:\
+ :k8=\E[19~:k9=\E[20~:kb=^H:kd=\EOB:ke=\E[?1l\E>:kl=\EOD:\
+ :kr=\EOC:ks=\E[?1h\E=:ku=\EOA:l1=pf1:l2=pf2:l3=pf3:l4=pf4:\
+ :le=^H:mb=\E[5m:md=\E[1m:me=\E[m:mr=\E[7m:nd=\E[C:nw=^M\ED:\
+ :r1=\E[?3l:rc=\E8:rf=/usr/share/tabset/vt100:sc=\E7:\
+ :se=\E[27m:sf=\ED:so=\E[7m:sr=\EM:st=\EH:ta=^I:\
+ :ts=\E[2$~\E[1$}\E[1;%dH:ue=\E[24m:up=\E[A:us=\E[4m:\
+ :vb=\E[?5h\E[?5l:ve=\E[?25h:vi=\E[?25l:vs=\E[?25h:
+
+#
+######## ---------------- TERMINFO FILE CAN BE SPLIT HERE -------------------
+# This cut mark helps make life less painful for people running ncurses tic
+# on machines with relatively little RAM. The file can be broken in half here
+# cleanly and compiled in sections -- no `use' references cross this cut
+# going forward.
+#
+
+######## OLDER TERMINAL TYPES
+#
+# This section is devoted to older commercial terminal brands that are now
+# discontinued, but known to be still in use or represented by emulations.
+#
+
+#### AT&T (att, tty)
+#
+# This section also includes Teletype-branded VDTs.
+#
+# The AT&T/Teletype terminals group was sold to SunRiver Data Systems (now
+# Boundless Technologies); for details, see the header comment on the ADDS
+# section.
+#
+# These are AT&T's official terminfo entries. All-caps aliases have been
+# removed.
+#
+att2300|sv80|AT&T 2300 Video Information Terminal 80 column mode:\
+ :am:eo:mi:ms:xo:\
+ :co#80:it#8:li#24:\
+ :AL=\E[%dL:DC=\E[%dP:DL=\E[%dM:DO=\E[%dB:F1=\E[11r:\
+ :F2=\E[12r:F3=\E[13r:F4=\E[14r:F5=\E[15r:F6=\E[16r:\
+ :IC=\E[%d@:LE=\E[%dD:RI=\E[%dC:UP=\E[%dA:al=\E[L:bl=^G:\
+ :cb=\E[1K:cd=\E[J:ce=\E[K:cl=\E[H\E[J:cm=\E[%i%d;%dH:\
+ :cr=^M:dc=\E[P:dl=\E[M:do=^J:ei=\E[4l:ho=\E[H:im=\E[4h:\
+ :k1=\E[1r:k2=\E[2r:k3=\E[3r:k4=\E[4r:k5=\E[5r:k6=\E[6r:\
+ :k7=\E[7r:k8=\E[8r:k9=\E[9r:k;=\E[10r:kA=\E[L:kB=\E[Z:\
+ :kC=\E[J:kD=\E[P:kI=\E[@:kL=\E[M:kb=^H:kd=\E[B:kh=\E[H:\
+ :kl=\E[D:kr=\E[C:ku=\E[A:le=^H:me=\E[m:mr=\E[7m:nd=\E[C:\
+ :pf=\E[4i:po=\E[5i:ps=\E[0i:se=\E[m:sf=^J:so=\E[7m:ta=^I:\
+ :up=\E[A:
+att2350|AT&T 2350 Video Information Terminal 80 column mode:\
+ :pf@:po@:ps@:\
+ :tc=att2300:
+
+# Must setup RETURN KEY - CR, REC'VD LF - INDEX.
+# Seems upward compatible with vt100, plus ins/del line/char.
+# On sgr, the protection parameter is ignored.
+# No check is made to make sure that only 3 parameters are output.
+# standout= reverse + half-intensity = 3 | 5.
+# bold= reverse + underline = 2 | 3.
+# note that half-bright blinking doesn't look different from normal blinking.
+# NOTE:you must program the function keys first, label second!
+# (att4410: a BSD entry has been seen with the following capabilities:
+# :is=\E[?6l:, :k1=\EOc:, :k2=\EOd:, :k3=\EOe:, :k4=\EOg:,
+# :k6=\EOh:, :k7=\EOi:, :k8=\EOj:, -- esr)
+# (untranslatable capabilities removed to fit entry within 1023 bytes)
+att5410v1|att4410v1|tty5410v1|AT&T 4410/5410 80 columns - version 1:\
+ :am:hs:mi:ms:xo:\
+ :Nl#8:co#80:it#8:lh#2:li#24:lw#8:ws#80:\
+ :ac=++\054\054--..00``aaffgghhjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~:\
+ :ae=^O:al=\E[L:as=^N:bl=^G:cd=\E[J:ce=\E[K:cl=\E[H\E[J:\
+ :cm=\E[%i%d;%dH:cr=^M:cs=\E[%i%d;%dr:dc=\E[P:dl=\E[M:\
+ :do=\E[B:ei=:fs=\E8:ho=\E[H:i1=\E[?3l\E)0:\
+ :i2=\E[1;03q f1 \EOP\E[2;03q f2 \EOQ\E[3;03q f3 \EOR\E[4;03q f4 \EOS\E[5;03q f5 \EOT\E[6;03q f6 \EOU\E[7;03q f7 \EOV\E[8;03q f8 \EOW:\
+ :ic=\E[@:im=:k1=\EOP:k2=\EOQ:k3=\EOR:k4=\EOS:k5=\EOT:\
+ :k6=\EOU:k7=\EOV:k8=\EOW:kC=\E[2J:kH=\E[24;1H:kb=^H:\
+ :kd=\E[B:kh=\E[H:kl=\E[D:kr=\E[C:ku=\E[A:le=^H:ll=\E[24H:\
+ :mb=\E[5m:md=\E[2;7m:me=\E[m\017:mh=\E[2m:mk=\E[8m:\
+ :mr=\E[7m:nd=\E[C:nw=^M^J:r2=\Ec\E[?3l\E[2;0y:rc=\E8:\
+ :sc=\E7:se=\E[m:sf=^J:so=\E[7m:sr=\EM:ta=^I:\
+ :ts=\E7\E[25;%p1%{1}%+%dH:ue=\E[m:up=\E[A:us=\E[4m:
+
+att4410v1-w|att5410v1-w|tty5410v1-w|AT&T 4410/5410 132 columns - version 1:\
+ :co#132:ws#132:\
+ :i1=\E[?3h\E)0:r2=\Ec\E[?3h\E[2;0y:tc=att5410v1:
+
+att4410|att5410|tty5410|AT&T 4410/5410 80 columns - version 2:\
+ :bs:\
+ :..px=\E[%p1%d;%p2%l%02dq f%p1%d %p2%s:tc=att5410v1:
+
+att5410-w|att4410-w|4410-w|tty5410-w|5410-w|AT&T 4410/5410 in 132 column mode:\
+ :co#132:ws#132:\
+ :i1=\E[?3h\E)0:r2=\Ec\E[?3h\E[2;0y:tc=att4410:
+
+# 5410 in terms of a vt100
+# (v5410: added <rmam>/<smam> based on init string -- esr)
+v5410|att5410 in terms of a vt100:\
+ :am:mi:ms:xo:\
+ :co#80:it#8:li#24:vt#3:\
+ :@8=\EOM:K1=\EOq:K2=\EOr:K3=\EOs:K4=\EOp:K5=\EOn:RA=\E[?7l:\
+ :SA=\E[?7h:\
+ :ac=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~:\
+ :ae=^O:al=\E[L:as=^N:bl=^G:cb=\E[1K:cd=\E[J:ce=\E[K:\
+ :cl=\E[H\E[J:cm=\E[%i%d;%dH:cr=^M:cs=\E[%i%d;%dr:\
+ :ct=\E[3g:dc=\E[P:dl=\E[M:do=^J:eA=\E(B\E)0:ei=:ho=\E[H:\
+ :ic=\E[@:im=:k0=\EOy:k1=\EOP:k2=\EOQ:k3=\EOR:k4=\EOS:\
+ :k5=\EOt:k6=\EOu:k7=\EOv:k8=\EOl:k9=\EOw:k;=\EOx:kb=^H:\
+ :kd=\EOB:ke=\E[?1l\E>:kl=\EOD:kr=\EOC:ks=\E[?1h\E=:\
+ :ku=\EOA:le=^H:mb=\E[5m:md=\E[1m:me=\E[m\017:mr=\E[7m:\
+ :nd=\E[C:r2=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h:rc=\E8:\
+ :..sa=\E[0%?%p1%p6%|%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;%?%p4%t;5%;m%?%p9%t\016%e\017%;:\
+ :sc=\E7:se=\E[m:sf=^J:so=\E[1;7m:sr=\EM:st=\EH:ta=^I:\
+ :ue=\E[m:up=\E[A:us=\E[4m:
+
+#
+# Teletype Model 5420 -- A souped up 5410, with multiple windows,
+# even! the 5420 has three modes: scroll, window or page mode
+# this terminfo should work in scroll or window mode, but doesn't
+# take advantage of any of the differences between them.
+#
+# Has memory below (2 lines!)
+# 3 pages of memory (plus some spare)
+# The 5410 sequences for :cm:, :vs:, :DC:, :DL:, :ec:, :vb:, :ho:,
+# <hpa>, :st: would work for these, but these work in both scroll and window
+# mode... Unset insert character so insert mode works
+# :i1: sets 80 column mode,
+# :is: escape sequence:
+# 1) turn off all fonts
+# 2) function keys off, keyboard lock off, control display off,
+# insert mode off, erasure mode off,
+# 3) full duplex, monitor mode off, send graphics off, nl on lf off
+# 4) reset origin mode
+# 5) set line wraparound
+# 6) exit erasure mode, positional attribute mode, and erasure extent mode
+# 7) clear margins
+# 8) program ENTER to transmit ^J,
+# We use \212 to program the ^J because a bare ^J will get translated by
+# UNIX into a CR/LF. The enter key is needed for AT&T uOMS.
+# 1 2 3 4 5 6 7 8
+# :i3: set screen color to black,
+# No representation in terminfo for the delete word key: kdw1=\Ed
+# Key capabilities assume the power-up send sequence...
+# This :te: is not strictly necessary, but it helps maximize
+# memory usefulness: :te=\Ez:,
+# Alternate sgr0: :me=\E[m\EW^O:,
+# Alternate sgr: :sa=\E[%?%p1%t2;7%;%?%p2%t;4%;%?%p3%t;7%;%?%p4%t;5%;%?%p5%t;2%;%?%p7%t;8%;m%?%p8%t\EV%;%?%p9%t^N%e^O%;:,
+# smkx programs the SYS PF keys to send a set sequence.
+# It also sets up labels f1, f2, ..., f8, and sends edit keys.
+# This string causes them to send the strings :k1:-:k8:
+# when pressed in SYS PF mode.
+# (att4415: I added <rmam>/<smam> based on the init string -- esr)
+# (untranslatable capabilities removed to fit entry within 1023 bytes)
+att4415|tty5420|att5420|AT&T 4415/5420 80 cols:\
+ :bs:db:mi:xo:\
+ :Nl#8:lh#2:lm#78:lw#8:ws#55:\
+ :@1=\Et:@7=\Ez:@8=\Eent:AL=\E[%dL:CM=\E[%i%p1%d;%p2%dt:\
+ :DC=\E[%dP:DL=\E[%dM:DO=\E[%dB:IC=\E[%d@:LE=\E[%dD:LF=\E|:\
+ :LO=\E~:RA=\E[?7l:RI=\E[%dC:SA=\E[?7h:SF=\E[%dE:SR=\E[%dF:\
+ :UP=\E[%dA:bt=\E[Z:ch=\E[%+^AG:cl=\E[x\E[J:\
+ :cm=\E[%i%d;%dx:ct=\E[3g:cv=\E[%+^Ad:ec=\E[%ds\E[%dD:\
+ :ei=\E[4l:ho=\E[x:i1=\E[?3l:i2=\E[?5l:ic@:im=\E[4h:\
+ :is=\E[m\017\E[1;2;3;4;6l\E[12;13;14;20l\E[?6;97;99l\E[?7h\E[4i\Ex\E[21;1j\212:\
+ :k1=\EOc:k2=\EOd:k3=\EOe:k4=\EOf:k5=\EOg:k6=\EOh:k7=\EOi:\
+ :k8=\EOj:kA=\E[L:kB=\E[Z:kD=\E[P:kE=\E[2K:kF=\E[T:kH=\Eu:\
+ :kI=\E[4h:kL=\E[M:kN=\E[U:kP=\E[V:kR=\E[S:\
+ :ke=\E[19;0j\E[21;1j\212:ks=\E[19;1j\E[21;4j\Eent:\
+ :l1=F1:l2=F2:l3=F3:l4=F4:l5=F5:l6=F6:l7=F7:l8=F8:ll=\Ew:\
+ :me=\E[m\017:mp=\EV:pf=\E[?9i:po=\E[?4i:ps=\E[?2i:st=\EH:\
+ :ts=\E7\E[25;%p1%{8}%+%dH:vb=\E[?5h\E[?5l:ve=\E[11;0j:\
+ :vs=\E[11;1j:\
+ :tc=att4410:
+
+att4415-w|tty5420-w|att5420-w|AT&T 4415/5420 132 cols:\
+ :co#132:lm#54:ws#97:\
+ :i1=\E[?3h:tc=att4415:
+
+att4415-rv|tty5420-rv|att5420-rv|AT&T 4415/5420 80 cols/rv:\
+ :i2=\E[?5h:vb=\E[?5l\E[?5h:\
+ :tc=att4415:
+
+att4415-w-rv|tty5420-w-rv|att5420-w-rv|AT&T 4415/5420 132 cols/rv:\
+ :co#132:lm#54:ws#97:\
+ :i1=\E[?3h:i2=\E[?5h:vb=\E[?5l\E[?5h:tc=att4415:
+
+# Note that this mode permits programming USER PF KEYS and labels
+# However, when you program user pf labels you have to reselect
+# user pf keys to make them appear!
+att4415+nl|tty5420+nl|att5420+nl|generic AT&T 4415/5420 changes for not changing labels:\
+ :k1@:k2@:k3@:k4@:k5@:k6@:k7@:k8@:\
+ :..pn=\E[%p1%d;0;0;1q%p2%:-16.16s:\
+ :..px=\E[%p1%d;%p2%l%02d;0;1q F%p1%d %p2%s:
+
+att4415-nl|tty5420-nl|att5420-nl|AT&T 4415/5420 without changing labels:\
+ :k1@:k2@:k3@:k4@:k5@:k6@:k7@:k8@:\
+ :tc=att4415+nl:tc=att4415:
+
+att4415-rv-nl|tty5420-rv-nl|att5420-rv-nl|AT&T 4415/5420 reverse video without changing labels:\
+ :k1@:k2@:k3@:k4@:k5@:k6@:k7@:k8@:\
+ :tc=att4415+nl:tc=att4415-rv:
+
+att4415-w-nl|tty5420-w-nl|att5420-w-nl|AT&T 4415/5420 132 cols without changing labels:\
+ :k1@:k2@:k3@:k4@:k5@:k6@:k7@:k8@:\
+ :tc=att4415+nl:tc=att4415-w:
+
+att4415-w-rv-n|tty5420-w-rv-n|att5420-w-rv-n|AT&T 4415/5420 132 cols reverse without changing labels:\
+ :k1@:k2@:k3@:k4@:k5@:k6@:k7@:k8@:\
+ :tc=att4415+nl:tc=att4415-w-rv:
+
+# (untranslatable capabilities removed to fit entry within 1023 bytes)
+# (sgr removed to fit entry within 1023 bytes)
+# (terminfo-only capabilities suppressed to fit entry within 1023 bytes)
+att5420_2|AT&T 5420 model 2 80 cols:\
+ :am:db:hs:mi:ms:xo:\
+ :co#80:it#8:li#24:lm#78:ws#55:\
+ :AL=\E[%dL:CM=\E[%i%p1%d;%p2%dt:DC=\E[%dP:DL=\E[%dM:\
+ :IC=\E[%d@:LE=\E[%dD:RI=\E[%dC:SF=\E[%dE:SR=\E[%dF:\
+ :UP=\E[%dA:ae=^O:al=\E[L:as=^N:bt=\E[1Z:cd=\E[0J:ce=\E[0K:\
+ :cl=\EH\EJ:cm=\E[%i%d;%dH:cr=\EG:cs=\E[%i%d;%dr:ct=\E[3g:\
+ :dc=\E[P:dl=\E[M:do=\E[1B:ec=\E[%ds\E[%dD:ei=:fs=\E8:\
+ :ho=\E[H:\
+ :i1=\E[0;23r\Ex\Ey\E[2;0j\E[3;3j\E[4;0j\E[5;0j\E[6;0j\E[7;0j\E[8;0j\E[9;1j\E[10;0j\E[15;0j\E[16;1j\E[19;0j\E[20;1j\E[29;0j\E[1;24r:\
+ :ic=\E[@:im=:k1=\EOc:k2=\EOd:k3=\EOe:k4=\EOf:k5=\EOg:\
+ :k6=\EOh:k7=\EOi:k8=\EOj:kD=\E[P:kH=\Eu:kI=\E[4h:kN=\E[U:\
+ :kP=\E[V:kb=^H:kd=\E[B:ke=\E[19;0j:kh=\E[H:kl=\E[D:kr=\E[C:\
+ :ks=\E[19;1j:ku=\E[A:le=^H:ll=\Ew:mb=\E[5m:me=\E[m\017:\
+ :mh=\E[2m:mr=\E[7m:nd=\E[1C:nw=^M^J:rc=\E8:sc=\E7:se=\E[m:\
+ :sf=^J:so=\E[7m:sr=\EM:st=\EH:ta=^I:\
+ :ts=\E7\E[25;%p1%{8}%+%dH:ue=\E[m:us=\E[4m:\
+ :vb=\E[?5h\E[?5l:ve=\E[11;0j:vs=\E[11;1j:
+att5420_2-w|AT&T 5420 model 2 in 132 column mode:\
+ :co#132:\
+ :i1=\E[0;23r\Ex\Ey\E[2;0j\E[3;3j\E[4;0j\E[5;1j\E[6;0j\E[7;0j\E[8;0j\E[9;1j\E[10;0j\E[15;0j\E[16;1j\E[19;0j\E[20;1j\E[29;0j\E[1;24r:tc=att5420_2:
+
+att4418|att5418|AT&T 5418 80 cols:\
+ :am:xo:\
+ :co#80:li#24:\
+ :@8=\E[:AL=\E[%dL:DC=\E[%dP:DL=\E[%dM:DO=\E[%dB:F1=\E[n:\
+ :F2=\E[o:F3=\E[H:F4=\E[I:F5=\E[J:F8=\E[K:F9=\E[L:FA=\E[E:\
+ :FB=\E[_:FC=\E[M:FD=\E[N:FE=\E[O:IC=\E[%d@:LE=\E[%dD:\
+ :RI=\E[%dC:UP=\E[%dA:\
+ :ac=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~:\
+ :ae=^O:al=\E[1L:as=^N:bl=^G:cd=\E[0J:ce=\E[0K:cl=\E[H\E[2J:\
+ :cm=\E[%i%d;%dH:cr=^M:dc=\E[1P:dl=\E[M:do=\E[B:ei=:ho=\E[H:\
+ :i1=\E[?3l:ic=\E[1@:im=:is=\E)0\E?6l\E?5l:k1=\E[h:k2=\E[i:\
+ :k3=\E[j:k6=\E[k:k7=\E[l:k8=\E[f:k9=\E[w:k;=\E[m:kC=\E[%:\
+ :kd=\EU:kh=\Ec:kl=\E@:kr=\EA:ku=\ES:le=\E[D:mb=\E[5m:\
+ :me=\E[m\017:mh=\E[2m:mr=\E[7m:nd=\E[C:rc=\E8:sc=\E7:\
+ :se=\E[m:sf=^J:so=\E[7m:ue=\E[m:up=\E[A:us=\E[4m:
+att4418-w|att5418-w|AT&T 5418 132 cols:\
+ :co#132:\
+ :i1=\E[?3h:tc=att5418:
+
+att4420|tty4420|teletype 4420:\
+ :bs:da:db:eo:ms:ul:xo:\
+ :co#80:li#24:lm#72:\
+ :al=\EL:bl=^G:cd=\EJ:ce=\Ez:cl=\EH\EJ:cm=\EY%+ %+ :cr=\EG:\
+ :dc=\EP:dl=\EM:dm@:do=\EB:ed@:ho=\EH:k0=\EU:k3=\E@:kA=\EL:\
+ :kB=\EO:kC=\EJ:kD=\EP:kF=\ES:kI=\E\136:kL=\EM:kR=\ET:kd=\EB:\
+ :kh=\EH:kl=^H:kr=\EC:ku=\EA:l0=segment advance:\
+ :l3=cursor tab:le=\ED:nd=\EC:se=\E~:sf=\EH\EM\EY7 :so=\E}:\
+ :ue=\EZ:up=\EA:us=\E\:
+
+# The following is a terminfo entry for the Teletype 4424
+# asynchronous keyboard-display terminal. It supports
+# the vi editor. The terminal must be set up as follows,
+#
+# HIGHLIGHT DEFINITION 3-TONE
+# DISPLAY FUNCTION GROUP III
+#
+# The second entry below provides limited (a la adm3a)
+# operation under GROUP II.
+#
+# This must be used with DISPLAY FUNCTION GROUP I or III
+# and HIGHLIGHT DEFINITION 3-TONE
+# The terminal has either bold or blink, depending on options
+#
+# (att4424: commented out :ti:=\E[1m, we don't need bright locked on -- esr)
+att4424|tty4424|teletype 4424:\
+ :am:bs:xo:\
+ :co#80:li#24:\
+ :AL=\E[%dL:DC=\E[%dP:DL=\E[%dM:DO=\E[%dB:IC=\E[%d@:\
+ :LE=\E[%dD:RI=\E[%dC:UP=\E[%dA:\
+ :ac=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~:\
+ :ae=\E(B:al=\EL:as=\E(0:bl=^G:bt=\EO:cd=\EJ:ce=\Ez:\
+ :cl=\E[H\E[2J:cm=\E[%i%d;%dH:cr=^M:cs=\E[%i%d;%dr:ct=\EF:\
+ :dc=\EP:dl=\EM:do=\EB:ei=:ho=\E[H:ic=\E\136:im=:\
+ :is=\E[20l\E[?7h:k1=\EOP:k2=\EOQ:k3=\EOR:k4=\EOS:kC=\EJ:\
+ :kb=^H:kd=\E[B:kh=\E[H:kl=\E[D:kr=\E[C:ku=\E[A:le=^H:mb=\E3:\
+ :md=\E3:me=\EX\E~\EZ\E4\E(B:mh=\EW:mr=\E}:nd=\EC:nw=\EE:\
+ :..sa=\E[%?%p1%t7%;%?%p2%t;4%;%?%p3%t;7%;%?%p6%t;1%;%?%p6%p4%|%t;5%;%?%p5%t;0%;m:\
+ :se=\E~:sf=^J:so=\E}:sr=\ET:st=\EH:ta=^I:ue=\EZ:up=\EA:\
+ :us=\E\:
+
+att4424-1|tty4424-1|teletype 4424 in display function group I:\
+ :kC@:kd=\EB:kh@:kl=\ED:kr=\EC:ku=\EA:\
+ :tc=att4424:
+
+# This entry is not one of AT&T's official ones, it was translated from the
+# 4.4BSD termcap file. The highlight strings are different from att4424.
+# I have no idea why this is -- older firmware version, maybe?
+# The following two lines are the comment originally attached to the entry:
+# This entry appears to avoid the top line - I have no idea why.
+# From: jwb Wed Mar 31 13:25:09 1982 remote from ihuxp
+att4424m|tty4424m|teletype 4424M:\
+ :am:da:db:mi:\
+ :co#80:it#8:li#23:\
+ :al=\EL:bl=^G:ce=\E[K:cl=\E[2;H\E[J:cm=\E[%i%2;%2H\E[B:\
+ :cr=^M:dc=\EP:dl=\EM:do=^J:ei=:ic=\E\136:im=:ip=2:\
+ :is=\E[m\E[2;24r:k1=\EOP:k2=\EOQ:k3=\EOR:k4=\EOS:kb=^H:\
+ :kd=\E[B:kh=\E[H:kl=\E[D:kr=\E[C:ku=\E[A:le=^H:me=\E[m:\
+ :nd=\E[C:nw=^M^J:se=\E[m:sf=^J:so=\E[7m:sr=\ET:ta=^I:\
+ :ue=\E[m:up=\E[A:us=\E[4m:
+
+# The Teletype 5425 is really version 2 of the Teletype 5420. It
+# is quite similar, except for some minor differences. No page
+# mode, for example, so all of the :cm: sequences used above have
+# to change back to what's being used for the 5410. Many of the
+# option settings have changed their numbering as well.
+#
+# This has been tested on a preliminary model.
+#
+# (att5425: added <rmam>/<smam> based on the init string -- esr)
+# (untranslatable capabilities removed to fit entry within 1023 bytes)
+# (sgr removed to fit entry within 1023 bytes)
+# (terminfo-only capabilities suppressed to fit entry within 1023 bytes)
+att5425|tty5425|att4425|AT&T 4425/5425:\
+ :am:da:db:hs:mi:ms:xn:xo:\
+ :co#80:it#8:li#24:lm#78:ws#55:\
+ :AL=\E[%dL:DC=\E[%dP:DL=\E[%dM:DO=\E[%dB:IC=\E[%d@:\
+ :LE=\E[%dD:RI=\E[%dC:SF=\E[%dE:SR=\E[%dF:UP=\E[%dA:ae=^O:\
+ :al=\E[L:as=^N:bl=^G:bt=\E[Z:cd=\E[J:ce=\E[K:cl=\E[H\E[J:\
+ :cm=\E[%i%d;%dH:cr=^M:cs=\E[%i%d;%dr:ct=\E[3g:dc=\E[P:\
+ :dl=\E[M:do=^J:ec=\E[%ds\E[%dD:ei=\E[4l:fs=\E8:ho=\E[H:\
+ :i1=\E<\E[?3l:i2=\E[?5l:im=\E[4h:\
+ :is=\E[m\017\E[1;2;3;4;6l\E[12;13;14;20l\E[?6;97;99l\E[?7h\E[4i\Ex\E[25;1j\212:\
+ :k1=\EOc:k2=\EOd:k3=\EOe:k4=\EOf:k5=\EOg:k6=\EOh:k7=\EOi:\
+ :k8=\EOj:kD=\E[P:kI=\E[4h:kb=^H:kd=\E[B:\
+ :ke=\E[21;0j\E[25;1j\212:kh=\E[H:kl=\E[D:kr=\E[C:\
+ :ks=\E[21;1j\E[25;4j\Eent\E~:ku=\E[A:le=^H:ll=\E[24H:\
+ :mb=\E[5m:md=\E[2;7m:me=\E[m\017:mh=\E[2m:mr=\E[7m:\
+ :nd=\E[C:nw=^M^J:rc=\E8:sc=\E7:se=\E[m:sf=^J:so=\E[7m:\
+ :sr=\EM:st=\EH:ta=^I:ts=\E7\E[25;%p1%{8}%+%dH:ue=\E[m:\
+ :up=\E[A:us=\E[4m:vb=\E[?5h\E[?5l:ve=\E[12;0j:\
+ :vs=\E[12;1j:
+
+att5425-nl|tty5425-nl|att4425-nl|AT&T 4425/5425 80 columns no labels:\
+ :ks=\E[21;1j\E[25;4j\Eent:\
+ :tc=att4425:
+
+att5425-w|att4425-w|tty5425-w|teletype 4425/5425 in 132 column mode:\
+ :co#132:lm#54:ws#97:\
+ :i1=\E[?3h:tc=tty5425:
+
+# (att4426: his had bogus capabilities: :ri=\EM:, :ri=\E[1U:.
+# I also added <rmam>/<smam> -- esr)
+att4426|tty4426|teletype 4426S:\
+ :am:da:db:xo:\
+ :co#80:li#24:lm#48:\
+ :AL=\E[%dL:DC=\E[%dP:DL=\E[%dM:DO=\E[%dB:IC=\E[%d@:\
+ :LE=\E[%dD:RA=\E[?7l:RI=\E[%dC:SA=\E[?7h:SF=\E[%dS:\
+ :SR=\E[%dT:UP=\E[%dA:\
+ :ac=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~:\
+ :ae=\E(B:al=\EL:as=\E(0:bl=^G:cd=\E[J:ce=\E[0K:ch=\E[%dG:\
+ :cl=\E[H\E[2J\E[1U\E[H\E[2J\E[1V:cm=\E[%i%d;%dH:cr=^M:\
+ :ct=\E[3g:cv=\E[%dd:dc=\EP:dl=\E[M:do=\E[B:ei=:ho=\E[H:\
+ :i1=\Ec\E[?7h:ic=\E\136:im=:is=\E[m\E[1;24r:k1=\EOP:\
+ :k2=\EOQ:k3=\EOR:k4=\EOS:k5=\EOT:k6=\EOU:k7=\EOV:k8=\EOW:\
+ :kB=\EO:kC=\E[2J:kH=\E[24;1H:kb=^H:kd=\EB:kh=\E[H:kl=\ED:\
+ :kr=\EC:ku=\EA:le=\E[D:ll=\E[24H:md=\E[5m:me=\E[m\E(B:\
+ :mr=\E[7m:nd=\E[C:nw=^M^J:r2=\Ec\E[?3l\E[2;0y:rc=\E8:\
+ :sc=\E7:se=\E[m:sf=^J:so=\E[5m:sr=\ET:st=\E1:ta=^I:ue=\E[m:\
+ :up=\EA:us=\E[4m:
+
+# Terminfo entry for the AT&T 510 A Personal Terminal
+# Function keys 9 - 16 are available only after the
+# screen labeled (soft keys/action blocks) are labeled. Function key
+# 9 corresponds to the leftmost touch target on the screen,
+# function key 16 corresponds to the rightmost.
+#
+# This entry is based on one done by Ernie Rice at Summit, NJ and
+# changed by Anne Gallup, Skokie, IL, ttrdc!anne
+# (untranslatable capabilities removed to fit entry within 1023 bytes)
+att510a|bct510a|AT&T 510A Personal Terminal:\
+ :am:mi:ms:xn:xo:\
+ :Nl#8:co#80:lh#2:li#24:lw#7:\
+ :#4=\E[u:%i=\E[v:AL=\E[%dL:DC=\E[%dP:DL=\E[%dM:DO=\E[%dB:\
+ :F1=\EOe:F2=\EOf:F3=\EOg:F4=\EOh:F5=\EOi:F6=\EOj:LE=\E[%dD:\
+ :RI=\E[%dC:UP=\E[%dA:\
+ :ac=+g\054h-f.e`bhrisjjkkllmmnnqqttuuvvwwxx{{||}}~~:\
+ :ae=^O:al=\E[L:as=^N:bl=^G:bt=\E[Z:cb=\E[1K:cd=\E[0J:\
+ :ce=\E[0K:cl=\E[H\E[J:cm=\E[%i%d;%dH:cr=^M:ct=\E[3g:\
+ :dc=\E[P:dl=\E[M:do=\E[1B:eA=\E(B\E)1:ff=^L:ho=\E[H:\
+ :i1=\E(B\E)1\E[2l:i2=\E[21;1|\212:k1=\EOm:k2=\EOV:\
+ :k3=\EOu:k4=\ENj:k5=\ENe:k6=\ENf:k7=\ENh:k8=\E[H:k9=\EOc:\
+ :k;=\EOd:kB=\E[Z:kF=\E[S:kR=\E[T:kb=^H:kd=\E[B:ke=\E[19;0|:\
+ :kl=\E[D:kr=\E[C:ks=\E[19;1|:ku=\E[A:le=^H:mb=\E[5m:\
+ :md=\E[2;7m:me=\E[m\017:mh=\E[2m:mr=\E[7m:nd=\E[C:nw=\EE:\
+ :pf=\E[?8i:po=\E[?4i:ps=\E[0i:rc=\E8:sc=\E7:se=\E[m:sf=^J:\
+ :so=\E[7m:sr=\EM:st=\EH:ta=^I:ue=\E[m:up=\E[A:us=\E[4m:\
+ :ve=\E[11;3|:vi=\E[11;0|:vs=\E[11;2|:
+
+# Terminfo entry for the AT&T 510 D Personal Terminal
+# Function keys 9 through 16 are accessed by bringing up the
+# system blocks.
+# Function key 9 corresponds to the leftmost touch target on the screen,
+# function key 16 corresponds to the rightmost.
+#
+# There are problems with soft key labeling. These are due to
+# strangenesses in the native terminal that are impossible to
+# describe in a terminfo.
+# (untranslatable capabilities removed to fit entry within 1023 bytes)
+# (sgr removed to fit entry within 1023 bytes)
+# (terminfo-only capabilities suppressed to fit entry within 1023 bytes)
+att510d|bct510d|AT&T 510D Personal Terminal:\
+ :am:da:db:mi:ms:xn:xo:\
+ :co#80:li#24:lm#48:\
+ :AL=\E[%dL:DC=\E[%dP:DL=\E[%dM:DO=\E[%dB:IC=\E[%d@:\
+ :LE=\E[%dD:RI=\E[%dC:SF=\E[%dS:SR=\E[%dT:UP=\E[%dA:ae=^O:\
+ :al=\E[L:as=^N:bl=^G:bt=\E[Z:cd=\E[0J:ce=\E[0K:cl=\E[H\E[J:\
+ :cm=\E[%i%d;%dH:cr=^M:ct=\E[3g:dc=\E[P:dl=\E[M:do=\E[1B:\
+ :ei=\E[4l:ff=^L:ho=\E[H:i1=\E(B\E)1\E[5;0|:\
+ :i2=\E[21;1|\212:im=\E[4h:k1=\EOm:k2=\EOV:k3=\EOu:k4=\ENj:\
+ :k5=\ENe:k6=\ENf:k7=\ENh:k8=\E[H:k9=\EOc:kb=^H:kd=\E[B:\
+ :ke=\E[19;0|:kl=\E[D:kr=\E[C:ks=\E[19;1|:ku=\E[A:le=^H:\
+ :ll=\E#2:mb=\E[5m:md=\E[2;7m:me=\E[m\017:mh=\E[2m:\
+ :mr=\E[7m:nd=\E[C:nw=\EE:rc=\E8:sc=\E7:se=\E[m:sf=^J:\
+ :so=\E[7m:sr=\EM:st=\EH:ta=^I:ue=\E[m:up=\E[A:us=\E[4m:\
+ :ve=\E[11;3|:vs=\E[11;2|:
+
+# (att500: I merged this with the att513 entry, att500 just used att513 -- esr)
+# (untranslatable capabilities removed to fit entry within 1023 bytes)
+# (sgr removed to fit entry within 1023 bytes)
+# (terminfo-only capabilities suppressed to fit entry within 1023 bytes)
+att500|att513|AT&T 513 using page mode:\
+ :am:mi:ms:xn:xo:\
+ :co#80:li#24:\
+ :AL=\E[%dL:DC=\E[%dP:DL=\E[%dM:DO=\E[%dB:IC=\E[%d@:\
+ :LE=\E[%dD:RI=\E[%dC:SF=\E[%dE:SR=\E[%dF:UP=\E[%dA:ae=^O:\
+ :al=\E[L:as=^N:bl=^G:bt=\E[Z:cd=\E[J:ce=\E[K:cl=\E[H\E[J:\
+ :cm=\E[%i%d;%dH:cr=^M:cs=%i\E[%d;%dr:ct=\E[3g:dc=\E[P:\
+ :dl=\E[M:do=^J:ei=\E[4l:ho=\E[H:\
+ :i1=\E?\E[3;3|\E[10;0|\E[21;1|\212\E[6;1|\E[1{\E[?99l:\
+ :im=\E[4h:k1=\EOc:k2=\EOd:k3=\EOe:k4=\EOf:k5=\EOg:k6=\EOh:\
+ :k7=\EOi:k8=\EOj:kD=\ENf:kI=\ENj:kN=\E[U:kP=\E[V:kb=^H:\
+ :kd=\E[B:ke=\E[19;0|\E[21;1|\212:kh=\E[H:kl=\E[D:kr=\E[C:\
+ :ks=\E[19;1|\E[21;4|\Eent:ku=\E[A:le=^H:ll=\E#2:mb=\E[5m:\
+ :md=\E[2;7m:me=\E[m\017:mh=\E[2m:mr=\E[7m:nd=\E[C:nw=\EE:\
+ :rc=\E8:sc=\E7:se=\E[m:sf=^J:so=\E[7m:sr=\EM:st=\EH:ta=^I:\
+ :ue=\E[m:up=\E[A:us=\E[4m:ve=\E[11;0|:vs=\E[11;1|:
+
+# 01-07-88
+# printer must be set to EMUL ANSI to accept ESC codes
+# :up: stops at top margin
+# :i1: sets cpi 10,lpi 6,form 66,left 1,right 132,top 1,bottom 66,font
+# and alt font ascii,wrap on,tabs cleared
+# :is: disables newline on LF,Emphasized off
+# The <u0> capability sets form length
+# (untranslatable capabilities removed to fit entry within 1023 bytes)
+# (sgr removed to fit entry within 1023 bytes)
+# (terminfo-only capabilities suppressed to fit entry within 1023 bytes)
+att5310|att5320|AT&T Model 53210 or 5320 matrix printer:\
+ :co#132:it#8:li#66:\
+ :DO=\E[%de:RI=\E[%da:cr=^M:do=^J:ff=^L:i1=\Ec:is=\E[20l\r:\
+ :nd= :ta=^I:up=\EM:
+
+# Teletype 5620, firmware version 1.1 (8;7;3) or earlier from BRL
+# The following SET-UP modes are assumed for normal operation:
+# CR_DEF=CR NL_DEF=INDEX DUPLEX=FULL
+# Other SET-UP modes may be set for operator convenience or communication
+# requirements. This termcap description is for the Resident Terminal Mode.
+# No delays specified; use "stty ixon -ixany" to enable DC3/DC1 flow control!
+# The BRL entry also said: UNSAFE :ll=\E[70H:
+att5620-1|tty5620-1|dmd1|Teletype 5620 with old ROMs:\
+ :am:xo:\
+ :co#88:it#8:li#70:vt#3:\
+ :AL=\E[%dL:DC=\E[%dP:DL=\E[%dM:IC=\E[%d@:SF=\E[%dS:\
+ :SR=\E[%dT:al=\E[L:bl=^G:cd=\E[J:ce=\E[K:cl=\E[H\E[J:\
+ :cm=\E[%i%d;%dH:cr=^M:dc=\E[P:dl=\E[M:do=^J:ei=:ho=\E[H:\
+ :ic=\E[@:im=:kC=\E[2J:kH=\E[70;1H:kb=^H:kd=\E[B:kh=\E[H:\
+ :kl=\E[D:kr=\E[C:ku=\E[A:le=^H:nd=\E[C:nw=^M^J:r1=\Ec:\
+ :rc=\E8:sc=\E7:sf=^J:sr=\E[T:ta=^I:up=\E[A:
+
+# 5620 terminfo (2.0 or later ROMS with char attributes)
+# The following SET-UP modes are assumed for normal operation:
+# DUPLEX=FULL GEN_FLOW=ON NEWLINE=INDEX RETURN=CR
+# Other SET-UP modes may be set for operator convenience or communication
+# requirements. This termcap description is for Resident Terminal Mode. No
+# delays are specified; use "stty ixon -ixany" to enable DC3/DC1 flow control!
+# assumptions: :sf: (scroll forward one line) is only done at screen bottom
+# Be aware that older versions of the dmd have a firmware bug that affects
+# parameter defaulting; for this terminal, the 0 in \E[0m is not optional.
+# :ms: is from an otherwise inferior BRL for this terminal. That entry
+# also has :ll:=\E[70H commented out and marked unsafe.
+# For more, see the 5620 FAQ maintained by David Breneman <daveb@dgtl.com>.
+att5620|dmd|tty5620|ttydmd|5620|5620 terminal 88 columns:\
+ :NL:NP:am:bs:ms:xo:\
+ :co#88:it#8:li#70:\
+ :AL=\E[%dL:DC=\E[%dP:DL=\E[%dM:IC=\E[%d@:SF=\E[%dS:\
+ :SR=\E[%dT:al=\E[L:bl=^G:cd=\E[J:ce=\E[K:cl=\E[H\E[J:\
+ :cm=\E[%i%d;%dH:cr=^M:dc=\E[P:dl=\E[M:do=\E[B:ei=:ho=\E[H:\
+ :ic=\E[@:im=:kC=\E[2J:kH=\E[70;1H:kb=^H:kd=\E[B:kh=\E[H:\
+ :kl=\E[D:kr=\E[C:ku=\E[A:le=^H:md=\E[2m:me=\E[0m:mh=\E[2m:\
+ :mr=\E[7m:nd=\E[C:nw=^J:..px=\E[%p1%d;%p2%l%dq%p2%s:\
+ :r1=\Ec:rc=\E8:sc=\E7:se=\E[0m:sf=\E[S:so=\E[7m:sr=\E[T:\
+ :ta=^I:ue=\E[0m:up=\E[A:us=\E[4m:
+att5620-24|tty5620-24|dmd-24|teletype dmd 5620 in a 24x80 layer:\
+ :li#24:tc=att5620:
+att5620-34|tty5620-34|dmd-34|teletype dmd 5620 in a 34x80 layer:\
+ :li#34:tc=att5620:
+# 5620 layer running the "S" system's downloaded graphics handler:
+att5620-s|tty5620-s|layer|vitty|5620 S layer:\
+ :am:bs:pt:\
+ :co#80:it#8:li#72:\
+ :al=\EI:bl=^G:ce=\EK:cl=^L:cm=\EY%r%+ %+ :cr=^M:dl=\ED:\
+ :do=^J:kC=\E[2J:kH=\E[70;1H:kb=^H:kd=\E[B:kh=\E[H:kl=\E[D:\
+ :kr=\E[C:ku=\E[A:le=^H:sf=^J:ta=^I:up=^K:vb=\E^G:
+
+# Entries for <kf15> thru <kf28> refer to the shifted system pf keys.
+#
+# Entries for <kf29> thru <kf46> refer to the alternate keypad mode
+# keys: = * / + 7 8 9 - 4 5 6 , 1 2 3 0 . ENTER
+# (untranslatable capabilities removed to fit entry within 1023 bytes)
+# (sgr removed to fit entry within 1023 bytes)
+# (terminfo-only capabilities suppressed to fit entry within 1023 bytes)
+att605|AT&T 605 80 column 102key keyboard:\
+ :am:eo:xo:\
+ :co#80:li#24:ws#80:\
+ :DC=\E[%dP:DL=\E[%dM:IC=\E[%d@:ae=^O:al=\E[L:as=\E)0\016:\
+ :bl=^G:bt=\E[Z:cd=\E[J:ce=\E[K:cl=\E[H\E[J:cm=\E[%i%d;%dH:\
+ :cr=^M:dc=\E[P:dl=\E[M:do=\E[B:ei=\E[4l:fs=\E8:\
+ :i1=\E[8;0|\E[?\E[13;20l\E[?\E[12h:ic=\E[@:im=\E[4h:\
+ :is=\E[m\017:k1=\EOc:k2=\EOd:k3=\EOe:k4=\EOf:k5=\EOg:\
+ :k6=\EOh:k7=\EOi:k8=\EOj:k9=\ENo:kD=\E[P:kI=\E[@:kN=\E[U:\
+ :kP=\E[V:kb=^H:kd=\E[B:kh=\E[H:kl=\E[D:kr=\E[C:ku=\E[A:\
+ :le=^H:ll=\E[24H:mb=\E[5m:md=\E[1m:me=\E[m\017:mh=\E[2m:\
+ :mr=\E[7m:nd=\E[C:nw=\EE:rc=\E8:sc=\E7:se=\E[m:sf=^J:\
+ :so=\E[7m:ta=^I:ts=\E7\E[25;%i%p1%dx:ue=\E[m:up=\E[A:\
+ :us=\E[4m:
+att605-pc|ATT 605 in pc term mode:\
+ :@7=\E[F:AL=\E[L:S4=250\E[?11l\E[50;1|:S5=400\E[50;0|:\
+ :XF=g:XN=e:\
+ :ac=j\331k\277l\332m\300n\305q\304t\303u\264v\301w\302x\263:\
+ :al=\E[L:bt=\E[Z:dc=\E[P:dl=\E[M:do=\E[B:ei=:ic=\E[@:im=:\
+ :k1=\E[M:k2=\E[N:k3=\E[O:k4=\E[P:k5=\E[Q:k6=\E[R:k7=\E[S:\
+ :k8=\E[T:k9=\E[U:k;=\E[V:kB=\E[Z:kD=\E[P:kI=\E[@:kL=\E[M:\
+ :kN=\E[G:kP=\E[I:kd=\E[B:kh=\E[H:kl=\E[D:kr=\E[C:ku=\E[A:\
+ :le=\E[D:nd=\E[C:up=\E[A:\
+ :tc=att605:
+att605-w|AT&T 605-w 132 column 102 key keyboard:\
+ :co#132:ws#132:\
+ :i1=\E[8;0|\E[?4;5;13;15l\E[13;20l\E[?3;7h\E[12h\E(B\E)0:tc=att605:
+# (att610: I added <rmam>/<smam> based on the init string. I also
+# added :SF: and :SR: because the BSD file says the att615s have them,
+# and the 615 is like a 610 with a big keyboard, and most of their other
+# smart terminals support the same sequence -- esr)
+# (untranslatable capabilities removed to fit entry within 1023 bytes)
+# (sgr removed to fit entry within 1023 bytes)
+# (terminfo-only capabilities suppressed to fit entry within 1023 bytes)
+att610|AT&T 610; 80 column; 98key keyboard:\
+ :am:es:hs:mi:ms:xn:xo:\
+ :co#80:it#8:li#24:ws#80:\
+ :AL=\E[%dL:DC=\E[%dP:DL=\E[%dM:DO=\E[%dB:IC=\E[%d@:\
+ :LE=\E[%dD:RI=\E[%dC:SF=\E[%dS:SR=\E[%dT:UP=\E[%dA:ae=^O:\
+ :al=\E[L:as=^N:bl=^G:bt=\E[Z:cd=\E[J:ce=\E[K:cl=\E[H\E[J:\
+ :cm=\E[%i%d;%dH:cr=^M:cs=\E[%i%d;%dr:dc=\E[P:dl=\E[M:\
+ :do=\E[B:ei=\E[4l:fs=\E8:ho=\E[H:\
+ :i1=\E[8;0|\E[?3;4;5;13;15l\E[13;20l\E[?7h\E[12h\E(B\E)0:\
+ :i2=\E(B\E)0:im=\E[4h:is=\E[m\017:k1=\EOc:k2=\EOd:k3=\EOe:\
+ :k4=\EOf:k5=\EOg:k6=\EOh:k7=\EOi:k8=\EOj:k9=\ENo:kb=^H:\
+ :kd=\E[B:kh=\E[H:kl=\E[D:kr=\E[C:ku=\E[A:le=^H:ll=\E[24H:\
+ :mb=\E[5m:md=\E[1m:me=\E[m\017:mh=\E[2m:mr=\E[7m:nd=\E[C:\
+ :nw=\EE:rc=\E8:sc=\E7:se=\E[m:sf=\ED:so=\E[7m:sr=\EM:ta=^I:\
+ :ts=\E7\E[25;%i%p1%dx:ue=\E[m:up=\E[A:us=\E[4m:\
+ :vb=\E[?5h\E[?5l:ve=\E[?25h\E[?12l:vi=\E[?25l:\
+ :vs=\E[?12;25h:
+att610-w|AT&T 610; 132 column; 98key keyboard:\
+ :co#132:ws#132:\
+ :i1=\E[8;0|\E[?4;5;13;15l\E[13;20l\E[?3;7h\E[12h:tc=att610:
+
+att610-103k|AT&T 610; 80 column; 103key keyboard:\
+ :!1=\EOO:!2=\EOP:!3=\EOS:#1=\EOM:%0=\EOt:%1=\EOm:%2=\ENi:\
+ :%3=\EOl:%4=\ENc:%5=\ENh:%6=\EOv:%7=\EOr:%8=\ENg:%9=\EOz:\
+ :%a=\EOL:%b=\ENC:%c=\ENH:%d=\EOR:%e=\ENG:%f=\EOZ:%g=\EOT:\
+ :%h=\EOY:%j=\EOQ:&0=\EOW:&1=\EOb:&2=\ENa:&3=\EOy:&4=\EOB:\
+ :&5=\EOq:&6=\EOo:&7=\EOp:&8=\EOs:&9=\ENB:*0=\EOX:*1=\EOU:\
+ :*2=\END:*3=\EON:*4=\ENF:*5=\ENE:*6=\ENI:*7=\ENN:*8=\EOA:\
+ :*9=\EOK:@0=\EOx:@1=\E9:@2=\EOw:@3=\EOV:@4=\EOu:@5=\ENd:\
+ :@6=\EOn:@7=\E0:@8=^M:@9=\EOk:F1@:F2@:F3@:F4@:k9@:k;@:kD=\ENf:\
+ :kE=\EOa:kI=\ENj:kL=\ENe:kM=\ENj:kN=\E[U:kP=\E[V:\
+ :tc=att610:
+att610-103k-w|AT&T 610; 132 column; 103key keyboard:\
+ :co#132:ws#132:\
+ :i1=\E[8;0|\E[?4;5;13;15l\E[13;20l\E[?3;7h\E[12h:tc=att610-103k:
+att615|AT&T 615; 80 column; 98key keyboard:\
+ :#4=\E[ A:%i=\E[ @:F5=\EOC:F6=\EOD:F7=\EOE:F8=\EOF:F9=\EOG:\
+ :FA=\EOH:FB=\EOI:FC=\EOJ:FD=\ENO:FE=\ENP:FF=\ENQ:FG=\ENR:\
+ :FH=\ENS:FI=\ENT:FJ=\EOP:FK=\EOQ:FL=\EOR:FM=\EOS:FN=\EOw:\
+ :FO=\EOx:FP=\EOy:FQ=\EOm:FR=\EOt:FS=\EOu:FT=\EOv:FU=\EOl:\
+ :FV=\EOq:FW=\EOr:FX=\EOs:FY=\EOp:FZ=\EOn:Fa=\EOM:\
+ :tc=att610:
+att615-w|AT&T 615; 132 column; 98key keyboard:\
+ :#4=\E[ A:%i=\E[ @:F5=\EOC:F6=\EOD:F7=\EOE:F8=\EOF:F9=\EOG:\
+ :FA=\EOH:FB=\EOI:FC=\EOJ:FD=\ENO:FE=\ENP:FF=\ENQ:FG=\ENR:\
+ :FH=\ENS:FI=\ENT:FJ=\EOP:FK=\EOQ:FL=\EOR:FM=\EOS:FN=\EOw:\
+ :FO=\EOx:FP=\EOy:FQ=\EOm:FR=\EOt:FS=\EOu:FT=\EOv:FU=\EOl:\
+ :FV=\EOq:FW=\EOr:FX=\EOs:FY=\EOp:FZ=\EOn:Fa=\EOM:\
+ :tc=att610-w:
+att615-103k|AT&T 615; 80 column; 103key keyboard:\
+ :#4=\E[ A:%i=\E[ @:\
+ :tc=att610-103k:
+att615-103k-w|AT&T 615; 132 column; 103key keyboard:\
+ :#4=\E[ A:%i=\E[ @:\
+ :tc=att610-103k-w:
+# (att620: I added <rmam>/<smam> based on the init string and
+# :SR:/:SF: from a BSD termcap -- esr)
+# (untranslatable capabilities removed to fit entry within 1023 bytes)
+# (sgr removed to fit entry within 1023 bytes)
+# (terminfo-only capabilities suppressed to fit entry within 1023 bytes)
+att620|AT&T 620; 80 column; 98key keyboard:\
+ :am:es:hs:mi:ms:xn:xo:\
+ :co#80:it#8:li#24:ws#80:\
+ :AL=\E[%dL:DC=\E[%dP:DL=\E[%dM:DO=\E[%dB:IC=\E[%d@:\
+ :LE=\E[%dD:RI=\E[%dC:SF=\E[%dS:SR=\E[%dT:UP=\E[%dA:\
+ :ae=\E(B\017:al=\E[L:as=\E)0\016:bl=^G:bt=\E[Z:cd=\E[J:\
+ :ce=\E[K:cl=\E[H\E[J:cm=\E[%i%d;%dH:cr=^M:cs=\E[%i%d;%dr:\
+ :dc=\E[P:dl=\E[M:do=\E[B:ei=\E[4l:fs=\E8:ho=\E[H:\
+ :i1=\E[8;0|\E[?3;4;5;13;15l\E[13;20l\E[?7h\E[12h:\
+ :i2=\E(B\E)0:im=\E[4h:is=\E[m\017:k1=\EOc:k2=\EOd:k3=\EOe:\
+ :k4=\EOf:k5=\EOg:k6=\EOh:k7=\EOi:k8=\EOj:k9=\ENo:kb=^H:\
+ :kd=\E[B:kh=\E[H:kl=\E[D:kr=\E[C:ku=\E[A:le=^H:ll=\E[24H:\
+ :mb=\E[5m:md=\E[1m:me=\E[m\E(B\017:mh=\E[2m:mr=\E[7m:\
+ :nd=\E[C:nw=\EE:rc=\E8:sc=\E7:se=\E[m:sf=\ED:so=\E[7m:\
+ :sr=\EM:ta=^I:ts=\E7\E[25;%i%p1%dx:ue=\E[m:up=\E[A:\
+ :us=\E[4m:vb=\E[?5h\E[?5l:ve=\E[?25h\E[?12l:vi=\E[?25l:\
+ :vs=\E[?12;25h:
+att620-w|AT&T 620; 132 column; 98key keyboard:\
+ :co#132:ws#132:\
+ :i1=\E[8;0|\E[?4;5;13;15l\E[13;20l\E[?3;7h\E[12h:tc=att620:
+att620-103k|AT&T 620; 80 column; 103key keyboard:\
+ :!1=\EOO:!2=\EOP:!3=\EOS:#1=\EOM:%0=\EOt:%1=\EOm:%2=\ENi:\
+ :%3=\EOl:%4=\ENc:%5=\ENh:%6=\EOv:%7=\EOr:%8=\ENg:%9=\EOz:\
+ :%a=\EOL:%b=\ENC:%c=\ENH:%d=\EOR:%e=\ENG:%f=\EOZ:%g=\EOT:\
+ :%h=\EOY:%j=\EOQ:&0=\EOW:&1=\EOb:&2=\ENa:&3=\EOy:&4=\EOB:\
+ :&5=\EOq:&6=\EOo:&7=\EOp:&8=\EOs:&9=\ENB:*0=\EOX:*1=\EOU:\
+ :*2=\END:*3=\EON:*4=\ENF:*5=\ENE:*6=\ENI:*7=\ENN:*8=\EOA:\
+ :*9=\EOK:@0=\EOx:@1=\E9:@2=\EOw:@3=\EOV:@4=\EOu:@5=\ENd:\
+ :@6=\EOn:@7=\E0:@8=^M:@9=\EOk:F1@:F2@:F3@:F4@:F5@:F6@:F7@:F8@:\
+ :F9@:FA@:FB@:FC@:FD@:FE@:FF@:FG@:FH@:FI@:FJ@:FK@:FL@:FM@:FN@:FO@:FP@:\
+ :FQ@:FR@:FS@:FT@:FU@:FV@:FW@:FX@:FY@:FZ@:Fa@:k9@:k;@:kD=\ENf:\
+ :kE=\EOa:kI=\ENj:kL=\ENe:kM=\ENj:kN=\E[U:kP=\E[V:\
+ :tc=att620:
+
+att620-103k-w|AT&T 620; 132 column; 103key keyboard:\
+ :co#132:ws#132:\
+ :i1=\E[8;0|\E[?4;5;13;15l\E[13;20l\E[?3;7h\E[12h:tc=att620-103k:
+
+# AT&T (formerly Teletype) 630 Multi-Tasking Graphics terminal
+# The following SETUP modes are assumed for normal operation:
+# Local_Echo=Off Gen_Flow=On Return=CR Received_Newline=LF
+# Font_Size=Large Non-Layers_Window_Cols=80
+# Non-Layers_Window_Rows=60
+# Other SETUP modes may be set for operator convenience or communication
+# requirements. Some capabilities assume a printer attached to the Aux EIA
+# port. This termcap description is for the Fixed Non-Layers Window. No
+# delays are specified; use "stty ixon -ixany" to enable DC3/DC1 flow control!
+# (att630: added :ic:, :mb: and :mh: from a BSD termcap file -- esr)
+att630|AT&T 630 windowing terminal:\
+ :NP:am:bs:da:db:mi:ms:xo:\
+ :co#80:it#8:li#60:lm#0:\
+ :@8=^M:AL=\E[%dL:DC=\E[%dP:DL=\E[%dM:DO=\E[%dB:F1=\ENq:\
+ :F2=\ENr:F3=\ENs:F4=\ENt:F5=\ENu:F6=\ENv:F7=\ENw:F8=\ENx:\
+ :F9=\ENy:FA=\ENz:FB=\EN{:FC=\EN|:FD=\EN}:FE=\EN~:IC=\E[%d@:\
+ :LE=\E[%dD:RI=\E[%dC:SF=\E[%dS:SR=\E[%dT:UP=\E[%dA:\
+ :al=\E[L:bl=^G:bt=\E[Z:cb=\E[1K:cd=\E[J:ce=\E[K:\
+ :cl=\E[H\E[J:cm=\E[%i%d;%dH:cr=^M:dc=\E[P:dl=\E[M:do=\E[B:\
+ :ei=\E[4l:ho=\E[H:ic=\E[@:im=\E[4h:is=\E[m:k9=\ENo:k;=\ENp:\
+ :kA=\E[L:kB=\E[Z:kC=\E[2J:kD=\E[P:kI=\E[@:kL=\E[M:kb=^H:\
+ :kd=\E[B:kh=\E[H:kl=\E[D:kr=\E[C:ku=\E[A:le=^H:mb=\E[5m:\
+ :me=\E[m:mh=\E[2m:mr=\E[7m:nd=\E[C:nw=^M^J:pf=\E[?4i:\
+ :po=\E[?5i:..px=\E[%p1%d;%p2%l%dq%p2%s:r2=\Ec:rc=\E8:\
+ :..sa=\E[0%?%p2%t;4%;%?%p1%p3%|%p4%|%p5%|%t;7%;m:\
+ :sc=\E7:se=\E[m:sf=\ED:so=\E[7m:sr=\EM:ta=^I:ue=\E[m:\
+ :up=\E[A:us=\E[4m:
+att630-24|5630-24|5630DMD-24|630MTG-24|AT&T 630 windowing terminal 24 lines:\
+ :li#24:tc=att630:
+
+# This is the att700 entry for 700 native emulation of the AT&T 700
+# terminal. Comments are relative to changes from the 605V2 entry and
+# att730 on which the entry is based. Comments show the terminfo
+# capability name, termcap name, and description.
+#
+# Here is what's going onm in the init string:
+# ESC [ 50;4| set 700 native mode (really is 605)
+# x ESC [ 56;ps| set lines to 24: ps=0; 40: ps=1 (plus status line)
+# ESC [ 53;0| set GenFlow to Xon/Xoff
+# ESC [ 8 ;0| set CR on NL
+# x ESC [ ? 3 l/h set workspace: 80 col(l); 132 col(h)
+# ESC [ ? 4 l jump scroll
+# ESC [ ? 5 l/h video: normal (l); reverse (h)
+# ESC [ ?13 l Labels on
+# ESC [ ?15 l parity check = no
+# ESC [ 13 l monitor mode off
+# ESC [ 20 l LF on NL (not CRLF on NL)
+# ESC [ ? 7 h autowrap on
+# ESC [ 12 h local echo off
+# ESC ( B GO = ASCII
+# ESC ) 0 G1 = Special Char & Line Drawing
+# ESC [ ? 31 l Set 7 bit controls
+#
+# Note: Most terminals, especially the 600 family use Reverse Video for
+# standout mode. DEC also uses reverse video. The VT100 uses bold in addition
+# Assume we should stay with reverse video for 70.. However, the 605V2 exits
+# standout mode with \E[m (all normal attributes). The 730 entry simply
+# exits reverse video which would leave other current attributes intact. It
+# was assumed the 730 entry to be more correct so rmso has changed. The
+# 605V2 has no sequences to turn individual attributes off, thus its setting
+# and the rmso/smso settings from the 730.
+#
+# Note: For the same reason as above in rmso I changed exit under-score mode
+# to specifically turn off underscore, rather than return to all normal
+# attributes
+#
+# Note: The following pkey_xmit is taken from the 605V2 which contained the
+# capability as pfxl. It was changed here to pfx since pfxl
+# will only compile successfully with Unix 4.0 tic. Also note that pfx only
+# allows strings to be parameters and label values must be programmed as
+# constant strings. Supposedly the pfxl of Version 4.0 allows both labels
+# and strings to be parameters. The 605V2 pfx entry should be examined later
+# in this regard. For reference the 730 pfxl entry is shown here for comparison
+# 730 pfx entry:
+# pfxl=\E[%?%p1%{25}%<%t%p1%e%p1%{24}%-%;%d;%p2%l%02d%?%p1%{25}%<%tq\s\s\s
+# SYS\s\s\s\s\sF%p1%:-2d\s\s%e;0;3q%;%p2%s,
+#
+# (for 4.0 tic)
+# pfxl=\E[%p1%d;%p2%l%02dq%?%p1%{9}%<%t F%p1%1d %;%p2%s,
+#
+# (for <4.0 tic)
+# pfx=\E[%p1%d;%p2%l%02dq%?%p1%{9}%<%t F%p1%1d %;%p2%s,
+#
+# From the AT&T 705 Multi-tasking terminal user's guide Page 8-8,8-9
+#
+# Port1 Interface
+#
+# modular 10 pin Connector
+# Left side Right side
+# Pin 1 2 3 4 5 6 7 8 9 10
+#
+# Key (notch) at bottom
+#
+# Pin 1 DSR
+# 3 DCD
+# 4 DTR
+# 5 Sig Ground
+# 6 RD
+# 7 SD
+# 8 CTS
+# 9 RTS
+# 10 Frame Ground
+#
+# The manual is 189 pages and is loaded with details about the escape codes,
+# etc..... Available from AT&T CIC 800-432-6600...
+# ask for Document number 999-300-660..
+#
+# (untranslatable capabilities removed to fit entry within 1023 bytes)
+# (sgr removed to fit entry within 1023 bytes)
+# (terminfo-only capabilities suppressed to fit entry within 1023 bytes)
+att700|AT&T 700 24x80 column display w/102key keyboard:\
+ :am:es:hs:mi:ms:xn:xo:\
+ :co#80:it#8:li#24:ws#80:\
+ :AL=\E[%dL:DC=\E[%dP:DL=\E[%dM:DO=\E[%dB:IC=\E[%d@:\
+ :LE=\E[%dD:RI=\E[%dC:UP=\E[%dA:ae=^O:al=\E[L:as=^N:bl=^G:\
+ :bt=\E[Z:cd=\E[J:ce=\E[K:cl=\E[H\E[J:cm=\E[%i%d;%dH:cr=^M:\
+ :cs=\E[%i%d;%dr:ct=\E[3g:dc=\E[P:dl=\E[M:do=\E[B:ei=\E[4l:\
+ :fs=\E8:ho=\E[H:i2=\E(B\E)0:im=\E[4h:\
+ :is=\E[50;4|\E[53;0|\E[8;0|\E[?4;13;15l\E[13;20l\E[?7h\E[12h\E(B\E)0\E[?31l\E[0m\017:\
+ :k1=\EOc:k2=\EOd:k3=\EOe:k4=\EOf:k5=\EOg:k6=\EOh:k7=\EOi:\
+ :k8=\EOj:k9=\ENo:kD=\E[P:kI=\E[@:kN=\E[U:kP=\E[V:kb=^H:\
+ :kd=\E[B:kh=\E[H:kl=\E[D:kr=\E[C:ku=\E[A:le=^H:ll=\E[24H:\
+ :mb=\E[5m:md=\E[1m:me=\E[m\017:mh=\E[2m:mr=\E[7m:nd=\E[C:\
+ :nw=\EE:rc=\E8:sc=\E7:se=\E[27m:sf=\ED:so=\E[7m:sr=\EM:\
+ :st=\EH:ta=^I:ts=\E7\E[99;%i%p1%dx:ue=\E[24m:up=\E[A:\
+ :us=\E[4m:vb=\E[?5h\E[?5l:ve=\E[?25h\E[?12l:vi=\E[?25l:\
+ :vs=\E[?12;25h:
+
+# This entry was modified 3/13/90 by JWE.
+# fixes include additions of <enacs>, correcting :rp:, and modification
+# of <kHOM>. (See comments below)
+# att730 has status line of 80 chars
+# These were commented out: :SF=\E[%p1%dS:, :SR=\E[%p1%dT:,
+# the <kf25> and up keys are used for shifted system Fkeys
+# NOTE: JWE 3/13/90 The 98 key keyboard translation for shift/HOME is
+# currently the same as :kh: (unshifted HOME or \E[H). On the 102, 102+1
+# and 122 key keyboards, the 730's translation is \E[2J. For consistency
+# <kHOM> has been commented out. The user can uncomment <kHOM> if using the
+# 102, 102+1, or 122 key keyboards
+# kHOM=\E[2J,
+# (att730: I added <rmam>/<smam> based on the init string -- esr)
+# (untranslatable capabilities removed to fit entry within 1023 bytes)
+# (sgr removed to fit entry within 1023 bytes)
+# (terminfo-only capabilities suppressed to fit entry within 1023 bytes)
+att730|AT&T 730 windowing terminal:\
+ :am:da:db:es:hs:mi:ms:xn:xo:\
+ :co#80:it#8:li#60:lm#0:ws#80:\
+ :AL=\E[%dL:DC=\E[%dP:DL=\E[%dM:DO=\E[%dB:IC=\E[%d@:\
+ :LE=\E[%dD:RI=\E[%dC:UP=\E[%dA:ae=^O:al=\E[L:as=^N:bl=^G:\
+ :bt=\E[Z:cd=\E[J:ce=\E[K:cl=\E[H\E[J:cm=\E[%i%d;%dH:cr=^M:\
+ :cs=\E[%i%d;%dr:dc=\E[P:dl=\E[M:do=\E[B:ei=\E[4l:fs=\E8:\
+ :ho=\E[H:\
+ :i1=\E[8;0|\E[?3;4;5;13;15l\E[13;20l\E[?7h\E[12h\E(B\E)B:\
+ :i2=\E(B\E)0:im=\E[4h:is=\E[m\017:k1=\EOc:k2=\EOd:k3=\EOe:\
+ :k4=\EOf:k5=\EOg:k6=\EOh:k7=\EOi:k8=\EOj:k9=\ENo:kI=\E[@:\
+ :kb=^H:kd=\E[B:kh=\E[H:kl=\E[D:kr=\E[C:ku=\E[A:le=^H:\
+ :mb=\E[5m:md=\E[1m:me=\E[m\017:mh=\E[2m:mr=\E[7m:nd=\E[C:\
+ :nw=\EE:rc=\E8:sc=\E7:se=\E[27m:sf=\ED:so=\E[7m:sr=\EM:\
+ :ta=^I:ts=\E7\E[;%i%p1%dx:ue=\E[24m:up=\E[A:us=\E[4m:\
+ :vb=\E[?5h\E[?5l:ve=\E[?25h\E[?12l:vi=\E[?25l:\
+ :vs=\E[?12;25h:
+att730-41|730MTG-41|AT&T 730-41 windowing terminal Version:\
+ :li#41:tc=att730:
+att730-24|730MTG-24|AT&T 730-24 windowing terminal Version:\
+ :li#24:tc=att730:
+att730r|730MTGr|AT&T 730 rev video windowing terminal Version:\
+ :i1=\E[8;0|\E[?3;4;13;15l\E[?5h\E[13;20l\E[?7h\E[12h\E(B\E)B:\
+ :vb=\E[?5l\E[?5h:\
+ :tc=att730:
+att730r-41|730MTG-41r|AT&T 730r-41 rev video windowing terminal Version:\
+ :li#41:tc=att730r:
+att730r-24|730MTGr-24|AT&T 730r-24 rev video windowing terminal Version:\
+ :li#24:tc=att730r:
+
+# The following represents the screen layout along with the associated
+# bezel buttons for the 5430/pt505 terminal. The "kf" designations do
+# not appear on the screen but are shown to reference the bezel buttons.
+# The "CMD", "MAIL", and "REDRAW" buttons are shown in their approximate
+# position relative to the screen.
+#
+#
+#
+# +----------------------------------------------------------------+
+# | |
+# XXXX | kf0 kf24 | XXXX
+# | |
+# | |
+# XXXX | kf1 kf23 | XXXX
+# | |
+# | |
+# XXXX | kf2 kf22 | XXXX
+# | |
+# | |
+# XXXX | kf3 kf21 | XXXX
+# | |
+# | |
+# XXXX | kf4 kf20 | XXXX
+# | |
+# | |
+# XXXX | kf5 kf19 | XXXX
+# | |
+# | |
+# XXXX | kf6 kf18 | XXXX
+# | |
+# | |
+# XXXX | | XXXX
+# | |
+# | |
+# +----------------------------------------------------------------+
+#
+# XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX
+#
+# Note: XXXX represents the screen buttons
+# CMD REDRAW
+#
+# MAIL
+#
+# version 1 note:
+# The character string sent by key 'kf26' may be user programmable
+# to send either \E[16s, or \E[26s.
+# The character string sent by key 'krfr' may be user programmable
+# to send either \E[17s, or \E[27s.
+#
+# Depression of the "CMD" key sends \E! (kcmd)
+# Depression of the "MAIL" key sends \E[26s (kf26)
+# "REDRAW" same as "REFRESH" (krfr)
+#
+# "kf" functions adds carriage return to output string if terminal is in
+# 'new line' mode.
+#
+# The following are functions not covered in the table above:
+#
+# Set keyboard character (SKC): \EPn1;Pn2w
+# Pn1= 0 Back Space key
+# Pn1= 1 Break key
+# Pn2= Program char (hex)
+#
+# Screen Definition (SDF): \E[Pn1;Pn2;Pn3;Pn4;Pn5t
+# Pn1= Window number (1-39)
+# Pn2-Pn5= Y;X;Y;X coordinates
+#
+# Screen Selection (SSL): \E[Pnu
+# Pn= Window number
+#
+# Set Terminal Modes (SM): \E[Pnh
+# Pn= 3 Graphics mode
+# Pn= > Cursor blink
+# Pn= < Enter new line mode
+# Pn= = Enter reverse insert/replace mode
+# Pn= ? Enter no scroll mode
+#
+# Reset Terminal Mode (RM): \E[Pnl
+# Pn= 3 Exit graphics mode
+# Pn= > Exit cursor blink
+# Pn= < Exit new line mode
+# Pn= = Exit reverse insert/replace mode
+# Pn= ? Exit no scroll mode
+#
+# Screen Status Report (SSR): \E[Pnp
+# Pn= 0 Request current window number
+# Pn= 1 Request current window dimensions
+#
+# Device Status Report (DSR): \E[6n Request cursor position
+#
+# Call Status Report (CSR): \E[Pnv
+# Pn= 0 Call failed
+# Pn= 1 Call successful
+#
+# Transparent Button String (TBS): \E[Pn1;Pn2;Pn3;{string
+# Pn1= Button number to be loaded
+# Pn2= Character count of "string"
+# Pn3= Key mode being loaded:
+# 0= Unshifted
+# 1= Shifted
+# 2= Control
+# String= Text string (15 chars max)
+#
+# Screen Number Report (SNR): \E[Pnp
+# Pn= Screen number
+#
+# Screen Dimension Report (SDR): \E[Pn1;Pn2r
+# Pn1= Number of rows available in window
+# Pn2= Number of columns available in window
+#
+# Cursor Position Report (CPR): \E[Pn1;Pn2R
+# Pn1= "Y" Position of cursor
+# Pn2= "X" Position of cursor
+#
+# Request Answer Back (RAB): \E[c
+#
+# Answer Back Response (ABR): \E[?;*;30;VSV
+# *= 0 No printer available
+# *= 2 Printer available
+# V= Software version number
+# SV= Software sub version number
+# (printer-available field not documented in v1)
+#
+# Screen Alignment Aid: \En
+#
+# Bell (lower pitch): \E[x
+#
+# Dial Phone Number: \EPdstring\
+# string= Phone number to be dialed
+#
+# Set Phone Labels: \EPpstring\
+# string= Label for phone buttons
+#
+# Set Clock: \EPchour;minute;second\
+#
+# Position Clock: \EPsY;X\
+# Y= "Y" coordinate
+# X= "X" coordinate
+#
+# Delete Clock: \Epr\
+#
+# Programming The Function Buttons: \EPfPn;string\
+# Pn= Button number (00-06, 18-24)
+# (kf00-kf06, kf18-kf24)
+# string= Text to sent on button depression
+#
+# The following in version 2 only:
+#
+# Request For Local Directory Data: \EPp12;\
+#
+# Local Directory Data to host: \EPp11;LOCAL...DIRECTORY...DATA\
+#
+# Request for Local Directory Data in print format: \EPp13;\
+#
+# Enable 'Prt on Line' mode: \022 (DC2)
+#
+# Disable 'Prt on Line' mode: \024 (DC4)
+#
+
+# 05-Aug-86:
+# The following Terminfo entry describes functions which are supported by
+# the AT&T 5430/pt505 terminal software version 2 and later.
+att505|pt505|att5430|gs5430|AT&T Personal Terminal 505 or 5430 GETSET terminal:\
+ :am:xo:\
+ :co#80:it#8:li#24:\
+ :&2=\E[27s:@4=\E\041:AL=\E[%dL:DC=\E[%dP:DL=\E[%dM:\
+ :DO=\E[%dB:F8=\E[18s:F9=\E[19s:FA=\E[20s:FB=\E[21s:\
+ :FC=\E[22s:FD=\E[23s:FE=\E24s:FG=\E26s:LE=\E[%dD:\
+ :RA=\E[11;1j:RI=\E[%dC:SA=\E[11;0j:UP=\E[%dA:\
+ :ac=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~:\
+ :ae=\E[10m:al=\E[L:as=\E[11m:bl=^G:cb=\E2K:cd=\E[0J:\
+ :ce=\E[0K:cl=\E[2J\E[H:cm=\E[%d;%dH:cr=^M:dc=\E[P:dl=\E[M:\
+ :do=\E[B:ei=\E[4l:ho=\E[H:\
+ :i1=\EPr\E[0u\E[2J\E[0;0H\E[m\E[3l\E[<l\E[4l\E[>l\E[=l\E[?l:\
+ :im=\E[4h:k0=\E[00s:k1=\E[01s:k2=\E[02s:k3=\E[03s:\
+ :k4=\E[04s:k5=\E[05s:k6=\E[06s:kb=^H:kd=\E[B:kl=\E[D:\
+ :kr=\E[C:ku=\E[A:le=\E[D:mb=\E[5m:md=\E[1m:me=\E[m:\
+ :mr=\E[7m:nd=\E[C:pf=\E[4i:po=\E[5i:r1=\Ec:rc=\E8:sc=\E7:\
+ :se=\E[m:sf=^J:so=\E[1m:ta=^I:ue=\E[m:up=\E[A:us=\E[4m:\
+ :ve=\E[>l:vs=\E[>h:
+
+# The following Terminfo entry describes functions which are supported by
+# the AT&T 5430/pt505 terminal software version 1.
+att505-24|pt505-24|gs5430-24|AT&T PT505 or 5430 GETSET version 1 24 lines:\
+ :li#24:\
+ :RA@:SA@:pf@:po@:rc@:sc@:tc=att505:
+tt505-22|pt505-22|gs5430-22|AT&T PT505 or 5430 GETSET version 1 22 lines:\
+ :li#22:tc=att505:
+
+#### Ampex (Dialogue)
+#
+# Yes, these are the same people who are better-known for making audio- and
+# videotape. I'm told they are located in Redwood City, CA.
+#
+
+# From: <cbosg!ucbvax!SRC:george> Fri Sep 11 22:38:32 1981
+# (ampex80: some capabilities merged in from SCO's entry -- esr)
+ampex80|a80|d80|dialogue|dialogue80|ampex dialogue 80:\
+ :am:bs:bw:ul:\
+ :co#80:it#8:li#24:\
+ :al=\EE:bl=^G:bt=\EI:cd=\Ey:ce=\Et:cl=\E*:cm=\E=%+ %+ :\
+ :cr=^M:ct=\E3:dc=\EW:dl=\ER:do=^J:ei=:ic=\EQ:im=:is=\EA:le=^H:\
+ :nd=^L:se=\Ek:sf=^J:so=\Ej:st=\E1:ta=^I:ue=\Em:up=^K:us=\El:
+# This entry was from somebody anonymous, Tue Aug 9 20:11:37 1983, who wrote:
+ampex175|ampex d175:\
+ :am:\
+ :co#80:li#24:\
+ :al=\EE:bl=^G:cd=\Ey:ce=\Et:cl=\E+:cm=\E=%+ %+ :cr=^M:\
+ :dc=\EW:dl=\ER:do=^J:ei=:ho=^^:ic=\EQ:im=:is=\EX\EA\EF:\
+ :kA=\EE:kD=\EW:kI=\EQ:kL=\ER:kd=^J:kh=^^:kl=^H:kr=^L:ku=^K:\
+ :le=^H:ll=^^^K:nd=^L:se=\Ek:sf=^J:so=\Ej:te=\EF:ti=\EN:\
+ :ue=\Em:up=^K:us=\El:
+# No backspace key in the main QWERTY cluster. Fortunately, it has a
+# NEWLINE/PAGE key just above RETURN that sends a strange single-character
+# code. Given a suitable Unix (one that lets you set an echo-erase-as-BS-SP-BS
+# mode), this key can be used as the erase key; I find I like this. Because
+# some people and some systems may not, there is another termcap ("ampex175")
+# that suppresses this little eccentricity by omitting the relevant capability.
+ampex175-b|ampex d175 using left arrow for erase:\
+ :kb=^_:\
+ :tc=ampex175:
+# From: Richard Bascove <atd!dsd!rcb@ucbvax.berkeley.edu>
+# (ampex210: removed obsolete ":kn#10:" -- esr)
+ampex210|a210|ampex a210:\
+ :am:bs:hs:xn:\
+ :co#80:it#8:li#24:sg#1:\
+ :al=\EE:bt=\EI:cd=\Ey:ce=\Et:cl=\E*:cm=\E=%+ %+ :dc=\EW:\
+ :dl=\ER:ei=:fs=\E.2:ho=^^:ic=\EQ:if=/usr/share/tabset/std:\
+ :im=:is=\EC\Eu\E'\E(\El\EA\E%\E{\E.2\EG0\Ed\En:\
+ :k0=^A0\r:k1=^A1\r:k2=^A2\r:k3=^A3\r:k4=^A4\r:k5=^A5\r:\
+ :k6=^A6\r:k7=^A7\r:k8=^A8\r:k9=^A9\r:kd=^V:kh=^^:kl=^H:\
+ :kr=^L:ku=^K:le=^H:mk@:nd=^L:ta=^I:ts=\E.0\Eg\E}\Ef:up=^K:\
+ :vb=\EU\EX\EU\EX\EU\EX\EU\EX:\
+ :tc=adm+sgr:
+# (ampex219: I added <rmam>/<smam> based on the init string, added :vs:
+# from ampex219w, added :ve:=\E[?3l, irresistibly suggested by :vs:,
+# and moved the padding to be *after* the caps -- esr)
+ampex219|ampex-219|amp219|Ampex with Automargins:\
+ :hs:xn:\
+ :co#80:it#8:li#24:\
+ :RA=\E[?7l:SA=\E[?7h:bl=^G:bt=\E[Z:cd=\E[J:ce=\E[K:\
+ :cl=\E[H\E[2J:cm=\E[%i%d;%dH:cr=^M:cs=%i\E[%2;%2r:\
+ :do=\E[B:ho=\E[H:\
+ :is=\E>\E[?1l\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h:k0=\E[21~:\
+ :k1=\E[7~:k2=\E[8~:k3=\E[9~:k4=\E[10~:k5=\E[11~:k6=\E[17~:\
+ :k7=\E[18~:k8=\E[19~:k9=\E[20~:kd=\E[B:ke=\E>:kh=\E[H:\
+ :kl=\E[D:kr=\E[C:ks=\E=:ku=\E[A:le=^H:mb=\E[5m:md=\E[1m:\
+ :me=\E[m:mh=\E[1m:mr=\E[7m:nd=\E[C:se=\E[m:sf=^J:so=\E[7m:\
+ :sr=\EM:ta=^I:ue=\E[m:up=\E[A:us=\E[4m:ve=\E[?3l:vs=\E[?3h:
+ampex219w|ampex-219w|amp219w|Ampex 132 cols:\
+ :co#132:li#24:\
+ :bl=^G:cr=^M:do=^J:is=\E>\E[?3h\E[?4l\E[?5l\E[?7h\E[?8h:\
+ :sf=^J:\
+ :tc=ampex219:
+# (ampex232: removed :if=/usr/share/tabset/ampex:, no file and no :st: --esr)
+ampex232|ampex-232|Ampex Model 232:\
+ :am:\
+ :co#80:li#24:sg#1:\
+ :al=5*\EE:bt=\EI:cd=\EY:ce=\ET:cl=\E+:cm=\E=%+ %+ :dc=\EW:\
+ :dl=5*\ER:do=^V:ei=:ic=\EQ:im=:is=\Eg\El:k0=^A@\r:k1=^AA\r:\
+ :k2=^AB\r:k3=^AC\r:k4=^AD\r:k5=^AE\r:k6=^AF\r:k7=^AG\r:\
+ :k8=^AH\r:k9=^AI\r:kb=^H:kd=^V:kh=^^:kl=^H:kr=^L:ku=^K:le=^H:\
+ :mk@:nd=^L:ta=^I:up=^K:vb=\Eb\Ed:ve=\E.4:vi=\E.0:\
+ :tc=adm+sgr:
+# (ampex: removed :if=/usr/share/tabset/amp-132:, no file and no :st: -- esr)
+ampex232w|Ampex Model 232 / 132 columns:\
+ :co#132:li#24:\
+ :is=\E\034Eg\El:tc=ampex232:
+
+#### Ann Arbor (aa)
+#
+# Ann Arbor made dream terminals for hackers -- large screen sizes and huge
+# numbers of function keys. At least some used monitors in portrait mode,
+# allowing up to 76-character screen heights! They were reachable at:
+#
+# Ann Arbor Terminals
+# 6175 Jackson Road
+# Ann Arbor, MI 48103
+# (313)-663-8000
+#
+# But in 1996 the phone number reaches some kitschy retail shop, and Ann Arbor
+# can't be found on the Web; I fear they're long dead. R.I.P.
+#
+
+
+# Originally from Mike O'Brien@Rand and Howard Katseff at Bell Labs.
+# Highly modified 6/22 by Mike O'Brien.
+# split out into several for the various screen sizes by dave-yost@rand
+# Modifications made 3/82 by Mark Horton
+# Modified by Tom Quarles at UCB for greater efficiency and more diversity
+# status line moved to top of screen, :vb: removed 5/82
+# Some unknown person at SCO then hacked the init strings to make them more
+# efficient.
+#
+# assumes the following setup:
+# A menu: 0000 1010 0001 0000
+# B menu: 9600 0100 1000 0000 0000 1000 0000 17 19
+# C menu: 56 66 0 0 9600 0110 1100
+# D menu: 0110 1001 1 0
+#
+# Briefly, the settings are for the following modes:
+# (values are for bit set/clear with * indicating our preference
+# and the value used to test these termcaps)
+# Note that many of these settings are irrelevent to the terminfo
+# and are just set to the default mode of the terminal as shipped
+# by the factory.
+#
+# A menu: 0000 1010 0001 0000
+# Block/underline cursor*
+# blinking/nonblinking cursor*
+# key click/no key click*
+# bell/no bell at column 72*
+#
+# key pad is cursor control*/key pad is numeric
+# return and line feed/return for :cr: key *
+# repeat after .5 sec*/no repeat
+# repeat at 25/15 chars per sec. *
+#
+# hold data until pause pressed/process data unless pause pressed*
+# slow scroll/no slow scroll*
+# Hold in area/don't hold in area*
+# functions keys have default*/function keys disabled on powerup
+#
+# show/don't show position of cursor during page transmit*
+# unused
+# unused
+# unused
+#
+# B menu: 9600 0100 1000 0000 0000 1000 0000 17 19
+# Baud rate (9600*)
+#
+# 2 bits of parity - 00=odd,01=even*,10=space,11=mark
+# 1 stop bit*/2 stop bits
+# parity error detection off*/on
+#
+# keyboard local/on line*
+# half/full duplex*
+# disable/do not disable keyboard after data transmission*
+#
+# transmit entire page/stop transmission at cursor*
+# transfer/do not transfer protected characters*
+# transmit all characters/transmit only selected characters*
+# transmit all selected areas/transmit only 1 selected area*
+#
+# transmit/do not transmit line separators to host*
+# transmit/do not transmit page tab stops tabs to host*
+# transmit/do not transmit column tab stop tabs to host*
+# transmit/do not transmit graphics control (underline,inverse..)*
+#
+# enable*/disable auto XON/XOFF control
+# require/do not require receipt of a DC1 from host after each LF*
+# pause key acts as a meta key/pause key is pause*
+# unused
+#
+# unused
+# unused
+# unused
+# unused
+#
+# XON character (17*)
+# XOFF character (19*)
+#
+# C menu: 56 66 0 0 9600 0110 1100
+# number of lines to print data on (printer) (56*)
+#
+# number of lines on a sheet of paper (printer) (66*)
+#
+# left margin (printer) (0*)
+#
+# number of pad chars on new line to printer (0*)
+#
+# printer baud rate (9600*)
+#
+# printer parity: 00=odd,01=even*,10=space,11=mark
+# printer stop bits: 2*/1
+# print/do not print guarded areas*
+#
+# new line is: 01=LF,10=CR,11=CRLF*
+# unused
+# unused
+#
+# D menu: 0110 1001 1 0
+# LF is newline/LF is down one line, same column*
+# wrap to preceding line if move left from col 1*/don't wrap
+# wrap to next line if move right from col 80*/don't wrap
+# backspace is/is not destructive*
+#
+# display*/ignore DEL character
+# display will not/will scroll*
+# page/column tab stops*
+# erase everything*/erase unprotected only
+#
+# editing extent: 0=display,1=line*,2=field,3=area
+#
+# unused
+#
+
+annarbor4080|aa4080|ann arbor 4080:\
+ :am:bs:\
+ :co#80:li#40:\
+ :bl=^G:cl=\014:\
+ :..cm=\017%p2%{10}%/%{16}%*%p2%{10}%m%+%c%p1%?%p1%{19}%>%t%{12}%+%;%{64}%+%c:\
+ :cr=^M:ct=^^P^P:do=^J:ho=^K:kb=^^:kd=^J:kh=^K:kl=^H:kr=^_:\
+ :ku=^N:le=^H:nd=^_:sf=^J:st=^]^P1:ta=^I:up=^N:
+
+# Strange Ann Arbor terminal from BRL
+aas1901|Ann Arbor K4080 w/S1901 mod:\
+ :am:\
+ :co#80:li#40:\
+ :bl=^G:cl=^L:cr=^M:do=^J:ho=^K:kb=^H:kd=^J:kl=^H:le=^H:\
+ :ll=^O\0c:nd=^_:nw=^M^J:sf=^J:ta=^I:up=^N:
+
+# If you're using the GNU termcap library, add
+# :cS=\E[%p1%d;%p2%d;%p3%d;%p4%dp:
+# to these capabilities. This is the nonstandard GNU termcap scrolling
+# capability, arguments are:
+# 1. Total number of lines on the screen.
+# 2. Number of lines above desired scroll region.
+# 3. Number of lines below (outside of) desired scroll region.
+# 4. Total number of lines on the screen, the same as the first parameter.
+# The generic Ann Arbor entry is the only one that uses this.
+# (untranslatable capabilities removed to fit entry within 1023 bytes)
+# (sgr removed to fit entry within 1023 bytes)
+# (terminfo-only capabilities suppressed to fit entry within 1023 bytes)
+aaa+unk|aaa-unk|ann arbor ambassador (internal - don't use this directly):\
+ :am:bs:km:mi:xo:\
+ :co#80:it#8:\
+ :AL=\E[%dL:DC=\E[%dP:DL=\E[%dM:DO=\E[%dB:IC=\E[%d@:\
+ :LE=\E[%dD:RI=\E[%dC:UP=\E[%dA:al=\E[L:bl=^G:bt=\E[Z:\
+ :cd=\E[J:ce=\E[K:cl=\E[H\E[J:cm=\E[%i%d;%dH:cr=^M:\
+ :ct=\E[2g:dc=\E[P:dl=\E[M:do=^K:ei=:ho=\E[H:\
+ :i1=\E[m\E7\E[H\E9\E8:i2=\E[1Q\E[>20;30l\EP`+x~M\E\:\
+ :ic=\E[@:im=:k1=\EOA:k2=\EOB:k3=\EOC:k4=\EOD:k5=\EOE:\
+ :k6=\EOF:k7=\EOG:k8=\EOH:k9=\EOI:kD=\E[P:kI=\E[@:kb=^H:\
+ :kd=\E[B:\
+ :ke=\EP`>y~[[J`8xy~[[A`4xy~[[D`6xy~[[C`2xy~[[B\E\:\
+ :kh=\E[H:kl=\E[D:kr=\E[C:\
+ :ks=\EP`>z~[[J`8xz~[[A`4xz~[[D`6xz~[[C`2xz~[[B\E\:\
+ :ku=\E[A:le=^H:mb=\E[5m:md=\E[1m:me=\E[m:mm=\E[>52h:\
+ :mo=\E[>52l:mr=\E[7m:nd=\E[C:rc=\E8:sc=\E7:se=\E[m:sf=^K:\
+ :so=\E[7m:st=\EH:ta=^I:ue=\E[m:up=\E[A:us=\E[4m:
+
+aaa+rv|ann arbor ambassador in reverse video:\
+ :i1=\E[7m\E7\E[H\E9\E8:mb=\E[5;7m:md=\E[1;7m:\
+ :me=\E[7m\016:mk=\E[7;8m:mr=\E[m:r1=\E[H\E[7m\E[J:\
+ :..sa=\E[%?%p1%p3%|%!%t7;%;%?%p2%t4;%;%?%p4%t5;%;%?%p6%t1;%;%?%p7%t8;%;m:\
+ :se=\E[7m:so=\E[m:ue=\E[7m:us=\E[4;7m:
+# Ambassador with the DEC option, for partial vt100 compatibility.
+aaa+dec|ann arbor ambassador in dec vt100 mode:\
+ :ac=aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}:\
+ :ae=^N:as=^O:cs=\E[%i%d;%dr:eA=\E(0:\
+ :..sa=\E[%?%p1%p3%|%!%t7;%;%?%p2%t4;%;%?%p4%t5;%;%?%p6%t1;%;%?%p7%t8;%;m%?%p9%t\017%e\016%;:
+aaa-18|ann arbor ambassador/18 lines:\
+ :li#18:\
+ :is=\E7\E[60;0;0;18p\E8:te=\E[60;0;0;18p\E[60;1H\E[K:\
+ :ti=\E[18;0;0;18p:\
+ :tc=aaa+unk:
+aaa-18-rv|ann arbor ambassador/18 lines+reverse video:\
+ :tc=aaa+rv:tc=aaa-18:
+aaa-20|ann arbor ambassador/20 lines:\
+ :li#20:\
+ :is=\E7\E[60;0;0;20p\E8:te=\E[60;0;0;20p\E[60;1H\E[K:\
+ :ti=\E[20;0;0;20p:\
+ :tc=aaa+unk:
+aaa-22|ann arbor ambassador/22 lines:\
+ :li#22:\
+ :is=\E7\E[60;0;0;22p\E8:te=\E[60;0;0;22p\E[60;1H\E[K:\
+ :ti=\E[22;0;0;22p:\
+ :tc=aaa+unk:
+aaa-24|ann arbor ambassador/24 lines:\
+ :li#24:\
+ :is=\E7\E[60;0;0;24p\E8:te=\E[60;0;0;24p\E[60;1H\E[K:\
+ :ti=\E[24;0;0;24p:\
+ :tc=aaa+unk:
+aaa-24-rv|ann arbor ambassador/24 lines+reverse video:\
+ :tc=aaa+rv:tc=aaa-24:
+aaa-26|ann arbor ambassador/26 lines:\
+ :li#26:\
+ :is=\E7\E[60;0;0;26p\E8:te=\E[60;0;0;26p\E[26;1H\E[K:\
+ :ti=\E[H\E[J\E[26;0;0;26p:\
+ :tc=aaa+unk:
+aaa-28|ann arbor ambassador/28 lines:\
+ :li#28:\
+ :is=\E7\E[60;0;0;28p\E8:te=\E[60;0;0;28p\E[28;1H\E[K:\
+ :ti=\E[H\E[J\E[28;0;0;28p:\
+ :tc=aaa+unk:
+aaa-30-s|aaa-s|ann arbor ambassador/30 lines w/status:\
+ :es:hs:\
+ :li#29:\
+ :ds=\E7\E[60;0;0;30p\E[1;1H\E[K\E[H\E8\r\n\E[K:\
+ :fs=\E[>51l:is=\r\n\E[A\E7\E[60;1;0;30p\E8:\
+ :te=\E[60;1;0;30p\E[29;1H\E[K:\
+ :ti=\E[H\E[J\E[30;1;0;30p\E[30;1H\E[K:\
+ :ts=\E[>51h\E[1;%p1%dH\E[2K:tc=aaa+unk:
+aaa-30-s-rv|aaa-s-rv|ann arbor ambassador/30 lines+status+reverse video:\
+ :tc=aaa+rv:tc=aaa-30-s:
+aaa-s-ctxt|aaa-30-s-ctxt|ann arbor ambassador/30 lines+status+save context:\
+ :te=\E[60;1;0;30p\E[59;1H\E[K:\
+ :ti=\E[30;1H\E[K\E[30;1;0;30p:tc=aaa-30-s:
+aaa-s-rv-ctxt|aaa-30-s-rv-ct|ann arbor ambassador/30 lines+status+save context+reverse video:\
+ :te=\E[60;1;0;30p\E[59;1H\E[K:\
+ :ti=\E[30;1H\E[K\E[30;1;0;30p:tc=aaa-30-s-rv:
+aaa|aaa-30|ambas|ambassador|ann arbor ambassador/30 lines:\
+ :li#30:\
+ :is=\E7\E[60;0;0;30p\E8:te=\E[60;0;0;30p\E[30;1H\E[K:\
+ :ti=\E[H\E[J\E[30;0;0;30p:\
+ :tc=aaa+unk:
+aaa-30-rv|aaa-rv|ann arbor ambassador/30 lines in reverse video:\
+ :tc=aaa+rv:tc=aaa-30:
+aaa-30-ctxt|aaa-ctxt|ann arbor ambassador/30 lines; saving context:\
+ :te=\E[60;0;0;30p\E[60;1H\E[K:ti=\E[30;0;0;30p:\
+ :tc=aaa-30:
+aaa-30-rv-ctxt|aaa-rv-ctxt|ann arbor ambassador/30 lines reverse video; saving context:\
+ :te=\E[60;0;0;30p\E[60;1H\E[K:ti=\E[30;0;0;30p:\
+ :tc=aaa+rv:tc=aaa-30:
+aaa-36|ann arbor ambassador/36 lines:\
+ :li#36:\
+ :is=\E7\E[60;0;0;36p\E8:te=\E[60;0;0;36p\E[36;1H\E[K:\
+ :ti=\E[H\E[J\E[36;0;0;36p:\
+ :tc=aaa+unk:
+aaa-36-rv|ann arbor ambassador/36 lines+reverse video:\
+ :tc=aaa+rv:tc=aaa-36:
+aaa-40|ann arbor ambassador/40 lines:\
+ :li#40:\
+ :is=\E7\E[60;0;0;40p\E8:te=\E[60;0;0;40p\E[40;1H\E[K:\
+ :ti=\E[H\E[J\E[40;0;0;40p:\
+ :tc=aaa+unk:
+aaa-40-rv|ann arbor ambassador/40 lines+reverse video:\
+ :tc=aaa+rv:tc=aaa-40:
+aaa-48|ann arbor ambassador/48 lines:\
+ :li#48:\
+ :is=\E7\E[60;0;0;48p\E8:te=\E[60;0;0;48p\E[48;1H\E[K:\
+ :ti=\E[H\E[J\E[48;0;0;48p:\
+ :tc=aaa+unk:
+aaa-48-rv|ann arbor ambassador/48 lines+reverse video:\
+ :tc=aaa+rv:tc=aaa-48:
+aaa-60-s|ann arbor ambassador/59 lines+status:\
+ :es:hs:\
+ :li#59:\
+ :ds=\E7\E[60;0;0;60p\E[1;1H\E[K\E[H\E8\r\n\E[K:\
+ :fs=\E[>51l:is=\r\n\E[A\E7\E[60;1;0;60p\E8:\
+ :ts=\E[>51h\E[1;%p1%dH\E[2K:tc=aaa+unk:
+aaa-60-s-rv|ann arbor ambassador/59 lines+status+reverse video:\
+ :tc=aaa+rv:tc=aaa-60-s:
+aaa-60-dec-rv|ann arbor ambassador/dec mode+59 lines+status+rev video:\
+ :tc=aaa+dec:tc=aaa+rv:tc=aaa-60-s:
+aaa-60|ann arbor ambassador/60 lines:\
+ :li#60:\
+ :is=\E7\E[60;0;0;60p\E[1Q\E[m\E[>20;30l\E8:tc=aaa+unk:
+aaa-60-rv|ann arbor ambassador/60 lines+reverse video:\
+ :tc=aaa+rv:tc=aaa-60:
+aaa-db|ann arbor ambassador 30/destructive backspace:\
+ :bs@:\
+ :i2=\E[1Q\E[m\E[>20l\E[>30h:le=\E[D:tc=aaa-30:
+
+guru|guru-33|guru+unk|ann arbor guru/33 lines 80 cols:\
+ :li#33:\
+ :i2=\E[>59l:is=\E7\E[255;0;0;33;80;80p\E8\E[J:\
+ :te=\E[255p\E[255;1H\E[K:ti=\E[33p:vb=\E[>59h\E[>59l:\
+ :tc=aaa+unk:
+guru+rv|guru changes for reverse video:\
+ :i2=\E[>59h:vb=\E[>59l\E[>59h:
+guru-rv|guru-33-rv|ann arbor guru/33 lines+reverse video:\
+ :tc=guru+rv:tc=guru-33:
+guru+s|guru status line:\
+ :es:hs:\
+ :ds=\E7\E[;0p\E[1;1H\E[K\E[H\E8\r\n\E[K:fs=\E[>51l:\
+ :te=\E[255;1p\E[255;1H\E[K:ti=:\
+ :ts=\E[>51h\E[1;%p1%dH\E[2K:
+guru-nctxt|guru with no saved context:\
+ :ti=\E[H\E[J\E[33p\E[255;1H\E[K:tc=guru:
+guru-s|guru-33-s|ann arbor guru/33 lines+status:\
+ :li#32:\
+ :is=\r\n\E[A\E7\E[255;1;0;33;80;80p\E8\E[J:\
+ :ti=\E[33;1p\E[255;1H\E[K:tc=guru+s:\
+ :tc=guru+unk:
+guru-24|ann arbor guru 24 lines:\
+ :co#80:li#24:\
+ :is=\E7\E[255;0;0;24;80;80p\E8\E[J:ti=\E[24p:tc=guru+unk:
+guru-44|ann arbor guru 44 lines:\
+ :co#97:li#44:\
+ :is=\E7\E[255;0;0;44;97;100p\E8\E[J:ti=\E[44p:tc=guru+unk:
+guru-44-s|ann arbor guru/44 lines+status:\
+ :li#43:\
+ :is=\r\n\E[A\E7\E[255;1;0;44;80;80p\E8\E[J:\
+ :ti=\E[44;1p\E[255;1H\E[K:tc=guru+s:\
+ :tc=guru+unk:
+guru-76|guru with 76 lines by 89 cols:\
+ :co#89:li#76:\
+ :is=\E7\E[255;0;0;76;89;100p\E8\E[J:ti=\E[76p:tc=guru+unk:
+guru-76-s|ann arbor guru/76 lines+status:\
+ :co#89:li#75:\
+ :is=\r\n\E[A\E7\E[255;1;0;76;89;100p\E8\E[J:\
+ :ti=\E[76;1p\E[255;1H\E[K:tc=guru+s:\
+ :tc=guru+unk:
+guru-76-lp|guru-lp|guru with page bigger than line printer:\
+ :co#134:li#76:\
+ :is=\E7\E[255;0;0;76;134;134p\E8\E[J:ti=\E[76p:tc=guru+unk:
+guru-76-w|guru 76 lines by 178 cols:\
+ :co#178:li#76:\
+ :is=\E7\E[255;0;0;76;178;178p\E8\E[J:ti=\E[76p:tc=guru+unk:
+guru-76-w-s|ann arbor guru/76 lines+status+wide:\
+ :co#178:li#75:\
+ :is=\r\n\E[A\E7\E[255;1;0;76;178;178p\E8\E[J:\
+ :ti=\E[76;1p\E[255;1H\E[K:\
+ :tc=guru+s:tc=guru+unk:
+guru-76-wm|guru 76 lines by 178 cols with 255 cols memory:\
+ :co#178:li#76:\
+ :is=\E7\E[255;0;0;76;178;255p\E8\E[J:ti=\E[76p:tc=guru+unk:
+aaa-rv-unk|ann arbor unknown type:\
+ :Nl#0:lh#0:lw#0:\
+ :ho=\E[H:i1=\E[7m\E7\E[H\E9\E8:mb=\E[5;7m:md=\E[1;7m:\
+ :me=\E[7m:mk=\E[7;8m:mr=\E[m:r1=\E[H\E[7m\E[J:\
+ :..sa=\E[%?%p1%!%t7;%;%?%p2%t4;%;%?%p3%t7;%;%?%p4%t5;%;%?%p6%t1;%;%?%p7%t8;%;m:\
+ :se=\E[7m:so=\E[m:ue=\E[7m:us=\E[4;7m:
+
+#### Applied Digital Data Systems (adds)
+#
+# ADDS itself is long gone. ADDS was bought by NCR, and the same group made
+# ADDS and NCR terminals. When AT&T and NCR merged, the engineering for
+# terminals was merged again. Then AT&T sold the terminal business to
+# SunRiver, which later changed its name to Boundless Technologies. The
+# engineers from Teletype, AT&T terminals, ADDS, and NCR (who are still there
+# as of early 1995) are at:
+#
+# Boundless Technologies
+# 100 Marcus Boulevard
+# Hauppauge, NY 11788-3762
+# Vox: (800)-231-5445
+# Fax: (516)-342-7378
+# Web: http://boundless.com
+#
+# Their voice mail used to describe the place as "SunRiver (formerly ADDS)".
+# In 1995 Boundless acquired DEC's terminals business.
+#
+
+# Regent: lowest common denominator, works on all regents.
+# (regent: renamed ":bc:" to ":le:" -- esr)
+regent|Adds Regent Series:\
+ :am:bs:\
+ :co#80:li#24:\
+ :bl=^G:cl=^L:cr=^M:do=^J:ho=\EY :le=^U:ll=^A:nd=^F:sf=^J:\
+ :up=^Z:
+# Regent 100 has a bug where if computer sends escape when user is holding
+# down shift key it gets confused, so we avoid escape.
+regent100|Adds Regent 100:\
+ :sg#1:\
+ :bl=^G:cm=\013%+ %B\020%.:k0=^B1\r:k1=^B2\r:k2=^B3\r:\
+ :k3=^B4\r:k4=^B5\r:k5=^B6\r:k6=^B7\r:k7=^B8\r:l0=F1:l1=F2:\
+ :l2=F3:l3=F4:l4=F5:l5=F6:l6=F7:l7=F8:me=\E0@:se=\E0@:so=\E0P:\
+ :ue=\E0@:us=\E0`:\
+ :tc=regent:
+regent20|Adds Regent 20:\
+ :bl=^G:cd=\Ek:ce=\EK:cm=\EY%+ %+ :tc=regent:
+regent25|Adds Regent 25:\
+ :bl=^G:kd=^J:kh=^A:kl=^U:kr=^F:ku=^Z:tc=regent20:
+regent40|Adds Regent 40:\
+ :sg#1:\
+ :al=\EM:bl=^G:dl=\El:k0=^B1\r:k1=^B2\r:k2=^B3\r:k3=^B4\r:\
+ :k4=^B5\r:k5=^B6\r:k6=^B7\r:k7=^B8\r:l0=F1:l1=F2:l2=F3:\
+ :l3=F4:l4=F5:l5=F6:l6=F7:l7=F8:me=\E0@:se=\E0@:so=\E0P:\
+ :ue=\E0@:us=\E0`:\
+ :tc=regent25:
+regent40+|Adds Regent 40+:\
+ :is=\EB:tc=regent40:
+regent60|regent200|Adds Regent 60:\
+ :dc=\EE:ei=\EF:im=\EF:is=\EV\EB:kD=\EE:kI=\EF:kM=\EF:\
+ :se=\ER\E0@\EV:so=\ER\E0P\EV:\
+ :tc=regent40+:
+# From: <edward@onyx.berkeley.edu> Thu Jul 9 09:27:33 1981
+# (viewpoint: added :kr:, function key, and :dl: capabilities -- esr)
+viewpoint|addsviewpoint|adds viewpoint:\
+ :am:bs:\
+ :co#80:li#24:\
+ :bl=^G:cd=\Ek:ce=\EK:cl=^L:cm=\EY%+ %+ :cr=^M:dl=\El:do=^J:\
+ :is=\017\E0`:k0=^B1:k2=^B2:k3=^B\041:k4=^B":k5=^B#:kd=^J:\
+ :kh=^A:kl=^U:kr=^F:ku=^Z:le=^H:ll=^A:me=^O:nd=^F:se=^O:sf=^J:\
+ :so=^N:ue=^O:up=^Z:us=^N:ve=\017\E0`:vs=\017\E0P:
+# Some viewpoints have bad ROMs that foo up on ^O
+screwpoint|adds viewpoint with ^O bug:\
+ :se@:so@:ue@:us@:vs@:tc=viewpoint:
+
+# From: Jay S. Rouman <jsr@dexter.mi.org> 5 Jul 92
+# The :vi:/:ve:/:sa:/:me: strings were added by ESR from specs.
+# Theory; the vp3a+ wants \E0%c to set highlights, where normal=01000000,
+# underline=01100000, rev=01010000, blink=01000010,dim=01000001,
+# invis=01000100 and %c is the logical or of desired attributes.
+# There is also a `tag bit' enabling attributes, set by \E) and unset by \E(.
+vp3a+|viewpoint3a+|adds viewpoint 3a+:\
+ :am:bw:\
+ :co#80:it#8:li#24:\
+ :cd=\EY:ce=\ET:cl=\E*:cm=\E=%+ %+ :cr=^M:do=^J:ho=^^:kb=^H:\
+ :kd=^J:kh=^^:kl=^H:kr=^L:ku=^K:le=^H:me=\E(:nd=^L:nw=^M^J:\
+ :..sa=\E0%{64}%?%p1%tQ%|%;%?%p2%t%{96}%|%;%?%p3%tP%|%;%?%p4%t%{2}%|%;%?%p5%t%{1}%|%;%?%p7%tD%|%;%c\E):\
+ :se=\E(:sf=^J:so=\E0Q\E):ta=^I:up=^K:ve=^X:vi=^W:
+vp60|viewpoint60|addsvp60|adds viewpoint60:\
+ :tc=regent40:
+#
+# adds viewpoint 90 - from cornell
+# Note: emacs sends ei occasionally to insure the terminal is out of
+# insert mode. This unfortunately puts the viewpoint90 IN insert
+# mode. A hack to get around this is :ic=\EF\s\EF^U:. (Also,
+# - :ei=:im=: must be present in the termcap translation.)
+# - :xs: indicates glitch that attributes stick to location
+# - :ms: means it's safe to move in standout mode
+# - :cl=\EG\Ek:: clears screen and visual attributes without affecting
+# the status line
+# Function key and label capabilities merged in from SCO.
+vp90|viewpoint90|adds viewpoint 90:\
+ :bs:bw:ms:xs:\
+ :co#80:li#24:\
+ :cd=\Ek:ce=\EK:cl=\EG\Ek:cm=\EY%+ %+ :dc=\EE:dl=\El:do=^J:\
+ :ei=:ho=\EY :ic=\EF \EF\025:im=:k0=^B1\r:k1=^B2\r:\
+ :k2=^B3\r:k3=^B4\r:k4=^B5\r:k5=^B6\r:k6=^B7\r:k7=^B8\r:\
+ :k8=^B9\r:k9=^B\072\r:k;=^B;\r:kb=^H:kd=^J:kh=^A:kl=^U:\
+ :kr=^F:ku=^Z:l0=F1:l1=F2:l2=F3:l3=F4:l4=F5:l5=F6:l6=F7:l7=F8:\
+ :l8=F9:l9=F10:la=F11:le=^H:ll=^A:me=\ER\E0@\EV:nd=^F:\
+ :se=\ER\E0@\EV:sf=^J:so=\ER\E0Q\EV:ta=^I:ue=\ER\E0@\EV:\
+ :up=^Z:us=\ER\E0`\EV:
+# Note: if return acts weird on a980, check internal switch #2
+# on the top chip on the CONTROL pc board.
+adds980|a980|adds consul 980:\
+ :am:bs:\
+ :co#80:li#24:\
+ :al=\E\016:bl=^G:cl=\014\013@:cm=\013%+@\E\005%2:cr=^M:\
+ :dl=\E\017:do=^J:k0=\E0:k1=\E1:k2=\E2:k3=\E3:k4=\E4:k5=\E5:\
+ :k6=\E6:k7=\E7:k8=\E8:k9=\E9:le=^H:me=^O:nd=\E^E01:se=^O:\
+ :sf=^J:so=^Y^^^N:
+
+# Beehive documentation is undated and marked Preliminary and has no figures
+# so we must have early Superbee2 (Model 600, according to phone conversation
+# with mfr.). It has proved reliable except for some missing padding
+# (notably after \EK and <nl> at bottom of screen).
+#
+# The key idea is that AEP mode is poison for :cm: & that US's in
+# the local memory should be avoided like the plague. That means
+# that the 2048 character local buffer is used as 25 lines of 80
+# characters, period. No scrolling local memory, folks. It also
+# appears that we cannot use naked INS LINE feature since it uses
+# US. The sbi fakes :al: with an 80-space insert that may be too
+# slow at low speeds; also spaces get converted to \040 which is
+# too long for some programs (not vi). DEL LINE is ok but slow.
+#
+# The <nl> string is designed for last line of screen ONLY; cup to
+# 25th line corrects the motion inherent in scrolling to Page 1.
+#
+# There is one understood bug. It is that the screen appears to
+# pop to a new (blank) page after a :nw:, or leave a half-line
+# ellipsis to a quad that is the extra 48 memory locations. The
+# data received is dumped into memory but not displayed. Not to
+# worry if :cm: is being used; the lines not displayed will be,
+# whenever the cursor is moved up there. Since :cm: is addressed
+# relative to MEMORY of window, nothing is lost; but beware of
+# relative cursor motion (:up:,:do:,:nd:,:le:). Recommended,
+# therefore, is setenv MORE -c .
+#
+# WARNING: Not all features tested.
+#
+# Timings are assembled from 3 sources. Some timings may reflect
+# SB2/Model 300 that were used if more conservative.
+# Tested on a Model 600 at 1200 and 9600 bd.
+#
+# The BACKSPACEkb option is cute. The NEWLINE key, so cleverly
+# placed on the keyboard and useless because of AEP, is made
+# into a backspace key. In use ESC must be pressed twice (to send)
+# and sending ^C must be prefixed by ESC to avoid that weird
+# transmit mode associated with ENTER key.
+#
+# IF TERMINAL EVER GOES CATATONIC with the cursor buzzing across
+# the screen, then it has dropped into ENTER mode; hit
+# RESET--ONLINE--!tset.
+#
+# As delivered this machine has a FATAL feature that will throw
+# it into that strange transmit state (SPOW) if the space bar is
+# hit after a CR is received, but before receiving a LF (or a
+# few others).
+#
+# The circuits MUST be modified to eliminate the SPOW latch.
+# This is done by strapping on chip A46 of the I/O board; cut
+# the p.c. connection to Pin 5 and strap Pin 5 to Pin 8 of that
+# chip. This mod has been checked out on a Mod 600 of Superbee II.
+# With this modification absurdly high timings on cr are
+# unnecessary.
+#
+# NOTE WELL that the rear panel switch should be set to CR/LF,
+# not AEP!
+#
+sb1|beehive superbee:\
+ :am:bs:bw:da:db:mi:ul:xb:\
+ :co#80:li#25:sg#1:\
+ :al=\EN\EL\EQ \EP \EO\ER\EA:\
+ :bl=^G:bt=\E`:cd=\EJ:ce=\EK:cl=\EH\EJ:cm=\EF%r%03%03:cr=\r:\
+ :ct=\E3:dc=\EP:dl=\EM:do=^J:ei=\ER:ho=\EH:im=\EQ\EO:\
+ :is=\EE\EX\EZ\EO\Eb\Eg\ER:k0=\E2:k1=\Ep:k2=\Eq:k3=\Er:\
+ :k4=\Es:k5=\Et:k6=\Eu:k7=\Ev:k8=\Ew:k9=\E1:kE=\EK:kI=\EQ\EO:\
+ :kL=\EM:kM=\ER:kS=\EJ:kb=^_:kd=\EB:kh=\EH:kl=\ED:kr=\EC:\
+ :ku=\EA:l0=TAB CLEAR:l9=TAB SET:le=^H:me=\E_3:nd=\EC:\
+ :se=\E_3:sf=^J:so=\E_1:st=\E1:ta=^I:te=:ti=\EO:ue=\E_3:\
+ :up=\EA:us=\E_0:
+sbi|superbee|beehive superbee at Indiana U.:\
+ :xb:\
+ :al=1\EN\EL\EQ \EP \EO\ER\EA:cr=\r:tc=sb1:
+# Alternate (older) description of Superbee - f1=escape, f2=^C.
+# Note: there are at least 3 kinds of superbees in the world. The sb1
+# holds onto escapes and botches ^C's. The sb2 is the best of the 3.
+# The sb3 puts garbage on the bottom of the screen when you scroll with
+# the switch in the back set to CRLF instead of AEP. This description
+# is tested on the sb2 but should work on all with either switch setting.
+# The f1/f2 business is for the sb1 and the :xb: can be taken out for
+# the other two if you want to try to hit that tiny escape key.
+# This description is tricky: being able to use cup depends on there being
+# 2048 bytes of memory and the hairy <nl> string.
+superbee-xsb|beehive super bee:\
+ :am:da:db:xb:\
+ :co#80:it#8:li#25:\
+ :cd=\EJ:ce=\EK:cl=\EH\EJ:cm=\EF%r%3%3:cr=\r:ct=\E3:dc=\EP:\
+ :dl=\EM:do=^J:ho=\EH:is=\EH\EJ:k1=\Ep:k2=\Eq:k3=\Er:k4=\Es:\
+ :k5=\Et:k6=\Eu:k7=\Ev:k8=\Ew:kd=\EB:kh=\EH:kl=\ED:kr=\EC:\
+ :ku=\EA:le=^H:me=\E_3:nd=\EC:se=\E_3:\
+ :sf=\n\0\0\0\n\0\0\0\EA\EK\0\0\0\ET\ET:so=\E_1:st=\E1:\
+ :ta=^I:up=\EA:ve=^J:
+# This loses on lines > 80 chars long, use at your own risk
+superbeeic|super bee with insert char:\
+ :ei=\ER:ic=:im=\EQ:tc=superbee-xsb:
+sb2|sb3|fixed superbee:\
+ :xb@:tc=superbee:
+
+#### Beehive Medical Electronics
+#
+# Steve Seymour <srseymour@mindspring.com> writes (Wed, 03 Feb 1999):
+# Regarding your question though; Beehive terminals weren't made by Harris.
+# They were made by Beehive Medical Electronics in Utah. They went out of
+# business in the early '80s.
+#
+# (OK, then, I don't know why a couple of these say "harris beehive".)
+#
+
+# Reports are that most of these Beehive entries (except superbee) have not
+# been tested and do not work right. :se: is a trouble spot. Be warned.
+
+# (bee: :ic: was empty, which is obviously bogus -- esr)
+beehive|bee|harris beehive:\
+ :am:bs:mi:\
+ :co#80:li#24:\
+ :al=\EL:bt=\E>:cd=\EJ:ce=\EK:cl=\EE:cm=\EF%+ %+ :dc=\EP:\
+ :dl=\EM:do=\EB:ei=\E@:ho=\EH:im=\EQ:kA=\EL:kB=\E>:kC=\EE:\
+ :kD=\EP:kE=\EK:kI=\EQ:kL=\EM:kM=\E@:kb=^H:kd=\EB:kh=\EH:\
+ :kl=\ED:kr=\EC:ku=\EA:le=^H:me=\Ed@:nd=\EC:se=\Ed@:so=\EdP:\
+ :ue=\Ed@:up=\EA:us=\Ed`:
+# set tab is ^F, clear (one) tab is ^V, no way to clear all tabs.
+# good grief - does this entry make :sg:/:ug: when it doesn't have to?
+# look at those spaces in :se:/:so:. Seems strange to me...
+# (beehive: :if=/usr/share/tabset/beehive: removed, no such file. If you
+# really care, cook up one using ^F -- esr)
+beehive3|bh3m|beehiveIIIm|harris beehive 3m:\
+ :am:bs:\
+ :co#80:it#8:li#20:\
+ :al=\023:bl=^G:cd=^R:ce=^P:cl=^E^R:cr=^M:dl=\021:do=^J:ho=^E:\
+ :le=^H:ll=^E^K:nd=^L:se= ^_:sf=^J:so=^] :st=^F:ta=^I:up=^K:
+beehive4|bh4|beehive 4:\
+ :am:\
+ :co#80:li#24:\
+ :bl=^G:cd=\EJ:ce=\EK:cl=\EE:cr=^M:do=^J:ho=\EH:le=\ED:nd=\EC:\
+ :sf=^J:up=\EA:
+# There was an early Australian kit-built computer called a "Microbee".
+# It's not clear whether this is for one of those or for a relative
+# of the Beehive.
+microb|microbee|micro bee series:\
+ :am:bs:\
+ :co#80:it#8:li#24:\
+ :bl=^G:cd=\EJ:ce=\EK:cl=\EE:cm=\EF%+ %+ :cr=^M:do=^J:k1=\Ep:\
+ :k2=\Eq:k3=\Er:k4=\Es:k5=\Et:k6=\Eu:k7=\Ev:k8=\Ew:k9=\Ex:\
+ :kd=\EB:kh=\EH:kl=\ED:kr=\EC:ku=\EA:le=^H:me=\Ed@:nd=\EC:\
+ :se=\Ed@:sf=^J:so= \EdP:ta=^I:ue=\Ed@:up=\EA:us=\Ed`:
+
+#### C. Itoh Electronics
+#
+# As of 1995 these people no longer make terminals (they're still in the
+# printer business). Their terminals were all clones of the DEC VT series.
+# They're located in Orange County, CA.
+#
+
+# CIT 80 - vt-52 emulator, the termcap has been modified to remove
+# the delay times and do an auto tab set rather than the indirect
+# file used in vt100.
+cit80|cit-80|citoh 80:\
+ :am:bs:\
+ :co#80:li#24:\
+ :cd=\EJ:ce=\EK:cl=\E[H\EJ:cm=\E[%i%2;%2H:cr=^M:ff=^L:\
+ :is=\E>:kd=\EOB:ke=\E[?1l\E>:kl=\EOD:kr=\EOC:ks=\E[?1h\E=:\
+ :ku=\EOA:le=^H:nd=\E[C:sf=^J:up=\E[A:
+# From: Tim Wood <mtxinu!sybase!tim> Fri Sep 27 09:39:12 PDT 1985
+# (cit101: added <rmam>/<smam> based on init string, merged this with c101 -- esr)
+cit101|citc|C.itoh fast vt100:\
+ :am:bs:xn:\
+ :co#80:li#24:\
+ :RA=\E[?7l:SA=\E[?7h:al=\E[L:bl=^G:cd=\E[J:ce=\E[K:\
+ :cl=\E[H\E[2J:cm=\E[%i%d;%dH:dc=\E[P:dl=\E[M:ei=:ic=\E[@:\
+ :im=:is=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h\E[3g\E[>5g:\
+ :kd=\EOB:ke=\E[?1l\E>:kl=\EOD:kr=\EOC:ks=\E[?1h\E=:\
+ :ku=\EOA:le=^H:me=\E[m:nd=\E[C:se=\E[m:so=\E[7m:ue=\E[m:\
+ :up=\E[A:us=\E[4m:vb=\E[?5h\E[?5l:ve=\E[V\E8:vs=\E7\E[U:
+# CIE Terminals CIT-101e from Geoff Kuenning <callan!geoff> via BRL
+# The following termcap entry was created from the Callan cd100 entry. The
+# last two lines (with the capabilities in caps) are used by RM-cobol to allow
+# full selection of combinations of reverse video, underline, and blink.
+# (cit101e: removed unknown :f0=\EOp:f1=\EOq:f2=\EOr:f3=\EOs:f4=\EOt:f5=\EOu:\
+# f6=\EOv:f7=\EOw:f8=\EOx:f9=\EOy:AB=\E[0;5m:AL=\E[m:AR=\E[0;7m:AS=\E[0;5;7m:\
+# :NB=\E[0;1;5m:NM=\E[0;1m:NR=\E[0;1;7m:NS=\E[0;1;5;7m: -- esr)
+cit101e|C. Itoh CIT-101e:\
+ :am:bs:mi:ms:pt:\
+ :co#80:it#8:li#24:\
+ :ac=:ae=^O:al=\E[L:as=^N:cd=\E[J:ce=\E[K:cl=\E[H\E[J:\
+ :cm=\E[%i%2;%2H:cs=\E[%i%2;%2r:dc=\E[P:dl=\E[M:do=\E[B:\
+ :ei=\E[4l:if=/usr/share/tabset/vt100:im=\E[4h:k0=\EOT:\
+ :k1=\EOP:k2=\EOQ:k3=\EOR:k4=\EOS:k5=\EOm:k6=\EOl:k7=\EOM:\
+ :k8=\EOn:kd=\E[B:ke=\E>:kl=\E[D:kr=\E[C:ks=\E=:ku=\E[A:\
+ :nd=\E[C:rc=\E8:sc=\E7:se=\E[m:so=\E[7m:sr=\EM:ue=\E[m:\
+ :up=\E[A:us=\E[4m:ve=:vs=\E[?1l\E[?4l\E[?7h:
+# From: David S. Lawyer, June 1997:
+# The CIT 101-e was made in Japan in 1983-4 and imported by CIE
+# Terminals in Irvine, CA. It was part of CITOH Electronics. In the
+# late 1980's CIT Terminals went out of business.
+# There is no need to use the initialization string is=... (by invoking
+# tset or setterm etc.) provided that the terminal has been manually set
+# up (and the setup saved with ^S) to be compatible with this termcap. To be
+# compatible it should be in ANSI mode (not VT52). A set-up that
+# works is to set all the manually setable stuff to factory defaults
+# by pressing ^D in set-up mode. Then increse the brighness with the
+# up-arrow key since the factory default will likely be dim on an old
+# terminal. Then change any options you want (provided that they are
+# compatible with the termcap). For my terminal I set: Screen
+# Background: light; Keyclicks: silent; Auto wraparound: on; CRT saver:
+# on. I also set up mine for parity (but you may not need it). Then
+# save the setup with ^S.
+# (cit101e-rv: added empty :te: to suppress a tic warning. --esr)
+cit101e-rv|Citoh CIT-101e (sets reverse video):\
+ :am:eo:mi:ms:xn:xo:\
+ :co#80:it#8:li#24:\
+ :AL=\E[%dL:DC=\E[%dP:DL=\E[%dM:DO=\E[%dB:IC=\E[%d@:\
+ :LE=\E[%dD:RI=\E[%dC:SF=\E[%dS:SR=\E[%dT:UP=\E[%dA:\
+ :al=\E[L:bl=^G:bt=\E[Z:cd=\E[J:ce=\E[K:ch=\E[%i%dG:\
+ :cl=\E[H\E[J:cm=\E[%i%d;%dH:cr=^M:cs=\E[%i%d;%dr:\
+ :ct=\E[3g:dc=\E[P:dl=\E[M:do=\E[B:ei=\E[4l:ho=\E[H:ic=\E[@:\
+ :im=\E[4h:\
+ :is=\E<\E>\E[?1l\E[?3l\E[?4l\E[?5h\E[?7h\E[?8h\E[3g\E[>5g\E(B\E[m\E[20l\E[1;24r\E[24;1H:\
+ :k1=\EOP:k2=\EOQ:k3=\EOR:k4=\EOS:kb=\177:kd=\E[B:kl=\E[D:\
+ :kr=\E[C:ku=\E[A:le=^H:mb=\E[5m:md=\E[1m:me=\E[m:mr=\E[7m:\
+ :nd=\E[C:nl=\EM:nw=\EE:r1=\Ec\E[?7h\E[>5g:rc=\E8:sc=\E7:\
+ :se=\E[m:sf=^J:so=\E[7m:sr=\EM:st=\EH:ta=^I:te=:\
+ :ti=\E[>5g\E[?7h\E[?5h:u6=\E[%i%d;%dR:u7=\E[6n:\
+ :u8=\E[?6c:u9=\E[c:ue=\E[m:up=\E[A:us=\E[4m:\
+ :vb=200\E[?5l\E[?5h:ve=\E[0;3;4v:vi=\E[1v:vs=\E[3;5v:
+cit101e-n|CIT-101e w/o am:\
+ :am@:\
+ :kb=^H:kd=^J:kl=^H:vs=\E[?1l\E[?4l\E[?7l:tc=cit101e:
+cit101e-132|CIT-101e with 132 cols:\
+ :co#132:\
+ :kb=^H:kd=^J:kl=^H:tc=cit101e:
+cit101e-n132|CIT-101e with 132 cols w/o am:\
+ :am@:\
+ :co#132:\
+ :kb=^H:kd=^J:kl=^H:vs=\E[?1l\E[?4l\E[?7l:tc=cit101e:
+# CIE Terminals CIT-500 from BRL
+# The following SET-UP modes are assumed for normal operation:
+# GENERATE_XON/XOFF:YES DUPLEX:FULL NEWLINE:OFF
+# AUTOWRAP:ON MODE:ANSI SCREEN_LENGTH:64_LINES
+# DSPLY_CNTRL_CODES?NO PAGE_WIDTH:80 EDIT_MODE:OFF
+# Other SET-UP modes may be set for operator convenience or communication
+# requirements.
+# Hardware tabs are assumed to be set every 8 columns; they can be set up
+# by the "reset", "tset", or "tabs" utilities. No delays are specified; use
+# "stty ixon -ixany" to enable DC3/DC1 flow control!
+# (cit500: I added <rmam>/<smam> based on the init string -- esr)
+cit500|CIE Terminals CIT-500:\
+ :bs:mi:ms:pt:xo:\
+ :co#80:it#8:kn#10:li#64:vt#3:\
+ :AL=\E[%dL:DL=\E[%dM:DO=\E[%dB:LE=\E[%dD:RA=\E[?7l:\
+ :RI=\E[%dC:SA=\E[?7h:UP=\E[%dA:ac=:ae=^O:al=\E[L:as=^N:\
+ :bl=^G:bt=\E[Z:cd=\EJ:ce=\EK:cl=\E[H\E[J:cm=\E[%i%d;%dH:\
+ :cr=^M:cs=\E[%i%d;%dr:ct=\E[3g:dc=\E[P:dl=\E[M:do=^J:\
+ :ei=\E[4l:ho=\E[H:im=\E[4h:is=\E<\E)0:k0=\EOP:k1=\EOQ:\
+ :k2=\EOR:k3=\EOS:k4=\EOU:k5=\EOV:k6=\EOW:k7=\EOX:k8=\EOY:\
+ :k9=\EOZ:kA=\E[L:kB=\E[Z:kD=\E[P:kE=\EK:kI=\E[4h:kL=\E[M:\
+ :kM=\E[4l:kS=\EJ:kb=^H:kd=\EOB:ke=\E[?1l\E>:kh=\E[H:\
+ :kl=\EOD:kr=\EOC:ks=\E[?1h\E=:ku=\EOA:l0=PF1:l1=PF2:l2=PF3:\
+ :l3=PF4:l4=F15:l5=F16:l6=F17:l7=F18:l8=F19:l9=F20:le=^H:\
+ :ll=\E[64H:mb=\E[5m:md=\E[1m:me=\E[m:mr=\E[7m:nd=\E[C:\
+ :nw=\EE:\
+ :r1=\E<\E2\E[20l\E[?6l\E[r\E[m\E[q\E(B\017\E)0\E>:\
+ :rc=\E8:sc=\E7:se=\E[m:sf=^J:so=\E[7m:sr=\EM:st=\EH:ta=^I:\
+ :ue=\E[m:up=\EM:us=\E[4m:
+
+# C. Itoh printers begin here
+citoh|ci8510|8510|c.itoh 8510a:\
+ :co#80:it#8:\
+ :is=\E(009\054017\054025\054033\054041\054049\054057\054065\054073.:\
+ :le@:md=\E\041:me=\E"\EY:rp=\ER%r%03%.:sr=\Er:ue=\EY:\
+ :us=\EX:\
+ :tc=lpr:
+citoh-pica|citoh in pica:\
+ :i1=\EN:tc=citoh:
+citoh-elite|citoh in elite:\
+ :co#96:\
+ :i1=\EE:\
+ :is=\E(009\054017\054025\054033\054041\054049\054057\054065\054073\054081\054089.:tc=citoh:
+citoh-comp|citoh in compressed:\
+ :co#136:\
+ :i1=\EQ:\
+ :is=\E(009\054017\054025\054033\054041\054049\054057\054065\054073\054081\054089\054097\054105\054113\054121\054129.:tc=citoh:
+# citoh has infinite cols because we don't want lp ever inserting \n\t**.
+citoh-prop|citoh-ps|ips|citoh in proportional spacing mode:\
+ :co#32767:\
+ :i1=\EP:tc=citoh:
+citoh-6lpi|citoh in 6 lines per inch mode:\
+ :i2=\EA:tc=citoh:
+citoh-8lpi|citoh in 8 lines per inch mode:\
+ :li#88:\
+ :i2=\EB:tc=citoh:
+
+#### Control Data (cdc)
+#
+
+cdc456|cdc 456 terminal:\
+ :am:bs:\
+ :co#80:li#24:\
+ :al=\EL:bl=^G:cd=^X:ce=^V:cl=^Y^X:cm=\E1%+ %+ :cr=^M:dl=\EJ:\
+ :do=^J:ho=^Y:le=^H:nd=^L:sf=^J:up=^Z:
+
+# Assorted CDC terminals from BRL (improvements by DAG & Ferd Brundick)
+cdc721|CDC Viking:\
+ :am:bs:\
+ :co#80:li#24:\
+ :ce=^K:cl=^L:cm=\002%r%+ %+ :ho=^Y:kd=^J:kh=^Y:kl=^H:kr=^I:\
+ :ku=^W:nd=^X:up=^W:
+cdc721ll|CDC Vikingll:\
+ :am:bs:\
+ :co#132:li#24:\
+ :ce=^K:cl=^L:cm=\002%r%+ %+ :ho=^Y:kd=^J:kh=^Y:kl=^H:kr=^I:\
+ :ku=^W:nd=^X:up=^W:
+# (cdc752: the BRL entry had :ll=\E1 ^Z: commented out
+cdc752|CDC 752:\
+ :am:bs:bw:xs:\
+ :co#80:li#24:\
+ :bl=^G:ce=^V:cl=\030\E1 :cm=\E1%r%+ %+ :cr=^M:do=^J:\
+ :ho=\E1 :le=^H:ll=^Y:nd=^U:r1=\E1 \030\002\003\017:\
+ :sf=^J:up=^Z:
+# CDC 756
+# The following switch/key settings are assumed for normal operation:
+# 96 chars SCROLL FULL duplex not BLOCK
+# Other switches may be set according to communication requirements.
+# Insert/delete-character cannot be used, as the whole display is affected.
+# "so" & "se" are commented out until jove handles "sg" correctly.
+cdc756|CDC 756:\
+ :am:bs:bw:\
+ :co#80:kn#10:li#24:\
+ :al=6*\EL:bl=^G:cd=^X:ce=^V:cl=^Y^X:cm=\E1%r%+ %+ :cr=^M:\
+ :dl=6*\EJ:do=^J:ho=^Y:k0=\EA:k1=\EB:k2=\EC:k3=\ED:k4=\EE:\
+ :k5=\EF:k6=\EG:k7=\EH:k8=\Ea:k9=\Eb:kA=\EL:kD=\EI:kE=^V:\
+ :kI=\EK:kL=\EL:kS=^X:kT=^O:kb=^H:kd=^J:kh=^Y:kl=^H:kr=^U:\
+ :ku=^Z:l0=F1:l1=F2:l2=F3:l3=F4:l4=F5:l5=F6:l6=F7:l7=F8:l8=F9:\
+ :l9=F10:le=^H:ll=^Y^Z:nd=^U:r1=\031\030\002\003\017:sf=^J:\
+ :up=^Z:
+#
+# CDC 721 from Robert Viduya, Ga. Tech. <ihnp4!gatech!gitpyr!robert> via BRL.
+#
+# Part of the long initialization string defines the "DOWN" key to the left
+# of the tab key to send an ESC. The real ESC key is positioned way out
+# in right field.
+#
+# The termcap won't work in 132 column mode due to the way it it moves the
+# cursor. Termcap doesn't have the capability (as far as I could tell) to
+# handle the 721 in 132 column mode.
+#
+# (cdc721: changed :ri: to :sr: -- esr)
+cdc721-esc|Control Data 721:\
+ :am:bs:bw:ms:pt:xo:\
+ :co#80:it#8:kn#10:li#30:\
+ :al=^^R:bl=^G:bt=^^^K:cd=^^P:ce=^K:cl=^L:cm=\002%r%+ %+ :\
+ :ct=^^^RY:dc=^^N:dl=^^Q:do=^Z:ei=:ho=^Y:ic=^^O:im=:\
+ :is=\036\022B\003\036\035\017\022\025\035\036E\036\022H\036\022J\036\022L\036\022N\036\022P\036\022Q\036\022\036\022\136\036\022b\036\022i\036W =\036\022Z\036\011C1-` `\041k/o:\
+ :k0=^^q:k1=^^r:k2=^^s:k3=^^t:k4=^^u:k5=^^v:k6=^^w:k7=^^x:\
+ :k8=^^y:k9=^^z:kb=^H:kd=^Z:ke=^^^Rl:kh=^Y:kl=^H:kr=^X:\
+ :ks=^^^Rk:ku=^W:le=^H:ll=^B =:mb=^N:\
+ :me=\017\025\035\036E\036\022\:mh=^\:mk=^^^R[:mr=^^D:\
+ :nd=^X:se=^^E:sf=\036W =\036U:so=^^D:sr=\036W =\036V:\
+ :st=^^^RW:ue=^]:up=^W:us=^\:
+
+#### Getronics
+#
+# Getronics is a Dutch electronics company that at one time was called
+# `Geveke' and made async terminals; but (according to the company itself!)
+# they've lost all their documentation on the command set. The hardware
+# documentation suggests the terminals were actually manufactured by a
+# Taiwanese electronics company named Cal-Comp. There are known
+# to have been at least two models, the 33 and the 50.
+#
+
+# The 50 seems to be a top end vt220 clone, with the addition of a higher
+# screen resolution, a larger screen, at least 1 page of memory above and
+# below the screen, apparently pages of memory right and left of the screen
+# which can be panned, and about 75 function keys (15 function keys x normal,
+# shift, control, func A, func B). It also has more setup possibilities than
+# the vt220. The monitor case is dated November 1978 and the keyboard case is
+# May 1982.
+#
+# The vt100 emulation works as is. The entry below describes the rather
+# non-conformant (but more featureful) ANSI mode.
+#
+# From: Stephen Peterson <stv@utrecht.ow.nl>, 27 May 1995
+# (untranslatable capabilities removed to fit entry within 1023 bytes)
+# (sgr removed to fit entry within 1023 bytes)
+# (terminfo-only capabilities suppressed to fit entry within 1023 bytes)
+visa50|geveke visa 50 terminal in ansi 80 character mode:\
+ :bw:mi:ms:\
+ :co#80:li#25:\
+ :AL=\E[%dL:DC=\E[%dX:DL=\E[%dM:DO=\E[%dB:IC=\E[%d@:\
+ :K1=\E[f:K2=\EOP:K3=\EOQ:K4=\EOR:K5=\EOS:LE=\E[%dD:\
+ :RI=\E[%dC:UP=\E[%dA:ae=\E[3l:al=\E[L:as=\E3h:bl=^G:\
+ :bt=\E[Z:cd=\E[J:ce=\E[K:cl=\E[H\E[2J:cm=\E[%i%d;%dH:\
+ :cr=^M:cs=\E[%i%d;%dr:ct=\E[3g:dc=\E[X:dl=\E[M:do=\E[B:\
+ :ei=\E[4l:ho=\E[H:ic=\E[@:im=\E[4h:\
+ :is=\E0;2m\E[1;25r\E[25;1H\E[?3l\E[?7h\E[?8h:k0=\E010:\
+ :k1=\E001:k2=\E002:k3=\E003:k4=\E004:k5=\E005:k6=\E006:\
+ :k7=\E007:k8=\E008:k9=\E009:kD=\177:kb=^H:kd=\E[A:ke=\E>:\
+ :kh=\E[f:kl=\E[D:kr=\E[C:ks=\E=:ku=\E[A:le=\E[D:mb=\E[5m:\
+ :md=\E[1m:me=\E[0;2m:mh=\E[2m:mr=\E[7m:nd=\E[C:nw=^M^J:\
+ :se=\E[0;2m:sf=^J:so=\E[2;7m:ta=^I:ue=\E[0m:up=\E[A:\
+ :us=\E[4m:vb=\E[?5h\E[?5l:
+
+#### Human Designed Systems (Concept)
+#
+# Human Designed Systems
+# 400 Fehley Drive
+# King of Prussia, PA 19406
+# Vox: (610)-277-8300
+# Fax: (610)-275-5739
+# Net: support@hds.com
+#
+# John Martin <john@hds.com> is their termcap expert. They're mostly out of
+# the character-terminal business now (1995) and making X terminals. In
+# particular, the whole `Concept' line described here was discontinued long
+# ago.
+#
+
+# From: <vax135!hpk> Sat Jun 27 07:41:20 1981
+# Extensive changes to c108 by arpavax:eric Feb 1982
+# Some unknown person at SCO then translated it to terminfo.
+#
+# There seem to be a number of different versions of the C108 PROMS
+# (with bug fixes in its Z-80 program).
+#
+# The first one that we had would lock out the keyboard of you
+# sent lots of short lines (like /usr/dict/words) at 9600 baud.
+# Try that on your C108 and see if it sends a ^S when you type it.
+# If so, you have an old version of the PROMs.
+#
+# You should configure the C108 to send ^S/^Q before running this.
+# It is much faster (at 9600 baud) than the c100 because the delays
+# are not fixed.
+# new status line display entries for c108-8p:
+# :i3: - init str #3 - setup term for status display -
+# set programmer mode, select window 2, define window at last
+# line of memory, set bkgnd stat mesg there, select window 0.
+#
+# :ts: - to status line - select window 2, home cursor, erase to
+# end-of-window, 1/2 bright on, goto(line#0, col#?)
+#
+# :fs: - from status line - 1/2 bright off, select window 0
+#
+# :ds: - disable status display - set bkgnd status mesg with
+# illegal window #
+#
+# There are probably more function keys that should be added but
+# I don't know what they are.
+#
+# No delays needed on c108 because of ^S/^Q handshaking
+#
+c108|concept108|c108-8p|concept108-8p|concept 108 w/8 pages:\
+ :i2=\EU\E z"\Ev\001\177 \041p\E ;"\E z \Ev \001\177p\Ep\n:\
+ :te=\Ev \001\177p\Ep\r\n:\
+ :tc=c108-4p:
+c108-4p|concept108-4p|concept 108 w/4 pages:\
+ :bs:es:hs:xo:\
+ :pb@:\
+ :ac=jEkTl\mMqLxU:ae=\Ej :as=\Ej\041:\
+ :..cm=\Ea%p1%?%p1%{95}%>%t\001%{96}%-%;%{32}%+%c%p2%?%p2%{95}%>%t\001%{96}%-%;%{32}%+%c:\
+ :cr=^M:dc=\E 1:ds=\E ;\177:fs=\Ee\E z :i1=\EK\E\041\E F:\
+ :i2=\EU\E z"\Ev\177 \041p\E ;"\E z \Ev \001 p\Ep\n:\
+ :sf=^J:te=\Ev \001 p\Ep\r\n:ti=\EU\Ev 8p\Ep\r\E\025:\
+ :ts=\E z"\E?\E\005\EE\Ea %+ :ve=\Ew:vs=\EW:\
+ :tc=c100:
+c108-rv|c108-rv-8p|concept 108 w/8 pages in reverse video:\
+ :te=\Ev \002 p\Ep\r\n:ti=\EU\Ev 8p\Ep\r:\
+ :tc=c108-rv-4p:
+c108-rv-4p|concept108rv4p|concept 108 w/4 pages in reverse video:\
+ :i1=\Ek:se=\Ee:so=\EE:vb=\EK\Ek:\
+ :tc=c108-4p:
+c108-w|c108-w-8p|concept108-w-8|concept108-w8p|concept 108 w/8 pages in wide mode:\
+ :co#132:\
+ :i1=\E F\E":te=\Ev ^A0\001D\Ep\r\n:\
+ :ti=\EU\Ev 8\001D\Ep\r:tc=c108-8p:
+
+# Concept 100:
+# These have only window relative cursor addressing, not screen
+# relative. To get it to work right here, smcup/rmcup (which
+# were invented for the concept) lock you into a one page
+# window for screen style programs.
+#
+# To get out of the one page window, we use a clever trick:
+# we set the window size to zero ("\Ev " in rmcup) which the
+# terminal recognizes as an error and resets the window to all
+# of memory.
+#
+# This trick works on c100 but does not on c108, sigh.
+#
+# Some tty drivers use cr3 for concept, others use nl3, hence
+# the delays on cr and ind below. This padding is only needed at
+# 9600 baud and up. One or the other is commented out depending on
+# local conventions.
+#
+# 2 ms padding on :te: isn't always enough. 6 works fine. Maybe
+# less than 6 but more than 2 will work.
+#
+# Note: can't use function keys f7-f10 because they are
+# indistinguishable from arrow keys (!), also, del char and
+# clear eol use xon/xoff so they probably won't work very well.
+#
+# Also note that we don't define insrt/del char/delline/eop/send
+# because they don't transmit unless we reset them - I figured
+# it was a bad idea to clobber their definitions.
+#
+# The <mc5> sequence changes the escape character to ^^ so that
+# escapes will be passed through to the printer. Only trouble
+# is that ^^ won't be - ^^ was chosen to be unlikely.
+# Unfortunately, if you're sending raster bits through to be
+# plotted, any character you choose will be likely, so we lose.
+#
+# \EQ"\EY(^W (send anything from printer to host, for xon/xoff)
+# cannot be # in is2 because it will hang a c100 with no printer
+# if sent twice.
+c100|concept100|concept|c104|c100-4p|hds concept 100:\
+ :am:bs:eo:mi:ul:xn:\
+ :co#80:li#24:pb#9600:vt#8:\
+ :al=\E\022:bl=^G:cd=\E\005:ce=\E\025:cl=\E?\E\005:\
+ :cm=\Ea%+ %+ :cr=\r:dc=\E\021:dl=\E\002:do=^J:ei=\E :\
+ :i1=\EK:i2=\Ev \Ep\n:im=\E^P:ip=:\
+ :is=\EU\Ef\E7\E5\E8\El\ENH\E\0\Eo&\0\Eo'\E\Eo\041\0\E\007\041\E\010A@ \E4#\072"\E\072a\E4#;"\E\072b\E4#<"\E\072c:\
+ :k1=\E5:k2=\E6:k3=\E7:k4=\E8:k5=\E9:k6=\E\072a:k7=\E\072b:\
+ :k8=\E\072c:kA=\E^R:kB=\E':kD=\E^Q:kE=\E^S:kF=\E[:kI=\E^P:\
+ :kL=\E^B:kM=\E\0:kN=\E-:kP=\E.:kR=\E\:kS=\E^C:kT=\E]:kb=^H:\
+ :kd=\E<:ke=\Ex:kh=\E?:kl=\E>:kr=\E=:ks=\EX:kt=\E_:ku=\E;:\
+ :le=^H:mb=\EC:me=\EN@:mh=\EE:mk=\EH:mp=\EI:mr=\ED:nd=\E=:\
+ :pf=\036o \E\EQ\041\EYP\027:\
+ :po=\EQ"\EY(\027\EYD\Eo \036:rp=\Er%.%+ :se=\Ed:sf=^J:\
+ :so=\ED:ta=\011:te=\Ev \Ep\r\n:\
+ :ti=\EU\Ev 8p\Ep\r\E\025:ue=\Eg:up=\E;:us=\EG:vb=\Ek\EK:
+c100-rv|c100-rv-4p|concept100-rv|c100 rev video:\
+ :i1=\Ek:se=\Ee:so=\EE:vb=\EK\Ek:ve@:vs@:tc=c100:
+oc100|oconcept|c100-1p|old 1 page concept 100:\
+ :in:\
+ :i3@:tc=c100:
+
+# From: Walter Skorski <walt@genetics1.JMP.TJU.EDU>, 16-oct-1996.
+# Lots of notes, originally inline, but ncurses doesn't grok that.
+#
+# am: not available in power on mode, but turned on with \E[=107;207h in
+# is2=. Also, \E=124l in is2= could have been used to prevent needing
+# to specify xenl:, but that would have rendered the last space on the
+# last line useless.
+# bw: Not available in power on mode, but turned on with \E[=107;207h in
+# is2=.
+# clear: Could be done with \E[2J alone, except that vi (and probably most
+# other programs) assume that this also homes the cursor.
+# dsl: Go to window 2, go to the beginning of the line, use a line feed to
+# scroll the window, and go back to window 1.
+# is2: the string may cause a warning to be issued by tic that it
+# found a very long line and that it suspects that a comma is missing
+# somewhere. This warning can be ignored (unless it comes up more than
+# once). The initialization string contains the following commands:
+#
+# [Setup mode items changed from factory defaults:]
+# \E)0 set alternate character set to
+# graphics
+# ^O set character set to default
+# [In case it wasn't]
+# \E[m turn off all attributes
+# [In case they weren't off]
+# \E[=107; cursor wrap and
+# 207h character wrap on
+# \E[90;3u set Fkey definitions to "transmit"
+# defaults
+# \E[92;3u set cursor key definitions to
+# "transmit" defaults
+# \E[43;1u set shift F13 to transmit...
+# \177\E$P\177
+# \E[44;1u set shift F14 to transmit...
+# \177\E$Q\177
+# \E[45;1u set shift F15 to transmit...
+# \177\E$R\177
+# \E[46;1u set shift F16 to transmit...
+# \177\E$S\177
+# \E[200;1u set shift up to transmit...
+# \177\E$A\177
+# \E[201;1u set shift down to transmit...
+# \177\E$B\177
+# \E[202;1u set shift right to transmit...
+# \177\E$C\177
+# \E[203;1u set shift left to transmit...
+# \177\E$D\177
+# \E[204;1u set shift home to transmit...
+# \177\E$H\177
+# \E[212;1u set backtab to transmit...
+# \177\E$I\177
+# \E[213;1u set shift backspace to transmit...
+# \177\E$^H\177
+# \E[214;1u set shift del to transmit...
+# "\E$\177"
+# [Necessary items not mentioned in setup mode:]
+# \E[2!w move to window 2
+# \E[25;25w define window as line 25 of memory
+# \E[!w move to window 1
+# \E[2*w show current line of window 2 as
+# status line
+# \E[2+x set meta key to use high bit
+# \E[;3+} move underline to bottom of character
+#
+# All Fkeys are set to their default transmit definitions with \E[90;3u
+# in is2=. IMPORTANT: to use this terminal definition, the "quit" stty
+# setting MUST be redefined or deactivated, because the default is
+# contained in almost all of this terminal's Fkey strings! If for some
+# reason "quit" cannot be altered, the Fkeys can, but it would be
+# necessary to change ^| to ^] in all of these definitions, and add
+# \E[2;029!t to is2.
+# lines: is set to 24 because this terminal refuses to treat the 25th
+# line normally.
+# ll: Not available in power on mode, but turned on with \E[=107;207h in
+# is2=.
+# lm: Pointless, given that this definition locks a single screen of
+# memory into view, but what the hey...
+# rmso: Could use \E[1;7!{ to turn off only bold and reverse (leaving any
+# other attributes alone), but some programs expect this to turn off
+# everything.
+# rmul: Could use \E[4!{ to turn off only underline (leaving any other
+# attributes alone), but some programs expect this to turn off
+# everything.
+# sgr: Attributes are set on this terminal with the string \E[ followed by
+# a list of attribute code numbers (in decimal, separated by
+# semicolons), followed by the character m. The attribute code
+# numbers are:
+# 1 for bold;
+# 2 for dim (which is ignored in power on mode);
+# 4 for underline;
+# 5 for blinking;
+# 7 for inverse;
+# 8 for not displayable; and
+# =99 for protected (except that there are strange side
+# effects to protected characters which make them inadvisable).
+# The mapping of terminfo parameters to attributes is as follows:
+# %p1 (standout) = bold and inverse together;
+# %p2 (underline) = underline;
+# %p3 (reverse) = inverse;
+# %p4 (blink) = blinking;
+# %p5 (dim) is ignored;
+# %p6 (bold) = bold;
+# %p7 (invisible) = not displayable;
+# %p8 (protected) is ignored; and
+# %p9 (alt char set) = alt char set.
+# The code to do this is:
+# \E[0 OUTPUT \E[0
+# %?%p1%p6%O IF (standout; bold) OR
+# %t;1 THEN OUTPUT ;1
+# %; ENDIF
+# %?%p2 IF underline
+# %t;4 THEN OUTPUT ;4
+# %; ENDIF
+# %?%p4 IF blink
+# %t;5 THEN OUTPUT ;5
+# %; ENDIF
+# %?%p1%p3%O IF (standout; reverse) OR
+# %t;7 THEN OUTPUT ;7
+# %; ENDIF
+# %?%p7 IF invisible
+# %t;8 THEN OUTPUT ;8
+# %; ENDIF
+# m OUTPUT m
+# %?%p9 IF altcharset
+# %t^N THEN OUTPUT ^N
+# %e^O ELSE OUTPUT ^O
+# %; ENDIF
+# sgr0: Everything is turned off (including alternate character set), since
+# there is no way of knowing what it is that the program wants turned
+# off.
+# smul: The "underline" attribute is reconfigurable to an overline or
+# strikethru, or (as done with \E[;3+} in is2=), to a line at the true
+# bottom of the character cell. This was done to allow for more readable
+# underlined characters, and to be able to distinguish between an
+# underlined space, an underscore, and an underlined underscore.
+# xenl: Terminal can be configured to not need this, but this "glitch"
+# behavior is actually preferable with autowrap terminals.
+#
+# Parameters kf31= thru kf53= actually contain the strings sent by the shifted
+# Fkeys. There are no parameters for shifted Fkeys in terminfo. The is2
+# string modifies the 'O' in kf43 to kf46 to a '$'.
+#
+# kcbt was originally ^I but redefined in is2=.
+# kHOM was \E[H originally but redefined in is2=, as were a number of
+# other keys.
+# kDC was originally \177 but redefined in is2=.
+#
+# kbs: Shift was also ^H originally but redefined as \E$^H in is2=.
+# tsl: Go to window 2, then do an hpa=.
+#
+#------- flash=\E[8;3!}^G\E[3;3!}
+#------- flash=\E[?5h$<100>\E[?5l
+# There are two ways to flash the screen, both of which have their drawbacks.
+# The first is to set the bell mode to video, transmit a bell character, and
+# set the bell mode back - but to what? There is no way of knowing what the
+# user's old bell setting was before we messed with it. Worse, the command to
+# set the bell mode also sets the key click volume, and there is no way to say
+# "leave that alone", or to know what it's set to, either.
+# The second way to do a flash is to set the screen to inverse video, pad for a
+# tenth of a second, and set it back - but like before, there's no way to know
+# that the screen wasn't ALREADY in inverse video, or that the user may prefer
+# it that way. The point is moot anyway, since vi (and probably other
+# programs) assume that by defining flash=, you want the computer to use it
+# INSTEAD of bel=, rather than as a secondary type of signal.
+#
+#------- cvvis=\E[+{
+# The is the power on setting, which is also as visible as the cursor
+# gets.
+#------- wind=\E[%i%p1%d;%p2%d;%p3%{1}%+%d;%p4%{1}%+%dw
+# Windowing is possible, but not defined here because it is also used to
+# emulate status line functions. Allowing a program to set a window could
+# clobber the status line or render it unusable. There is additional memory,
+# but screen scroll functions are destructive and do not make use of it.
+#
+#------- dim= Not available in power on mode.
+# You have a choice of defining low intensity characters as "half bright" and
+# high intensity as "normal", or defining low as "normal" and high as "bold".
+# No matter which you choose, only one of either "half bright" or "bold" is
+# available at any time, so taking the time to override the default is
+# pointless.
+#
+#------- prot=\E[=0;99m
+# Not defined, because it appears to have some strange side effects.
+#------- pfkey=%?%p1%{24}%<%p1%{30}%>%p1%{54}%<%A%O%t\E[%p1%du\177%p2%s\177%;
+#------- pfloc=%?%p1%{24}%<%p1%{30}%>%p1%{54}%<%A%O%t\E[%p1%du\177%p2%s\177%;
+#------- pfx=%?%p1%{24}%<%p1%{30}%>%p1%{54}%<%A%O%t\E[%p1%d;1u\177%p2%s\177%;
+# Available, but making them available to programs is inadvisable.
+# The code to do this is:
+# %?%p1%{24}%< IF ((key; 24) <;
+# %p1%{30}%> ((key; 30) >;
+# %p1%{54}%< (key; 54) <
+# %A ) AND
+# %O ) OR
+# [that is, "IF key < 24 OR (key > 30 AND key < 54)",]
+# %t\E[ THEN OUTPUT \E[
+# %p1%d OUTPUT (key) as decimal
+# [next line applies to pfx only]
+# ;1 OUTPUT ;1
+# u OUTPUT u
+# \177 OUTPUT \177
+# %p2%s OUTPUT (string) as string
+# \177 OUTPUT \177
+# [DEL chosen as delimiter, but could be any character]
+# [implied: ELSE do nothing]
+# %; ENDIF
+#
+#------- rs2=
+# Not defined since anything it might do could be done faster and easier with
+# either Meta-Shift-Reset or the main power switch.
+#
+#------- smkx=\E[1!z
+#------- rmkx=\E[!z
+# These sequences apply to the cursor and setup keys only, not to the
+# numeric keypad. But it doesn't matter anyway, since making these
+# available to programs is inadvisable.
+# For the key definitions below, all sequences beginning with \E$ are
+# custom and programmed into the terminal via is2. \E$ also has no
+# meaning to any other terminal.
+#
+#------- cmdch=\E[;%p1%d!t
+# Available, but making it available to programs is inadvisable.
+#------- smxon=\E[1*q
+# Available, but making it available to programs is inadvisable.
+# Terminal will send XON/XOFF on buffer overflow.
+#------- rmxon=\E[*q
+# Available, but making it available to programs is inadvisable.
+# Terminal will not notify on buffer overflow.
+#------- smm=\E[2+x
+#------- rmm=\E[+x
+# Available, but making them available to programs is inadvisable.
+#
+# Printing:
+# It's not made clear in the manuals, but based on other ansi/vt type
+# terminals, it's a good guess that this terminal is capable of both
+# "transparent print" (which doesn't copy data to the screen, and
+# therefore needs mc5i: specified to say so) and "auxilliary print"
+# (which does duplicate printed data on the screen, in which case mc4=
+# and mc5= should use the \E[?4i and \E[?5i strings instead).
+#
+# (esr: I have commented out is2 in order to avoid overflowing termcap's
+# 1024-byte limit.)
+
+# (untranslatable capabilities removed to fit entry within 1023 bytes)
+# (sgr removed to fit entry within 1023 bytes)
+# (terminfo-only capabilities suppressed to fit entry within 1023 bytes)
+hds200|Human Designed Systems HDS200:\
+ :am:bw:es:hs:km:mi:ms:xn:xo:\
+ :co#80:it#8:li#24:lm#0:\
+ :AL=\E[%dL:DC=\E[%dP:DL=\E[%dM:DO=\E[%dB:IC=\E[%d@:\
+ :LE=\E[%dD:RI=\E[%dC:UP=\E[%dA:ae=^O:al=\E[L:as=^N:bl=^G:\
+ :bt=\E[Z:cd=\E[J:ce=\E[K:cl=\E[H\E[J:cm=\E[%i%d;%dH:cr=^M:\
+ :cs=\E[%i%d;%dr:ct=\E[3g:dc=\E[P:dl=\E[M:do=\E[B:\
+ :ds=\E[2\041w\r\n\E[\041w:ei=\E[4l:fs=\E[\041w:ho=\E[H:\
+ :im=\E[4h:k1=^\001\r:k2=^\002\r:k3=^\003\r:k4=^\004\r:\
+ :k5=^\005\r:k6=^\006\r:k7=^\007\r:k8=^\008\r:k9=^\009\r:\
+ :kD=\177:kN=\E[U:kP=\E[V:kb=^H:kd=\E[B:kh=\E[H:kl=\E[D:\
+ :kr=\E[C:ku=\E[A:le=\E[D:ll=\E[H\E[A:mb=\E[0;5m:\
+ :md=\E[0;1m:me=\E[m\017:mr=\E[0;7m:nd=\E[C:nw=\E[E:rc=\E8:\
+ :sc=\E7:se=\E[m\017:sf=\ED:so=\E[0;1;7m:sr=\EM:st=\EH:\
+ :ta=^I:ts=\E[2\041w\E[%i%p1%dG:ue=\E[m\017:up=\E[A:\
+ :us=\E[0;4m:ve=\E[+{:vi=\E[6+{:
+
+# :ta: through :ce: included to specify padding needed in raw mode.
+# (avt-ns: added empty <acsc> to suppress a tic warning --esr)
+# (untranslatable capabilities removed to fit entry within 1023 bytes)
+# (sgr removed to fit entry within 1023 bytes)
+# (terminfo-only capabilities suppressed to fit entry within 1023 bytes)
+avt-ns|concept avt no status line:\
+ :am:bs:eo:mi:ul:xn:xo:\
+ :co#80:it#8:li#24:lm#192:\
+ :AL=\E[%dL:DL=\E[%dM:DO=\E[%dB:IC=\E[%d@:LE=\E[%dD:\
+ :RI=\E[%dC:UP=\E[%dA:ae=\016:al=\E[L:as=\017:bl=^G:bt=\E[Z:\
+ :cd=\E[J:ce=\E[K:cl=\E[H\E[J:cm=\E[%i%d;%dH:cr=^M:\
+ :cs=\E[%i%d;%dr:ct=\E[2g:dc=\E[P:dl=\E[M:do=^J:ei=\E4l:\
+ :ho=\E[H:i1=\E[=103l\E[=205l:ic=\E[@:im=\E1:ip=:\
+ :is=\E[1*q\E[2\041t\E[7\041t\E[=4;101;119;122l\E[=107;118;207h\E)1\E[1Q\EW\E[\041y\E[\041z\E>\E[0\0720\07232\041r\E[0*w\E[w\E2\r\n\E[2;27\041t:\
+ :k1=\EOP:k2=\EOQ:k3=\EOR:k4=\EOS:kD=\E^B\r:kI=\E^A\r:kb=^H:\
+ :kd=\E[B:ke=\E[\041z\E[0;2u:kh=\E[H:kl=\E[D:kr=\E[C:\
+ :ks=\E[1\041z\E[0;3u:ku=\E[A:le=^H:ll=\E[24H:mb=\E[5m:\
+ :md=\E[1m:me=\E[m:mh=\E[1\041{:mr=\E[7m:nd=\E[C:rc=\E8:\
+ :sc=\E7:se=\E[7\041{:sf=\n:so=\E[7m:sr=\EM:st=\EH:ta=\011:\
+ :te=\E[w\E2\r\n:ti=\E[=4l\E[1;24w\E2\r:ue=\E[4\041{:\
+ :up=\E[A:us=\E[4m:ve=\E[=119l:vs=\E[=119h:
+avt-rv-ns|concept avt in reverse video mode/no status line:\
+ :i1=\E[=103l\E[=205h:vb=\E[=205l\E[=205h:\
+ :tc=avt-ns:
+avt-w-ns|concept avt in 132 column mode/no status line:\
+ :i1=\E[=103h\E[=205l:ti=\E[H\E[1;24;1;132w:\
+ :tc=avt-ns:
+avt-w-rv-ns|concept avt in 132 column mode/no status line/reverse video:\
+ :i1=\E[=103h\E[=205h:ti=\E[H\E[1;24;1;132w:\
+ :vb=\E[=205l\E[=205h:tc=avt-ns:
+
+# Concept AVT with status line. We get the status line using the
+# "Background status line" feature of the terminal. We swipe the
+# first line of memory in window 2 for the status line, keeping
+# 191 lines of memory and 24 screen lines for regular use.
+# The first line is used instead of the last so that this works
+# on both 4 and 8 page AVTs. (Note the lm#191 or 192 - this
+# assumes an 8 page AVT but lm isn't currently used anywhere.)
+#
+avt+s|concept avt status line changes:\
+ :es:hs:\
+ :lm#191:\
+ :ds=\E[0*w:fs=\E[1;1\041w:\
+ :i2=\E[2w\E[2\041w\E[1;1;1;80w\E[H\E[2*w\E[1\041w\E2\r\n:\
+ :te=\E[2w\E2\r\n:ti=\E[2;25w\E2\r:\
+ :ts=\E[2;1\041w\E[;%p1%dH\E[2K:
+avt|avt-s|concept-avt|avt w/80 columns:\
+ :tc=avt+s:tc=avt-ns:
+avt-rv|avt-rv-s|avt reverse video w/sl:\
+ :i1=\E[=103l\E[=205h:vb=\E[=205l\E[=205h:tc=avt+s:tc=avt-ns:
+avt-w|avt-w-s|concept avt 132 cols+status:\
+ :i1=\E[=103h\E[=205l:ti=\E[H\E[1;24;1;132w:tc=avt+s:tc=avt-ns:
+avt-w-rv|avt-w-rv-s|avt wide+status+rv:\
+ :i1=\E[=103h\E[=205h:ti=\E[H\E[1;24;1;132w:\
+ :vb=\E[=205l\E[=205h:tc=avt+s:\
+ :tc=avt-ns:
+
+#### Contel Business Systems.
+#
+
+# Contel c300 and c320 terminals.
+contel300|contel320|c300|Contel Business Systems C-300 or C-320:\
+ :am:in:xo:\
+ :co#80:li#24:sg#1:\
+ :al=\EL:bl=^G:cd=\EJ:ce=\EI:cl=\EK:cm=\EX%+ \EY%+ :cr=^M:\
+ :ct=\E3:dc=\EO:dl=\EM:do=^J:ei=:ho=\EH:ic=\EN:im=:ip=:k0=\ERJ:\
+ :k1=\ERA:k2=\ERB:k3=\ERC:k4=\ERD:k5=\ERE:k6=\ERF:k7=\ERG:\
+ :k8=\ERH:k9=\ERI:kb=^H:le=^H:ll=\EH\EA:me=\E\041\0:nd=\EC:\
+ :se=\E\041\0:sf=^J:so=\E\041\r:st=\E1:up=\EA:\
+ :vb=\020\002\020\003:
+# Contel c301 and c321 terminals.
+contel301|contel321|c301|c321|Contel Business Systems C-301 or C-321:\
+ :ei=:ic@:im=:ip@:se=\E\041\0:so=\E\041\r:vb@:\
+ :tc=contel300:
+
+#### Data General (dg)
+#
+# According to James Carlson <carlson@xylogics.com> writing in January 1995,
+# the terminals group at Data General was shut down in 1991; all these
+# terminals have thus been discontinued.
+#
+# DG terminals have function keys that respond to the SHIFT and CTRL keys,
+# e.g., SHIFT-F1 generates a different code from F1. To number the keys
+# sequentially, first the unmodified key codes are listed as F1 through F15.
+# Then their SHIFT versions are listed as F16 through F30, their CTRL versions
+# are listed as F31 through F45, and their CTRL-SHIFT versions are listed as
+# F46 through F60. This is done in the private "includes" below whose names
+# start with "dgkeys+".
+#
+# DG terminals generally support 8 bit characters. For each of these terminals
+# two descriptions are supplied:
+# 1) A default description for 8 bits/character communications, which
+# uses the default DG international character set and keyboard codes.
+# 2) A description with suffix "-7b" for 7 bits/character communications.
+# This description must use the NON-DEFAULT native keyboard language.
+
+# Unmodified fkeys (kf1-kf11), Shift fkeys (kf12-kf22), Ctrl fkeys (kf23-kf33),
+# Ctrl/Shift fdkeys (kf34-kf44).
+
+# Most of these entries are `official' and came from DG. Others are marked.
+
+dgkeys+8b|Private entry describing DG terminal 8-bit ANSI mode special keys:\
+ :%9=\233i:F1=\233011z:F2=\233012z:F3=\233013z:\
+ :F4=\233014z:F5=\233000z:F6=\233101z:F7=\233102z:\
+ :F8=\233103z:F9=\233104z:FA=\233105z:FB=\233106z:\
+ :FC=\233107z:FD=\233108z:FE=\233109z:FF=\233110z:\
+ :FG=\233111z:FH=\233112z:FI=\233113z:FJ=\233114z:\
+ :FK=\233100z:FL=\233201z:FM=\233202z:FN=\233203z:\
+ :FO=\233204z:FP=\233205z:FQ=\233206z:FR=\233207z:\
+ :FS=\233208z:FT=\233209z:FU=\233210z:FV=\233211z:\
+ :FW=\233212z:FX=\233213z:FY=\233214z:FZ=\233200z:\
+ :Fa=\233301z:Fb=\233302z:Fc=\233303z:Fd=\233304z:\
+ :Fe=\233305z:Ff=\233306z:Fg=\233307z:Fh=\233308z:\
+ :Fi=\233309z:Fj=\233310z:Fk=\233311z:Fl=\233312z:\
+ :Fm=\233313z:Fn=\233314z:Fo=\233300z:K1=\233020z:\
+ :K3=\233021z:K4=\233022z:K5=\233023z:k1=\233001z:\
+ :k2=\233002z:k3=\233003z:k4=\233004z:k5=\233005z:\
+ :k6=\233006z:k7=\233007z:k8=\233008z:k9=\233009z:\
+ :k;=\233010z:kC=\2332J:kE=\233K:kd=\233B:kh=\233H:\
+ :kl=\233D:kr=\233C:ku=\233A:
+
+dgkeys+7b|Private entry describing DG terminal 7-bit ANSI mode special keys:\
+ :%9=\E[i:F1=\E[011z:F2=\E[012z:F3=\E[013z:F4=\E[014z:\
+ :F5=\E[000z:F6=\E[101z:F7=\E[102z:F8=\E[103z:F9=\E[104z:\
+ :FA=\E[105z:FB=\E[106z:FC=\E[107z:FD=\E[108z:FE=\E[109z:\
+ :FF=\E[110z:FG=\E[111z:FH=\E[112z:FI=\E[113z:FJ=\E[114z:\
+ :FK=\E[100z:FL=\E[201z:FM=\E[202z:FN=\E[203z:FO=\E[204z:\
+ :FP=\E[205z:FQ=\E[206z:FR=\E[207z:FS=\E[208z:FT=\E[209z:\
+ :FU=\E[210z:FV=\E[211z:FW=\E[212z:FX=\E[213z:FY=\E[214z:\
+ :FZ=\E[200z:Fa=\E[301z:Fb=\E[302z:Fc=\E[303z:Fd=\E[304z:\
+ :Fe=\E[305z:Ff=\E[306z:Fg=\E[307z:Fh=\E[308z:Fi=\E[309z:\
+ :Fj=\E[310z:Fk=\E[311z:Fl=\E[312z:Fm=\E[313z:Fn=\E[314z:\
+ :Fo=\E[300z:K1=\E[020z:K3=\E[021z:K4=\E[022z:K5=\E[023z:\
+ :k1=\E[001z:k2=\E[002z:k3=\E[003z:k4=\E[004z:k5=\E[005z:\
+ :k6=\E[006z:k7=\E[007z:k8=\E[008z:k9=\E[009z:k;=\E[010z:\
+ :kC=\E[2J:kE=\E[K:kd=\E[B:kh=\E[H:kl=\E[D:kr=\E[C:ku=\E[A:
+
+dgkeys+11|Private entry describing 11 minimal-subset DG mode special keys:\
+ :F1=^^{:F2=^^a:F3=^^b:F4=^^c:F5=^^d:F6=^^e:F7=^^f:F8=^^g:\
+ :F9=^^h:FA=^^i:FB=^^j:FC=^^k:FD=^^1:FE=^^2:FF=^^3:FG=^^4:\
+ :FH=^^5:FI=^^6:FJ=^^7:FK=^^8:FL=^^9:FM=^^\072:FN=^^;:\
+ :FO=^^\041:FP=^^":FQ=^^#:FR=^^$:FS=^^%:FT=^^&:FU=^^':FV=^^(:\
+ :FW=^^):FX=^^*:FY=^^+:k1=^^q:k2=^^r:k3=^^s:k4=^^t:k5=^^u:\
+ :k6=^^v:k7=^^w:k8=^^x:k9=^^y:k;=^^z:kC=^L:kE=^K:kd=^Z:kh=^H:\
+ :kl=^Y:kr=^X:ku=^W:
+
+dgkeys+15|Private entry describing 15 DG mode special keys:\
+ :#2=^^^H:#4=^^^Y:%i=^^^X:F1=^^{:F2=^^|:F3=^^}:F4=^^~:F5=^^p:\
+ :F6=^^a:F7=^^b:F8=^^c:F9=^^d:FA=^^e:FB=^^f:FC=^^g:FD=^^h:\
+ :FE=^^i:FF=^^j:FG=^^k:FH=^^l:FI=^^m:FJ=^^n:FK=^^`:FL=^^1:\
+ :FM=^^2:FN=^^3:FO=^^4:FP=^^5:FQ=^^6:FR=^^7:FS=^^8:FT=^^9:\
+ :FU=^^\072:FV=^^;:FW=^^<:FX=^^=:FY=^^>:FZ=^^0:Fa=^^\041:\
+ :Fb=^^":Fc=^^#:Fd=^^$:Fe=^^%:Ff=^^&:Fg=^^':Fh=^^(:Fi=^^):\
+ :Fj=^^*:Fk=^^+:Fl=^^\054:Fm=^^-:Fn=^^.:Fo=^^ :K1=^^\:K3=^^]:\
+ :K4=^^\136:K5=^^_:k1=^^q:k2=^^r:k3=^^s:k4=^^t:k5=^^u:k6=^^v:\
+ :k7=^^w:k8=^^x:k9=^^y:k;=^^z:
+
+# Data General color terminals use the "Tektronix" color model. The total
+# number of colors varies with the terminal model, as does support for
+# attributes used in conjunction with color.
+
+# Removed u7, u8 definitions since they conflict with tack:
+# Preserve user-defined colors in at least some cases.
+# u7=^^Fh,
+# Default is ACM mode.
+# u8=^^F}20^^Fi^^F}21,
+#
+dgunix+fixed|Fixed color info for DG D430C terminals in DG-UNIX mode:\
+ :ut:\
+ :Co#16:NC#53:pa#256:\
+ :AB=\036B%p1%?%p1%{8}%<%t%{2}%&%?%p1%{1}%&%t%{4}%|%;%?%p1%{4}%&%t%{1}%|%;%;%{48}%+%c:\
+ :AF=\036A%p1%?%p1%{8}%<%t%{2}%&%?%p1%{1}%&%t%{4}%|%;%?%p1%{4}%&%t%{1}%|%;%;%{48}%+%c:\
+ :Sb=\036B%+0:Sf=\036A%+0:op=\036Ad\036Bd:
+
+dg+fixed|Fixed color info for DG D430C terminals in DG mode:\
+ :tc=dgunix+fixed:
+
+# Video attributes are coordinated using static variables set by "sgr", then
+# checked by "op", "seta[bf]", and "set[bf]" to refresh the attribute settings.
+# (D=dim, U=underline, B=blink, R=reverse.)
+dg+color8|Color info for Data General D220 and D230C terminals in ANSI mode:\
+ :ut:\
+ :Co#8:NC#16:pa#64:\
+ :AB=\E[4%p1%d%?%gD%t;2%;%?%gU%t;4%;%?%gB%t;5%;%?%gR%t;7%;m:\
+ :AF=\E[3%p1%d%?%gD%t;2%;%?%gU%t;4%;%?%gB%t;5%;%?%gR%t;7%;m:\
+ :..Sb=\E[4%p1%{2}%&%?%p1%{1}%&%t%{4}%|%;%?%p1%{4}%&%t%{1}%|%;%d%?%gD%t;2%;%?%gU%t;4%;%?%gB%t;5%;%?%gR%t;7%;m:\
+ :..Sf=\E[3%p1%{2}%&%?%p1%{1}%&%t%{4}%|%;%?%p1%{4}%&%t%{1}%|%;%d%?%gD%t;2%;%?%gU%t;4%;%?%gB%t;5%;%?%gR%t;7%;m:\
+ :op=\E[%?%gD%t2;%;%?%gU%t4;%;%?%gB%t5;%;%?%gR%t7;%;m:
+
+dg+color|Color info for Data General D470C terminals in ANSI mode:\
+ :Co#16:NC#53:pa#256:\
+ :AB=\E[%?%p1%{8}%<%t4%p1%e=%p1%{2}%&%?%p1%{1}%&%t%{4}%|%;%?%p1%{4}%&%t%{1}%|%;%;%d%?%gD%t;2%;%?%gU%t;4%;%?%gB%t;5%;%?%gR%t;7%;m:\
+ :AF=\E[%?%p1%{8}%<%t3%p1%e<%p1%{2}%&%?%p1%{1}%&%t%{4}%|%;%?%p1%{4}%&%t%{1}%|%;%;%d%?%gD%t;2%;%?%gU%t;4%;%?%gB%t;5%;%?%gR%t;7%;m:\
+ :..Sb=\E[%?%p1%{8}%<%t4%e=%;%p1%{2}%&%?%p1%{1}%&%t%{4}%|%;%?%p1%{4}%&%t%{1}%|%;%d%?%gD%t;2%;%?%gU%t;4%;%?%gB%t;5%;%?%gR%t;7%;m:\
+ :..Sf=\E[%?%p1%{8}%<%t3%e<%;%p1%{2}%&%?%p1%{1}%&%t%{4}%|%;%?%p1%{4}%&%t%{1}%|%;%d%?%gD%t;2%;%?%gU%t;4%;%?%gB%t;5%;%?%gR%t;7%;m:\
+ :tc=dg+color8:
+
+dgmode+color8|Color info for Data General D220/D230C terminals in DG mode:\
+ :ut:\
+ :Co#8:NC#16:pa#64:\
+ :AB=\036B%p1%{2}%&%?%p1%{1}%&%t%{4}%|%;%?%p1%{4}%&%t%{1}%|%;%{48}%+%c:\
+ :AF=\036A%p1%{2}%&%?%p1%{1}%&%t%{4}%|%;%?%p1%{4}%&%t%{1}%|%;%{48}%+%c:\
+ :Sb=\036B%+0:Sf=\036A%+0:op=\036Ad\036Bd:
+
+dgmode+color|Color info for Data General D470C terminals in DG mode:\
+ :Co#16:pa#256:\
+ :AB=\036B%p1%?%p1%{8}%<%t%{2}%&%?%p1%{1}%&%t%{4}%|%;%?%p1%{4}%&%t%{1}%|%;%;%{48}%+%c:\
+ :AF=\036A%p1%?%p1%{8}%<%t%{2}%&%?%p1%{1}%&%t%{4}%|%;%?%p1%{4}%&%t%{1}%|%;%;%{48}%+%c:\
+ :tc=dgmode+color8:
+
+dgunix+ccc|Configurable color info for DG D430C terminals in DG-UNIX mode:\
+ :cc:ut:\
+ :Co#52:NC#53:pa#26:\
+ :..Ip=\036RG0%p1%02X%p2%{256}%*%{1001}%/%02X%p3%{256}%*%{1001}%/%02X%p4%{256}%*%{1001}%/%02X%p5%{256}%*%{1001}%/%02X%p6%{256}%*%{1001}%/%02X%p7%{256}%*%{1001}%/%02X:\
+ :oc=\036RG01A00FF00000000\036RG01B00000000FF00\036RG01C007F00000000\036RG01D000000007F00:\
+ :op=\036RF4831A\036RF2E31B\036RF1D31C\036RF3F31D:\
+ :..sp=\036RG2%p1%02X:
+
+# Colors are in the order: normal, reverse, dim, dim + reverse.
+dg+ccc|Configurable color info for DG D430C terminals in DG mode:\
+ :cc:ut:\
+ :Co#52:NC#53:pa#26:\
+ :..Ip=\036RG0%p1%{16}%/%{48}%+%c%p1%{16}%m%{48}%+%c%p2%{256}%*%{1001}%/%Pa%ga%{16}%/%{48}%+%c%ga%{16}%m%{48}%+%c%p3%{256}%*%{1001}%/%Pa%ga%{16}%/%{48}%+%c%ga%{16}%m%{48}%+%c%p4%{256}%*%{1001}%/%Pa%ga%{16}%/%{48}%+%c%ga%{16}%m%{48}%+%c%p5%{256}%*%{1001}%/%Pa%ga%{16}%/%{48}%+%c%ga%{16}%m%{48}%+%c%p6%{256}%*%{1001}%/%Pa%ga%{16}%/%{48}%+%c%ga%{16}%m%{48}%+%c%p7%{256}%*%{1001}%/%Pa%ga%{16}%/%{48}%+%c%ga%{16}%m%{48}%+%c:\
+ :oc=\036RG01\07200??00000000\036RG01;00000000??00\036RG01<007?00000000\036RG01=000000007?00:\
+ :op=\036RF4831\072\036RF2>31;\036RF1=31<\036RF3?31=:\
+ :sp=\036RG2%+^P%+^P:
+
+# The generic DG terminal type (an 8-bit-clean subset of the 6053)
+# Initialization string 1 sets:
+# ^R - vertical scrolling enabled
+# ^C - blinking enabled
+dg-generic|Generic Data General terminal in DG mode:\
+ :NL:am:bw:ms:xo:\
+ :co#80:li#24:\
+ :bl=^G:ce=^K:cl=^L:cm=\020%r%.%.:cr=^M:do=^Z:i1=^R^C:le=^Y:\
+ :mb=^N:me=^O^U^]:mh=^\:nd=^X:nw=^J:ps=^Q:se=^]:sf=^J:so=^\:\
+ :ue=^U:up=^W:us=^T:\
+ :tc=dgkeys+11:
+
+# (Some performance can be gained over the generic DG terminal type)
+dg6053|6053|6053-dg|dg605x|605x|605x-dg|d2|d2-dg|Data General DASHER 6053:\
+ :xo@:\
+ :ho=^P\0\0:ll=^P\0^W:tc=dg-generic:
+
+# Like 6053, but adds reverse video and more keypad and function keys.
+d200|d200-dg|Data General DASHER D200:\
+ :ho@:ll@:md=^^D^T:me=\017\025\035\036E:mr=^^D:\
+ :..sa=\036%?%p1%p3%|%p6%|%tD%eE%;%?%p2%p6%|%t\024%e\025%;%?%p4%t\016%e\017%;%?%p1%p5%|%t\034%e\035%;:\
+ :se=^^E^]:so=^^D^\:\
+ :tc=dgkeys+15:tc=dg6053:
+
+# DASHER D210 series terminals in ANSI mode.
+# Reverse video, no insert/delete character/line, 7 bits/character only.
+#
+# Initialization string 1 sets:
+# <0 - scrolling enabled
+# <1 - blink enabled
+# <4 - print characters regardless of attributes
+d210|d214|Data General DASHER D210 series:\
+ :NL:am:bw:ms:xo:\
+ :co#80:li#24:\
+ :DO=\E[%dB:LE=\E[%dD:RI=\E[%dC:UP=\E[%dA:bl=^G:cb=\E[1K:\
+ :cd=\E[J:ce=\E[K:cl=\E[2J:cm=\E[%i%d;%dH:cr=^M:do=\E[B:\
+ :ho=\E[H:i1=\E[<0;<1;<4l:le=^H:ll=\E[H\E[A:mb=\E[5m:\
+ :md=\E[4;7m:me=\E[m:mh=\E[2m:mr=\E[7m:nd=\E[C:nw=^J:\
+ :..sa=\E[%?%p1%p3%|%p6%|%t7;%;%?%p4%t5;%;%?%p2%p6%|%t4;%;%?%p1%p5%|%t2;%;m:\
+ :se=\E[m:sf=^J:so=\E[2;7m:ue=\E[m:up=\E[A:us=\E[4m:\
+ :tc=dgkeys+7b:
+
+# DASHER D210 series terminals in DG mode.
+# Like D200, but adds clear to end-of-screen and needs XON/XOFF.
+d210-dg|d214-dg|Data General DASHER D210 series in DG mode:\
+ :xo:\
+ :cd=^^FF:tc=d200:
+
+# DASHER D211 series terminals in ANSI mode.
+# Like the D210, but with 8-bit characters and local printer support.
+#
+# Initialization string 2 sets:
+# \E[2;1;1;1v
+# 2;1 - 8 bit operations
+# 1;1 - 8 bit (international) keyboard language
+# \E(B - default primary character set (U.S. ASCII)
+# \E)4 - default secondary character set (international)
+# ^O - primary character set
+#
+d211|d215|Data General DASHER D211 series:\
+ :km:\
+ :is=\E[2;1;1;1v\E(B\E)4\017:ps=\E[i:tc=dgkeys+8b:tc=d210:
+
+# Initialization string 2 sets:
+# \E[2;0;1;0v
+# 2;0 - 7 bit operations
+# 1;0 - 7 bit (native) keyboard language
+# \E(0 - default character set (the keyboard native language)
+# ^O - primary character set
+d211-7b|d215-7b|Data General DASHER D211 series in 7 bit mode:\
+ :km@:\
+ :is=\E[2;0;1;0v\E(0\017:tc=dgkeys+7b:tc=d211:
+
+# Like the D210 series, but adds support for 8-bit characters.
+#
+# Reset string 2 sets:
+# ^^N - secondary character set
+# ^^FS0> - 8 bit international character set
+# ^^O - primary character set
+# ^^FS00 - default character set (matching the native keyboard language)
+#
+d211-dg|d215-dg|Data General DASHER D211 series in DG mode:\
+ :km:\
+ :r2=\036N\036FS0>\036O\036FS00:tc=d210-dg:
+
+d216-dg|d216e-dg|d216+dg|d216e+dg|d217-dg|Data General DASHER D216 series in DG mode:\
+ :tc=d211-dg:
+
+# Enhanced DG mode with changes to be more UNIX compatible.
+d216-unix|d216e-unix|d216+|d216e+|Data General DASHER D216+ in DG-UNIX mode:\
+ :5i:\
+ :it#8:\
+ :#2=^^Pf:#4=^^Pd:%9=^^P0:%f=^^P1:%i=^^Pc:\
+ :ac=a\177j$k"l\041m#n)q+t'u&v(w%x*:ae=\036FS00:\
+ :as=\036FS11:ce=^^PE:ch=\020%.\177:cl=^^PH:cv=\020\177%.:\
+ :do=^^PB:ho=^^PF:i1=\022\003\036P@1:i2=\036Fz0:kC=^^PH:\
+ :kE=^^PE:kd=^^PB:kh=^^PF:kl=^^PD:kr=^^PC:ku=^^PA:le=^^PD:\
+ :mb=^^PI:me=\036PJ\025\035\036E\036FS00:nd=^^PC:pf=^^Fa:\
+ :po=^^F`:ps=\036F?9:r2=\036N\036FS0E\036O\036FS00:\
+ :..sa=\036%?%p1%p3%|%p6%|%tD%eE%;%?%p2%p6%|%t\024%e\025%;\036P%?%p4%tI%eJ%;%?%p1%p5%|%t\034%e\035%;\036FS%?%p9%t11%e00%;:\
+ :sf=^J:ta=^I:up=^^PA:\
+ :tc=dgkeys+15:tc=d216-dg:
+d216-unix-25|d216+25|Data General DASHER D216+ in DG-UNIX mode with 25 lines:\
+ :li#25:\
+ :i2=\036Fz2:tc=d216+:
+
+d217-unix|Data General DASHER D217 in DG-UNIX mode:\
+ :tc=d216-unix:
+d217-unix-25|Data General DASHER D217 in DG-UNIX mode with 25 lines:\
+ :tc=d216-unix-25:
+
+# DASHER D220 color terminal in ANSI mode.
+# Like the D470C but with fewer colors and screen editing features.
+#
+# Initialization string 1 sets:
+# \E[<0;<1;<4l
+# <0 - scrolling enabled
+# <1 - blink enabled
+# <4 - print characters regardless of attributes
+# \E[m - all attributes off
+# Reset string 1 sets:
+# \Ec - initial mode defaults (RIS)
+#
+d220|Data General DASHER D220:\
+ :5i@:\
+ :AL@:DL@:al@:dl@:i1=\E[<0;<1;<4l\E[m:pf@:po@:r1=\Ec:tc=dg+color8:tc=d470c:
+
+d220-7b|Data General DASHER D220 in 7 bit mode:\
+ :5i@:\
+ :AL@:DL@:al@:dl@:i1=\E[<0;<1;<4l\E[m:pf@:po@:r1=\Ec:tc=dg+color8:tc=d470c-7b:
+
+# Initialization string 3 sets:
+# - default cursor (solid rectangle)
+# Reset string 2 sets:
+# ^^N - secondary character set
+# ^^FS0> - 8 bit international character set
+# ^^O - primary character set
+# ^^FS00 - default character set (matching the native keyboard language)
+#
+d220-dg|Data General DASHER D220 color terminal in DG mode:\
+ :5i@:\
+ :al@:dl@:ho@:i2=\036FQ2:is@:ll@:pf@:po@:r1@:\
+ :r2=\036N\036FS0>\036O\036FS00:tc=dgmode+color8:\
+ :tc=d470c-dg:
+
+# DASHER D230C color terminal in ANSI mode.
+# Like the D220 but with minor ANSI compatibility improvements.
+#
+d230c|d230|Data General DASHER D230C:\
+ :ke=\E[2;1v:ks=\E[2;0v:mb=\E[5;50m:md=\E[4;7;50m:\
+ :me=\E[50m\E)4\017:mh=\E[2;50m:mr=\E[7;50m:nw=^M^J:\
+ :..sa=\E[50%?%p1%p3%|%p6%|%t;7%{1}%e%{0}%;%PR%?%p4%t;5%{1}%e%{0}%;%PB%?%p2%p6%|%t;4%{1}%e%{0}%;%PU%?%p1%p5%|%t;2%{1}%e%{0}%;%PDm\E)%?%p9%t6\016%e4\017%;:\
+ :se=\E[50m:so=\E[2;7;50m:ue=\E[50m:us=\E[4;50m:\
+ :tc=dgkeys+7b:tc=d220:
+
+d230c-dg|d230-dg|Data General DASHER D230C in DG mode:\
+ :tc=d220-dg:
+
+# DASHER D400/D450 series terminals.
+# These add intelligent features like insert/delete to the D200 series.
+#
+# Initialization string 2 sets:
+# ^^FQ2 - default cursor (solid rectangle)
+# ^^FW - character protection disabled
+# ^^FJ - normal (80 column) mode
+# ^^F\^ - horizontal scrolling enabled (for alignment)
+# ^^FX004? - margins at columns 0 and 79
+# ^^F] - horizontal scrolling disabled
+# ^^O - primary character set
+# ^^FS00 - default character set (the keyboard native language)
+# - (should reset scrolling regions, but that glitches the screen)
+# Reset string 1 sets:
+# ^^FA - all terminal defaults except scroll rate
+# Reset string 2 sets:
+# ^^F] - horizontal scrolling disabled
+# ^^FT0 - jump scrolling
+#
+d400|d400-dg|d450|d450-dg|Data General DASHER D400/D450 series:\
+ :5i:\
+ :ac=j$k"l\041m#n)q+t'u&v(w%x*:ae=^^O:al=^^FH:as=^^N:\
+ :ch=\020%.\177:cv=\020\177%.:dc=^^K:dl=^^FI:\
+ :eA=\036N\036FS11\036O:ei=:ho=^^FG:ic=^^J:im=:\
+ :is=\036FQ2\036FW\036FJ\036F\136\036FX004?\036F]\036O\036FS00:\
+ :ll=\036FG\027:me=\017\025\035\036E\036O:pf=^^Fa:\
+ :po=^^F`:r1=^^FA:r2=\036F]\036FT0:\
+ :..sa=\036%?%p1%p3%|%p6%|%tD%eE%;%?%p2%p6%|%t\024%e\025%;%?%p4%t\016%e\017%;%?%p1%p5%|%t\034%e\035%;\036%?%p9%tN%eO%;:\
+ :sr=^^I:ve=\036FQ2:vi=\036FQ0:\
+ :tc=d210-dg:
+
+# DASHER D410/D460 series terminals in ANSI mode.
+# These add a large number of intelligent terminal features.
+#
+# Initialization string 1 sets:
+# \E[<0;<1;<2;<4l
+# <0 - scrolling enabled
+# <1 - blink enabled
+# <2 - horizontal scrolling enabled (for alignment)
+# <4 - print characters regardless of attributes
+# \E[5;0v - normal (80 column) mode
+# \E[1;1;80w - margins at columns 1 and 80
+# \E[1;6;<2h
+# 1 - print all characters even if protected
+# 6 - character protection disabled
+# <2 - horizontal scrolling disabled
+# - (should reset scrolling regions, but that glitches the screen)
+#
+# Initialization string 2 sets:
+# \E[3;2;2;1;1;1v
+# 3;2 - default cursor (solid rectangle)
+# 2;1 - 8 bit operations
+# 1;1 - international keyboard language
+# \E(B - default primary character set (U.S. ASCII)
+# \E)4 - default secondary character set (international)
+# ^O - primary character set
+#
+# Reset string 1 sets:
+# \Ec - initial mode defaults (RIS)
+# \E[<2h - horizontal scrolling disabled
+#
+# Reset string 2 sets:
+# \E[4;0;2;1;1;1v
+# 4;0 - jump scrolling
+# 2;1 - 8 bit operations
+# 1;1 - 8 bit (international) keyboard language
+# \E(B - default primary character set (U.S. ASCII)
+# \E)4 - default secondary character set (international)
+#
+d410|d411|d460|d461|Data General DASHER D410/D460 series:\
+ :5i:\
+ :AL=\E[%dL:DC=\E[%dP:DL=\E[%dM:IC=\E[%d@:\
+ :ac=j$k"l\041m#n)q+t'u&v(w%x*:ae=\E)4\017:al=\E[L:\
+ :as=\E)6\016:dc=\E[P:dl=\E[M:ei=:\
+ :i1=\E[<0;<1;<2;<4l\E[5;0v\E[1;1;80w\E[1;6;<2h:\
+ :ic=\E[@:im=:is=\E[3;2;2;1;1;1v\E(B\E)4\017:\
+ :me=\E[m\E)4\017:pf=\E[4i:po=\E[5i:r1=\Ec\E[<2h:\
+ :r2=\E[4;0;2;1;1;1v\E(B\E)4:\
+ :..sa=\E[%?%p1%p3%|%p6%|%t7;%;%?%p4%t5;%;%?%p2%p6%|%t4;%;%?%p1%p5%|%t2;%;m\E)%?%p9%t6\016%e4\017%;:\
+ :sr=\EM:ve=\E[3;2v:vi=\E[3;0v:\
+ :tc=d211:
+
+# Initialization string 2 sets:
+# \E[3;2;2;0;1;0v
+# 3;2 - default cursor (solid rectangle)
+# 2;0 - 7 bit operations
+# 1;0 - 7 bit (native) keyboard language
+# \E(0 - default character set (the keyboard native language)
+# ^O - primary character set
+#
+# Reset string 2 sets:
+# \E[4;0;2;0;1;0v
+# 4;0 - jump scrolling
+# 2;0 - 7 bit operations
+# 1;0 - 7 bit (native) keyboard language
+# \E(0 - default character set (the keyboard native language)
+#
+d410-7b|d411-7b|d460-7b|d461-7b|Data General DASHER D410/D460 series in 7 bit mode:\
+ :km@:\
+ :ae=^O:as=^N:eA=\E)6:is=\E[3;2;2;0;1;0v\E(0\017:\
+ :me=\E[m\017:r2=\E[4;0;2;0;1;0v\E(0:\
+ :..sa=\E[%?%p1%p3%|%p6%|%t7;%;%?%p4%t5;%;%?%p2%p6%|%t4;%;%?%p1%p5%|%t2;%;m%?%p9%t\016%e\017%;:tc=dgkeys+7b:\
+ :tc=d410:
+
+d410-dg|d460-dg|d411-dg|d461-dg|Data General DASHER D410/D460 series in DG mode:\
+ :km:\
+ :ae=\036FS00:as=\036FS11:eA@:\
+ :me=\017\025\035\036E\036FS00:\
+ :..sa=\036%?%p1%p3%|%p6%|%tD%eE%;%?%p2%p6%|%t\024%e\025%;%?%p4%t\016%e\017%;%?%p1%p5%|%t\034%e\035%;\036FS%?%p9%t11%e00%;:tc=d400-dg:
+
+# DASHER D410/D460 series terminals in wide (126 columns) ANSI mode.
+#
+# Initialization string 1 sets:
+# \E[<0;<1;<2;<4l
+# <0 - scrolling enabled
+# <1 - blink enabled
+# <2 - horizontal scrolling enabled (for alignment)
+# <4 - print characters regardless of attributes
+# \E[5;1v - compressed (135 column) mode
+# \E[1;1;126 - margins at columns 1 and 126
+# \E[1;6;<2h
+# 1 - print all characters even if protected
+# 6 - character protection disabled
+# <2 - horizontal scrolling disabled
+# - (should reset scrolling regions, but that glitches the screen)
+#
+# Reset string 1 sets:
+# \Ec - initial mode defaults (RIS)
+# \E[5;1v - compressed (135 column) mode
+# \E[1;1;126w - margins at columns 1 and 126
+# \E[<2h - horizontal scrolling disabled
+#
+d410-w|d411-w|d460-w|d461-w|Data General DASHER D410/D460 series in wide mode:\
+ :co#126:\
+ :i1=\E[<0;<1;<2;<4l\E[5;1v\E[1;1;126w\E[1;6;<2h:\
+ :r1=\Ec\E[5;1v\E[1;1;126w\E[<2h:\
+ :tc=d410:
+
+d410-7b-w|d411-7b-w|d460-7b-w|d461-7b-w|Data General DASHER D410/D460 series in wide 7 bit mode:\
+ :co#126:\
+ :i1=\E[<0;<1;<2;<4l\E[5;1v\E[1;1;126w\E[1;6;<2h:\
+ :r1=\Ec\E[5;1v\E[1;1;126w\E[<2h:\
+ :tc=d410-7b:
+
+d412-dg|d462-dg|d462e-dg|d412+dg|d462+dg|d413-dg|d463-dg|Data General DASHER D412/D462 series in DG mode:\
+ :tc=d410-dg:
+
+# These add intelligent features like scrolling regions.
+d412-unix|d462-unix|d412+|d462+|Data General DASHER D412+/D462+ series in Unix mode:\
+ :al=^^FH:ch=\036FP%2.2XFF:cl=^^FE:cm=\036FP%r%2.2X%2.2X:\
+ :cv=\036FPFF%2.2X:dc=^^K:dl=^^FI:ei=:ho=^^FG:ic=^^J:im=:\
+ :is=\036FQ5\036FW\036FJ\036F\136\036FX004F\036O\036FS00:\
+ :ll=\036FG\036PA:ps=^A:r1=\036FA\036FT0:r2=\036P@1:\
+ :rc=\036F}11:sc=\036F}10:sr=^^I:ve=\036FQ5:vi=\036FQ0:\
+ :..wi=\036FB%?%p1%t%p1%2.2X0%;%p2%p1%-%{1}%+%2.2X0%?%{23}%p2%>%t000%;\036FX%p3%2.2X%p4%2.2X:\
+ :tc=d216+:
+d412-unix-w|d462-unix-w|d412+w|d462+w|Data General DASHER D412+/D462+ series in wide Unix mode:\
+ :co#132:\
+ :is=\036FQ5\036FW\036FK\036F\136\036FX0083\036O\036FS00:\
+ :r2=\036P@1\036FK\036FX0083:\
+ :..wi=\036FB%?%p1%t%p1%2.2X1%;%p2%p1%-%{1}%+%2.2X1%?%{23}%p2%>%t001%;\036FX%p3%2.2X%p4%2.2X:tc=d412-unix:
+d412-unix-25|d462-unix-25|d412+25|d462+25|Data General DASHER D412+/D462+ series in Unix mode with 25 lines:\
+ :li#25:\
+ :i2=\036Fz2:\
+ :..wi=\036FB%?%p1%t%p1%2.2X0%;%p2%p1%-%{1}%+%2.2X0%?%{24}%p2%>%t000%;\036FX%p3%2.2X%p4%2.2X:tc=d462+:
+d412-unix-s|d462-unix-s|d412+s|d462+s|Data General DASHER D412+/D462+ in Unix mode with status line:\
+ :es:hs:\
+ :cl=\036FG\036PH:fs=\036F}01\022:\
+ :i2=\036Fz2\036F}00\036FB180000\036F}01:ll@:\
+ :ts=\036F}00\036FP%p1%2.2X18\036PG:\
+ :..wi=\036FB%?%p1%t%p1%2.2X0%;%p2%p1%-%{1}%+%2.2X0%?%{23}%p2%>%t%{23}%p2%-%2.2X0%;000\036FX%p3%2.2X%p4%2.2X:tc=d462+:
+
+# Relative cursor motions are confined to the current window,
+# which is not what the scrolling region specification expects.
+# Thus, relative vertical cursor positioning must be deleted.
+d412-unix-sr|d462-unix-sr|d412+sr|d462+sr|Data General DASHER D412+/D462+ in Unix mode with scrolling region:\
+ :..cs=\036FB%?%p1%t%p1%2.2X0%;%p2%p1%-%{1}%+%2.2X0%?%{23}%p2%>%t000%;:\
+ :do@:ll@:up@:\
+ :tc=d462+:
+
+d413-unix|d463-unix|Data General DASHER D413/D463 series in DG-UNIX mode:\
+ :tc=d412-unix:
+d413-unix-w|d463-unix-w|Data General DASHER D413/D463 series in wide DG-UNIX mode:\
+ :tc=d412-unix-w:
+d413-unix-25|d463-unix-25|Data General DASHER D413/D463 series in DG-UNIX mode with 25 lines:\
+ :tc=d412-unix-25:
+d413-unix-s|d463-unix-s|Data General DASHER D413/D463 in DG-UNIX mode with status line:\
+ :tc=d412-unix-s:
+d413-unix-sr|d463-unix-sr|Data General DASHER D413/D463 in DG-UNIX mode with scrolling region:\
+ :tc=d412-unix-sr:
+
+d414-unix|d464-unix|Data General D414/D464 in DG-UNIX mode:\
+ :tc=d413-unix:
+d414-unix-w|d464-unix-w|Data General D414/D464 in wide DG-UNIX mode:\
+ :tc=d413-unix-w:
+d414-unix-25|d464-unix-25|Data General D414/D464 in DG-UNIX mode with 25 lines:\
+ :tc=d413-unix-25:
+d414-unix-s|d464-unix-s|Data General D414/D464 in DG-UNIX mode with status line:\
+ :tc=d413-unix-s:
+d414-unix-sr|d464-unix-sr|Data General D414/D464 in DG-UNIX mode with scrolling region:\
+ :tc=d413-unix-sr:
+
+d430c-dg|d430-dg|Data General D430C in DG mode:\
+ :tc=d413-dg:tc=dg+fixed:
+d430c-dg-ccc|d430-dg-ccc|Data General D430C in DG mode with configurable colors:\
+ :tc=d413-dg:tc=dg+ccc:
+
+d430c-unix|d430-unix|Data General D430C in DG-UNIX mode:\
+ :tc=d413-unix:tc=dgunix+fixed:
+d430c-unix-w|d430-unix-w|Data General D430C in wide DG-UNIX mode:\
+ :tc=d413-unix-w:tc=dgunix+fixed:
+d430c-unix-25|d430-unix-25|Data General D430C in DG-UNIX mode with 25 lines:\
+ :tc=d413-unix-25:tc=dgunix+fixed:
+d430c-unix-s|d430-unix-s|Data General D430C in DG-UNIX mode with status line:\
+ :tc=d413-unix-s:tc=dgunix+fixed:
+d430c-unix-sr|d430-unix-sr|Data General D430C in DG-UNIX mode with scrolling region:\
+ :tc=d413-unix-sr:tc=dgunix+fixed:
+d430c-unix-ccc|d430-unix-ccc|Data General D430C in DG-UNIX mode with configurable colors:\
+ :tc=d413-unix:tc=dgunix+ccc:
+d430c-unix-w-ccc|d430-unix-w-ccc|Data General D430C in wide DG-UNIX mode with configurable colors:\
+ :tc=d413-unix-w:tc=dgunix+ccc:
+d430c-unix-25-ccc|d430-unix-25-ccc|Data General D430C in DG-UNIX mode with 25 lines and configurable colors:\
+ :tc=d413-unix-25:tc=dgunix+ccc:
+d430c-unix-s-ccc|d430-unix-s-ccc|Data General D430C in DG-UNIX mode with status line and configurable colors:\
+ :tc=d413-unix-s:tc=dgunix+ccc:
+d430c-unix-sr-ccc|d430-unix-sr-ccc|Data General D430C in DG-UNIX mode with scrolling region and configurable colors:\
+ :tc=d413-unix-sr:tc=dgunix+ccc:
+
+# dg450 from Cornell (not official)
+dg450|dg6134|data general 6134:\
+ :le@:nd=^X:tc=dg200:
+
+# Not official...
+# Note: lesser Dasher terminals will not work with vi because vi insists upon
+# having a command to move straight down from any position on the bottom line
+# and scroll the screen up, or a direct vertical scroll command. The 460 and
+# above have both, the D210/211, for instance, has neither. We must use ANSI
+# mode rather than DG mode because standard UNIX tty drivers assume that ^H is
+# backspace on all terminals. This is not so in DG mode.
+# (dg460-ansi: removed obsolete ":kn#6:"; also removed ":mu=\EW:", on the
+# grounds that there is no matching ":ml:"
+# fixed garbled ":k9=\E[00\:z:" capability -- esr)
+dg460-ansi|Data General Dasher 460 in ANSI-mode:\
+ :am:bs:ms:ul:\
+ :co#80:it#8:li#24:\
+ :al=\E[L:cd=\E[J:ce=\E[K:cl=\E[2J:cm=\E[%i%2;%2H:dc=\E[P:\
+ :dl=\E[M:do=\E[B:ei=:ho=\E[H:ic=\E[@:im=:is=^^F@:k0=\E[001z:\
+ :k1=\E[002z:k2=\E[003z:k3=\E[004z:k4=\E[005z:k5=\E[006z:\
+ :k6=\E[007z:k7=\E[008z:k8=\E[009z:k9=\E[010z:kb=\E[D:\
+ :kd=\E[B:kh=\E[H:kl=\E[D:kr=\E[C:ku=\E[A:l0=f1:l1=f2:l2=f3:\
+ :l3=f4:l4=f5:l5=f6:l6=f7:l7=f8:l9=f10:le=^H:mb=\E[5m:me=\E[m:\
+ :mh=\E[2m:mr=\E[7m:nd=\E[C:nl=\ED:se=\E[m:sf=\E[S:so=\E[7m:\
+ :sr=\E[T:ta=^I:ue=\E[05:up=\E[A:us=\E[4m:
+
+# DASHER D470C color terminal in ANSI mode.
+# Like the D460 but with 16 colors and without a compressed mode.
+#
+# Initialization string 1 sets:
+# \E[<0;<1;<2;<4l
+# <0 - scrolling enabled
+# <1 - blink enabled
+# <2 - horizontal scrolling enabled (for alignment)
+# <4 - print characters regardless of attributes
+# \E[1;1;80w - margins at columns 1 and 80
+# \E[1;6;<2h
+# 1 - print all characters even if protected
+# 6 - character protection disabled
+# <2 - horizontal scrolling disabled
+# - (should reset scrolling regions, but that glitches the screen)
+#
+d470c|d470|Data General DASHER D470C:\
+ :i1=\E[<0;<1;<2;<4l\E[1;1;80w\E[1;6;<2h:\
+ :..sa=\E[%?%p1%p3%|%p6%|%t7;%{1}%e%{0}%;%PR%?%p4%t5;%{1}%e%{0}%;%PB%?%p2%p6%|%t4;%{1}%e%{0}%;%PU%?%p1%p5%|%t2;%{1}%e%{0}%;%PDm\E)%?%p9%t6\016%e4\017%;:tc=dg+color:\
+ :tc=d460:
+
+d470c-7b|d470-7b|Data General DASHER D470C in 7 bit mode:\
+ :i1=\E[<0;<1;<2;<4l\E[1;1;80w\E[1;6;<2h:\
+ :..sa=\E[%?%p1%p3%|%p6%|%t7;%{1}%e%{0}%;%PR%?%p4%t5;%{1}%e%{0}%;%PB%?%p2%p6%|%t4;%{1}%e%{0}%;%PU%?%p1%p5%|%t2;%{1}%e%{0}%;%PDm%?%p9%t\016%e\017%;:tc=dg+color:\
+ :tc=d460-7b:
+
+# Initialization string 2 sets:
+# ^^FQ2 - default cursor (solid rectangle)
+# ^^FW - character protection disabled
+# ^^F\^ - horizontal scrolling enabled (for alignment)
+# ^^FX004? - margins at columns 0 and 79
+# ^^F] - horizontal scrolling disabled
+# ^^O - primary character set
+# ^^FS00 - default character set (the keyboard native language)
+# - (should reset scrolling regions, but that glitches the screen)
+#
+d470c-dg|d470-dg|Data General DASHER D470C in DG mode:\
+ :is=\036FQ2\036FW\036F\136\036FX004?\036F]\036O\036FS00:\
+ :tc=dgmode+color:tc=d460-dg:
+
+# DASHER D555 terminal in ANSI mode.
+# Like a D411, but has an integrated phone.
+d555|Data General DASHER D555:\
+ :tc=d411:
+d555-7b|Data General DASHER D555 in 7-bit mode:\
+ :tc=d411-7b:
+d555-w|Data General DASHER D555 in wide mode:\
+ :tc=d411-w:
+d555-7b-w|Data General DASHER D555 in wide 7-bit mode:\
+ :tc=d411-7b-w:
+d555-dg|Data General DASHER D555 series in DG mode:\
+ :tc=d411-dg:
+
+# DASHER D577 terminal in ANSI mode.
+# Like a D411, but acts as a keyboard for serial printers ("KSR" modes).
+d577|Data General DASHER D577:\
+ :tc=d411:
+d577-7b|Data General DASHER D577 in 7-bit mode:\
+ :tc=d411-7b:
+d577-w|Data General DASHER D577 in wide mode:\
+ :tc=d411-w:
+d577-7b-w|Data General DASHER D577 in wide 7-bit mode:\
+ :tc=d411-7b-w:
+
+d577-dg|d578-dg|Data General DASHER D577/D578 series in DG mode:\
+ :tc=d411-dg:
+
+# DASHER D578 terminal.
+# Like a D577, but without compressed mode; like a D470C in this respect.
+#
+# Initialization string 1 sets:
+# \E[<0;<1;<2;<4l
+# <0 - scrolling enabled
+# <1 - blink enabled
+# <2 - horizontal scrolling enabled (for alignment)
+# <4 - print characters regardless of attributes
+# \E[1;1;80w - margins at columns 1 and 80
+# \E[1;6;<2h
+# 1 - print all characters even if protected
+# 6 - character protection disabled
+# <2 - horizontal scrolling disabled
+# - (should reset scrolling regions, but that glitches the screen)
+#
+d578|Data General DASHER D578:\
+ :i1=\E[<0;<1;<2;<4l\E[1;1;80w\E[1;6;<2h:tc=d577:
+d578-7b|Data General DASHER D578 in 7-bit mode:\
+ :i1=\E[<0;<1;<2;<4l\E[1;1;80w\E[1;6;<2h:tc=d577-7b:
+
+# Here are some older Dasher entries from the Berkeley termcap file.
+
+# According to the 4.4BSD termcap file, the dg200 :cm: should be the
+# termcap equivalent of \020%p2%{128}%+%c%p1%{128}%+%c (in termcap
+# notation that's "^P%r%+\200%+\200"). Those \200s are suspicious,
+# maybe they were originally nuls (which would fit).
+dg200|data general dasher 200:\
+ :NL:am:bs:bw:\
+ :co#80:li#24:\
+ :bl=^G:ce=^K:cl=^L:cm=\020%r%.%.:cr=^M:do=^Z:ho=^H:k0=^^z:\
+ :k1=^^q:k2=^^r:k3=^^s:k4=^^t:k5=^^u:k6=^^v:k7=^^w:k8=^^x:\
+ :k9=^^y:kd=^Z:kh=^H:kl=^Y:kr=^X:ku=^W:l0=f10:le=^Y:nd=^X:\
+ :nw=^J:se=^^E:sf=^J:so=^^D:ue=^U:up=^W:us=^T:
+# Data General 210/211 (and 410?) from Lee Pearson (umich!lp) via BRL
+dg210|dg-ansi|Data General 210/211:\
+ :am:\
+ :co#80:li#24:\
+ :cd=\E[J:ce=\E[K:cl=\E[2J:cm=\E[%i%d;%dH:do=\E[B:ho=\E[H:\
+ :kd=\E[B:kh=\E[H:kl=\E[D:kr=\E[C:ku=\E[A:nl=\E[B:\
+ :nw=\r\E[H\E[A\n:se=\E[0;m:so=\E[7;m:ue=\E[0;m:up=\E[A:\
+ :us=\E[4;m:
+# From: Peter N. Wan <ihnp4!gatech!gacsr!wan>
+# courtesy of Carlos Rucalde of Vantage Software, Inc.
+# (dg211: this had :cm=\020%r%.%:., which was an ancient termcap hangover.
+# I suspect the d200 function keys actually work on the dg211, check it out.)
+dg211|Data General d211:\
+ :k0@:k1@:k2@:k3@:k4@:k5@:k6@:k7@:k8@:k9@:kb=^Y:l0@:nw=^M^Z:\
+ :se=\036E\0/>:sf@:so=5\036D:ta=^I:te=^L:ti=^L^R:ve=^L:\
+ :vs=^L^R:\
+ :tc=dg200:
+
+# From: Wayne Throop <mcnc!rti-sel!rtp47!throopw> (not official)
+# Data General 605x
+# Ought to work for a Model 6242, Type D210 as well as a 605x.
+# Note that the cursor-down key transmits ^Z. Job control users, beware!
+# This also matches a posted description of something called a `Dasher 100'
+# so there's a dg100 alias here.
+# (dg6053: the 4.4BSD file had :le=^H:, :do=^J:, :nd=^S:. -- esr)
+dg6053-old|dg100|data general 6053:\
+ :am:bs:bw:ul:\
+ :co#80:li#24:\
+ :bc=^Y:bl=^G:ce=^K:cl=^L:cm=\020%r%.%.:cr=^M:do=^Z:ho=^H:\
+ :is=^R:k0=^^q:k1=^^r:k2=^^s:k3=^^t:k4=^^u:k5=^^v:k6=^^w:\
+ :k7=^^x:k8=^^y:k9=^^z:kb=^Y:kd=^Z:kh=^H:kl=^Y:kr=^X:ku=^W:\
+ :le=^Y:nd=^X:se=\0^^E:so=\0\0\0\0\0\036D:ta=^I:te=^L:\
+ :ti=^L^R:ue=^U:up=^W:us=^T:ve=^L:vs=^L^R:
+
+#### Datamedia (dm)
+#
+# Datamedia was headquartered in Nashua, New Hampshire until it went
+# out of business in 1993, but the ID plates on the terminals referred
+# to the factory in Pennsauken, NJ. The factory was sold to a PCB board
+# manufacturer which threw out all information about the terminals.
+#
+
+cs10|colorscan|Datamedia Color Scan 10:\
+ :ms:\
+ :co#80:li#24:\
+ :bl=^G:cd=\E[J:ce=\E[K:cl=\E[H\E[J:cm=\E[%i%02;%02H:cr=^M:\
+ :do=^J:k1=\EOP:k2=\EOQ:k3=\EOR:k4=\EOS:kd=\E[B:kl=\E[D:\
+ :kr=\E[C:ku=\E[A:le=^H:me=\E[m:nd=\E[C:se=\E[m:sf=^J:\
+ :so=\E[7m:ue=\E[m:up=\E[A:us=\E[4m:
+cs10-w|Datamedia Color Scan 10 with 132 columns:\
+ :co#132:\
+ :cm=\E[%i%02;%03H:tc=cs10:
+
+# (dm1520: removed obsolete ":ma=^\ ^_^P^YH:" -- esr)
+dm1520|dm1521|datamedia 1520:\
+ :am:bs:xn:\
+ :co#80:it#8:li#24:\
+ :bl=^G:cd=^K:ce=^]:cl=^L:cm=\036%r%+ %+ :cr=^M:do=^J:ho=^Y:\
+ :kd=^J:kh=^Y:kl=^H:kr=^\:ku=^_:le=^H:nd=^\:sf=^J:ta=^I:up=^_:
+# dm2500: this terminal has both :IC: and :im:. Applications using
+# termcap/terminfo directly (rather than through ncurses) might be confused.
+dm2500|datamedia2500|datamedia 2500:\
+ :bs:nc:\
+ :co#80:li#24:\
+ :al=\020\n\030\035\030\035:bl=^G:ce=^W:cl=^^^^\177:\
+ :cm=\014%r%n%.%.:dc=\020\010\030\035:\
+ :dl=\020\032\030\035:dm=^P:do=^J:ed=^X^]:\
+ :ei=\377\377\030\035:ho=^B:ic=\020\034\030\035:im=^P:\
+ :le=^H:nd=^\:pc=\377:se=^X^]:sf=^J:so=^N:up=^Z:
+# dmchat is like DM2500, but DOES need "all that padding" (jcm 1/31/82)
+# also, has a meta-key.
+# From: <goldberger@su-csli.arpa>
+# (dmchat: ":MT:" changed to ":km:" -- esr)
+dmchat|dmchat version of datamedia 2500:\
+ :km:\
+ :al=1*\020\n\030\035\030\035:dl=2\020\032\030\035:tc=dm2500:
+# (dm3025: ":MT:" changed to ":km:" -- esr)
+dm3025|datamedia 3025a:\
+ :bs:km:\
+ :co#80:it#8:li#24:\
+ :al=\EP\n\EQ:bl=^G:cd=\EJ:ce=\EK:cl=\EM:cm=\EY%r%+ %+ :\
+ :cr=^M:dc=\010:dl=\EP\EA\EQ:dm=\EP:do=^J:ed=\EQ:ei=\EQ:\
+ :ho=\EH:im=\EP:ip=:is=\EQ\EU\EV:le=^H:nd=\EC:se=\EO0:sf=^J:\
+ :so=\EO1:ta=^I:up=\EA:
+dm3045|datamedia 3045a:\
+ :am:bs:eo:km@:ul:xn:\
+ :al@:dc=\EB:dl@:dm@:ed@:ei=\EP:is=\EU\EV:k0=\Ey\r:k1=\Ep\r:\
+ :k2=\Eq\r:k3=\Er\r:k4=\Es\r:k5=\Et\r:k6=\Eu\r:k7=\Ev\r:\
+ :k8=\Ew\r:k9=\Ex\r:kh=\EH:kr=\EC:ku=\EA:pc=\177:se@:so@:\
+ :tc=dm3025:
+# Datamedia DT80 soft switches:
+# 1 0=Jump 1=Smooth
+# Autorepeat 0=off 1=on
+# Screen 0=Dark 1=light
+# Cursor 0=u/l 1=block
+#
+# 2 Margin Bell 0=off 1=on
+# Keyclick 0=off 1=on
+# Ansi/VT52 0=VT52 1=Ansi
+# Xon/Xoff 0=Off 1=On
+#
+# 3 Shift3 0=Hash 1=UK Pound
+# Wrap 0=Off 1=On
+# Newline 0=Off 1=On
+# Interlace 0=Off 1=On
+#
+# 4 Parity 0=Odd 1=Even
+# Parity 0=Off 1=On
+# Bits/Char 0=7 1=8
+# Power 0=60Hz 1=50Hz
+#
+# 5 Line Interface 0=EIA 1=Loop
+# Aux Interface 0=EIA 1=Loop
+# Local Copy 0=Off 1=On
+# Spare
+#
+# 6 Aux Parity 0=Odd 1=Even
+# Aux Parity 0=Off 1=On
+# Aux Bits/Char 0=7 1=8
+# CRT Saver 0=Off 1=On
+# dm80/1 is a vt100 lookalike, but it doesn't seem to need any padding.
+dm80|dmdt80|dt80|datamedia dt80/1:\
+ :cd=\E[J:ce=\E[K:cl=\E[2J\E[H:cm=%i\E[%d;%dH:do=^J:\
+ :ho=\E[H:me=\E[m:nd=\E[C:pf=\E[4i:po=\E[5i:ps=\E[0i:\
+ :se=\E[m:so=\E[7m:sr=\EM:ue=\E[m:up=\E[A:us=\E[4m:\
+ :tc=vt100:
+# except in 132 column mode, where it needs a little padding.
+# This is still less padding than the vt100, and you can always turn on
+# the ^S/^Q handshaking, so you can use vt100 flavors for things like
+# reverse video.
+dm80w|dmdt80w|dt80w|datamedia dt80/1 in 132 char mode:\
+ :co#132:\
+ :cd=20\E[0J:ce=20\E[0K:cl=50\E[H\E[2J:cm=5\E[%i%d;%dH:\
+ :do=^J:up=5\E[A:\
+ :tc=dm80:
+# From: Adam Thompson <athompso@pangea.ca> Sept 10 1995
+dt80-sas|Datamedia DT803/DTX for SAS usage:\
+ :am:bw:\
+ :co#80:li#24:\
+ :ac=``a1fxgqh0jYk?lZm@nEooppqDrrsstCu4vAwBx3yyzz{{||}}~~:\
+ :ae=\EG:al=\EL:as=\EF:bl=^G:cd=^K:ce=^]:cl=^L:\
+ :cm=\E=%r%+ %+ :cr=^M:\
+ :..cs=\E=%p1%{32}%+%c%{32}%c\E#1\E=%p2%{32}%+%c%{32}%c\E#2:\
+ :ct=\E'0:dl=\EM:do=\EB:ff=^L:ho=^Y:is=\E)0\E<\EP\E'0\E$2:\
+ :kC=^L:kE=^]:kS=^K:kd=^J:kh=^Y:kl=^H:kr=^\:ku=^_:le=^H:me=^X:\
+ :mr=\E$2\004:nd=^\:pf=^O:po=^N:se=^X:sf=\EB:so=\E$2\004:\
+ :sr=\EI:st=\E'1:ta=^I:up=^_:
+
+# Datamedia Excel 62, 64 from Gould/SEL UTX/32 via BRL
+# These aren't end-all Excel termcaps; but do insert/delete char/line
+# and name some of the extra function keys. (Mike Feldman ccvaxa!feldman)
+# The naming convention has been bent somewhat, with the use of E? (where
+# E is for 'Excel') as # a name. This was done to distinguish the entries
+# from the other Datamedias in use here, and yet to associate a model of
+# the Excel terminals with the regular datamedia terminals that share
+# major characteristics.
+excel62|excel64|datamedia Excel 62:\
+ :dc=\E[P:ei=\E[4l:im=\E[4h:k5=\EOu:k6=\EOv:k7=\EOw:k8=\EOx:\
+ :k9=\EOy:kb=^H:kd=^J:kl=^H:\
+ :tc=dt80:
+excel62-w|excel64-w|datamedia Excel 62 in 132 char mode:\
+ :dc=\E[P:ei=\E[4l:im=\E[4h:k5=\EOu:k6=\EOv:k7=\EOw:k8=\EOx:\
+ :k9=\EOy:kb=^H:kd=^J:kl=^H:\
+ :tc=dt80w:
+excel62-rv|excel64-rv|datamedia Excel 62 in reverse video mode:\
+ :dc=\E[P:ei=\E[4l:im=\E[4h:k5=\EOu:k6=\EOv:k7=\EOw:k8=\EOx:\
+ :k9=\EOy:kb=^H:kd=^J:kl=^H:vb=\E[?5l\E[?5h:\
+ :tc=dt80:
+
+#### Falco
+#
+# Falco Data Products
+# 440 Potrero Avenue
+# Sunnyvale, CA 940864-196
+# Vox: (800)-325-2648
+# Fax: (408)-745-7860
+# Net: techsup@charm.sys.falco.com
+#
+# Current Falco models as of 1995 are generally ANSI-compatible and support
+# emulations of DEC VT-series, Wyse, and Televideo types.
+#
+
+# Test version for Falco ts-1. See <arpavax.hickman@ucb> for info
+# This terminal was released around 1983 and was discontinued long ago.
+# The standout and underline highlights are the same.
+falco|ts1|ts-1|falco ts-1:\
+ :am:bs:\
+ :co#80:it#8:li#24:\
+ :al=\EE:bl=^G:cd=\EY:ce=\ET\EG0\010:cl=\E*:cm=\E=%+ %+ :\
+ :cr=^M:dc=\EW:dl=\ER:do=^J:ei=\Er:ho=^^:im=\Eq:is=\Eu\E3:\
+ :k0=^A0\r:kd=^J:kl=^H:kr=^L:ku=^K:le=^H:me=\Eg0:nd=^L:\
+ :se=\Eg0:sf=^J:so=\Eg1:ta=^I:ue=\Eg0:up=^K:us=\Eg1:
+falco-p|ts1p|ts-1p|falco ts-1 with paging option:\
+ :am:bs:da:db:mi:ms:ul:\
+ :co#80:it#8:li#24:\
+ :al=\EE:bl=^G:bt=\EI:cd=\EY:ce=\ET\EG0\010\Eg0:cl=\E*:\
+ :cm=\E=%+ %+ :cr=^M:dc=\EW:dl=\ER:do=\E[B:ei=\Er:im=\Eq:\
+ :is=\EZ\E3\E_c:kd=\E[B:kh=\E[H:kl=\E[D:kr=\E[C:ku=\E[A:\
+ :le=^H:me=\Eg0:nd=\E[C:se=\Eg0:sf=^J:so=\Eg4:ta=^I:te=\E_b:\
+ :ti=\E_d:ue=\Eg0:up=\E[A:us=\Eg1:
+# (ts100: I added <rmam>/<smam> based on the init string -- esr)
+ts100|ts100-sp|falco ts100-sp:\
+ :am:mi:ms:xn:xo:\
+ :co#80:it#8:li#24:vt#3:\
+ :@8=\EOM:DO=\E[%dB:K1=\EOq:K2=\EOr:K3=\EOs:K4=\EOp:K5=\EOn:\
+ :LE=\E[%dD:RA=\E[?7l:RI=\E[%dC:SA=\E[?7h:UP=\E[%dA:\
+ :ac=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~:\
+ :ae=^O:al=\E~E:as=^N:bl=^G:cb=\E[1K:cd=\E[J:ce=\E[K:\
+ :cl=\E[H\E[J:cm=\E[%i%d;%dH:cr=^M:cs=\E[%i%d;%dr:\
+ :ct=\E[3g:dc=\E~W:dl=\E~R:do=^J:eA=\E(B\E)0:ei=:ho=\E[H:\
+ :i1=\E~)\E~ea:ic=\E~Q:im=:k0=\EOy:k1=\EOP:k2=\EOQ:k3=\EOR:\
+ :k4=\EOS:k5=\EOt:k6=\EOu:k7=\EOv:k8=\EOl:k9=\EOw:k;=\EOx:\
+ :kb=^H:kd=\EOB:ke=\E[?1l\E>:kl=\EOD:kr=\EOC:ks=\E[?1h\E=:\
+ :ku=\EOA:le=^H:mb=\E[5m:md=\E[1m:me=\E[m\017:mr=\E[7m:\
+ :nd=\E[C:r2=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h:rc=\E8:\
+ :..sa=\E[0%?%p1%p6%|%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;%?%p4%t;5%;m%?%p9%t\016%e\017%;:\
+ :sc=\E7:se=\E[m:sf=^J:so=\E[1;7m:sr=\EM:st=\EH:ta=^I:\
+ :ue=\E[m:up=\E[A:us=\E[4m:
+ts100-ctxt|falco ts-100 saving context:\
+ :te=\E~_b:ti=\E~_d\E[2J:tc=ts100:
+
+#### Florida Computer Graphics
+#
+
+# Florida Computer Graphics Beacon System, using terminal emulator program
+# "host.com", as provided by FCG. This description is for an early release
+# of the "host" program. Known bug: :cd: clears the whole screen, so it's
+# commented out.
+
+# From: David Bryant <cbosg!djb> 1/7/83
+beacon|FCG Beacon System:\
+ :am:da:db:\
+ :co#80:li#32:\
+ :al=\EE:bl=\ESTART\r\E37\r\EEND\r:ce=\ET:cl=\EZ:\
+ :cm=\E=%+ %+ :cr=^M:dc=\EW:dl=\ER:do=^J:ei=:ho=\EH:ic=\EQ:\
+ :im=:le=^H:mb=\ESTART\r\E61\0541\r\EEND\r:\
+ :me=\ESTART\r\E78\r\E70\0540\r\EEND\r:\
+ :mr=\ESTART\r\E59\0541\r\EEND\r:nd=\EV:\
+ :se=\ESTART\r\E70\0540\r\EEND\r:sf=^J:\
+ :so=\ESTART\r\E70\0546\r\EEND\r:te=:\
+ :ti=\ESTART\r\E2\0540\r\E12\r\EEND\r:\
+ :ue=\ESTART\r\E60\0540\r\EEND\r:up=\EU:\
+ :us=\ESTART\r\E60\0541\r\EEND\r:
+
+#### Fluke
+#
+
+# The f1720a differences from ANSI: no auto margin, destructive
+# tabs, # of lines, funny highlighting and underlining
+f1720|f1720a|fluke 1720A:\
+ :xt:\
+ :co#80:li#16:sg#1:\
+ :bl=^G:cd=\E[J:ce=\E[K:cl=\E[H\E[2J:cm=\E[%i%d;%dH:cr=^M:\
+ :do=\E[B:is=\E[H\E[2J:kd=^]:kl=^_:kr=^^:ku=^\:le=^H:me=\E[m:\
+ :nd=\E[C:se=\E[m:sf=\ED:so=\E[7m:sr=\EM:ue=\E[m:up=\E[A:\
+ :us=\E[4m:
+
+#### Liberty Electronics (Freedom)
+#
+# Liberty Electronics
+# 48089 Fremont Blvd
+# Fremont CA 94538
+# Vox: (510)-623-6000
+# Fax: (510)-623-7021
+
+# From: <faletti@berkeley.edu>
+# (f100: added empty <acsc> to suppress a tic warning;
+# made this relative to adm+sgr -- note that <invis> isn't
+# known to work for f100 but does on the f110. --esr)
+f100|freedom|freedom100|freedom model 100:\
+ :am:bs:bw:hs:mi:ms:xo:\
+ :co#80:li#24:\
+ :ac=:ae=\E$:al=\EE:as=\E%:bl=^G:bt=\EI:cd=\EY:ce=\ET:\
+ :ch=\E]%+ :cl=^Z:cm=\E=%+ %+ :cr=^M:ct=\E3:cv=\E[%+ :\
+ :dc=\EW:dl=\ER:do=^J:ds=\Eg\Ef\r:ei=\Er:fs=^M:ho=^^:im=\Eq:\
+ :ip=:is=\Eg\Ef\r\Ed:k1=^A@\r:k2=^AA\r:k3=^AB\r:k4=^AC\r:\
+ :k5=^AD\r:k6=^AE\r:k7=^AF\r:k8=^AG\r:k9=^AH\r:k;=^AI\r:\
+ :kB=\EI:kb=^H:kd=^V:kh=^^:kl=^H:kr=^L:ku=^K:le=^H:nd=^L:sf=^J:\
+ :sr=\Ej:st=\E1:ta=^I:ts=\Eg\Ef:up=^K:vb=\Eb\Ed:\
+ :tc=adm+sgr:
+f100-rv|freedom-rv|freedom 100 in reverse video:\
+ :is=\Eg\Ef\r\Eb:vb=\Ed\Eb:tc=f100:
+# The f110 and f200 have problems with vi(1). They use the ^V
+# code for the down cursor key. When kcud1 is defined in terminfo
+# as ^V, the Control Character Quoting capability (^V in insert mode)
+# is lost! It cannot be remapped in vi because it is necessary to enter
+# a ^V to to quote the ^V that is being remapped!!!
+#
+# f110/f200 users will have to decide whether
+# to lose the down cursor key or the quoting capability. We will opt
+# initially for leaving the quoting capability out, since use of VI
+# is not generally applicable to most interactive applications
+# (f110: added :ta:, :kh: & <kcbt> from f100 -- esr)
+f110|freedom110|Liberty Freedom 110:\
+ :bw@:es:\
+ :it#8:ws#80:\
+ :ae=\E%%:al=\EE:as=\E$:dl=\ER:do=^V:ds=\Ef\r:ei=\Er\EO:\
+ :im=\EO\Eq:ip@:is@:k0=^AI\r:k;@:kA=\EE:kC=^^:kD=\EW:kE=\ET:\
+ :kI=\EQ:kL=\ER:kS=\EY:mb=\EG2:md=\EG0:mh=\EG@:pf=\Ea:po=\E`:\
+ :so=\EG<:sr=\EJ:ts=\Ef:vb=\Eb\Ed:ve=\E.2:vi=\E.1:vs=\E.2:\
+ :tc=f100:
+f110-14|Liberty Freedom 110 14inch:\
+ :dc@:tc=f110:
+f110-w|Liberty Freedom 110 - 132 cols:\
+ :co#132:tc=f110:
+f110-14w|Liberty Freedom 110 14in/132 cols:\
+ :co#132:\
+ :dc@:tc=f110:
+# (f200: added <acsc> to suppress tic warnings re :as:/:ae: --esr)
+f200|freedom200|Liberty Freedom 200:\
+ :am:bs:es:hs:mi:ms:xo:\
+ :co#80:it#8:li#24:ws#80:\
+ :ac=:ae=\E%%:al=\EE:as=\E$:bl=^G:bt=\EI:cd=\EY:ce=\ET:\
+ :ch=\E]%+ :cl=^Z:cm=\E=%+ %+ :cr=^M:cs=\Em0%+ %+ :ct=\E3:\
+ :cv=\E[%+ :dc=\EW:dl=\ER:do=^V:ds=\Ef\r:ei=\Er:fs=^M:ho=^^:\
+ :im=\Eq:k0=^AI\r:k1=^A@\r:k2=^AA\r:k3=^AB\r:k4=^AC\r:\
+ :k5=^AD\r:k6=^AE\r:k7=^AF\r:k8=^AG\r:k9=^AH\r:kA=\EE:kC=^^:\
+ :kD=\EW:kE=\ET:kI=\EQ:kL=\ER:kS=\EY:kb=^H:kd=^V:kl=^H:kr=^L:\
+ :ku=^K:le=^H:mb=\EG2:md=\EG0:mh=\EG@:nd=^L:pf=\Ea:po=\E`:\
+ :sf=^J:so=\EG<:sr=\EJ:st=\E1:ts=\Ef:up=^K:vb=\Eo\En:ve=\E.1:\
+ :vi=\E.0:vs=\E.1:\
+ :tc=adm+sgr:
+f200-w|Liberty Freedom 200 - 132 cols:\
+ :co#132:tc=f200:
+# The f200 has the ability to reprogram the down cursor key. The key is
+# reprogrammed to ^J (linefeed). This value is remembered in non-volatile RAM,
+# so powering the terminal off and on will not cause the change to be lost.
+f200vi|Liberty Freedom 200 for vi:\
+ :kd=^J:vb=\Eb\Ed:tc=f200:
+f200vi-w|Liberty Freedom 200 - 132 cols for vi:\
+ :co#132:tc=f200vi:
+
+#### GraphOn (go)
+#
+# Graphon Corporation
+# 544 Division Street
+# Campbell, CA 95008
+# Vox: (408)-370-4080
+# Fax: (408)-370-5047
+# Net: troy@graphon.com (Troy Morrison)
+#
+#
+# The go140 and go225 have been discontinued. GraphOn now makes X terminals,
+# including one odd hybrid that starts out life on power-up as a character
+# terminal, than can be switched to X graphics mode (driven over the serial
+# line) by an escape sequence. No info on this beast yet.
+# (go140: I added <rmam>/<smam> based on the init string -- esr)
+go140|graphon go-140:\
+ :bs:\
+ :co#80:it#8:li#24:\
+ :RA=\E[?7l:SA=\E[?7h:al=\E[L:cd=10\E[J:ce=\E[K:\
+ :cl=10\E[H\E[2J:cm=\E[%i%2;%2H:dc=\E[P:dl=\E[M:ei=\E[4l:\
+ :if=/usr/share/tabset/vt100:im=\E[4h:\
+ :is=\E<\E=\E[?3l\E[?7l\E(B\E[J\E7\E[;r\E8\E[m\E[q:\
+ :k1=\EOP:k2=\EOQ:k3=\EOR:k4=\EOS:kd=\EOB:ke=\E[?1l\E>:\
+ :kh=\E[H:kl=\EOD:kr=\EOC:ks=\E[?1h\E=:ku=\EOA:le=^H:\
+ :me=\E[m:nd=\E[C:se=\E[m:so=\E[7m:sr=\EM:ta=^I:ue=\E[m:\
+ :up=\E[A:us=\E[4m:
+go140w|graphon go-140 in 132 column mode:\
+ :am:\
+ :co#132:\
+ :is=\E<\E=\E[?3h\E[?7h\E(B\E[J\E7\E[;r\E8\E[m\E[q:tc=go140:
+# Hacked up vt200 termcap to handle GO-225/VT220
+# From: <edm@nwnexus.WA.COM>
+# (go225: I added <rmam>/<smam> based on the init string -- esr)
+go225|go-225|Graphon 225:\
+ :am:bs:mi:xn:\
+ :co#80:it#8:li#25:vt#3:\
+ :RA=\E[?7l:SA=\E[?7h:al=\E[L:cd=\E[J:ce=\E[K:cl=\E[H\E[J:\
+ :cm=\E[%i%d;%dH:cs=\E[%i%d;%dr:dc=\E[P:dl=\E[M:do=^J:\
+ :ei=\E[4l:ho=\E[H:im=\E[4h:\
+ :is=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h:k1=\EOP:k2=\EOQ:\
+ :k3=\EOR:k4=\EOS:kb=^H:kd=\E[B:ke=\E>:kh=\E[H:kl=\E[D:\
+ :kr=\E[C:ks=\E=:ku=\E[A:le=^H:mb=\E[5m:md=\E[1m:me=\E[m:\
+ :mr=\E[7m:nd=\E[C:r1=\E[\041p\E[?7h\E[2;1;1#w:rc=\E8:\
+ :rf=/usr/share/tabset/vt100:sc=\E7:se=\E[27m:sf=\ED:\
+ :so=\E[7m:sr=\EM:ta=^I:te=\E[\041p\E[?7h\E[2;1;1#w:\
+ :ti=\E[2;0#w\E[1;25r:ue=\E[24m:up=\E[A:us=\E[4m:
+
+#### Harris
+#
+# Bletch. These guys shared the Terminal Brain Damage laurels with Hazeltine.
+# Their terminal group is ancient history now (1995) though the parent
+# company is still in business.
+#
+
+# 8675, 8686, and bee from Cyrus Rahman
+# (8675: changed k10, k11...k16 to k;, F1...F6 -- esr)
+ha8675|harris 8675:\
+ :F1=^W:F2=\ER:F3=\EE:F4=\EI:F5=\Ei:F6=\Eg:\
+ :is=\ES\E#\E*\Eh\Em\E?\E1\E9\E@\EX\EU:k1=^F:k2=^P:k3=^N:\
+ :k4=^V:k5=^J:k6=^T:k7=^H:k8=\177:k9=\Ee:k;=\Ed:\
+ :tc=bee:
+# (8686: changed k10, k11...k16 to k;, F1...F6; fixed broken continuation
+# in :is: -- esr)
+ha8686|harris 8686:\
+ :F1=\EW:F2=\002\E{\003:F3=\002\E|\003:F4=\002\E}\003:\
+ :F5=\002\E~\003:F6=\002\E\177\003:\
+ :is=\ES\E#\E*\Eh\Em\E?\E1\E9\E@\EX\EU\E"*Z01\E"8F35021B7C83#\E"8F45021B7D83#\E"8F55021B7E83#\E"8F65021B7F83#\E"8F75021B7383#\E"8F851BD7#\E"8F95021B7083#\E"8FA5021B7183#\E"8FB5021B7283#:\
+ :k1=\002\Ep\003:k2=\002\Eq\003:k3=\002\Er\003:\
+ :k4=\002\Es\003:k5=\E3:k6=\EI:k7=\ER:k8=\EJ:k9=\E(:k;=\Ej:tc=bee:
+
+#### Hazeltine
+#
+# Hazeltine appears to be out of the terminal business as of 1995. These
+# guys were co-owners of the Terminal Brain Damage Hall Of Fame along with
+# Harris. They have a hazeltine.com domain (but no web page there ) and can
+# be reached at:
+#
+# Hazeltine
+# 450 East Pulaski Road
+# Greenlawn, New York 11740
+#
+# As late as 1993, manuals for the terminal product line could still be
+# purchased from:
+#
+# TRW Customer Service Division
+# 15 Law Drive
+# P.O. Box 2076
+# Fairfield, NJ 07007-2078
+#
+# They're now (1998) a subsidiary of General Electric, operating under the
+# marque "GEC-Marconi Hazeltine" and doing military avionics. Web page
+# at <http://www.gec.com/cpd/1ncpd.htm#1.55>.
+#
+
+# Since :nd: is blank, when you want to erase something you
+# are out of luck. You will have to do ^L's a lot to
+# redraw the screen. h1000 is untested. It doesn't work in
+# vi - this terminal is too dumb for even vi. (The code is
+# there but it isn't debugged for this case.)
+hz1000|hazeltine 1000:\
+ :bs:\
+ :co#80:li#12:\
+ :bl=^G:cl=^L:cr=^M:do=^J:ho=^K:le=^H:nd= :sf=^J:
+# From: <cbosg!ucbvax!pur-ee!cincy!chris> Thu Aug 20 09:09:18 1981
+hz1420|hazeltine 1420:\
+ :am:bs:\
+ :co#80:li#24:\
+ :al=\E^Z:bl=^G:cd=\E^X:ce=\E^O:cl=\E^\:cm=\E\021%r%.%+ :\
+ :cr=^M:dl=\E^S:do=^J:le=^H:nd=^P:se=\E^Y:sf=^J:so=\E^_:ta=^N:\
+ :up=\E^L:
+# New "safe" cursor movement (11/87) from <cgs@umd5.umd.edu>. Prevents
+# freakout with out-of-range args and tn3270. No hz since it needs to
+# receive tildes.
+hz1500|hazeltine 1500:\
+ :am:bs:hz:\
+ :co#80:li#24:\
+ :al=~\032:bl=^G:cd=~\030:ce=~^O:cl=~^\:\
+ :cm=~\021%r%>^^ %+`%+`:cr=^M:dl=~\023:do=~^K:ho=~^R:kd=^J:\
+ :kh=~^R:kl=^H:kr=^P:ku=~^L:le=^H:nd=^P:se=~^Y:sf=^J:so=~^_:\
+ :up=~^L:
+# h1510 assumed to be in sane escape mode. Else use h1500.
+# (h1510: early versions of this entry apparently had ":se=\E^_:,
+# :so=\E^Y:, but these caps were commented out in 8.3; also,
+# removed incorrect and overridden ":do=^J:" -- esr)
+hz1510|hazeltine 1510:\
+ :am:bs:\
+ :co#80:li#24:\
+ :al=\E^Z:bl=^G:cd=\E^X:ce=\E^O:cl=\E^\:cm=\E\021%r%.%.:\
+ :cr=^M:dl=\E^S:do=\E^K:le=^H:nd=^P:sf=^J:up=\E^L:
+# Hazeltine 1520
+# The following switch settings are assumed for normal operation:
+# FULL CR U/L_CASE ESCAPE
+# FORMAT_OFF EOM_A_OFF EOM_B_OFF WRAPAROUND_ON
+# Other switches may be set for operator convenience or communication
+# requirements.
+hz1520|Hazeltine 1520:\
+ :am:bs:bw:ms:\
+ :co#80:li#24:\
+ :al=\E^Z:bl=^G:cd=\E^X:ce=\E^O:cl=\E^\:cm=\E\021%r%.%.:\
+ :cr=^M:dl=\E^S:do=^J:ho=\E^R:kA=\E^Z:kC=\E^\:kE=\E^O:\
+ :kL=\E^S:kS=\E^X:kb=^H:kd=\E^K:kh=\E^R:kl=^H:kr=^P:ku=\E^L:\
+ :le=^H:md=\E^_:me=\E^Y:nd=^P:r1=\E$\E\005\E?\E\031:\
+ :se=\E^Y:sf=^J:so=\E^_:up=\E^L:
+# This version works with the escape switch off
+# (h1520: removed incorrect and overridden ":do=^J:" -- esr)
+hz1520-noesc|hazeltine 1520:\
+ :am:hz:\
+ :co#80:li#24:\
+ :al=~^Z:bl=^G:cd=~^X:ce=~^O:cl=~^\:cm=~\021%r%.%.:cr=^M:\
+ :dl=~^S:do=~^K:ho=~^R:le=^H:nd=^P:se=~^Y:sf=^J:so=~^_:up=~^L:
+# Note: the h1552 appears to be the first Hazeltine terminal which
+# is not braindamaged. It has tildes and backprimes and everything!
+# Be sure the auto lf/cr switch is set to cr.
+hz1552|hazeltine 1552:\
+ :bs:\
+ :al=\EE:dl=\EO:do=^J:k1=\EP:k2=\EQ:k3=\ER:l1=blue:l2=red:\
+ :l3=green:\
+ :tc=vt52:
+hz1552-rv|hazeltine 1552 reverse video:\
+ :do=^J:se=\ET:so=\ES:tc=hz1552:
+# Note: h2000 won't work well because of a clash between upper case and ~'s.
+hz2000|hazeltine 2000:\
+ :am:bs:nc:\
+ :co#74:li#27:\
+ :al=~\032:bl=^G:cl=~\034:cm=~\021%r%.%.:dl=~\023:do=^J:\
+ :ho=~^R:le=^H:pc=\177:sf=^J:
+# Date: Fri Jul 23 10:27:53 1982. Some unknown person wrote:
+# I tested this termcap entry for the Hazeltine Esprit with vi. It seems
+# to work ok. There is one problem though if one types a lot of garbage
+# characters very fast vi seems not able to keep up and hangs while trying
+# to insert. That's in insert mode while trying to insert in the middle of
+# a line. It might be because the Esprit doesn't have insert char and delete
+# char as a built in function. Vi has to delete to end of line and then
+# redraw the rest of the line.
+esprit|Hazeltine Esprit I:\
+ :am:bs:bw:\
+ :co#80:li#24:\
+ :al=\E^Z:bl=^G:bt=\E^T:cd=\E^W:ce=\E^O:cl=\E^\:\
+ :cm=\E\021%r%.%.:cr=^M:dl=\E^S:do=\E^K:ho=\E^R:is=\E?:\
+ :k0=^B0^J:k1=^B1^J:k2=^B2^J:k3=^B3^J:k4=^B4^J:k5=^B5^J:\
+ :k6=^B6^J:k7=^B7^J:k8=^B8^J:k9=^B9^J:kb=^H:kd=\E^K:ke=\E>:\
+ :kh=\E^R:kl=^H:kr=^P:ks=\E<:ku=\E^L:l0=0:l1=1:l2=2:l3=3:l4=4:\
+ :l5=5:l6=6:l7=7:l8=8:l9=9:le=^H:nd=^P:se=\E^Y:sf=^J:so=\E^_:\
+ :up=\E^L:
+esprit-am|hazeltine esprit auto-margin:\
+ :am:tc=esprit:
+# Hazeltine Modular-1 from Cliff Shackelton <ittvax!ittral!shackelt> via BRL
+# Vi it seems always wants to send a control J for "do" and it turned out
+# that the terminal would work somewhat if the auto LF/CR was turned off.
+# (hmod1: removed :dn=~^K: -- esr)
+hmod1|Hazeltine Modular 1:\
+ :am:bs:hz:\
+ :co#80:li#24:\
+ :al=~^Z:bl=^G:bt=~^T:cl=~^\:cm=~\021%r%.%.:cr=^M:dl=~^S:\
+ :do=~^K:ho=~^R:kd=~^K:kh=~^R:kl=^H:kr=^P:ku=~^L:le=^H:me=~^Y:\
+ :nd=^P:rc=~^Q:sc=~^E:se=~^Y:sf=^J:so=~^_:up=~^L:
+#
+# Hazeltine Executive 80 Model 30 (1554?)
+# from Will Martin <control@ALMSA-1.ARPA> via BRL
+# Like VT100, except for different "am" behavior.
+hazel|exec80|h80|he80|Hazeltine Executive 80:\
+ :am:bs:pt:\
+ :co#80:it#8:li#24:vt#3:\
+ :bl=^G:cd=50\E[J:ce=3\E[K:cl=50\E[;H\E[2J:\
+ :cm=5\E[%i%d;%dH:cr=^M:cs=\E[%i%d;%dr:do=^J:ho=\E[H:\
+ :is=\E[1;24r\E[24;1H:k1=\EOP:k2=\EOQ:k3=\EOR:k4=\EOS:\
+ :kb=^H:kd=\EOB:ke=\E[?1l\E>:kl=\EOD:kr=\EOC:ks=\E[?1h\E=:\
+ :ku=\EOA:le=^H:mb=2\E[5m:md=2\E[1m:me=2\E[m:mr=2\E[7m:\
+ :nd=2\E[C:nl=^J:r1=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h:\
+ :rc=\E8:rf=/usr/share/tabset/vt100:sc=\E7:se=2\E[m:\
+ :so=2\E[7m:sr=5\EM:ta=^I:ue=2\E[m:up=2\E[A:us=2\E[4m:
+
+#### Hewlett-Packard (hp)
+#
+# Hewlett-Packard
+# 8000 Foothills Blvd
+# Roseville, CA 95747
+# Vox: 1-(916)-785-4363 (Technical response line for VDTs)
+# 1-(800)-633-3600 (General customer support)
+#
+#
+# As of March 1998, HP no longer has any terminals in production.
+# The 700 series (22, 32, 41, 44, 92, 94, 96, 98) is still being
+# supported (they still have parts). So are the 2392a and 2394a.
+# See the WORKSTATION CONSOLES section for the 700s.
+#
+
+# Generic HP terminal - this should (hopefully) work on any HP terminal.
+hpgeneric|hp|hewlett-packard generic terminal:\
+ :am:bs:da:db:mi:pt:xs:\
+ :co#80:li#24:lm#0:vt#6:\
+ :al=\EL:bl=^G:cd=\EJ:ce=\EK:ch=\E&a%dC:cl=\EH\EJ:\
+ :cm=\E&a%r%dc%dY:cr=^M:ct=\E3:cv=\E&a%dY:dc=\EP:dl=\EM:\
+ :do=^J:ei=\ER:im=\EQ:kB=\Ei:kb=^H:le=^H:me=\E&d@:nd=\EC:\
+ :se=\E&d@:sf=^J:so=\E&dJ:st=\E1:ta=^I:ue=\E&d@:up=\EA:\
+ :us=\E&dD:
+
+hp110|hewlett-packard model 110 portable:\
+ :li#16:tc=hpgeneric:
+
+hp+pfk+cr|hp function keys with CR:\
+ :k1=\Ep\r:k2=\Eq\r:k3=\Er\r:k4=\Es\r:k5=\Et\r:k6=\Eu\r:\
+ :k7=\Ev\r:k8=\Ew\r:
+
+hp+pfk-cr|hp function keys w/o CR:\
+ :k1=\Ep:k2=\Eq:k3=\Er:k4=\Es:k5=\Et:k6=\Eu:k7=\Ev:k8=\Ew:
+
+# The hp2621s use the same keys for the arrows and function keys,
+# but not separate escape sequences. These definitions allow the
+# user to use those keys as arrow keys rather than as function
+# keys.
+hp+pfk+arrows|hp alternate arrow definitions:\
+ :k1@:k2@:k3@:k4@:k5@:k6@:k7@:k8@:kF=\Er\r:kH=\Eq\r:kR=\Es\r:\
+ :kd=\Ew\r:kh=\Ep\r:kl=\Eu\r:kr=\Ev\r:ku=\Et\r:
+
+hp+arrows|hp arrow definitions:\
+ :kF=\ES:kH=\EF:kR=\ET:kd=\EB:kh=\Eh:kl=\ED:kr=\EC:ku=\EA:
+
+# Generic stuff from the HP 262x series
+#
+hp262x|HP 262x terminals:\
+ :xs:\
+ :cd=\EJ:dc=\EP:ip=:kA=\EL:kD=\EP:kE=\EK:kF=\ES:kI=\EQ:kL=\EM:\
+ :kM=\ER:kN=\EU:kP=\EV:kR=\ET:kS=\EJ:kd=\EB:ke=\E&s0A:kh=\Eh:\
+ :kl=\ED:kr=\EC:ks=\E&s1A:ku=\EA:mb=\E&dA:me=\E&d@:mk=\E&dS:\
+ :mr=\E&dB:\
+ :..sa=\E&d%{64}%?%p1%t%{66}%|%;%?%p2%t%{68}%|%;%?%p3%t%{66}%|%;%?%p4%t%{65}%|%;%c:\
+ :se=\E&d@:sf=\ES:so=\E&dB:ta=\011:ue=\E&d@:us=\E&dD:
+
+# Note: no :ho: on HPs since that homes to top of memory, not screen.
+# Due to severe 2621 braindamage, the only way to get the arrow keys to
+# transmit anything at all is to turn on the function key labels
+# with :ks:, and even then the user has to hold down shift!
+# The default 2621 turns off the labels except when it has to to
+# enable the function keys. If your installation prefers labels
+# on all the time, or off all the time (at the "expense" of the
+# function keys), use 2621-nl or 2621-wl.
+#
+# Note: there are newer ROMs for 2621's that allow you to set
+# strap A so the regular arrow keys xmit \EA, etc, as with the
+# 2645. However, even with this strap set, the terminal stops
+# xmitting if you reset it, until you unset and reset the strap!
+# Since there is no way to set/unset the strap with an escape
+# sequence, we don't use it in the default.
+# If you like, you can use 2621-ba (brain-damaged arrow keys).
+hp2621-ba|2621 w/new rom and strap A set:\
+ :ke@:ks@:tc=hp+arrows:\
+ :tc=hp2621:
+
+# hp2621 with function labels. Most of the time they are off,
+# but inside vi, the function key labels appear. You have to
+# hold down shift to get them to xmit.
+hp2621|hp2621a|hp2621A|2621|2621a|2621A|hp2621-wl|2621-wl|hp 2621 w/labels:\
+ :is=\E&jA\r:ke=\E&jA:\
+ :tc=hp2621-fl:
+hp2621-fl|hp 2621:\
+ :xo:xs@:\
+ :pb#19200:\
+ :bt=\Ei:cm=\E&a%r%dc%dY:dc=\EP:ip=:is=\E&j@\r:ke=\E&j@:\
+ :ks=\E&jB:me=\E&d@:se=\E&d@:so=\E&dD:ta=\011:ue=\E&d@:\
+ :us=\E&dD:\
+ :tc=hp+pfk+cr:tc=hpgeneric:
+
+# To use hp2621p printer, setenv TERM=2621p, PRINTER=2612p
+hp2621p|hp 2621 with printer:\
+ :pf=\E&p13C:po=\E&p11C:tc=hp2621:
+
+hp2621p-a|hp2621p with fn as arrows:\
+ :tc=hp+pfk+arrows:tc=hp2621p:
+
+# hp2621 with k45 keyboard
+hp2621-k45|hp2621k45|k45|hp 2621 with 45 keyboard:\
+ :kb=^H:kd=\EB:ke=\E&s0A:kh=\Eh:kl=\ED:kr=\EC:ks=\E&s1A:\
+ :ku=\EA:\
+ :tc=hp2621:
+
+# 2621 using all 48 lines of memory, only 24 visible at any time.
+hp2621-48|48 line 2621:\
+ :li#48:\
+ :cm=\E&a%r%dc%dR:cv=\E&a%dR:ho=\EH:tc=hp2621:
+
+# 2621 with no labels ever. Also prevents vi delays on escape.
+hp2621-nl|hp 2621 with no labels:\
+ :kd@:ke@:kh@:kl@:kr@:ks@:ku@:tc=hp2621-fl:
+
+# Needed for UCB ARPAVAX console, since lsi-11 expands tabs
+# (wrong).
+#
+hp2621-nt|hp 2621 w/no tabs:\
+ :ta@:tc=hp2621:
+
+# Hp 2624 B with 4 or 10 pages of memory.
+#
+# Some assumptions are made with this entry. These settings are
+# NOT set up by the initialization strings.
+#
+# Port Configuration
+# RecvPace=Xon/Xoff
+# XmitPace=Xon/Xoff
+# StripNulDel=Yes
+#
+# Terminal Configuration
+# InhHndShk=Yes
+# InhDC2=Yes
+# XmitFnctn(A)=No
+# InhEolWrp=No
+#
+# Note: the 2624 DOES have a true :ho:, believe it or not!
+#
+# The 2624 has an "error line" to which messages can be sent.
+# This is CLOSE to what is expected for a "status line". However,
+# after a message is sent to the "error line", the next carriage
+# return is EATEN and the "error line" is turned back off again!
+# So I guess we can't define :hs:, :es:, :ws:, :ds:, :fs:, :ts:.
+#
+# This entry supports emacs (and any other program that uses raw
+# mode) at 4800 baud and less. I couldn't get the padding right
+# for 9600.
+#
+# (hp2624: replaced NUL sequences in flash with mandatory pauses -- esr)
+hp2624|hp2624a|hp2624b|hp2624b-4p|Hewlett Packard 2624 B:\
+ :da:db:\
+ :lm#96:\
+ :vb=\E&w13F\E&w12F\E&w13F\E&w12F:tc=hp+labels:tc=scrhp:
+
+# This hp2626 entry does not use any of the fancy windowing stuff
+# of the 2626.
+#
+# Indeed, terminfo does not yet handle such stuff. Since changing
+# any window clears memory, it is probably not possible to use
+# this for screen opt.
+#
+# ed is incredibly slow most of the time - I am guessing at the
+# exact padding. Since the terminal uses xoff/xon this is intended
+# only for cost computation, so that the terminal will prefer el
+# or even dl1 which is probably faster!
+#
+# \ED\EJ\EC hack for ed from Ed Bradford - apparently ed is only
+# extra slow on the last line of the window.
+#
+# The padding probably should be changed.
+#
+hp2626|hp2626a|hp2626p|hp 2626:\
+ :da:db:\
+ :lm#0:pb#19200:\
+ :SF=\E&r%dD:SR=\E&r%dU:cd=\ED\EJ\EC:ip=:is=\E&j@\r:tc=hp+pfk+cr:tc=hp+labels:tc=scrhp:
+
+# This entry is for sysline. It allocates a 23 line window with
+# a 115 line workspace for regular use, and a 1 line window for
+# the status line.
+#
+# This assumes port 2 is being used.
+# Turn off horizontal line, Create ws #1 with 115 lines,
+# Create ws #2 with 1 line, Create window #1 lines 1-23,
+# Create window #2 lines 24-24, Attach cursor to workspace #1.
+# Note that this clears the tabs so it must be done by tset before
+# it sets the tabs.
+#
+hp2626-s|hp 2626 using only 23 lines:\
+ :es:hs:\
+ :li#23:\
+ :fs=\E&d@\E&w7f2p1I\E&w4f1I:\
+ :i1=\E&q3t0{0H \E&w0f115n1I \E&w0f1n2I \E&w2f1i0d0u22l0S \E&w2f2i0d23u23l0S \E&w7f2p1I \r:\
+ :ts=\E&w7f2p2I\E&w4f2I\r\EK\E&a%p1%dC:\
+ :tc=hp2626:
+# Force terminal back to 24 lines after being 23.
+hp2626-ns|hp 2626 using all 24 lines:\
+ :i1=\E&q3t0{0H \E&w0f118n1I \E&w0f1n2I \E&w2f1i0d0u23l0S \E&w3f2I \E&w7f2p1I \r:tc=hp2626:
+# Various entries useful for small windows on 2626.
+hp2626-12|hewlett-packard 2626 12 lines:\
+ :li#12:tc=hp2626:
+hp2626-12x40|hewlett-packard 2626 12 lines 40 columns:\
+ :co#40:li#12:tc=hp2626:
+hp2626-x40|hewlett-packard 2626 40 columns:\
+ :co#40:tc=hp2626:
+hp2626-12-s|hewlett-packard 2626 11 lines plus status:\
+ :li#11:tc=hp2626-s:
+
+#
+# hp2627 color tubes from University of Wisconsin
+#
+hp2627a-rev|hp 2627 with reverse video colors:\
+ :cr=^M:do=^J:\
+ :is=\E&v0m1a0b0c1x1y1z1i0a0b1c1x1y1z0i0S\E&j@\r\E3\r:\
+ :kb=^H:kd=^J:kl=^H:nw=^M^J:sf=^J:ta=^I:ue=\E&v0S\E&d@:\
+ :us=\E&dD\E&v1S:\
+ :tc=hp2621-nl:
+hp2627a|hp 2627 color terminal with no labels:\
+ :cr=^M:do=^J:\
+ :is=\E&v0m1a1b0c1i0a1b1c2i1a0b0c0i0S\E&j@\r\E3\r:\
+ :kb=^H:kd=^J:kl=^H:nw=^M^J:se=\E&v0S:sf=^J:so=\E&v2S:ta=^I:\
+ :ue=\E&v0S\E&d@:us=\E&dD\E&v1S:\
+ :tc=hp2621-nl:
+hp2627c|hp 2627 color (cyan) terminal with no labels:\
+ :cr=^M:do=^J:\
+ :is=\E&v0m1a0b0c2i1a1b0c1i0a1b1c0i0S\E&j@\r\E3\r:\
+ :kb=^H:kd=^J:kl=^H:nw=^M^J:sf=^J:ta=^I:\
+ :tc=hp2627a:
+
+# hp2640a doesn't have the Y cursor addressing feature, and C is
+# memory relative instead of screen relative, as we need.
+#
+hp2640a|hp 2640a:\
+ :cm@:ke@:ks@:tc=hp2645:
+
+hp2640b|hp2644a|hp 264x series:\
+ :ke@:ks@:tc=hp2645:
+
+# (hp2641a: removed unknown :gu: -- esr)
+hp2641a|hp2645a|hp2647a|HP 264?A series BRL entry:\
+ :am:da:db:mi:xs:\
+ :co#80:li#24:\
+ :al=\EL:bl=^G:cd=\EJ:ce=\EK:ch=\E&a%2C:cl=\EH\EJ:\
+ :cm=\E&a%r%2c%2Y:cr=^M:cv=\E&a%2Y:dc=\EP:dl=\EM:do=^J:\
+ :ei=\ER:if=/usr/share/tabset/std:im=\EQ:is=500\EE:kb=^H:\
+ :kd=^J:kl=^H:le=^H:nd=\EC:nw=^M^J:se=\E&d@:sf=^J:so=\E&dB:\
+ :ta=^I:up=\EA:
+
+# This terminal should be used at 4800 baud or less. It needs padding for
+# plain characters at 9600, I guessed at an appropriate cr delay. It really
+# wants ^E/^F handshaking, but that doesn't work well even if you write
+# software to support it.
+hp2645|hp45|HP 2645 series:\
+ :pb#9600:\
+ :cr=\r:kA=\EL:kD=\EP:kE=\EK:kF=\ES:kI=\EQ:kL=\EM:kM=\ER:\
+ :kN=\EU:kP=\EV:kR=\ET:kS=\EJ:kT=\E1:kd=\EB:ke=\E&s0A:kh=\Eh:\
+ :kl=\ED:kr=\EC:ks=\E&s1A:kt=\E2:ku=\EA:mb=\E&dA:me=\E&d@:\
+ :mh=\E&dH:mr=\E&dB:\
+ :..sa=\E&d%{64}%?%p1%t%{66}%|%;%?%p2%t%{68}%|%;%?%p3%t%{66}%|%;%?%p4%t%{65}%|%;%?%p5%t%{72}%|%;%?%p6%t%{66}%|%;%c:\
+ :us=\E&dD:\
+ :tc=hpgeneric:
+# You should use this terminal at 4800 baud or less.
+hp2648|hp2648a|HP 2648a graphics terminal:\
+ :cl=\EH\EJ:cm=\E&a%r%dc%dY:dc=\EP:ip=:tc=hp2645:
+
+# The HP 150 terminal is a fairly vanilla HP terminal, with the
+# clreol standout problem. It also has graphics capabilities and
+# a touch screen, which we don't describe here.
+hp150|hewlett packard Model 150:\
+ :bs:tc=hp2622:
+
+# HP 2382a terminals, "the little ones." They don't have any
+# alternate character set support and sending out ^N/^O will
+# leave the screen blank.
+hp2382a|hp2382|hewlett packard 2382a:\
+ :da:db:\
+ :lh#1:lm#48:\
+ :ac@:ae@:as@:me=\E&d@:\
+ :..pn=\E&f0a%p1%dk%p2%l%Pa%?%ga%t%ga%d%e1%;d0L%?%ga%!%t %;%p2%s:\
+ :..sa=\E&d%{0}%Pa%?%p4%t%{1}%ga%+%Pa%;%?%p1%p3%|%p6%|%t%{2}%ga%+%Pa%;%?%p2%p6%|%t%{4}%ga%+%Pa%;%?%p1%p5%|%t%{8}%ga%+%Pa%;%?%p7%t%?%ga%ts%ga%{64}%+%e%{83}%;%e%?%ga%t%ga%{64}%+%e%{64}%;%;%c:\
+ :tc=hp+labels:tc=scrhp:
+
+hp2621-a|hp2621a-a|hp2621 with fn as arrows:\
+ :tc=hp+pfk+arrows:tc=hp2621-fl:
+
+# newer hewlett packard terminals
+
+newhpkeyboard|generic entry for HP extended keyboard:\
+ :kA=\EL:kB=\Ei:kC=\EJ:kD=\EP:kE=\EK:kF=\ET:kH=\EF:kI=\EQ:\
+ :kL=\EM:kM=\ER:kN=\EU:kP=\EV:kR=\ES:kS=\EJ:kb=^H:kd=\EB:\
+ :ke=\E&s0A:kh=\Eh:kl=\ED:kr=\EC:ks=\E&s1A:ku=\EA:\
+ :tc=hp+pfk-cr:
+
+newhp|generic entry for new hewlett packard terminals:\
+ :am:bw:mi:xo:xs:\
+ :co#80:li#24:pb#4800:\
+ :ac=2[3@4>5I9(\072'JSKWLQMAO#P$Q;R\041S"T1U2V4W3X\072Y+Z*dHjGkTlRmFn/q\054t5u6v8w7x.:\
+ :ae=^O:al=\EL:as=^N:bl=^G:bt=\Ei:cd=\EJ:ce=\EK:cr=^M:ct=\E3:\
+ :dc=\EP:dl=\EM:do=^J:ei=\ER:i1=\E&jB:im=\EQ:ip=:le=^H:\
+ :mb=\E&dA:md=\E&dF:me=\E&d@\017:mh=\E&dH:mk=\E&dS:\
+ :mr=\E&dB:nd=\EC:nw=^M^J:\
+ :..pk=\E&f0a%p1%dk0d%p2%l%dL%p2%s:\
+ :..pl=\E&f1a%p1%dk0d%p2%l%dL%p2%s:\
+ :..px=\E&f2a%p1%dk0d%p2%l%dL%p2%s:r1=\Eg:\
+ :..sa=\E&d%{0}%Pa%?%p4%t%{1}%ga%+%Pa%;%?%p1%p3%|%p6%|%t%{2}%ga%+%Pa%;%?%p2%p6%|%t%{4}%ga%+%Pa%;%?%p1%p5%|%t%{8}%ga%+%Pa%;%?%p7%t%?%ga%ts%ga%{64}%+%e%{83}%;%e%?%ga%t%ga%{64}%+%e%{64}%;%;%c%?%p9%t\016%e\017%;:\
+ :se=\E&d@:sf=^J:so=\E&dJ:sr=\ET:st=\E1:ta=\011:ue=\E&d@:\
+ :up=\EA:us=\E&dD:\
+ :tc=newhpkeyboard:
+
+memhp|memory relative addressing for new HP ttys:\
+ :vt#6:\
+ :CM=\E&a%p1%dr%p2%dC:DO=\E&a+%dR:LE=\E&a-%dC:\
+ :RI=\E&a+%dC:UP=\E&a-%dR:ch=\E&a%dC:cl=\EH\EJ:\
+ :cm=\E&a%dr%dC:cv=\E&a%dR:ho=\EH:ll=\E&a23R\r:tc=newhp:
+
+scrhp|screen relative addressing for new HP ttys:\
+ :CM=\E&a%p1%dr%p2%dC:DO=\E&a+%dR:LE=\E&a-%dC:\
+ :RI=\E&a+%dC:UP=\E&a-%dR:ch=\E&a%dC:cl=\E&a0c0Y\EJ:\
+ :cm=\E&a%dy%dC:cv=\E&a%dY:ho=\E&a0y0C:ll=\E&a0y0C\EA:\
+ :tc=newhp:
+
+# (hp+labels: added label values from a BRL termcap -- esr)
+hp+labels|"standard" label info for new HP ttys:\
+ :Nl#8:lh#2:lw#8:\
+ :LF=\E&j@:LO=\E&jB:l0=f1:l1=f2:l2=f3:l3=f4:l4=f5:l5=f6:l6=f7:\
+ :l7=f8:\
+ :..pn=\E&f2a%p1%dk%p2%l%Pa%?%ga%t%ga%d%e1%;d0L%?%ga%!%t %;%p2%s:
+
+hp+printer|"standard" printer info for HP ttys:\
+ :ff=\E&p4u0C:pf=\E&p13C:po=\E&p11C:ps=\EH\E&p4dF:
+
+
+# The new hp2621b is kind of a cross between the old 2621 and the
+# new 262x series of machines. It has dip-switched options.
+# The firmware has a bug in it such that if you give it a null
+# length label, the following character is eaten!
+hp2621b|hp 2621b with old style keyboard:\
+ :Nl#8:lh#1:lm#48:lw#8:\
+ :LO=\E&jB:kF=\ET:kH=\EF:kR=\ES:kd=\EB:kh=\Eh:kl=\ED:kr=\EC:\
+ :ku=\EA:\
+ :..pn=\E&f0a%p1%dk%p2%l%Pa%?%ga%t%ga%d%e1%;d3L%?%ga%!%t%{32}%c%;%p2%s\E%{111}%p1%+%c\r:tc=hp2621:
+
+hp2621b-p|hp 2621b with printer:\
+ :tc=hp+printer:tc=hp2621b:
+
+# hp2621b - new 2621b with new extended keyboard
+# these are closer to the new 26xx series than the other 2621b
+hp2621b-kx|hp 2621b with extended keyboard:\
+ :tc=newhpkeyboard:tc=hp2621b:
+
+hp2621b-kx-p|hp 2621b with new keyboard & printer:\
+ :tc=hp+printer:tc=hp2621b-kx:
+
+# Some assumptions are made in the following entries.
+# These settings are NOT set up by the initialization strings.
+#
+# Port Configuration
+# RecvPace=Xon/Xoff XmitPace=Xon/Xoff StripNulDel=Yes
+#
+# Terminal Configuration
+# InhHndShk(G)=Yes InhDC2(H)=Yes
+# XmitFnctn(A)=No InhEolWrp=No
+#
+#
+# Hp 2622a & hp2623a display and graphics terminals
+#
+hp2622|hp2622a|hp 2622:\
+ :da:db:\
+ :lm#0:pb#19200:\
+ :is=\E&dj@\r:tc=hp+pfk+cr:tc=hp+labels:tc=scrhp:
+
+# The 2623 is a 2622 with extra graphics hardware.
+hp2623|hp2623a|hp 2623:\
+ :tc=hp2622:
+
+hp2624b-p|hp2624b-4p-p|hewlett packard 2624 B with printer:\
+ :tc=hp+printer:tc=hp2624:
+
+# The hewlett packard B can have an optional extra 6 pages of memory.
+hp2624-10p|hp2624a-10p|hp2624b-10p|hewlett packard 2624 B w/ 10 pages of memory:\
+ :lm#240:tc=hp2624:
+
+hp2624b-10p-p|hewlett packard 2624 B w/ extra memory & printer:\
+ :lm#240:tc=hp2624b-p:
+
+# Color manipulations for HP terminals
+hp+color|hp with colors:\
+ :cc:\
+ :Co#16:NC#17:pa#7:\
+ :..Ip=\E&v%?%p2%{1000}%=%t1%e.%p2%d%;a%?%p3%{1000}%=%t1%e.%p3%d%;b%?%p4%{1000}%=%t1%e.%p4%d%;c%?%p5%{1000}%=%t1%e.%p5%d%;x%?%p6%{1000}%=%t1%e.%p6%d%;y%?%p7%{1000}%=%t1%e.%p7%d%;z%p1%dI:\
+ :oc=\E&v0m1a1b1c0I\E&v1a1I\E&v1b2I\E&v1a1b3I\E&v1c4I\E&v1a1c5I\E&v1b1c6I\E&v1x1y7I:\
+ :op=\E&v0S:sp=\E&v%dS:
+
+# :is: sets the screen to be 80 columns wide
+hp2397a|hp2397|hewlett packard 2397A color terminal:\
+ :is=\E&w6f80X:\
+ :tc=memhp:tc=hp+labels:tc=hp+color:
+
+#
+# (hp2392: copied :ei: here from hpex -- esr)
+hp2392|239x series:\
+ :co#80:\
+ :bt=\Ei:cm=\E&a%dy%dC:cv=\E&a%dY:ei=\ER:im=\EQ:k1=\Ep\r:\
+ :k2=\Eq\r:k3=\Er\r:k4=\Es\r:k5=\Et\r:k6=\Eu\r:k7=\Ev\r:\
+ :k8=\Ew\r:kF=\EU:kN=\Eu:kP=\Ev:kR=\EV:kh=\Eh:ue=\E&d@:\
+ :us=\E&dD:\
+ :tc=hpsub:
+
+hpsub|hp terminals -- capability subset:\
+ :am:da:db:mi:xo:xs:\
+ :li#24:\
+ :al=\EL:bl=^G:cd=\EJ:ce=\EK:ch=\E&a%dC:cl=\EH\EJ:cr=^M:\
+ :dc=\EP:dl=\EM:do=\EB:if=/usr/share/tabset/stdcrt:\
+ :is=\E&s1A\E<\E&k0\:kb=^H:kd=\EB:ke=\E&s0A:kh=\Eh:kl=\ED:\
+ :kr=\EC:ks=\E&s1A:ku=\EA:le=^H:me=\E&d@:nd=\EC:se=\E&d@:\
+ :sf=^J:so=\E&dB:ta=^I:up=\EA:
+
+# hpex:
+# May be used for most 24 x 80 hp terminals,
+# but has no padding added, so may allow runover in some terminals at high
+# baud rates. Will not work for hp2640a or hp2640b terminals, hp98x6 and
+# hp98x5 terminal emulators or hp98x6 consoles.
+# Adds xy-cursor addressing, vertical cursor addressing, home,
+# last line, and underline capabilities.
+#
+# (hpex: removed memory-lock capabilities ":ml=\El:mu=\Em:",
+# moved :ei: here from hpsub -- esr)
+hpex|hp extended capabilites:\
+ :cm=\E&a%dy%dC:cr=^M:cv=\E&a%dY:do=^J:ei=\ER:im=\EQ:kb=^H:\
+ :kd=^J:kl=^H:nw=^M^J:sf=^J:ta=^I:ue=\E&d@:us=\E&dD:\
+ :tc=hpsub:
+
+# From: Ville Sulko <Ville.Sulko@bip.atk.tpo.fi>, 05 Aug 1996
+hp2|hpex2|hewlett-packard extended capabilities newer version:\
+ :am:da:db:mi:xs:\
+ :Nl#8:co#80:lh#2:li#24:lm#0:lw#8:sg#0:\
+ :LF=\E&j@:LO=\E&jB:al=\EL:bl=^G:cd=\EJ:ce=\EK:ch=\E&a%dC:\
+ :cl=\E&a0y0C\EJ:cm=\E&a%dy%dC:cr=^M:ct=\E3:cv=\E&a%dY:\
+ :dc=\EP:dl=\EM:do=\EB:ei=\ER:im=\EQ:k1=\Ep:k2=\Eq:k3=\Er:\
+ :k4=\Es:k5=\Et:k6=\Eu:k7=\Ev:k8=\Ew:kA=\EL:kC=\EJ:kD=\EP:\
+ :kE=\EK:kF=\ES:kH=\EF:kI=\EQ:kL=\EM:kM=\ER:kN=\EU:kP=\EV:\
+ :kR=\ET:kS=\EJ:kT=\E1:ka=\E3:kb=^H:kd=\EB:ke=\E&s0A:kh=\Eh:\
+ :kl=\ED:kr=\EC:ks=\E&s1A:kt=\E2:ku=\EA:le=^H:me=\E&d@:\
+ :ml=\El:mu=\Em:nd=\EC:..pk=\E&f%p1%dk%p2%l%dL%p2%s:\
+ :..pl=\E&f1a%p1%dk%p2%l%dL%p2%s:\
+ :..pn=\E&f%p1%dk%p2%l%dd0L%p2%s:\
+ :..px=\E&f2a%p1%dk%p2%l%dL%p2%s:\
+ :..sa=\E&d%?%p7%t%{115}%c%;%p1%p3%|%p6%|%{2}%*%p2%{4}%*%+%p4%+%p5%{8}%*%+%{64}%+%c%?%p9%t%'\016'%c%e%'\017'%c%;:\
+ :se=\E&d@:sf=^J:so=\E&dB:st=\E1:ta=^I:ue=\E&d@:up=\EA:\
+ :us=\E&dD:
+
+# HP 236 console
+# From: <ddavis@ic.berkeley.edu>
+hp236|hp236 internal terminal emulator:\
+ :am:bs:\
+ :co#80:li#24:\
+ :al=\EG:ce=\EK:cl=\EF:cm=\EE%+ %+ :dc=\EJ:dl=\EH:ei=:ic=\EI:\
+ :im=:le=^H:me=\ECI:se=\ECI:so=\EBI:up=^K:ve=\EDE:vs=\EDB:
+
+# This works on a hp300 console running Utah 4.3 BSD
+# From: Craig Leres <leres@okeeffe.berkeley.edu>
+hp300h|HP Catseye console:\
+ :am:bs:da:db:mi:xs:\
+ :co#128:li#51:lm#0:sg#0:\
+ :al=\EL:bl=^G:bt=\Ei:cd=\EJ:ce=\EK:ch=\E&a%dC:\
+ :cl=\E&a0y0C\EJ:cm=\E&a%dy%dC:cr=^M:ct=\E3:cv=\E&a%dY:\
+ :dc=\EP:dl=\EM:do=\EB:ei=\ER:if=/usr/share/tabset/stdcrt:\
+ :im=\EQ:kb=^H:kd=\EB:ke=\E&s0A:kh=\Eh:kl=\ED:kr=\EC:\
+ :ks=\E&s1A:ku=\EA:le=^H:me=\E&d@:nd=\EC:se=\E&d@:sf=^J:\
+ :so=\E&dB:ta=^I:ue=\E&d@:up=\EA:us=\E&dD:
+# From: Greg Couch <gregc@ernie.berkeley.edu>
+hp9837|hp98720|hp98721|HP 9000/300 workstations:\
+ :am:bs:da:db:mi:xs:\
+ :co#128:it#8:li#46:lm#0:\
+ :al=\EL:bl=^G:bt=\Ei:cd=\EJ:ce=\EK:ch=\E&a%dC:\
+ :cl=\E&a0y0C\EJ:cm=\E&a%dy%dC:ct=\E3:cv=\E&a%dY:dc=\EP:\
+ :dl=\EM:do=\EB:ei=\ER:im=\EQ:is=\E&v0m1b0i&j@:kA=\EL:\
+ :kD=\EP:kE=\EK:kI=\EQ:kL=\EM:kN=\EU:kP=\EV:kS=\EJ:kb=^H:\
+ :kd=\EB:ke=\E&s0A:kh=\Eh:kl=\ED:kr=\EC:ks=\E&s1A:ku=\EA:\
+ :le=^H:me=\E&d@:nd=\EC:se=\E&v0S:sf=^J:so=\E&v5S:st=\E1:\
+ :ta=^I:ue=\E&d@:up=\EA:us=\E&dD:
+# HP 9845 desktop computer from BRL
+# (hp9845: removed unknown capability :gu: -- esr)
+hp9845|HP 9845:\
+ :am:bs:da:db:eo:mi:xs:\
+ :co#80:li#21:\
+ :al=\EL:bc=\ED:cd=\EJ:ce=\EK:cl=\EH\EJ:cm=\E&a%r%2c%2Y:\
+ :dc=\EP:dl=\EM:ei=\ER:if=/usr/share/tabset/std:im=\EQ:\
+ :nd=\EC:se=\E&d@:so=\E&dB:up=\EA:
+# From: Charles A. Finnell of MITRE <finnell@mitre.org>, developed 07SEP90
+# (hp98550: replaced /usr/share/tabset/9837 with std because :it#8:,:st=\E1:;
+# added empty <acsc> to avoid warnings re :as:/:ae: --esr)
+hp98550|hp98550a|HP 9000 Series 300 color console:\
+ :am:bs:da:db:mi:xs:\
+ :co#128:it#8:li#49:lm#0:\
+ :ac=:ae=^O:al=\EL:as=^N:bl=^G:bt=\Ei:cd=\EJ:ce=\EK:\
+ :ch=\E&a%dC:cl=\EH\EJ:cm=\E&a%dy%dC:cr=^M:ct=\E3:\
+ :cv=\E&a%dY:dc=\EP:dl=\EM:do=^J:ei=\ER:\
+ :if=/usr/share/tabset/std:im=\EQ:k1=\Ep:k2=\Eq:k3=\Er:\
+ :k4=\Es:k5=\Et:k6=\Eu:k7=\Ev:k8=\Ew:kA=\EL:kC=\EJ:kD=\EP:\
+ :kE=\EK:kF=\ES:kH=\EF:kI=\EQ:kL=\EM:kM=\ER:kN=\EU:kP=\EV:\
+ :kR=\ET:kS=\EJ:kT=\E1:ka=\E3:kb=^H:kd=\EB:ke=\E&s0A:kh=\Eh:\
+ :kl=\ED:kr=\EC:ks=\E&s1A:kt=\E2:ku=\EA:le=^H:mb=\E&dA:\
+ :md=\E&dJ:me=\E&d@:mh=\E&dH:mk=\E&ds:mr=\E&dJ:nd=\EC:\
+ :se=\E&d@:sf=^J:so=\E&dJ:st=\E1:ta=^I:ue=\E&d@:up=\EA:\
+ :us=\E&dD:ve=\E*dQ:vi=\E*dR:
+
+bobcat|sbobcat|HP 9000 model 300 console:\
+ :am:da:db:mi:xs:\
+ :co#128:it#8:li#47:sg#0:\
+ :al=10*\EL:bt=\Ei:cd=\EJ:ce=\EK:ch=6\E&a%dC:cl=\EH\EJ:\
+ :cm=6\E&a%dy%dC:cr=^M:cv=6\E&a%dY:dc=\EP:dl=10*\EM:do=\EB:\
+ :ei=\ER:im=\EQ:kb=^H:kd=\EB:ke=\E&s0A:kh=\Eh:kl=\ED:kr=\EC:\
+ :ks=\E&s1A:ku=\EA:le=^H:me=\E&d@:nd=\EC:nw=^M^J:se=\E&d@:\
+ :sf=^J:so=\E&dB:ta=^I:ue=\E&d@:up=\EA:us=\E&dD:
+gator-t|HP 9000 model 237 emulating extra-tall AAA:\
+ :li#94:tc=gator:
+gator|HP 9000 model 237 emulating AAA:\
+ :bw:km:mi:ul:\
+ :co#128:it#8:li#47:\
+ :AL=1*\E[%dL:DC=4\E[%dP:DL=1*\E[%dM:IC=4\E[%d@:al=\E[L:\
+ :bl=^G:bt=\E[Z:cd=\E[J:ce=\E[K:ch=\E[%i%d`:cl=\E[H\E[J:\
+ :cm=\E[%i%d;%dH:cr=^M:dc=\E[P:dl=\E[M:do=^J:ei=:ho=\E[H:\
+ :ic=\E[@:im=:kb=^H:kd=^J:kl=^H:le=^H:me=\E[m:mr=\E[7m:\
+ :nd=\E[C:nw=^M^J:rp=1*%.\E[%db:se=\E[m:so=\E[7m:ta=^I:\
+ :ue=\E[m:up=\EM:us=\E[4m:
+gator-52|HP 9000 model 237 emulating VT52:\
+ :co#128:li#47:tc=vt52:
+gator-52t|HP 9000 model 237 emulating extra-tall VT52:\
+ :li#94:tc=gator-52:
+
+#### Honeywell-Bull
+#
+# From: Michael Haardt <michael@gandalf.moria> 11 Jan 93
+#
+
+# Honeywell Bull terminal. Its cursor and function keys send single
+# control characters and it has standout/underline glitch. Most programs
+# do not like these features/bugs. Visual bell is realized by flashing the
+# "keyboard locked" LED.
+dku7003-dumb|Honeywell Bull DKU 7003 dumb mode:\
+ :co#80:li#25:\
+ :cd=^_:ce=\E[K:cl=^]^_:cm=\E[%i%d;%dH:cr=^M:do=^K:ho=^]:\
+ :kb=^H:kd=^K:kh=^]:kl=^Y:kr=^X:ku=^Z:le=^Y:nd=^X:nw=^M^J:\
+ :sf=^J:ta=^I:up=^Z:vb=\E[2h\E[2l:
+dku7003|Honeywell Bull DKU 7003 all features described:\
+ :ms:\
+ :sg#1:\
+ :mb=\E[5m:md=\E[7m:me=\E[m:mh=\E[2m:mr=\E[7m:se=\E[m:\
+ :so=\E[7m:ue=\E[m:us=\E[4m:\
+ :tc=dku7003-dumb:
+
+#### IBM
+#
+
+ibm327x|line mode IBM 3270 style:\
+ :gn:\
+ :ce=^M:cl=^M^J:ho=^M:
+
+# Beware! The 3101 entry IBM shipped with AIX 3 is *wrong*. Losers...
+# From: J.B. Nicholson-Owens <jeffo@uiuc.edu> 8 Mar 94
+# (ibm3101: :if=/usr/share/tabset/ibm3101: removed, no such file -- esr)
+# Some versions of this that have :ct=\EH:; they may ort may not be broken.
+ibm3101|i3101|IBM 3101-10:\
+ :am:bs:xo:\
+ :co#80:li#24:\
+ :bl=^G:cd=\EJ:ce=\EI:cl=\EK:cm=\EY%+ %+ :cr=^M:ct=\E1:do=^J:\
+ :ho=\EH:kb=^H:kd=\EB:kl=\ED:kr=\EC:ku=\EA:le=^H:nd=\EC:\
+ :nw=^M^J:sf=^J:st=\E0:ta=^I:up=\EA:
+ibm3151|IBM 3151 display:\
+ :ae=\E>B:as=\E>A:is=\E S:me=\E4@\E>B:r2=\E S:s0=\E>B:\
+ :..sa=\E4%{64}%?%p1%t%{65}%|%;%?%p2%t%{66}%|%;%?%p3%t%{65}%|%;%?%p4%t%{68}%|%;%?%p5%t%{64}%|%;%?%p6%t%{72}%|%;%?%p7%t%{80}%|%;%c%?%p9%t\E>A%e\E>B%;:\
+ :te=\E>B:ti=\E>B:\
+ :tc=ibm3163:
+# From: Mark Easter <marke@fsi-ssd.csg.ssd.fsi.com> 29 Oct 1992
+# I've commented out or translated some IBM extensions.
+# <kend>, :kN:, :kP:, <mc4>, <mc5> merged in from AIX 3.2.5
+ibm3161|ibm3163|wy60-316X|wyse60-316X|IBM 3161/3163 display:\
+ :am:bs:mi:ms:\
+ :co#80:it#8:li#24:\
+ :@7=\E2:F1=\Ek\r:F2=\El\r:F3=\E\041a\r:F4=\E\041b\r:\
+ :F5=\E\041c\r:F6=\E\041d\r:F7=\E\041e\r:F8=\E\041f\r:\
+ :F9=\E\041g\r:FA=\E\041h\r:FB=\E\041i\r:FC=\E\041j\r:\
+ :FD=\E\041k\r:FE=\E\041l\r:\
+ :ac=j\352k\353l\354m\355n\356q\361t\364u\365v\366w\367x\370:\
+ :bl=^G:cd=\EJ:ce=\EI:cl=\EH\EJ:cm=\EY%+ %+ :cr=^M:dc=\EQ:\
+ :dl=\EO:do=\EB:ho=\EH:k1=\Ea\r:k2=\Eb\r:k3=\Ec\r:k4=\Ed\r:\
+ :k5=\Ee\r:k6=\Ef\r:k7=\Eg\r:k8=\Eh\r:k9=\Ei\r:k;=\Ej\r:\
+ :kA=\EN:kB=\E2:kC=\EL\r:kD=\EQ:kE=\EI:kI=\EP \010:kL=\EO:\
+ :kN=\EI:kP=\EL:kS=\EJ:kT=\E0:ka=\E 1:kb=^H:kd=\EB:kh=\EH:\
+ :kl=\ED:kr=\EC:kt=\E1:ku=\EA:le=\ED:mb=\E4D:md=\E4H:\
+ :me=\E4@\E<@:mk=\E4P:mr=\E4A:nd=\EC:pf=^P^T:po=^P^R:\
+ :..sa=\E4%{64}%?%p1%t%{65}%|%;%?%p2%t%{66}%|%;%?%p3%t%{65}%|%;%?%p4%t%{68}%|%;%?%p5%t%{64}%|%;%?%p6%t%{72}%|%;%?%p7%t%{80}%|%;%c%?%p9%t\E>A%e\E<@%;:\
+ :se=\E4@:sf=^J:so=\E4A:te=\E>A:ti=\E>A:ue=\E4@:up=\EA:\
+ :us=\E4B:
+
+ibm3161-C|IBM 3161-C NLS terminal using cartridge:\
+ :s0=\E>B:s1=\E>A:te=\E>B:ti=\E>B:\
+ :tc=ibm3161:
+ibm3162|IBM 3162 display:\
+ :al=\EN:mb=\E4$a:md=\E4(a:me=\E4@:mk=\E40a:mr=\E4\041a:\
+ :se=\E4>b:so=\E4\041a:ue=\E4=b:us=\E4"a:\
+ :tc=ibm3161-C:
+
+# How the 3164 sgr string works:
+# %{32} # push space for no special video characteristics
+# %?%p2%t%{1}%|%; # if p2 set, then OR the 1 bit for reverse
+# %?%p3%t%{4}%|%; # if p3 set, then OR the 4 bit for blink
+# %?%p4%t%{2}%|%; # if p4 set, then OR the 2 bit for underline
+# %c # pop Pa1
+# %{39}%p1%- # calculate 32 + (7 - p1) for foreground
+# %c # pop Pa2
+# %{64} # use only black background for now
+# %c # pop Pa3
+# (ibm3164: merged :ms:,<colors>,<pairs>,<setb>,<setf> from AIX 3.2.5 -- esr)
+ibm3164|i3164|IBM 3164:\
+ :ms:\
+ :Co#8:pa#64:\
+ :Sb=\E4 %+@:..Sf=\E4%?%p1%t %p1%{32}%+%c%e\041'%;@:\
+ :mb=\E4D:md=\E4H:me=\E4@:\
+ :..sa=\E4%{32}%?%p2%t%{1}%|%;%?%p3%t%{4}%|%;%?%p4%t%{2}%|%;%c%{39}%p1%-%c%{64}%c:tc=ibm3163:
+
+# From: <pryor@math.berkeley.edu>
+# (ibm5081: merged acsc, s0ds, s1ds, sgr0 into ibm5081 from AIX 3.2.5. -- esr)
+ibm5081|ibmmpel|IBM 5081 1024x1024 256/4096 Megapel color display:\
+ :es:hs:\
+ :li#33:\
+ :ac=jjkkllmmnnqqttuuvvwwxx:ds=\Ej\EYA \EI\Ek:fs=\Ek:\
+ :me=\E[0m\E(B:s0=\E(B:s1=\E(0:ts=\Ej\EYA%+ \Eo:\
+ :tc=ibmmono:
+ibm5081-c|ibmmpel-c|IBM 5081 1024x1024 256/4096 Megapel enhanced color display:\
+ :es:hs:\
+ :li#33:\
+ :ds=\Ej\EYA \EI\Ek:fs=\Ek:ts=\Ej\EYA%+ \Eo:tc=ibmega-c:
+# (untranslatable capabilities removed to fit entry within 1023 bytes)
+# (sgr removed to fit entry within 1023 bytes)
+# (terminfo-only capabilities suppressed to fit entry within 1023 bytes)
+ibm5151|wy60-AT|wyse60-AT|IBM 5151 Monochrome display:\
+ :am:bw:ms:xo:\
+ :co#80:it#8:li#25:\
+ :AL=\E[%dL:DL=\E[%dM:DO=\E[%dB:LE=\E[%dD:RI=\E[%dC:\
+ :SF=\E[%dS:SR=\E[%dT:UP=\E[%dA:al=\E[L:bl=^G:cd=\E[J:\
+ :ce=\E[K:cl=\E[H\E[2J:cm=\E[%i%d;%dH:cr=^M:dc=\E[P:\
+ :dl=\E[M:do=^J:ec=\E[%dX:ei=\E[4l:ho=\E[H:im=\E[4h:is=\Ec:\
+ :k0=\E[010q:k1=\E[001q:k2=\E[002q:k3=\E[003q:k4=\E[004q:\
+ :k5=\E[005q:k6=\E[006q:k7=\E[007q:k8=\E[008q:k9=\E[009q:\
+ :kD=\E[P:kI=\E[139q:kN=\E[154q:kP=\E[150q:kb=^H:kd=\E[B:\
+ :kh=\E[H:kl=\E[D:kr=\E[C:ku=\E[A:le=^H:mb=\E[5m:md=\E[1m:\
+ :me=\E[0m:mr=\E[7m:nd=\E[C:rc=\E[u:sc=\E[s:se=\E[m:sf=\E[S:\
+ :so=\E[7m:sr=\E[T:ue=\E[m:up=\E[A:us=\E[4m:
+ibm5154|IBM 5154 Color display:\
+ :Co#8:pa#64:\
+ :AB=\E[4%p1%dm:AF=\E[3%p1%dm:md@:tc=ibm5151:
+ibm6153|IBM 6153 Black & White display:\
+ :mb@:md=\E[12m:me=\E[0;10m:s0=\E[10m:s1=\E[11m:s2=\E[12m:\
+ :..sa=\E[%?%p1%t;7%;%?%p2%t;4%;%?%p3%t;7%;%?%p4%t;5%;%?%p6%t;12%;m:\
+ :tc=ibm5151:
+ibm6153-90|IBM 6153 Black & White display:\
+ :co#90:li#36:\
+ :mb@:md@:tc=ibm5151:
+ibm6153-40|IBM 6153 Black & White display:\
+ :co#40:li#12:tc=ibm6153-90:
+ibm6154|IBM 6154 Color displays:\
+ :mb@:md=\E[12m:me=\E[0;10m:s0=\E[10m:s1=\E[11m:s2=\E[12m:\
+ :..sa=\E[%?%p1%t;7%;%?%p2%t;4%;%?%p3%t;7%;%?%p4%t;5%;%?%p6%t;12%;m:\
+ :tc=ibm5154:
+ibm6155|IBM 6155 Black & White display:\
+ :mb@:md@:tc=ibm5151:
+ibm8503|ibm8507|ibm8604|IBM 8503 B & W VGA display:\
+ :tc=hft-c:
+ibm8512|ibm8513|IBM color VGA Terminal:\
+ :am:mi:ms:\
+ :co#80:it#8:li#25:\
+ :AL=\E[%dL:DL=\E[%dM:RA=\E[?7l:SA=\E[?7h:\
+ :ac=jjkkllmmnnqqttuuvvwwxx:ae=^O:al=\E[L:as=^N:cd=\E[J:\
+ :ce=\E[K:cl=\E[H\E[2J:cm=\E[%i%d;%dH:dl=\E[M:dm=\E[4h:\
+ :do=^J:ec=\E[%dX:ed=\E[4l:ei=\E[4l:ho=\E[H:im=\E[4h:\
+ :is=\Eb\E[m\017\E[?7h:k0=\E[010q:k1=\E[001q:k2=\E[002q:\
+ :k3=\E[003q:k4=\E[004q:k5=\E[005q:k6=\E[006q:k7=\E[007q:\
+ :k8=\E[008q:k9=\E[009q:kd=\E[B:kh=\E[H:ku=\E[A:le=\E[D:\
+ :mb=\E[5m:md=\E[1m:me=\E[m:mr=\E[7m:nd=\E[C:\
+ :r1=\Eb\E[m\017\E[?7h\E[H\E[J:rc=\E[u:sc=\E[s:se=\E[m:\
+ :so=\E[7m:te=\E[20h:ti=\E[20;4l\E[?7h\Eb:ue=\E[m:up=\E[A:\
+ :us=\E[4m:\
+ :tc=ibm8503:
+ibm8514|IBM 8514 color display:\
+ :es:hs:\
+ :li#41:\
+ :cr=^M:do=^J:ds=\Ej\EYI \EI\Ek:fs=\Ek:kb=^H:kd=^J:kl=^H:\
+ :nw=^M^J:sf=^J:ta=^I:ts=\Ej\EYI%+ \Eo:\
+ :tc=ibmega:
+ibm8514-c|IBM 8514 color display with standout and underline:\
+ :es:hs:\
+ :li#41:\
+ :cr=^M:do=^J:ds=\Ej\EYI \EI\Ek:fs=\Ek:kb=^H:kd=^J:kl=^H:\
+ :nw=^M^J:sf=^J:ta=^I:ts=\Ej\EYI%+ \Eo:\
+ :tc=ibmega-c:
+
+ibmaed|IBM Experimental display:\
+ :am:bs:eo:ms:\
+ :co#80:it#8:li#52:\
+ :al=\EN:cd=\EJ:ce=\EI:cl=\EH\EK:cm=\EY%+ %+ :dc=\EQ:dl=\EO:\
+ :do=\EB:ei=:ho=\EH:ic=\EP:im=:kb=^H:kd=\EB:kl=\ED:kr=\EC:\
+ :ku=\EA:le=^H:me=\E0:nd=\EC:se=\E0:so=\E0:ta=^I:up=\EA:\
+ :vb=\EG:
+ibm-apl|apl|IBM apl terminal simulator:\
+ :li#25:tc=dm1520:
+# (ibmmono: this had an unknown `sb' boolean, I changed it to `bs'.
+# Also it had ":I0=f10:" which pretty obviously should be "l0=f10" -- esr)
+ibmmono|IBM workstation monochrome:\
+ :es:hs:\
+ :al=\EL:dl=\EM:ds=\Ej\EY8 \EI\Ek:fs=\Ek:k0=\E<:k1=\ES:\
+ :k2=\ET:k3=\EU:k4=\EV:k5=\EW:k6=\EP:k7=\EQ:k8=\ER:k9=\EY:\
+ :kF=\EE:kI=\0:kN=\EE:kP=\Eg:kR=\EG:kb=^H:kh=\EH:l0=f10:\
+ :md=\EZ:me=\Ew\Eq\Ez\EB:mk=\EF\Ef0;\Eb0;:mr=\Ep:se=\Ez:\
+ :so=\EZ:sr=\EA:ts=\Ej\EY8%+ \Eo:ue=\Ew:us=\EW:\
+ :tc=ibm3101:
+ibmega|IBM Enhanced Color Display:\
+ :cr=^M:do=^J:kb=^H:kd=^J:kl=^H:nw=^M^J:sf=^J:ta=^I:tc=ibmmono:
+ibmega-c|ibm5154-c|IBM Enhanced Color Display with standout and underline:\
+ :se=\EB:so=\EF\Ef3;:ue=\EB:us=\EF\Ef2;:\
+ :tc=ibmmono:
+ibmvga-c|IBM VGA display color termcap:\
+ :cr=^M:do=^J:kb=^H:kd=^J:kl=^H:nw=^M^J:sf=^J:ta=^I:tc=ibmega-c:
+ibmvga|IBM VGA display:\
+ :cr=^M:do=^J:kb=^H:kd=^J:kl=^H:nw=^M^J:sf=^J:ta=^I:tc=ibmega:
+# ibmapa* and ibmmono entries come from ACIS 4.3 distribution
+rtpc|ibmapa16|IBM 6155 Extended Monochrome Graphics Display:\
+ :li#32:\
+ :ds=\Ej\EY@ \EI\Ek:ts=\Ej\EY@%+ \Eo:tc=ibmmono:
+# Advanced Monochrome (6153) and Color (6154) Graphics Display:
+ibmapa8c|ibmapa8|IBM 6153/4 Advanced Graphics Display:\
+ :li#31:\
+ :ds=\Ej\EY? \EI\Ek:ts=\Ej\EY?%+ \Eo:tc=ibmmono:
+ibmapa8c-c|ibm6154-c|IBM 6154 Advanced Color Graphics Display:\
+ :li#31:\
+ :ds=\Ej\EY? \EI\Ek:mh=\EF\Ef7;:ts=\Ej\EY?%+ \Eo:tc=ibmega-c:
+hft-c-old|HFT with Color PC850:\
+ :Co#8:pa#64:\
+ :AB=\E[4%p1%dm:AF=\E[3%p1%dm:tc=ibm5151:
+# From: Marc Pawliger <marc@ibminet.awdpa.ibm.com>
+# also in /usr/lpp/bos/bsdsysadmin.
+# (hft-c: this entry had :kb=\E[D:kf=\E[C: on the line with ku/kd/kh; this was
+# pretty obviously mislabeled for :le: and :nd:; also ":ul=\E[4m:" was clearly
+# a typo for ":us=\E[4m:"; also ":el=\E[K:" was a typo for ":ce=\E[K:".
+# I also added <rmam>/<smam> based on the terminal reset string.
+# There was an unknown boolean ":ht:" which I assume was meant to set hardware
+# tabs, so I have inserted it#8. Finally, :ac=^N: paired with the :ae: looked
+# like a typo for :as=^N:; finally, added empty <acsc> to quiet tic -- esr)
+hft-c|IBM High Function Terminal:\
+ :am:mi:ms:\
+ :co#80:it#8:li#25:\
+ :AL=\E[%dL:DL=\E[%dM:RA=\E[?7l:SA=\E[?7h:\
+ :ac=jjkkllmmnnqqttuuvvwwxx:ae=^O:al=\E[L:as=^N:cd=\E[J:\
+ :ce=\E[K:cl=\E[H\E[J:cm=\E[%i%d;%dH:dl=\E[M:dm=\E[4h:\
+ :do=^J:ec=\E[%dX:ed=\E[4l:ei=\E[4l:ho=\E[H:im=\E[4h:\
+ :is=\Eb\E[m\017\E[?7h:k0=\E[010q:k1=\E[001q:k2=\E[002q:\
+ :k3=\E[003q:k4=\E[004q:k5=\E[005q:k6=\E[006q:k7=\E[007q:\
+ :k8=\E[008q:k9=\E[009q:kd=\E[B:kh=\E[H:ku=\E[A:le=\E[D:\
+ :mb=\E[5m:md=\E[1m:me=\E[m:mr=\E[7m:nd=\E[C:\
+ :r1=\Eb\E[m\017\E[?7h\E[H\E[J:rc=\E[u:sc=\E[s:se=\E[m:\
+ :so=\E[7m:te=\E[20h:ti=\E[20;4l\E[?7h\Eb:ue=\E[m:up=\E[A:\
+ :us=\E[4m:
+hft|AIWS High Function Terminal:\
+ :am:xo:\
+ :co#80:li#25:\
+ :al=\E[L:bl=^G:cd=\E[J:ce=\E[K:cl=\E[H\E[2J:\
+ :cm=\E[%i%d;%dH:cr=^M:dc=\E[P:dl=\E[M:do=^J:ei=\E6:ho=\E[H:\
+ :ic=\E[@:im=\E6:k1=\E[001q:k2=\E[002q:k3=\E[003q:\
+ :k4=\E[004q:k5=\E[005q:k6=\E[006q:k7=\E[007q:k8=\E[008q:\
+ :k9=\E[009q:kN=\E[153q:kP=\E[159q:ka=\E[010q:kb=^H:\
+ :kd=\E[B:kh=\E[H:kl=\E[D:kr=\E[C:ku=\E[A:le=^H:mb=\E[5m:\
+ :md=\E[1m:me=\E[m:mk=\E[8m:mr=\E[7m:nd=\E[C:se=\E[m:sf=^J:\
+ :so=\E[7m:ta=^I:ue=\E[m:up=\E[A:us=\E[4m:
+ibm-system1|system1|ibm system/1 computer:\
+ :am:xt:\
+ :co#80:li#24:\
+ :bl=^G:cl=^Z:cm=\005%+ %+ :ho=^K:le=^H:nd=^\:sf=^J:up=^^:
+# lft-pc850 : IBM Low Function Terminal Device
+# lft "supports" underline, bold, and blink in the sense that the lft code
+# sets all the right bits. HOWEVER, depending upon the adapter, these
+# attributes may or may not be supported by the device driver.
+# (untranslatable capabilities removed to fit entry within 1023 bytes)
+# (sgr removed to fit entry within 1023 bytes)
+# (terminfo-only capabilities suppressed to fit entry within 1023 bytes)
+lft|lft-pc850|LFT-PC850|IBM LFT PC850 Device:\
+ :am:bw:ms:xo:\
+ :co#80:it#8:li#25:\
+ :AL=\E[%dL:DC=\E[%dP:DL=\E[%dM:DO=\E[%dB:IC=\E[%d@:\
+ :LE=\E[%dD:RI=\E[%dC:SF=\E[%dS:SR=\E[%dT:UP=\E[%dA:\
+ :ae=\E(B:al=\E[L:as=\E(0:bl=^G:bt=\E[Z:cd=\E[2J:ce=\E[0K:\
+ :cl=\E[H\E[J:cm=\E[%i%d;%dH:cr=^M:ct=\E[3g:dc=\E[P:\
+ :dl=\E[M:do=^J:ec=\E[%dX:ei=\E[4l:ho=\E[H:im=\E[4h:is=\Ec:\
+ :k1=\E[001q:k2=\E[002q:k3=\E[003q:k4=\E[004q:k5=\E[005q:\
+ :k6=\E[006q:k7=\E[007q:k8=\E[008q:k9=\E[009q:kD=\E[P:\
+ :kI=\E[139q:kN=\E[154q:kP=\E[150q:kb=^H:kd=\E[B:kh=\E[H:\
+ :kl=\E[D:kr=\E[C:ku=\E[A:le=^H:mb=\E[5m:md=\E[1m:me=\E[0m:\
+ :mr=\E[7m:nd=\E[C:se=\E[0m:sf=\ED:so=\E[7m:sr=\EL:ue=\E[0m:\
+ :up=\E[A:us=\E[4m:
+
+#
+# AIX entries. IBM ships these with AIX 3.2.5.
+# AIX extension caps are commented out,
+# except for box1 which has been translated to an <acsc> string.
+#
+aixterm|IBM Aixterm Terminal Eemulator:\
+ :es:hs:\
+ :ac=jjkkllmmnnqqttuuvvwwxx:ds=\E[?E:fs=\E[?F:md=\E[1m:\
+ :me=\E[0;10m\E(B:s0=\E(B:s1=\E(0:\
+ :..sa=\E[%?%p1%t;7%;%?%p2%t;4%;%?%p3%t;7%;%?%p4%t;5%;%?%p6%t;1%;%?%p7%t;8%;m:\
+ :sr@:ts=\E[?%p1%dT:\
+ :tc=ibm6154:
+aixterm-m|IBM AIXterm Monochrome Terminal Emulator:\
+ :es:hs:\
+ :ac=jjkkllmmnnqqttuuvvwwxx:ds=\E[?E:fs=\E[?F:md=\E[1m:\
+ :me=\E[0;10m\E(B:s0=\E(B:s1=\E(0:\
+ :..sa=\E[%?%p1%t;7%;%?%p2%t;4%;%?%p3%t;7%;%?%p4%t;5%;%?%p6%t;1%;m:\
+ :sr@:ts=\E[?%p1%dT:\
+ :tc=ibm6153:
+aixterm-m-old|old IBM AIXterm Monochrome Terminal Emulator:\
+ :es:hs:\
+ :ds=\E[?E:fs=\E[?F:md=\E[1m:\
+ :..sa=\E[%?%p1%t;7%;%?%p2%t;4%;%?%p3%t;7%;%?%p4%t;5%;%?%p6%t;1%;m:\
+ :sr@:ts=\E[?%p1%dT:\
+ :tc=ibm6153:
+jaixterm|IBM Kanji Aixterm Terminal Eemulator:\
+ :ac@:tc=aixterm:
+jaixterm-m|IBM Kanji AIXterm Monochrome Terminal Emulator:\
+ :ac@:\
+ :tc=aixterm-m:
+
+#### Infoton/General Terminal Corp.
+#
+
+# gt100 sounds like something DEC would come out with. Let's hope they don't.
+i100|gt100|gt100a|General Terminal 100A (formerly Infoton 100):\
+ :am:bs:\
+ :co#80:li#24:\
+ :al=\EL:bl=^G:cd=\EJ:ce=\EK:cl=^L:cm=\Ef%r%+ %+ :cr=^M:\
+ :dl=\EM:do=^J:ho=\EH:le=^H:nd=\EC:se=\Ea:sf=^J:so=\Eb:up=\EA:\
+ :vb=\Eb\Ea:
+i400|infoton 400:\
+ :am:bs:\
+ :co#80:li#25:\
+ :al=\E[L:bl=^G:ce=\E[N:cl=\E[2J:cm=%i\E[%3;%3H:cr=^M:\
+ :dc=\E[4h\E[2Q\E[P\E[4l\E[0Q:dl=\E[M:do=^J:\
+ :ei=\E[4l\E[0Q:im=\E[4h\E[2Q:le=^H:nd=\E[C:sf=^J:up=\E[A:
+# (addrinfo: removed obsolete ":bc=^Z:" -- esr)
+addrinfo:\
+ :am:\
+ :co#80:li#24:\
+ :bl=^G:cd=^K:cl=^L:..cm=\037%p1%{1}%-%c%p2%{1}%-%c:cr=^M:\
+ :do=^J:ho=^H:le=^Z:ll=^H^\:nd=^Y:sf=^J:up=^\:
+# (infoton: used to have the no-ops <lh#0>, <lw#0>, <nlab#0> -- esr)
+infoton:\
+ :am:\
+ :co#80:li#24:\
+ :bl=^G:cd=^K:cl=^L:cr=^M:do=^J:le=^Z:ll=^H^\:nd=^Y:sf=^J:\
+ :up=^\:
+
+# The ICL6402 was actually the Kokusai Display System 6402.
+# The 6404 was the KDS7372 (color version of the 6402).
+#
+# ICL6404 control codes follow:
+#
+#code function
+#~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+#ctrl-A set SOM position at cursor position
+#ctrl-G Bell
+#ctrl-H Backspace
+#ctrl-I Horiz tab
+#ctrl-J Linefeed
+#ctrl-K Cursor up
+#ctrl-L Cursor right
+#ctrl-M Carriage return
+#ctrl-N Disable xon/xoff to host
+#ctrl-O Enable xon/xoff to host
+#ctrl-R Enable bidirectional mode
+#ctrl-T Disable bidirectional mode
+#ctrl-V Cursor down
+#ctrl-Z Clear unprotected data to insert char
+#ctrl-^ Cursor home
+#ctrl-_ Newline
+#
+#ESC lead-in char for multiple character command
+#
+#ESC space R execute power on sequence
+#ESC ! p1 p2 define scroll region:
+# p1 = scroll top line: 20h - 37h
+# p1 = scroll bottom line: 20h - 37h
+#ESC " unlock keyboard
+#ESC # lock keyboard
+#ESC $ Semi-graphics mode on
+#ESC % Semi-graphics mode off
+#ESC & protect mode on
+#ESC ' protect mode off
+#ESC ( write protect mode off (full intensity)
+#ESC ) write protect mode on (half intensity)
+#
+#ESC * clear screen
+#ESC + clear unprotected data to insert char
+#ESC , clear unprotected data to half intensity spaces
+#ESC - p1 p2 p3 p4 address cursor to page, row, column:
+# p1 = page number 0 - 3
+# p2 = row 20h - 7fh
+# p3 = column (lo) 20h - 7fh
+# p4 = column (hi) 20h - 21h (only 132 col)
+#ESC . p1 set cursor style:
+# p1 = 0 invisible cursor
+# p1 = 1 block blinking cursor
+# p1 = 2 block steady cursor
+# p1 = 3 underline blinking cursor
+# p1 = 4 underline steady cursor
+#ESC / transmit cursor location (page, row, column)
+#ESC 0 p1 p2 p3 p4 program edit key:
+# p1 = edit key code: '@'-'S', '`'-'s'
+# p2 p3 p4 = program data (3 bytes)
+#
+#ESC 1 set tab
+#ESC 2 clear tab at cursor
+#ESC 3 clear all tabs
+#ESC 4 send unprotect line to cursor
+#ESC 5 send unprotect page to cursor
+#ESC 6 send line to cursor
+#ESC 7 send page to cursor
+#ESC 8 n set scroll mode:
+# n = 0 set jump scroll
+# n = 1 set smooth scroll
+#ESC 9 n control display:
+# n = 0 display off
+# n = 1 display on
+#ESC : clear unprotected data to null
+#ESC ; clear unprotected data to insert char
+#
+#ESC < keyclick on
+#ESC = p1 p2 address cursor to row, column
+# p1 = row 20h - 7fh
+# p2 = column (lo) 20h - 7fh
+# p3 = column (hi) 20h - 21h (only 132 col)
+#ESC > keyclick off
+#ESC ? transmit cursor location (row, column)
+#
+#ESC @ copy print mode on
+#ESC A copy print mode off
+#ESC B block mode on
+#ESC C block mode off (conversation mode)
+#ESC D F set full duplex
+#ESC D H set half duplex
+#ESC E line insert
+#ESC F p1 p2 set page colour (p1 = f/grnd, p2 = b/grnd)
+# 0 = black, 1 = red, 2 = green, 3 = yellow
+# 4 = blue, 5 = magenta, 6 = cyan, 7 = white
+#ESC G n set serial field attribute (n = 30h - 3Fh)
+#ESC H n full graphics mode:
+# n = 0 exit full graphics mode
+# n = 1 enter full graphics mode
+#ESC I back tab
+#ESC J back page
+#ESC K forward page
+#
+#ESC L unformatted page print
+#ESC M L move window left (132 col mode only)
+#ESC M R move window right (132 col mode only)
+#ESC N set page edit (clear line edit)
+#ESC O set line edit (clear page edit)
+#ESC P formatted page print
+#ESC Q character insert
+#ESC R line delete
+#ESC S send message unprotected only
+#ESC T erase line to insert char
+#ESC U set monitor mode (see ESC X, ESC u)
+#
+#ESC V n select video attribute mode:
+# n = 0 serial field attribute mode
+# n = 1 parallel character attribute mode
+#ESC V 2 n define line attribute:
+# n = 0 single width single height
+# n = 1 single width double height
+# n = 2 double width single height
+# n = 3 double width double height
+#ESC V 3 n select character font:
+# n = 0 system font
+# n = 1 user defined font
+#ESC V 4 n select screen mode:
+# n = 0 page screen mode
+# n = 1 virtual screen mode
+#ESC V 5 n control mouse mode:
+# n = 0 disable mouse
+# n = 1 enable sample mode
+# n = 2 send mouse information
+# n = 3 enable request mode
+#ESC W character delete
+#ESC X clear monitor mode (see ESC U, ESC u)
+#ESC Y erase page to insert char
+#
+#ESC Z n send user/status line:
+# n = 0 send user line
+# n = 1 send status line
+# n = 2 send terminal ID
+#ESC [ p1 p2 p3 set character attribute (parallel char mode):
+# p1: 0 = normal
+# 1 = blank
+# 2 = blink
+# 3 = blink blank (= blank)
+# 4 = reverse
+# 5 = reverse blank
+# 6 = reverse blink
+# 7 = reverse blink blank (= reverse blank)
+# 8 = underline
+# 9 = underline blank
+# : = underline blink
+# ; = underline blink blank
+# < = reverse underline
+# = = reverse underline blank
+# > = reverse underline blink
+# ? = reverse underline blink blank
+# p2, p3: f/grnd, b/grnd colour
+# (see ESC F for colours)
+# use ZZ for mono, eg.
+# ESC [ 0 Z Z for normal
+# ESC [ 4 Z Z for inverse etc.
+#
+#ESC \ n set page size:
+# n = 1 24 lines/page
+# n = 2 48 lines/page
+# n = 3 72 lines/page
+# n = 4 96 lines/page
+#ESC ] n set Wordstar mode:
+# n = 0 normal (KDS7372) mode
+# n = 1 Wordstar mode
+#
+#ESC b set foreground colour screen
+#
+#ESC c n enter self-test mode:
+# n = 0 exit self test mode
+# n = 1 ROM test
+# n = 2 RAM test
+# n = 3 NVRAM test
+# n = 4 screen display test
+# n = 5 main/printer port test
+# n = 6 mouse port test
+# n = 7 graphics board test
+# n = 8 graphics memory test
+# n = 9 display all 'E'
+# n = : display all 'H'
+#ESC d set background colour screen
+#
+#ESC e n program insert char (n = insert char)
+#ESC f text CR load user status line with 'text'
+#
+#ESC g display user status line on 25th line
+#ESC h display system status line on 25th line
+#ESC i tab
+#ESC j reverse linefeed
+#ESC k n duplex/local edit mode:
+# n = 0 duplex edit mode
+# n = 1 local edit mode
+#ESC l n select virtual screen:
+# n = 0 screen 1
+# n = 1 screen 2
+#ESC m save current config to NVRAM
+#ESC n p1 select display screen:
+# p1 = 0 screen 1
+# p1 = 1 screen 2
+# p1 = 2 screen 3
+# p1 = 3 screen 4
+#ESC o p1 p2 set characters/line and attribute:
+# p1 = 0 80 chars/line
+#
+#ESC o p1 p2 set characters/line and attribute:
+# p1 = 0 80 chars/line
+# p1 = 1 132 chars/line
+# p2 = 0 single width single height
+# p2 = 1 single width double height
+# p2 = 2 double width single height
+# p2 = 3 double width double height
+#
+#ESC q insert mode on
+#ESC r edit mode on
+#ESC s send message all
+#ESC t erase line to null
+#ESC u clear monitor mode (see ESC U, ESC X)
+#ESC v autopage mode on
+#ESC w autopage mode off
+#ESC x p1 p2 p3 define delimiter code...
+#ESC y erase page to null
+#
+#ESC z 2 p1 p2 p3 p4 draw quadrangle:
+# p1 = starting row
+# p2 = starting column
+# p3 = end row
+# p4 = end column
+#
+#ESC { p1 p2 p3 p4 configure main port
+# (baud, stop bits, parity, word length)
+#
+#ESC | p1 p2 text Ctrl-Y program function key with 'text':
+# p1 = function key code:
+# '1' - ';' normal f1- f11
+# '<' - 'F' shifted f1 - f11
+# p2 = program mode:
+# 1 = FDX
+# 2 = LOC
+# 3 = HDX
+# Ctrl-Y = terminator
+# (use Ctrl-P to escape ^P, ^Y )
+#
+#ESC } p1 p2 p3 p4 configure printer port
+# (baud, stop bits, parity, word length)
+#ESC ~ send system status
+#
+# Codes and info from Peter Disdale <pete@pdlmail.demon.co.uk> 12 May 1997
+#
+# Entry is by esr going solely on above information and is UNTESTED.
+# This actually looks a lot like a Televideo 9xx.
+# This entry uses page 0 and is monochrome; I'm not brave enough to try
+# to make color work without a test terminal. The :am: capability is a guess.
+# The initialization string sets conversation mode, blinking underline cursor,
+# full duplex, parallel attribute mode, display user status line, white
+# foreground, black background, normal highlight.
+#
+icl6404|kds7372|icl6402|kds6402|ICL 6404 aka Kokusai Display Systems 7372:\
+ :am:bs:hs:\
+ :co#80:li#24:\
+ :DC=\EW:al=\EE:bl=^G:bt=\EI:cl=\E*:cm=\E=%+ %+P%+P:cr=^M:\
+ :..cs=\E\041%+%p1%{32}%+%p2%{32} cud1=\026:ct=\E3:\
+ :dl=\ER:ei=\Er:ho=^^:i1=\EC\E.3\EDF\EV1\Eg\E[0ZZ:im=\Eq:\
+ :mb=\E[2ZZ:me=\E[0ZZ:mk=\E[1ZZ:mr=\E[4ZZ:nd=^L:nw=^_:\
+ :r2=\Eo1:\
+ :..sa=\E[%{0}%?%p1%t%{4}%|%;%?%p2%t%{8}%|%;%?%p3%t%{4}%|%;%?%p4%t%{2}%|%;%?%p7%t%{1}%|%;ZZ:\
+ :se=\E[%gh%{4}%^%Ph%gh%dZZ:so=\E[8ZZ:st=\E1:ta=^I:\
+ :ue=\E[%gh%{8}%^%Ph%gh%dZZ:up=^K:us=\E[8ZZ:ve=\E.3:\
+ :vi=\E.0:vs=\E.1:
+icl6404-w|kds7372-w|ICL 6404 aka Kokusai Display Systems 7372 132 cols:\
+ :r2=\Eo1:\
+ :tc=icl6404:
+
+#### Interactive Systems Corp
+#
+# ISC used to sell OEMed and customized hardware to support ISC UNIX.
+# ISC UNIX still exists in 1995, but ISC itself is no more; they got
+# bought out by Sun.
+#
+
+# From: <cithep!eric> Wed Sep 16 08:06:44 1981
+# (intext: removed obsolete ":ma=^K^P^R^L^L ::bc=^_:", also the
+# ":le=^_:" later overridden -- esr)
+intext|Interactive Systems Corporation modified owl 1200:\
+ :am:bs:\
+ :co#80:it#8:li#24:sg#1:\
+ :al=\020:bl=^G:bt=^Y:cd=\026J:ce=^Kp^R:cl=\014:\
+ :cm=\017%+ %+ :cr=^M:dc=\022:dl=\021:do=^J:ei=^V<:im=^V;:\
+ :ip=:k0=^VJ\r:k1=^VA\r:k2=^VB\r:k3=^VC\r:k4=^VD\r:k5=^VE\r:\
+ :k6=^VF\r:k7=^VG\r:k8=^VH\r:k9=^VI\r:kb=^H:kd=^J:ke=^V9:\
+ :kh=^Z:kl=^_:kr=^^:ks=\036\072\264\026%:ku=^\:le=^H:nd=^^:\
+ :se=^V# :sf=^J:so=^V$\054:ta=^I:up=^\:
+intext2|intextii|INTERACTIVE modified owl 1251:\
+ :am:bw:ul:\
+ :co#80:li#24:sg#0:\
+ :al=\E[L:bl=^G:bt=\E[Z:cd=\E[J:ce=\E[K:ch=\E[%+^AG:\
+ :cl=\E[H\E[2J:cm=\E[%i%d;%dH:cr=^M:dc=\E[P:dl=\E[M:\
+ :do=\E[B:ei=:ic=\E[@:im=:k0=\E@\r:k1=\EP\r:k2=\EQ\r:\
+ :k3=\ES\r:k4=\ET\r:k5=\EU\r:k6=\EV\r:k7=\EW\r:k8=\EX\r:\
+ :k9=\EY\r:kb=^H:kd=\EB\r:kh=\ER\r:kl=\ED\r:kr=\EC\r:\
+ :ku=\EA\r:l0=REFRSH:l1=DEL CH:l2=TABSET:l3=GOTO:l4=+PAGE:\
+ :l5=+SRCH:l6=-PAGE:l7=-SRCH:l8=LEFT:l9=RIGHT:nd=\E[C:\
+ :se=\E[2 D:sf=\E[S:so=\E[6 D:sr=\E[T:ta=^I:ue=\E[2 D:\
+ :up=\E[A:us=\E[18 D:\
+ :vb=\E[;;;;;;;;;2;;u\E[;;;;;;;;;1;;u:
+
+#### Kimtron (abm, kt)
+#
+# Kimtron seems to be history, but as March 1998 these people are still
+# offering repair services for Kimtron equipment:
+#
+# Com/Pair Monitor Service
+# 1105 N. Cliff Ave.
+# Sioux Falls, South Dakota 57103
+#
+# WATS voice: 1-800/398-4946
+# POTS fax: +1 605/338-8709
+# POTS voice: +1 605/338-9650
+# Email: <compair@sd.cybernex.net>
+# Internet/Web: <http://www.com-pair.com>
+#
+# Kimtron entries include (undocumented) codes for: enter dim mode,
+# enter bold mode, enter reverse mode, turn off all attributes.
+#
+
+# Kimtron ABM 85 added by Dual Systems
+# (abm85: removed duplicated ":kd=^J:" -- esr)
+abm85|Kimtron ABM 85:\
+ :am:bs:bw:ms:\
+ :co#80:it#8:li#24:sg#1:\
+ :al=\EE:bt=\EI:cd=\Ey:ce=\Et:cl=\E*:cm=\E=%+ %+ :dc=\EW:\
+ :dl=\ER:do=^J:ei=\Er:if=/usr/share/tabset/stdcrt:im=\EQ:\
+ :is=\EC\EX\Eg\En\E%\Er\E(\Ek\Em\Eq:kb=^H:kd=^J:kh=^^:\
+ :kl=^H:kr=^L:ku=^K:le=^H:nd=^L:se=\Ek:so=\Ej:ta=^I:ue=\Em:\
+ :up=^K:us=\El:
+# Kimtron ABM 85H added by Dual Systems.
+# Some notes about the abm85h entries:
+# 1) there are several firmware revs of 85H in the world. Use abm85h-old for
+# firmware revs prior to SP51
+# 2) Make sure to use abm85h entry if the terminal is in 85h mode and the
+# abm85e entry if it is in tvi920 emulation mode. They are incompatible
+# in some places and NOT software settable i.e., :is: can't fix it)
+# 3) In 85h mode, the arrow keys and special functions transmit when
+# the terminal is in dup-edit, and work only locally in local-edit.
+# Vi won't swallow `del char' for instance, but :ti: turns on
+# dup-edit anyway so that the arrow keys will work right. If the
+# arrow keys don't work the way you like, change :ti:, :te:, and
+# :is:. Note that 920E mode does not have software commands to toggle
+# between dup and local edit, so you get whatever was set last on the
+# terminal.
+# 4) :vb: attribute is nice, but seems too slow to work correctly
+# (\Eb:pc:\Ed)
+# 5) Make sure `hidden' attributes are selected. If `embedded' attributes
+# are selected, the <xmc@> entry should be removed.
+# 6) auto new-line should be on (selectable from setup mode only)
+#
+# From: Erik Fair <fair@ucbarpa> Sun Oct 27 07:21:05 1985
+abm85h|Kimtron ABM 85H native mode:\
+ :hs:\
+ :sg@:\
+ :bl=^G:ds=\Ee:fs=^M:im=\EZ:\
+ :is=\EC\EN\EX\024\016\EA\Ea\E%\E9\Ee\Er\En\E"\E}\E'\E(\Ef\r\EG0\Ed\E.4\El:\
+ :kd=^V:me=\E(\EG0:mh=\E):mk@:ts=\Eg\Ef:vb@:ve=\E.4:vs=\E.2:\
+ :tc=adm+sgr:tc=abm85:
+abm85e|Kimtron ABM 85H in 920E mode:\
+ :sg@:\
+ :bl=^G:im=\EZ:\
+ :is=\EC\EX\EA\E%\E9\Ee\Er\En\E"\E}\E'\E(\Ef\r\Ek\Eq\Em:\
+ :me=\E(\Ek:mh=\E):mr=\Ej:vb@:\
+ :tc=abm85:
+abm85h-old|oabm85h|o85h|Kimtron ABM 85H with old firmware rev.:\
+ :sg@:\
+ :bl=^G:im=\EZ:\
+ :is=\E}\EC\EX\Ee\En\E%\Er\E(\Ek\Em\Eq\Ed\ET\EC\E9\EF:\
+ :me=\E(\Ek:mh=\E):mr=\Ej:\
+ :tc=abm85:
+# From: <malman@bbn-vax.arpa>
+# (kt7: removed obsolete :ma=^V^J^L :" -- esr)
+kt7|kimtron model kt-7:\
+ :am:bs:\
+ :co#80:it#8:li#24:\
+ :al=\EE:bt=\EI:cd=\EY:ce=\ET:cl=^Z:cm=\E=%+ %+ :dc=\EW:\
+ :dl=\ER:do=^V:ei=:fs=\Eg:ho=^^:ic=\EQ:\
+ :if=/usr/share/tabset/stdcrt:im=:is=\El\E":k0=^AI\r:\
+ :k1=^A@\r:k2=^AA\r:k3=^AB\r:k4=^AC\r:k5=^AD\r:k6=^AE\r:\
+ :k7=^AF\r:k8=^AG\r:k9=^AH\r:kA=\EE:kB=\EI:kC=^Z:kD=\EW:\
+ :kE=\ET:kI=\EQ:kL=\ER:kS=\EY:kb=^H:kd=^V:kh=^^:kl=^H:kr=^L:\
+ :ku=^K:le=^H:mk@:nd=^L:ta=^I:ts=\Ef:up=^K:\
+ :tc=adm+sgr:
+# Renamed TB=^I to :ta:, BE=^G to :bl:, BS=^H to :kb:, N to :kS: (based on the
+# other kt7 entry and the adjacent key capabilities). Removed EE which is
+# identical to :mh:. Removed :ES=\EGD: which is some kind of highlight
+# but we can't figure out what.
+kt7ix|kimtron model kt-7 or 70 in IX mode:\
+ :am:bw:\
+ :co#80:it#8:li#25:\
+ :@7=\EY:PU=\EK:ac=jYk?lZm@nEqDt4uCvAwBx3:ae=\E%:al=\EE:\
+ :as=\E$:bl=^G:bt=\EI:cd=\EY:ce=\ET:cl=\E*:cm=\E=%+ %+ :\
+ :cr=^M:dc=\EW:dl=\ER:do=^V:ds=\Ef\r:ei=:fs=^M:ho=^^:ic=\EQ:\
+ :im=:is=\EG0\E s\017\E~:k0=^AI\r:k1=^A@\r:k2=^AA\r:\
+ :k3=^AB\r:k4=^AC\r:k5=^AD\r:k6=^AE\r:k7=^AF\r:k8=^AG\r:\
+ :k9=^AH\r:kA=\EE:kB=\EI:kC=\E*:kE=\ET:kI=\EQ:kL=\ER:kN=\EJ:\
+ :kS=\EY:kb=^H:kd=\E[B:kh=^^:kl=\E[D:kr=\E[C:ku=\E[A:le=^H:\
+ :mb=\EG2:me=\EG0:mh=\EG@:nd=^L:nw=^M^J:se=\EG0:sf=^J:\
+ :so=\EG4:ta=^I:ts=\Ef:ue=\EG0:up=^K:us=\EG8:ve=\E.3:vi=\E.0:
+
+#### Microdata/MDIS
+#
+# This was a line of terminals made by McDonnell-Douglas Information Systems.
+# These entries come direct from MDIS documentation. I have edited them only
+# to move primary names of the form p[0-9] * to aliases, and to comment out
+# :ae:/:as: in a couple of entries without <acsc> strings. I have
+# also removed the change history; the last version indicates this is
+# version 4.3 by A.Barkus, September 1990 (earliest entry is October 1989).
+#
+
+# McDonnell Information Systems Terminal Family History
+# =========================================
+#
+# Prism-1, Prism-2 and P99:
+# Ancient Microdata and CMC terminals, vaguely like Adds Regent 25.
+#
+# Prism-4 and Prism-5:
+# Slightly less ancient range of Microdata terminals. Follow-on from
+# Prism-2, but with many enhancements. P5 has eight display pages.
+#
+# Prism-6:
+# A special terminal for use with library systems, primarily in Germany.
+# Limited numbers. Similar functionality to P5 (except attributes?).
+#
+# Prism-7, Prism-8 and Prism-9:
+# More recent range of MDIS terminals, in which P7 and P8
+# replace the P4 & P5, with added functionality, and P9 is the flagship.
+# The P9 has two emulation modes - P8 and ANSI - and includes a
+# large number of the DEC VT220 control sequences. Both
+# P8 and P9 support 80c/24ln/8pg and 132cl/24li/4pg formats.
+#
+# Prism-12 and Prism-14:
+# Latest range, functionally very similar to the P9. The P14 has a
+# black-on-white overscanning screen.
+#
+# The terminfo definitions given here are:
+#
+# p2 - Prism-2 (or Prism-1 or P99).
+#
+# p4 - Prism-4 (and older P7s & P8s).
+# p5 - Prism-5 (or Prism-6).
+#
+# p7 - Prism-7.
+# p8 - Prism-8 (in national or multinational mode).
+# p8-w - 132 column version of p8.
+# p9 - Prism-9 in ANSI mode.
+# p9-w - 132 column version of p9.
+# p9-8 - Prism-9 in Prism-8 emulation mode.
+# p9-8-w - As p9-8, but with 132 columns.
+#
+# p12 - Prism-12 in ANSI mode.
+# p12-w - 132 column version of p12.
+# p12-m - Prism-12 in MDC emulation mode.
+# p12-m-w - As p12-m, but with 132 columns.
+# p14 - Prism-14 in ANSI mode.
+# p14-w - 132 column version of p14.
+# p14-m - Prism-14 in MDC emulation mode.
+# p14-m-w - As p14-m, but with 132 columns.
+#
+# p2: Prism-2
+# -----------
+#
+# Includes Prism-1 and basic P99 without SP or MP loaded.
+# The simplest form of Prism-type terminal.
+# Basic cursor movement and clearing operations only.
+# No video attributes.
+# Notes:
+# Horizontal cursor qualifiers of NUL, XON and XOFF are mapped to the next
+# value up, followed by backspace.
+#
+prism2|MDC Prism-2:\
+ :am:bw:ms:\
+ :co#80:li#24:\
+ :bl=^G:cd=\EJ:ce=\EK:\
+ :..ch=\020%p1%{10}%/%{16}%*%p1%{10}%m%+%Pc%?%{17}%gc%=%{19}%gc%=%|%gc%!%|%t%{1}%gc%+%c%{8}%e%gc%;%c:\
+ :cl=\014:\
+ :..cm=\013%p1%{32}%+%c\020%p2%{10}%/%{16}%*%p2%{10}%m%+%Pc%?%{17}%gc%=%{19}%gc%=%|%gc%!%|%t%{1}%gc%+%c%{8}%e%gc%;%c:\
+ :cr=^M:cv=\013%+ :do=^J:ho=^A:kb=^H:kh=^A:le=^H:nd=^F:sf=^J:\
+ :up=^Z:
+
+# p4: Prism-4
+# -----------
+#
+# Includes early versions of P7 & P8.
+# Basic family definition for most Prisms (except P2 and P9 ANSI).
+# Notes:
+# Horizontal cursor qualifiers of NUL, XON and XOFF are mapped to the next
+# value up, followed by backspace.
+# Cursor key definitions removed because they interfere with vi and csh keys.
+#
+prism4|p4|P4|MDC Prism-4:\
+ :5i:am:bw:hs:ms:\
+ :co#80:li#24:sg#1:ws#72:\
+ :bl=^G:cd=\EJ:ce=\EK:\
+ :..ch=\020%p1%{10}%/%{16}%*%p1%{10}%m%+%Pc%?%{17}%gc%=%{19}%gc%=%|%gc%!%|%t%{1}%gc%+%c%{8}%e%gc%;%c:\
+ :cl=\014:\
+ :..cm=\013%p1%{32}%+%c\020%p2%{10}%/%{16}%*%p2%{10}%m%+%Pc%?%{17}%gc%=%{19}%gc%=%|%gc%!%|%t%{1}%gc%+%c%{8}%e%gc%;%c:\
+ :cr=^M:cv=\013%+ :do=^J:ds=\035\343\035\345:fs=^]\345:\
+ :ho=^A:kb=^H:kh=^A:le=^H:mb=^CB:me=^C :mh=^CA:mk=^CH:mr=^CD:\
+ :nd=^F:pf=\ET:po=\ER:ps=\EU:\
+ :..sa=\003%{64}%?%p1%p3%|%t%{4}%+%;%?%p2%t%{16}%+%;%?%p4%t%{2}%+%;%?%p5%t%{1}%+%;%?%p7%t%{8}%+%;%c%?%p9%t\016%e\017%;:\
+ :se=^C :sf=^J:so=^CD:ts=^]\343:ue=^C :up=^Z:us=^CP:\
+ :ve=^]\342:vi=^]\344:
+
+# p5: Prism-5
+# -----------
+#
+# Same definition as p4. Includes Prism-6 (not tested!).
+# Does not use any multi-page features.
+#
+prism5|p5|P5|MDC Prism-5:\
+ :tc=p4:
+
+# p7: Prism-7
+# -----------
+#
+# Similar definition to p4. Uses ANSI cursor motion to avoid network problems.
+# Notes:
+# Use p4 for very early models of P7.
+# Rev-index removed; can't send nulls to terminal in 8-bit modes.
+#
+prism7|p7|P7|MDC Prism-7:\
+ :ch@:cm=\E[%i%d;%dH:cv@:tc=p4:
+
+# p8: Prism-8
+# -----------
+#
+# Similar definition to p7. Uses ANSI cursor motion to avoid network problems.
+# Supports national and multinational character sets.
+# Notes:
+# Alternate char set operations only work in multinational mode.
+# Use p4 for very early models of P8.
+# Rev-index removed; can't send nulls to terminal in 8-bit modes.
+# (esr: commented out :as:/:ae: because there's no <acsc>)
+#
+prism8|p8|P8|MDC Prism-8:\
+ :ch=\E[%i%d`:cm=\E[%i%d;%dH:cv=\E[%i%dd:is=\E[<12h:tc=p4:
+
+# p8-w: Prism-8 in 132 column mode
+# --------------------------------
+#
+# 'Wide' version of p8.
+# Notes:
+# Rev-index removed; can't send nulls to terminal in 8-bit modes.
+#
+prism8-w|p8-w|P8-W|MDC Prism-8 in 132 column mode:\
+ :co#132:\
+ :is=\E[<12h\E[<14h:tc=p8:
+
+# p9: Prism-9 in ANSI mode
+# -------------------------
+#
+# The "flagship" model of this generation of terminals.
+# ANSI X3.64 (ISO 6429) standard sequences, plus many DEC VT220 ones.
+# Notes:
+# Tabs only reset by "reset". Otherwise assumes default (8 cols).
+# Fixes to deal with terminal firmware bugs:
+# . 'ri' uses insert-line since rev index doesn't always
+# . 'sgr0' has extra '0' since esc[m fails
+# . 'fsl' & 'dsl' use illegal char since cr is actioned wrong on line 25
+# Not covered in the current definition:
+# . Labels
+# . Programming Fn keys
+# . Graphic characters (defaults correctly to vt100)
+# . Padding values (sets xon)
+# (esr: commented out :as:/:ae: because there's no <acsc>)
+#
+# (untranslatable capabilities removed to fit entry within 1023 bytes)
+prism9|p9|P9|MDC Prism-9 in ANSII mode:\
+ :5i:am:bw:hs:ms:xn:xo:\
+ :co#80:it#8:li#24:vt#3:ws#72:\
+ :AL=\E[%dL:DC=\E[%dP:DL=\E[%dM:DO=\E[%dB:F1=\E[23~:\
+ :F2=\E[24~:F3=\E[25~:F4=\E[26~:F5=\E[28~:F6=\E[29~:\
+ :F7=\E[31~:F8=\E[32~:LE=\E[%dD:RI=\E[%dC:UP=\E[%dA:\
+ :al=\E[L:bl=^G:bt=\E[Z:cd=\E[J:ce=\E[K:ch=\E[%i%d`:cl=^L:\
+ :cm=\E[%i%d;%dH:cr=^M:cs=\E[%i%d;%d%v:ct=\E[2g:\
+ :cv=\E[%i%dd:dc=\E[P:dl=\E[M:do=^J:ds=\E[%}\024:ec=\E[%dX:\
+ :ei=\E[4l:fs=^T:ho=\E[H:im=\E[4h:is=\E[&p\E[<12l\E F:\
+ :k1=\E[11~:k2=\E[12~:k3=\E[13~:k4=\E[14~:k5=\E[15~:\
+ :k6=\E[17~:k7=\E[18~:k8=\E[19~:k9=\E[20~:k;=\E[21~:kC=^L:\
+ :kb=^H:kd=\E[B:kh=\E[H:kl=\E[D:kr=\E[C:ku=\E[A:le=^H:\
+ :mb=\E[5m:md=\E[1m:me=\E[0m:mp=\E[32%{:mr=\E[7m:nd=\E[C:\
+ :nw=^M^J:pf=\E[4i:po=\E[5i:ps=\E[i:\
+ :r2=\E[&p\E[<12l\E F\E[3g\E[9;17;25;33;41;49;57;65;73 N:\
+ :rc=\E[%z:rp=\E[%r%db%.:sc=\E[%y:se=\E[27m:sf=^J:so=\E[7m:\
+ :sr=\E[L:st=\EH:ta=^I:ts=\E[%i%p1%d%%}:ue=\E[24m:up=\E[A:\
+ :us=\E[4m:ve=\E[<4h:vi=\E[<4l:
+
+# p9-w: Prism-9 in 132 column mode
+# --------------------------------
+#
+# 'Wide' version of p9.
+#
+prism9-w|p9-w|P9-W|MDC Prism-9 in 132 column mode:\
+ :co#132:\
+ :is=\E[&p\E[<12l\E F\E[<14h:\
+ :r2=\E[&p\E[<12l\E F\E[<14h:tc=p9:
+
+# p9-8: Prism-9 in P8 mode
+# ------------------------
+#
+# P9 terminal in P8 emulation mode.
+# Similar to p8 definition.
+# Insertion and deletion operations possible.
+#
+prism9-8|p9-8|P9-8|MDC Prism-9 in P8 mode:\
+ :AL=\E[%dL:DC=\E[%dP:DL=\E[%dM:IC=\E[%d@:al=\E[L:dc=\E[P:\
+ :dl=\E[M:ei=:ic=\E[@:im=:\
+ :tc=p8:
+
+# p9-8-w: Prism-9 in P8 and 132 column modes
+# ------------------------------------------
+#
+# P9 terminal in P8 emulation mode and 132 column mode.
+#
+prism9-8-w|p9-8-w|P9-8-W|MDC Prism-9 in Prism 8 emulation and 132 column mode:\
+ :AL=\E[%dL:DC=\E[%dP:DL=\E[%dM:IC=\E[%d@:al=\E[L:dc=\E[P:\
+ :dl=\E[M:ei=:ic=\E[@:im=:\
+ :tc=p8-w:
+
+# p12: Prism-12 in ANSI mode
+# ---------------------------
+#
+# See p9 definition.
+#
+prism12|p12|P12|MDC Prism-12 in ANSI mode:\
+ :tc=p9:
+
+# p12-w: Prism-12 in 132 column mode
+# ----------------------------------
+#
+# 'Wide' version of p12.
+#
+prism12-w|p12-w|P12-W|MDC Prism-12 in 132 column mode:\
+ :tc=p9-w:
+
+# p12-m: Prism-12 in MDC emulation mode
+# -------------------------------------
+#
+# P12 terminal in MDC emulation mode.
+# Similar to p8 definition.
+# Insertion and deletion operations possible.
+#
+prism12-m|p12-m|P12-M|MDC Prism-12 in MDC emulation mode:\
+ :tc=p9-8:
+
+# p12-m-w: Prism-12 in MDC emulation and 132 column modes
+# -------------------------------------------------------
+#
+# P12 terminal in MDC emulation mode and 132 column mode.
+#
+prism12-m-w|p12-m-w|P12-M-W|MDC Prism-12 in MDC emulation and 132 column mode:\
+ :tc=p9-8-w:
+
+# p14: Prism-14 in ANSII mode
+# ---------------------------
+#
+# See p9 definition.
+#
+prism14|p14|P14|MDC Prism-14 in ANSII mode:\
+ :tc=p9:
+
+# p14-w: Prism-14 in 132 column mode
+# ----------------------------------
+#
+# 'Wide' version of p14.
+#
+prism14-w|p14-w|P14-W|MDC Prism-14 in 132 column mode:\
+ :tc=p9-w:
+
+# p14-m: Prism-14 in MDC emulation mode
+# -------------------------------------
+#
+# P14 terminal in MDC emulation mode.
+# Similar to p8 definition.
+# Insertion and deletion operations possible.
+#
+prism14-m|p14-m|P14-M|MDC Prism-14 in MDC emulation mode:\
+ :tc=p9-8:
+
+# p14-m-w: Prism-14 in MDC emulation and 132 column modes
+# -------------------------------------------------------
+#
+# P14 terminal in MDC emulation mode and 132 column mode.
+#
+prism14-m-w|p14-m-w|P14-M-W|MDC Prism-14 in MDC emulation and 132 column mode:\
+ :tc=p9-8-w:
+
+# End of McDonnell Information Systems Prism definitions
+
+# These things were popular in the Pick database community at one time
+# From: George Land <georgeland@aol.com> 24 Sep 1996
+p8gl|prism8gl|McDonnell-Douglas Prism-8 alternate definition:\
+ :am:bw:hs:mi:\
+ :co#80:li#24:ma#1:sg#1:ws#78:\
+ :F2=^AJ\r:F3=^AK\r:F4=^AL\r:F5=^AM\r:F6=^AN\r:F7=^AO\r:\
+ :bl=^G:cd=\EJ:ce=\EK:cl=^L:cm=\E[%i%d;%dH:cr=^M:dc= ^H:\
+ :dl=^P:do=^J:ho=^A:k1=^A@\r:k2=^AA\r:k3=^AB\r:k4=^AC\r:\
+ :k5=^AD\r:k6=^AE\r:k7=^AF\r:k8=^AG\r:k9=^AH\r:k;=^AI\r:\
+ :kD= ^H:kE=\EK:kL=^P:kS=\EJ:kb=^H:kd=^J:kh=^A:kl=^U:kr=^F:\
+ :ku=^Z:l1=F1:l2=F2:l3=F3:l4=F4:l5=F5:l6=F6:l7=F7:l8=F8:l9=F9:\
+ :la=F10:le=^U:mb=^CB:me=^C :mh=^CA:mk=^CH:mr=^CD:nd=^F:\
+ :nw=^J^M:pc=\0:se=^C :sf=^J:so=^CE:ue=^C :up=^Z:us=^C0:
+
+#### Microterm (act, mime)
+#
+# The mime1 entries refer to the Microterm Mime I or Mime II.
+# The default mime is assumed to be in enhanced act iv mode.
+#
+
+# New "safe" cursor movement (5/87) from <reuss@umd5.umd.edu>. Prevents
+# freakout with out-of-range args on Sytek multiplexors. No :so=^N: and
+# :se=^N: since it gets confused and it's too dim anyway. No :ic:
+# since Sytek insists ^S means xoff.
+# (act4: found ":ic=2^S:ei=:im=:ip=.1*^V:" commented out in 8.3 -- esr)
+act4|microterm|microterm act iv:\
+ :am:bs:\
+ :co#80:li#24:\
+ :al=2.3*\001<2.3*/>:bl=^G:cd=2.2*\037:ce=.1*\036:\
+ :cl=12\014:cm=\024%+^X%>/0%+P:cr=^M:dc=.1*\004:\
+ :dl=2.3*\027:do=^K:ho=^]:kd=^K:kl=^H:kr=^X:ku=^Z:le=^H:nd=^X:\
+ :sf=^J:up=^Z:
+# The padding on :sr: and :ta: for act5 and mime is a guess and not final.
+# The act 5 has hardware tabs, but they are in columns 8, 16, 24, 32, 41 (!)...
+# (microterm5: removed obsolete ":ma==^Z^P^Xl^Kj:" -- esr)
+act5|microterm5|microterm act v:\
+ :kd=^K:kl=^H:kr=^X:ku=^Z:sr=\EH:uc=^H\EA:tc=act4:
+# Mimes using brightness for standout. Half bright is really dim unless
+# you turn up the brightness so far that lines show up on the screen.
+mime-fb|full bright mime1:\
+ :is=^S\E:se=^S:so=^Y:tc=mime:
+mime-hb|half bright mime1:\
+ :is=^Y\E:se=^Y:so=^S:tc=mime:
+# (mime: removed obsolete ":ma=^X ^K^J^Z^P:"; removed ":do=^K:" that overrode
+# the more plausible ":do=^J:" -- esr)
+# uc was at one time disabled to get around a curses bug, be wary of it
+mime|mime1|mime2|mimei|mimeii|microterm mime1:\
+ :am:bs:\
+ :co#80:it#8:li#24:vt#9:\
+ :al=\001:bl=^G:cd=^_:ce=^^:cl=^]^C:cm=\024%+^X%> 0%+P:\
+ :cr=^M:dl=\027:do=^J:ho=^]:is=^S\E^Q:kd=^K:kl=^H:kr=^X:ku=^Z:\
+ :le=^H:nd=^X:sf=^J:sr=\022:ta=\011:uc=^U:up=^Z:
+# These termcaps (for mime2a) put the terminal in low intensity mode
+# since high intensity mode is so obnoxious.
+mime2a-s|microterm mime2a (emulating an enhanced soroc iq120):\
+ :am:bs:\
+ :co#80:li#24:\
+ :al=\001:bl=^G:cd=\EJ:ce=\EK:cl=\EL:cm=\E=%+ %+ :cr=^M:\
+ :dc=\ED:dl=\027:do=^J:ei=^Z:ho=^^:im=\EE:ip=:is=\E):kd=^J:\
+ :kl=^H:kr=^L:ku=^K:le=^H:nd=^L:se=\E;:sf=^J:so=\E\072:sr=\EI:\
+ :ue=\E7:up=\EI:us=\E6:
+# This is the preferred mode (but ^X can't be used as a kill character)
+mime2a|mime2a-v|microterm mime2a (emulating an enhanced vt52):\
+ :bs:\
+ :co#80:it#8:li#24:\
+ :al=\001:bl=^G:cd=\EQ:ce=\EP:cl=\EL:cm=\EY%+ %+ :cr=^M:\
+ :dc=^N:dl=\027:do=^J:ei=^Z:ho=\EH:im=^O:ip=:is=^Y:kd=\EB:\
+ :kl=\ED:kr=\EC:ku=\EA:le=^H:nd=\EC:se=\E9:sf=^J:so=\E8:\
+ :sr=\EA:ta=^I:ue=\E5:up=\EA:us=\E4:
+# (mime3a: removed obsolete ":ma=^X ^K^J^Z^P:" -- esr)
+mime3a|mime1 emulating 3a:\
+ :am@:\
+ :kd=^K:kl=^H:kr=^X:ku=^Z:tc=adm3a:
+mime3ax|mime-3ax|mime1 emulating enhanced 3a:\
+ :it#8:\
+ :al=\001:cd=^_:ce=^X:dl=\027:ta=\011:tc=mime3a:
+# Wed Mar 9 18:53:21 1983
+# We run our terminals at 2400 baud, so there might be some timing problems at
+# higher speeds. The major improvements in this model are the terminal now
+# scrolls down and insert mode works without redrawing the rest of the line
+# to the right of the cursor. This is done with a bit of a kludge using the
+# exit graphics mode to get out of insert, but it does not appear to hurt
+# anything when using vi at least. If you have some users using act4s with
+# programs that use curses and graphics mode this could be a problem.
+mime314|mm314|mime 314:\
+ :am:\
+ :co#80:li#24:\
+ :al=^A:cd=^_:ce=^^:cl=^L:cm=\024%.%.:dc=^D:dl=^W:ei=^V:ho=^]:\
+ :im=^S:kd=^K:kl=^H:kr=^X:ku=^Z:le=^H:nd=^X:ta=^I:up=^Z:
+# Microterm mime 340 from University of Wisconsin
+mm340|mime340|mime 340:\
+ :co#80:li#24:\
+ :al=46\EU:cd=2*\037:ce=2.1\EL:cl=12\032:cm=\E=%+ %+ :\
+ :cr=^M:dc=2.1*\E#:dl=49.6\EV:do=^J:is=\E\054:kb=^H:kd=^J:\
+ :kl=^H:ku=^K:le=^H:nd=^L:nw=^M^J:sf=^J:ta=^I:up=^K:
+# This came from University of Wisconsin marked "astro termcap for jooss".
+# (mt4520-rv: removed obsolete ":kn#4:" and incorrect ":ri=\E[C:";
+# also added <rmam>/<smam> based on the init string -- esr)
+mt4520-rv|micro-term 4520 reverse video:\
+ :am:hs:ms:xn:xo:\
+ :co#80:it#8:li#24:ws#80:\
+ :AL=\E[%dL:DC=\E[%dP:DL=\E[%dM:DO=\E[%dB:IC=\E[%d@:\
+ :LE=\E[%dD:RA=\E[?7l:RI=\E[%dC:SA=\E[?7h:UP=\E[%dA:\
+ :al=\E[L:bl=^G:cd=\E[J:ce=\E[K:cl=\E[H\E[J:cm=\E[%i%d;%dH:\
+ :cr=^M:cs=\E[%i%d;%dr:ct=\E[g:dc=\E[P:dl=\E[M:do=\E[B:ei=:\
+ :fs=\E[?5l\E[?5h:ho=\E[H:ic=\E[@:im=:\
+ :is=\E(B\E[2l\E>\E[20l\E[?3l\E[?5h\E[?7h\E[1;24r\E[24;1H\E[H\E[J:\
+ :k1=\EOP:k2=\EOQ:k3=\EOR:k4=\EOS:kb=^H:kd=\E[B:kh=\E[H:\
+ :kl=\E[D:kr=\E[C:ku=\E[A:le=\E[D:ll=\E[24;1H:me=\E[m:\
+ :nd=\E[C:nw=\EE:\
+ :r1=\E(B\E[2l\E>\E[20l\E[?3l\E[?5h\E[?7h\E[H\E[J:\
+ :rc=\E8:rf=/usr/share/tabset/vt100:sc=\E7:se=\E[0m:\
+ :sf=\ED:so=\E[7m:sr=\EM:st=\EH:ta=^I:ts=\E[25;1H:ue=\E[24m:\
+ :up=\E[A:us=\E[4m:vb=\E[?5l\E[?5h:ve=\E[0V\E8:\
+ :vs=\E7\E[0U:
+
+# Fri Aug 5 08:11:57 1983
+# This entry works for the ergo 4000 with the following setups:
+# ansi,wraparound,newline disabled, xon/xoff disabled in both
+# setup a & c.
+#
+# WARNING!!! There are multiple versions of ERGO 4000 microcode
+# Be advised that very early versions DO NOT WORK RIGHT !!
+# Microterm does have a ROM exchange program- use it or lose big
+# (ergo400: added <rmam>/<smam> based on the init string -- esr)
+ergo4000|microterm ergo 4000:\
+ :da:db:ms:\
+ :co#80:li#66:\
+ :AL=\E[1L:RA=\E[?7l:SA=\E[?7m:bl=^G:cd=\E[0J:ce=\E[0K:\
+ :cl=\E[H\E[2J:cm=\E[%i%d;%dH:cr=^M:dc=\E[1P:dl=\E[1M:\
+ :do=\E[B:ei=\E[4l:im=\E[4h:\
+ :is=\E<\E=\E[?1l\E[?4l\E[?5l\E[?7h\E[?8h:k1=\EOP:\
+ :k2=\EOQ:k3=\EOR:k4=\EOS:kd=\E[B:ke=\E=:kl=\E[D:kr=\E[C:\
+ :ks=\E=:ku=\E[A:l1=pf1:l2=pf2:l3=pf3:l4=pf4:le=^H:me=\E[m:\
+ :nd=\E[C:se=\E[m:sf=\ED:so=\E[7m:sr=\EM:ta=^I:up=\E[A:
+
+#### NCR
+#
+# NCR's terminal group was merged with AT&T's when AT&T bought the company.
+# For what happened to that group, see the ADDS section.
+#
+# There is an NCR4103 terminal that's just a re-badged Wyse-50.
+#
+
+# The following vendor-supplied termcaps were captured from the Boundless
+# Technologies site, 8 March 1998. I removed all-upper-case names that were
+# identical, except for case, to lower-case ones. I also uncommented the acsc
+# capabilities.X
+#
+# The Intecolor emulation of the NCR 2900/260C color terminal is basically a
+# DEC vt200/300 with color capabilities added.
+ncr260intan|NCR Intecolor emulation of the 2900_260C with an ANSI keyboard:\
+ :Co#8:pa#64:\
+ :AB=\E[4%p1%dm:AF=\E[3%p1%dm:op=\E[0m:tc=ncr260vt300an:
+# The Intecolor emulation of the NCR 2900/260C color terminal is basically a
+# DEC vt200/300 with color capabilities added.
+ncr260intwan|NCR Intecolor emulation of the 2900_260C with an ANSI keyboard:\
+ :Co#8:pa#64:\
+ :AB=\E[4%p1%dm:AF=\E[3%p1%dm:op=\E[0m:tc=ncr260vt300wan:
+# The Intecolor emulation of the NCR 2900/260C color terminal is basically a
+# DEC vt200/300 with color capabilities added.
+ncr260intpp|NCR Intecolor emulation of the 2900_260C with a PC+ keyboard:\
+ :Co#8:pa#64:\
+ :AB=\E[4%p1%dm:AF=\E[3%p1%dm:op=\E[0m:tc=ncr260vt300pp:
+# The Intecolor emulation of the NCR 2900/260C color terminal is basicly a
+# DEC vt200/300 with color capabilities added.
+ncr260intwpp|NCR Intecolor emulation of the 2900_260C with a PC+ keyboard in 132 column mode:\
+ :Co#8:pa#64:\
+ :AB=\E[4%p1%dm:AF=\E[3%p1%dm:op=\E[0m:tc=ncr260vt300wpp:
+# This definition for ViewPoint supports several attributes. This means
+# that it has magic cookies (extra spaces where the attributes begin).
+# Some applications do not function well with magic cookies. The System
+# Administrator's Shell in NCR Unix SVR4 1.03 is one such application.
+# If supporting various attributes is not vital, 'xmc#1' and the extra
+# attributes can be removed.
+# Mapping to ASCII character set ('acsc' capability) can also be
+# restored if needed.
+# (untranslatable capabilities removed to fit entry within 1023 bytes)
+# (sgr removed to fit entry within 1023 bytes)
+# (terminfo-only capabilities suppressed to fit entry within 1023 bytes)
+ncr260vppp|NCR 2900_260 viewpoint:\
+ :am:bw:hs:km:mi:ms:xo:\
+ :co#80:li#24:sg#1:\
+ :CM=\Ew@%p1%{48}%+%c%p2%{32}%+%c%p3%{32}%+%c:K1=^A:\
+ :K3=\EJ:K4=\ET:K5=\EJ:ae=\EcB0\EH\003:al=\EM:\
+ :as=\EcB1\EH\002:bl=^G:bt=\EI:cd=\Ek:ce=\EK:cl=\014:\
+ :cm=\EY%+ %+ :cr=\r:dc=\EW:dl=\El:do=\n:ds=\E`c:ei=\Er:\
+ :fs=^M:ho=\036:im=\Eq:\
+ :is=\Ee6\E~%\E+\E`\072\Ed/\E`1\EO\Ee4\Ec@0@\Ec@1A\EcB0\EcC1\Ee7:\
+ :k1=^B1\r:k2=^B2\r:k3=^B3\r:k4=^B4\r:k5=^B5\r:k6=^B6\r:\
+ :k7=^B7\r:k8=^B8\r:k9=^B9\r:kD=\EW:kI=\Eq:kN=\EJ:kP=\EJ:\
+ :kb=^H:kd=^J:kh=^A:kl=^U:kr=^F:ku=^Z:le=\010:ll=\001:mb=\EG2:\
+ :me=\EG0\EH\003:mh=\EGp:mr=\EG4:nd=\006:nw=\037:se=\EG0:\
+ :sf=\n:so=\EG4:sr=\Ej:st=\E1:ta=^I:ts=\EF:ue=\EG0:up=\032:\
+ :us=\EG8:ve=\E`5:vi=\E`0:vs=\E`5:
+ncr260vpwpp|NCR 2900_260 viewpoint wide mode:\
+ :co#132:\
+ :cm=\Ea%i%dR%dC:\
+ :is=\Ee6\E~%\E+\E`;\Ed/\E`1\EO\Ee4\Ec@0@\Ec@1A\EcB0\EcC1\Ee7:\
+ :r2=\Ee6\E~%\E+\E`;\Ed/\E`1\EO\Ee4\Ec@0@\Ec@1A\EcB0\EcC1\Ee7:\
+ :tc=ncr260vppp:
+# (untranslatable capabilities removed to fit entry within 1023 bytes)
+# (sgr removed to fit entry within 1023 bytes)
+# (terminfo-only capabilities suppressed to fit entry within 1023 bytes)
+ncr260vt100an|NCR 2900_260 vt100 with ansi kybd:\
+ :am:hs:mi:ms:xn:xo:\
+ :co#80:li#24:\
+ :AL=\E[%dL:DC=\E[%dP:DL=\E[%dM:DO=\E[%dB:IC=\E[%d@:\
+ :K1=\EOw:K2=\EOy:K3=\EOu:K4=\EOq:K5=\EOs:LE=\E[%dD:\
+ :RI=\E[%dC:SF=\E[%dE:UP=\E[%dA:ae=^O:al=\E[L:as=^N:bl=^G:\
+ :cd=\E[0J:ce=\E[0K:cl=\E[2J\E[1;1H:cm=\E[%i%d;%dH:cr=\r:\
+ :cs=\E[%i%d;%dr:ct=\E[3g:dc=\E[1P:dl=\E[M:do=\E[B:\
+ :ds=\E[0$~\E[1$~:ec=\E[%dX:ei=\E[4l:fs=\E[0$}:ho=\E[H:\
+ :im=\E[4h:\
+ :is=\E[\041p\E[?7;19;67h\E[?1;3;4l\E(B\E)0\017\E[2J\E[1;1H\E>:\
+ :k1=\EOP:k2=\EOQ:k3=\EOR:k4=\EOS:kD=\E[3~:kI=\E[2~:\
+ :kN=\E[6~:kP=\E[5~:kb=^H:kd=\EOB:ke=\E[?1l\E>:kl=\EOD:\
+ :kr=\EOC:ks=\E[?1h\E=:ku=\EOA:le=\E[D:mb=\E[5m:md=\E[1m:\
+ :me=\E[0m\017:mr=\E[7m:nd=\E[C:nw=\EE:rc=\E8:sc=\E7:\
+ :se=\E[0m:sf=\ED:so=\E[1;7m:sr=\EM:st=\EH:ta=^I:\
+ :ts=\E[2$~\E[1$}:ue=\E[0m:up=\E[A:us=\E[4m:ve=\E[?25h:\
+ :vi=\E[?25l:
+ncr260vt100wan|NCR 2900_260 vt100 wide mode ansi kybd:\
+ :co#132:\
+ :cm=\E[%i%d;%dH:\
+ :is=\E[\041p\E[?3;7;19;67h\E[?1;4l\E(B\E)0\017\E[2J\E[1;1H\E>:\
+ :r2=\E[\041p\E[?3;7;19;67h\E[?1;4l\E(B\E)0\017\E[2J\E[1;1H\E>:\
+ :tc=ncr260vt100an:
+ncr260vt100pp|NCR 2900_260 vt100 with PC+ kybd:\
+ :@7=\E[5~:K1=\E[H:K2=\E[V:K3=\EOu:K5=\E[U:\
+ :is=\E[\041p\E[?7;19;67h\E[?1;3;4l\E(B\E)0\017\E[2J\E[1;1H\E>:\
+ :kD=\E[4~:kI=\E[1~:kN=\E[6~:kP=\E[3~:kd=\E[B:ke=\E>:\
+ :kh=\E[2~:kl=\E[D:kr=\E[C:ks=\E=:ku=\E[A:l1=pf1:l2=pf2:\
+ :l3=pf3:l4=pf4:\
+ :r2=\E[\041p\E[?7;19;67h\E[?1;3;4l\E(B\E)0\017\E[2J\E[1;1H\E>:tc=ncr260vt100an:
+ncr260vt100wpp|NCR 2900_260 vt100 wide mode pc+ kybd:\
+ :co#132:\
+ :cm=\E[%i%d;%dH:\
+ :is=\E[\041p\E[?3;7;19;67h\E[?1;4l\E(B\E)0\017\E[2J\E[1;1H\E>:\
+ :r2=\E[\041p\E[?3;7;19;67h\E[?1;4l\E(B\E)0\017\E[2J\E[1;1H\E>:\
+ :tc=ncr260vt100pp:
+# (untranslatable capabilities removed to fit entry within 1023 bytes)
+# (sgr removed to fit entry within 1023 bytes)
+# (terminfo-only capabilities suppressed to fit entry within 1023 bytes)
+ncr260vt200an|NCR 2900_260 vt200 with ansi kybd:\
+ :am:hs:mi:ms:xn:xo:\
+ :co#80:li#24:\
+ :AL=\E[%dL:DC=\E[%dP:DL=\E[%dM:DO=\E[%dB:IC=\E[%d@:\
+ :K1=\EOw:K2=\EOy:K3=\EOu:K4=\EOq:K5=\EOs:LE=\E[%dD:\
+ :RI=\E[%dC:SF=\E[%dE:UP=\E[%dA:ae=\017:al=\E[L:as=\016:\
+ :bl=^G:cd=\E[0J:ce=\E[0K:cl=\E[2J\E[1;1H:cm=\E[%i%d;%dH:\
+ :cr=\r:cs=\E[%i%d;%dr:ct=\E[3g:dc=\E[1P:dl=\E[M:do=\E[B:\
+ :ds=\E[0$~\E[1$~:ec=\E[%dX:ei=\E[4l:fs=\E[0$}:ho=\E[H:\
+ :im=\E[4h:\
+ :is=\E[\041p\E[?7;19;67h\E[?1;3;4l\E(B\E)0\017\E[2J\E[1;1H\E>:\
+ :k0=\EOy:k1=\EOP:k2=\EOQ:k3=\EOR:k4=\EOS:k5=\E[M:k6=\E[17~:\
+ :k7=\E[18~:k8=\E[19~:k9=\E[20~:kD=\E[3~:kI=\E[2~:kN=\E[6~:\
+ :kP=\E[5~:kb=^H:kd=\EOB:ke=\E[?1l\E>:kl=\EOD:kr=\EOC:\
+ :ks=\E[?1h\E=:ku=\EOA:le=\E[D:mb=\E[5m:md=\E[1m:\
+ :me=\E[0m\017:mr=\E[7m:nd=\E[C:nw=\EE:rc=\E8:sc=\E7:\
+ :se=\E[27m:sf=\ED:so=\E[7m:sr=\EM:st=\EH:ta=^I:\
+ :ts=\E[2$~\E[1$}:ue=\E[24m:up=\E[A:us=\E[4m:ve=\E[?25h:\
+ :vi=\E[?25l:
+ncr260vt200wan|NCR 2900_260 vt200 wide mode ansi kybd:\
+ :co#132:\
+ :cm=\E[%i%d;%dH:\
+ :is=\E[\041p\E[?3;7;19;67h\E[?4l\E(B\E)0\017\E[2J\E[1;1H:\
+ :r2=\E[\041p\E[?3;7;19;67h\E[?4l\E(B\E)0\017\E[2J\E[1;1H:\
+ :tc=ncr260vt200an:
+ncr260vt200pp|NCR 2900_260 vt200 with pc+ kybd:\
+ :@7=\E[1~:K1=\E[H:K2=\E[V:K3=\EOu:K5=\E[U:kD=\E[4~:\
+ :kI=\E[2~:kN=\E[6~:kP=\E[5~:kd=\E[B:ke=\E>:kh=\E[H:kl=\E[D:\
+ :kr=\E[C:ks=\E=:ku=\E[A:l1=pf1:l2=pf2:l3=pf3:l4=pf4:\
+ :tc=ncr260vt200an:
+ncr260vt200wpp|NCR 2900_260 vt200 wide mode pc+ kybd:\
+ :co#132:\
+ :cm=\E[%i%d;%dH:\
+ :is=\E[\041p\E[?3;7;19;67h\E[?1;4l\E(B\E)0\017\E[2J\E[1;1H\E>:\
+ :r2=\E[\041p\E[?3;7;19;67h\E[?1;4l\E(B\E)0\017\E[2J\E[1;1H\E>:\
+ :tc=ncr260vt200pp:
+# (untranslatable capabilities removed to fit entry within 1023 bytes)
+# (sgr removed to fit entry within 1023 bytes)
+# (terminfo-only capabilities suppressed to fit entry within 1023 bytes)
+ncr260vt300an|NCR 2900_260 vt300 with ansi kybd:\
+ :am:hs:mi:ms:xn:xo:\
+ :co#80:li#24:\
+ :AL=\E[%dL:DC=\E[%dP:DL=\E[%dM:DO=\E[%dB:IC=\E[%d@:\
+ :K1=\EOw:K2=\EOy:K3=\EOu:K4=\EOq:K5=\EOs:LE=\E[%dD:\
+ :RI=\E[%dC:SF=\E[%dE:UP=\E[%dA:ae=\017:al=\E[L:as=\016:\
+ :bl=^G:cd=\E[0J:ce=\E[0K:cl=\E[2J\E[1;1H:cm=\E[%i%d;%dH:\
+ :cr=\r:cs=\E[%i%d;%dr:ct=\E[3g:dc=\E[1P:dl=\E[M:do=\E[B:\
+ :ds=\E[0$~\E[1$~:ec=\E[%dX:ei=\E[4l:fs=\E[0$}:ho=\E[H:\
+ :im=\E[4h:\
+ :is=\E[\041p\E[?7;19;67h\E[?1;3;4l\E[1;0%w\E(B\E)0\017\E[2J\E[1;1H\E>:\
+ :k0=\EOy:k1=\EOP:k2=\EOQ:k3=\EOR:k4=\EOS:k5=\E[M:k6=\E[17~:\
+ :k7=\E[18~:k8=\E[19~:k9=\E[20~:kD=\E[3~:kI=\E[2~:kN=\E[6~:\
+ :kP=\E[5~:kb=^H:kd=\EOB:ke=\E[?1l\E>:kl=\EOD:kr=\EOC:\
+ :ks=\E[?1h\E=:ku=\EOA:le=\E[D:mb=\E[5m:md=\E[1m:\
+ :me=\E[0m\017:mr=\E[7m:nd=\E[C:nw=\EE:rc=\E8:sc=\E7:\
+ :se=\E[27m:sf=\ED:so=\E[7m:sr=\EM:st=\EH:ta=^I:\
+ :ts=\E[2$~\E[1$}:ue=\E[24m:up=\E[A:us=\E[4m:ve=\E[?25h:\
+ :vi=\E[?25l:
+ncr260vt300wan|NCR 2900_260 vt300 wide mode ansi kybd:\
+ :co#132:\
+ :cm=\E[%i%d;%dH:\
+ :is=\E[\041p\E[?3;7;19;67h\E[?4l\E[1;0%w\E(B\E)0\017\E[2J\E[1;1H:\
+ :r2=\E[\041p\E[?3;7;19;67h\E[?4l\E[1;0%w\E(B\E)0\017\E[2J\E[1;1H:\
+ :tc=ncr260vt300an:
+ncr260vt300pp|NCR 2900_260 vt300 with pc+ kybd:\
+ :@7=\E[1~:K1=\E[H:K2=\E[V:K3=\EOu:K5=\E[U:kD=\E[4~:\
+ :kI=\E[2~:kN=\E[6~:kP=\E[5~:kd=\E[B:ke=\E>:kh=\E[H:kl=\E[D:\
+ :kr=\E[C:ks=\E=:ku=\E[A:l1=pf1:l2=pf2:l3=pf3:l4=pf4:\
+ :tc=ncr260vt300an:
+NCR260VT300WPP|ncr260vt300wpp|NCR 2900_260 vt300 wide mode pc+ kybd:\
+ :co#132:\
+ :cm=\E[%i%d;%dH:\
+ :is=\E[\041p\E[?3;7;19;67h\E[?1;4l\E[1;0%w\E(B\E)0\017\E[2J\E[1;1H\E>:\
+ :r2=\E[\041p\E[?3;7;19;67h\E[?1;4l\E[1;0%w\E(B\E)0\017\E[2J\E[1;1H\E>:\
+ :tc=ncr260vt300pp:
+# This terminfo file contains color capabilities for the Wyse325 emulation of
+# the NCR 2900/260C color terminal. Because of the structure of the command
+# (escape sequence) used to set color attributes, one of the fore/background
+# colors must be preset to a given value. I have set the background color to
+# black. The user can change this setup by altering the last section of the
+# 'setf' definition. The escape sequence to set color attributes is
+# ESC d y <foreground_color> <background_color> 1
+# In addition, the background color can be changed through the desk accessories.
+# The capablitiy 'op' sets colors to green on black (default combination).
+#
+# NOTE: The NCR Unix System Administrator's Shell will not function properly
+# if the 'pairs' capability is defined. Un-Comment the 'pairs'
+# capability and recompile if you wish to have it included.
+#
+# (untranslatable capabilities removed to fit entry within 1023 bytes)
+# (sgr removed to fit entry within 1023 bytes)
+# (terminfo-only capabilities suppressed to fit entry within 1023 bytes)
+ncr260wy325pp|NCR 2900_260 wyse 325:\
+ :am:bw:hs:km:mi:ms:xo:\
+ :co#80:li#24:\
+ :CM=\Ew@%p1%{48}%+%c%p2%{32}%+%c%p3%{32}%+%c:K1=^^:\
+ :K2=\EJ:K4=\ET:K5=\EK:ae=\EH\003\EcB0:al=\EE:\
+ :as=\EH\002\EcB1:bl=^G:bt=\EI:cd=\Ey:ce=\Et:cl=\E*:\
+ :cm=\E=%+ %+ :cr=^M:ct=\E0:dc=\EW:dl=\ER:do=\n:ds=\E`c:\
+ :ei=\Er:fs=^M:ho=\036:im=\Eq:\
+ :is=\Ee6\Ed/\Ee1\Ed*\Er\EO\E`1\E`\072\E`@\E~\041\E"\Ee4\Ex@\E`9\Ee7:\
+ :k1=^A@\r:k2=^AA\r:k3=^AB\r:k4=^AC\r:k5=^AD\r:k6=^AE\r:\
+ :k7=^AF\r:k8=^AG\r:k9=^AH\r:kD=\EW:kI=\Eq:kN=\EK:kP=\EJ:\
+ :kb=^H:kd=^J:kh=^^:kl=^H:kr=^L:ku=^K:le=\010:mb=\EG2:\
+ :me=\EG0\EcB0\EcD:mr=\EG4:nd=\014:nw=\037:se=\EG0:sf=\n:\
+ :so=\EGt:sr=\Ej:st=\E1:ta=^I:ts=\EF:ue=\EG0:up=\013:us=\EG8:\
+ :ve=\E`1:vi=\E`0:vs=\E`5:
+ncr260wy325wpp|NCR 2900_260 wyse 325 wide mode:\
+ :co#132:\
+ :cm=\Ea%i%dR%dC:\
+ :is=\Ee6\Ed/\Ee1\Ed*\Er\EO\E`1\E`;\E`@\E~\041\E"\Ee4\Ex@\E`9\Ee7:\
+ :r2=\Ee6\Ed/\Ee1\Ed*\Er\EO\E`1\E`;\E`@\E~\041\E"\Ee4\Ex@\E`9\Ee7:\
+ :tc=ncr260wy325pp:
+# This definition for Wyse 350 supports several attributes. This means
+# that it has magic cookies (extra spaces where the attributes begin).
+# Some applications do not function well with magic cookies. The System
+# Administrator's Shell in NCR Unix SVR4 1.03 is one such application.
+# If supporting various attributes is not vital, 'xmc#1' and the extra
+# attributes can be removed.
+# Mapping to ASCII character set ('acsc' capability) can also be
+# restored if needed.
+# In addition, color capabilities have been added to this file. The drawback,
+# however, is that the background color has to be black. The foreground colors
+# are numbered 0 through 15.
+#
+# NOTE: The NCR Unix System Administrator's Shell does not function properly
+# with the 'pairs' capability defined as below. If you wish to
+# have it included, Un-comment it and recompile (using 'tic').
+#
+# (untranslatable capabilities removed to fit entry within 1023 bytes)
+# (sgr removed to fit entry within 1023 bytes)
+# (terminfo-only capabilities suppressed to fit entry within 1023 bytes)
+ncr260wy350pp|NCR 2900_260 wyse 350:\
+ :am:bw:hs:km:mi:ms:xo:\
+ :co#80:li#24:sg#1:\
+ :CM=\Ew@%p1%{48}%+%c%p2%{32}%+%c%p3%{32}%+%c:K1=^^:\
+ :K4=\ET:K5=\EK:ae=\EH\003\EcB0:al=\EE:as=\EH\002\EcB1:\
+ :bl=^G:bt=\EI:cd=\Ey:ce=\Et:cl=\E+:cm=\E=%+ %+ :cr=^M:\
+ :ct=\E0:dc=\EW:dl=\ER:do=\n:ds=\E`c:ei=\Er:fs=^M:ho=\036:\
+ :im=\Eq:\
+ :is=\Ee6\Ed/\Ee1\Ed*\Er\EO\E`1\E`\072\E`@\E~\041\E"\Ee4\Ex@\E`9\Ee7:\
+ :k1=^A@\r:k2=^AA\r:k3=^AB\r:k4=^AC\r:k5=^AD\r:k6=^AE\r:\
+ :k7=^AF\r:k8=^AG\r:k9=^AH\r:kD=\EW:kI=\Eq:kN=\EK:kP=\EJ:\
+ :kb=^H:kd=^J:kh=^^:kl=^H:kr=^L:ku=^K:le=\010:mb=\EG2:\
+ :me=\EG0\EH\003\EcD:mh=\EGp:mr=\EG4:nd=\014:nw=\037:\
+ :se=\EG0:sf=\n:so=\EGt:sr=\Ej:st=\E1:ta=^I:ts=\EF:ue=\EG0:\
+ :up=\013:us=\EG8:ve=\E`1:vi=\E`0:vs=\E`5:
+ncr260wy350wpp|NCR 2900_260 wyse 350 wide mode:\
+ :co#132:\
+ :cm=\Ea%i%dR%dC:\
+ :is=\Ee6\Ed/\Ee1\Ed*\Er\EO\E`1\E`;\E`@\E~\041\E"\Ee4\Ex@\E`9\Ee7:\
+ :r2=\Ee6\Ed/\Ee1\Ed*\Er\EO\E`1\E`;\E`@\E~\041\E"\Ee4\Ex@\E`9\Ee7:\
+ :tc=ncr260wy350pp:
+# This definition for Wyse 50+ supports several attributes. This means
+# that it has magic cookies (extra spaces where the attributes begin).
+# Some applications do not function well with magic cookies. The System
+# Administrator's Shell in NCR Unix SVR4 1.03 is one such application.
+# If supporting various attributes is not vital, 'xmc#1' and the extra
+# attributes can be removed.
+# Mapping to ASCII character set ('acsc' capability) can also be
+# restored if needed.
+# (ncr260wy50+pp: originally contained commented-out
+# <acsc=j5k3l2m1n8q:t4u9v=w0x6>, as well as the commented-out one there -- esr)
+# (untranslatable capabilities removed to fit entry within 1023 bytes)
+# (sgr removed to fit entry within 1023 bytes)
+# (terminfo-only capabilities suppressed to fit entry within 1023 bytes)
+ncr260wy50+pp|NCR 2900_260 wyse 50+:\
+ :am:bw:hs:km:mi:ms:xo:\
+ :co#80:li#24:sg#1:\
+ :CM=\Ew@%p1%{48}%+%c%p2%{32}%+%c%p3%{32}%+%c:K1=^^:\
+ :K4=\ET:K5=\EK:ae=\EH^C:al=\EE:as=\EH^B:bl=^G:bt=\EI:cd=\EY:\
+ :ce=\ET:cl=\E+:cm=\E=%+ %+ :cr=^M:ct=\E0:dc=\EW:dl=\ER:\
+ :do=\n:ds=\E`c:ei=\Er:fs=^M:ho=\036:im=\Eq:\
+ :is=\Ee6\E~"\E+\Ed/\Ee1\Ed*\Er\EO\E`1\E`\072\E`@\E~\041\E"\Ee4\Ex@\E`9\Ee7:\
+ :k1=^A@\r:k2=^AA\r:k3=^AB\r:k4=^AC\r:k5=^AD\r:k6=^AE\r:\
+ :k7=^AF\r:k8=^AG\r:k9=^AH\r:kD=\EW:kI=\Eq:kN=\EK:kP=\EJ:\
+ :kb=^H:kd=^J:kh=^^:kl=^H:kr=^L:ku=^K:le=\010:mb=\EG2:\
+ :me=\EG0\EH\003:mh=\EGp:mr=\EG4:nd=\014:nw=\037:se=\EG0:\
+ :sf=\n:so=\EGt:sr=\Ej:st=\E1:ta=\011:ts=\EF:ue=\EG0:up=\013:\
+ :us=\EG8:ve=\E`1:vi=\E`0:vs=\E`5:
+ncr260wy50+wpp|NCR 2900_260 wyse 50+ wide mode:\
+ :co#132:\
+ :cm=\Ea%i%dR%dC:\
+ :is=\Ee6\E~"\E+\Ed/\Ee1\Ed*\Er\EO\E`1\E`;\E`@\E~\041\E"\Ee4\Ex@\E`9\Ee7:\
+ :r2=\Ee6\E~"\E+\Ed/\Ee1\Ed*\Er\EO\E`1\E`;\E`@\E~\041\E"\Ee4\Ex@\E`9\Ee7:\
+ :tc=ncr260wy50+pp:
+# (untranslatable capabilities removed to fit entry within 1023 bytes)
+# (sgr removed to fit entry within 1023 bytes)
+# (terminfo-only capabilities suppressed to fit entry within 1023 bytes)
+ncr260wy60pp|NCR 2900_260 wyse 60:\
+ :am:bw:hs:km:mi:ms:xo:\
+ :co#80:li#24:\
+ :CM=\Ew@%p1%{48}%+%c%p2%{32}%+%c%p3%{32}%+%c:K1=^^:\
+ :K2=\EJ:K4=\ET:K5=\EK:ae=\EH^C:al=\EE:as=\EH^B:bl=^G:bt=\EI:\
+ :cd=\Ey:ce=\Et:cl=\E*:cm=\E=%+ %+ :cr=^M:ct=\E0:dc=\EW:\
+ :dl=\ER:do=\n:ds=\E`c:ei=\Er:fs=^M:ho=\036:im=\Eq:\
+ :is=\Ee6\E~4\E+\Ed/\Ee1\Ed*\Er\EO\E`1\E`\072\E`@\E~\041\E"\Ee4\Ex@\E`9\Ee7:\
+ :k1=^A@\r:k2=^AA\r:k3=^AB\r:k4=^AC\r:k5=^AD\r:k6=^AE\r:\
+ :k7=^AF\r:k8=^AG\r:k9=^AH\r:kD=\EW:kI=\Eq:kN=\EK:kP=\EJ:\
+ :kb=^H:kd=^J:kh=^^:kl=^H:kr=^L:ku=^K:le=\010:mb=\EG2:\
+ :me=\EG0\EcB0\EcD:mr=\EG4:nd=\014:nw=\037:se=\EG0:sf=\n:\
+ :so=\EGt:sr=\Ej:st=\E1:ta=\011:ts=\EF:ue=\EG0:up=\013:\
+ :us=\EG8:ve=\E`1:vi=\E`0:vs=\E`5:
+ncr260wy60wpp|NCR 2900_260 wyse 60 wide mode:\
+ :co#132:\
+ :cm=\Ea%i%dR%dC:\
+ :is=\Ee6\E~4\E+\Ed/\Ee1\Ed*\Er\EO\E`1\E`;\E`@\E~\041\E"\Ee4\Ex@\E`9\Ee7:\
+ :r2=\Ee6\E~4\E+\Ed/\Ee1\Ed*\Er\EO\E`1\E`;\E`@\E~\041\E"\Ee4\Ex@\E`9\Ee7:\
+ :tc=ncr260wy60pp:
+ncr160vppp|NCR 2900_160 viewpoint:\
+ :tc=ncr260vppp:
+ncr160vpwpp|NCR 2900_160 viewpoint wide mode:\
+ :tc=ncr260vpwpp:
+ncr160vt100an|NCR 2900_160 vt100 with ansi kybd:\
+ :tc=ncr260vt100an:
+ncr160vt100pp|NCR 2900_160 vt100 with PC+ kybd:\
+ :tc=ncr260vt100pp:
+ncr160vt100wan|NCR 2900_160 vt100 wide mode ansi kybd:\
+ :tc=ncr260vt100wan:
+ncr160vt100wpp|NCR 2900_160 vt100 wide mode pc+ kybd:\
+ :tc=ncr260vt100wpp:
+ncr160vt200an|NCR 2900_160 vt200 with ansi kybd:\
+ :tc=ncr260vt200an:
+ncr160vt200pp|NCR 2900_160 vt200 with pc+ kybd:\
+ :tc=ncr260vt200pp:
+ncr160vt200wan|NCR 2900_160 vt200 wide mode ansi kybd:\
+ :tc=ncr260vt200wan:
+ncr160vt200wpp|NCR 2900_160 vt200 wide mode pc+ kybd:\
+ :tc=ncr260vt200wpp:
+ncr160vt300an|NCR 2900_160 vt300 with ansi kybd:\
+ :tc=ncr260vt300an:
+ncr160vt300pp|NCR 2900_160 vt300 with pc+ kybd:\
+ :tc=ncr260vt300pp:
+ncr160vt300wan|NCR 2900_160 vt300 wide mode ansi kybd:\
+ :tc=ncr260vt300wan:
+ncr160vt300wpp|NCR 2900_160 vt300 wide mode pc+ kybd:\
+ :tc=ncr260vt300wpp:
+ncr160wy50+pp|NCR 2900_160 wyse 50+:\
+ :tc=ncr260wy50+pp:
+ncr160wy50+wpp|NCR 2900_160 wyse 50+ wide mode:\
+ :tc=ncr260wy50+wpp:
+ncr160wy60pp|NCR 2900_160 wyse 60:\
+ :tc=ncr260wy60pp:
+ncr160wy60wpp|NCR 2900_160 wyse 60 wide mode:\
+ :tc=ncr260wy60wpp:
+ncrvt100an|ncrvt100pp|NCR vt100 for the 2900 terminal:\
+ :5i:am:hs:mi:ms:xo:\
+ :Nl#32:co#80:it#8:li#24:\
+ :#4=\E[D:%i=\E[C:@8=^M:AL=\E[%dL:DC=\E[%dP:DL=\E[%dM:\
+ :DO=\E[%dB:K1=\E[H:LE=\E[%dD:RI=\E[%dC:UP=\E[%dA:\
+ :ac=``aaffgghhiijjkkllmmnnqqttuuvvwwxxyyzz~~:ae=\017:\
+ :al=\E[B\E[L:as=\016:bl=^G:cb=\E[1K:cd=\E[0J:ce=\E[0K:\
+ :cl=\E[2J\E[1;1H:cm=\E[%i%d;%dH:cr=^M:cs=\E[%i%d;%dr:\
+ :ct=\E[3g:dc=\E[1P:dl=\E[M:do=\E[B:ds=\E[31l:eA=\E(B\E)0:\
+ :ei=\E[4l:fs=1:ho=\E[H:im=\E[4h:\
+ :is=\E[12h\E[?10l\E%/0n\E[P\031\E[?3l\E(B\E)0:k1=\EOP:\
+ :k2=\EOQ:k3=\EOR:k4=\EOS:kb=^H:kd=\E[B:kl=\E[D:kr=\E[C:\
+ :ku=\E[A:le=\E[D:mb=\E[5m:md=\E[1m:me=\017\E[0m:mr=\E[7m:\
+ :nd=\E[C:nw=\EE:ps=\E[i:\
+ :r2=\Ec\E[12;31h\E[?3;4;5;10l\E[?6;7;19;25h\E[33;34l\E[0m\E(B\E)0\E%/0n\E[P\031:\
+ :rc=\E8:\
+ :..sa=\E[0%?%p1%p6%|%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;%?%p4%t;5%;m%?%p9%t\016%e\017%;$<100>:\
+ :sc=\E7:se=\E[0m:sf=\ED:so=\E[7m:sr=\EM:st=\EH:ta=^I:\
+ :ts=\E[>+1:ue=\E[0m:up=\E[A:us=\E[4m:
+ncrvt100wan|NCRVT100WPP|ncrvt100wpp|NCR VT100 emulation of the 2900 terminal:\
+ :co#132:\
+ :is=\E[12h\E[?10l\E%/0n\E[P\031\E[?3h\E(B\E)0:\
+ :r2=\Ec\E[12;31h\E[?4;5;10l\E?3;6;7;19;25h\E[33;34l\E[0m\E(B\E)0\E%/0n\E[P\031:\
+ :tc=ncrvt100an:
+#
+# Vendor-supplied NCR termcaps end here
+
+# NCR7900 DIP switches:
+#
+# Switch A:
+# 1-4 - Baud Rate
+# 5 - Parity (Odd/Even)
+# 6 - Don't Send or Do Send Spaces
+# 7 - Parity Enable
+# 8 - Stop Bits (One/Two)
+#
+# Switch B:
+# 1 - Upper/Lower Shift
+# 2 - Typewriter Shift
+# 3 - Half Duplex / Full Duplex
+# 4 - Light/Dark Background
+# 5-6 - Carriage Return Without / With Line Feed
+# 7 - Extended Mode
+# 8 - Suppress Keyboard Display
+#
+# Switch C:
+# 1 - End of line entry disabled/enabled
+# 2 - Conversational mode / (Local?) Mode
+# 3 - Control characters displayed / not displayed
+# 4 - (2-wire?) / 4-wire communications
+# 5 - RTS on and off for each character
+# 6 - (50Hz?) / 60 Hz
+# 7 - Exit after level zero diagnostics
+# 8 - RS-232 interface
+#
+# Switch D:
+# 1 - Reverse Channel (yes / no)
+# 2 - Manual answer (no / yes)
+# 3-4 - Cursor appearance
+# 5 - Communication Rate
+# 6 - Enable / Disable EXT turnoff
+# 7 - Enable / Disable CR turnoff
+# 8 - Enable / Disable backspace
+#
+# Since each attribute parameter is 0 or 1, we shift each attribute (standout,
+# reverse, blink, dim, and underline) the appropriate number of bits (by
+# multiplying the 0 or 1 by a correct factor to shift) so the bias character,
+# '@' is (effectively) "or"ed with each attribute to generate the proper third
+# character in the <ESC>0 sequence. The :sa: string implements the following
+# equation:
+#
+# ((((('@' + P5) | (P4 << 1)) | (P3 << 3)) | (P2 << 4)) | (p1 * 17)) =>
+# ((((('@' + P5) + (P4 << 1)) + (P3 << 3)) + (P2 << 4)) + (p1 * 17))
+#
+# Where: P1 <==> Standout attribute parameter
+# P2 <==> Underline attribute parameter
+# P3 <==> Reverse attribute parameter
+# P4 <==> Blink attribute parameter
+# P5 <==> Dim attribute parameter
+# From <root@goliath.un.atlantaga.NCR.COM>, init string hacked by SCO.
+ncr7900i|ncr7900|ncr 7900 model 1:\
+ :am:bw:ul:\
+ :co#80:li#24:sg#1:\
+ :bl=^G:cd=\Ek:ce=\EK:cl=^L:cm=\E1%r%.%.:cr=^M:do=^J:\
+ :is=\E0@\010\E3\E4\E7:kd=^J:kh=^A:kl=^U:kr=^F:ku=^Z:le=^H:\
+ :ll=^A:mb=\E0B:me=\E0@:mh=\E0A:mr=\E0P:nd=^F:pf=^T:po=^R:\
+ :..sa=\E0%p5%{64}%+%p4%{2}%*%+%p3%{16}%*%+%p2%{32}%*%+%p1%{17}%*%+%c:\
+ :se=\E0@:sf=^J:so=\E0Q:ue=\E0@:up=^Z:us=\E0`:
+ncr7900iv|ncr 7900 model 4:\
+ :am:bw:es:hs:\
+ :co#80:li#24:\
+ :al=\E^N:bl=^G:cl=^L:cm=\013%+@\E\005%02:cr=^M:dl=\E^O:\
+ :do=^J:ds=\Ey1:fs=\Ek\Ey5:ho=\013@\E^E00:k1=\ES:k2=\ET:\
+ :k3=\EU:k4=\EV:k5=\EW:k6=\EP:k7=\EQ:k8=\ER:kb=^H:kd=\EB:\
+ :kh=\EH:kl=\ED:kr=\EC:ku=\EA:l6=blue:l7=red:l8=white:le=^H:\
+ :nw=^M^J:sf=^J:ts=\Ej\Ex5\Ex1\EY8%p1%{32}%+%c\Eo:
+# Warning: This terminal will lock out the keyboard when it receives a CTRL-D.
+# The user can enter a CTRL-B to get out of this locked state.
+# In <hpa>, we want to output the character given by the formula:
+# ((col / 10) * 16) + (col % 10) where "col" is "p1"
+ncr7901|ncr 7901 model:\
+ :am:bw:ul:\
+ :co#80:li#24:\
+ :bl=^G:cd=\Ek:ce=\EK:ch=\020%+^J:cl=^L:cm=\EY%+ %+ :cr=^M:\
+ :cv=\013%+@:do=^J:is=\E4^O:kC=^L:kd=^J:kh=^H:kl=^U:kr=^F:\
+ :ku=^Z:le=^H:ll=^A:mb=\E0B:me=^O:mh=\E0A:mr=\E0P:nd=^F:pf=^T:\
+ :po=^R:\
+ :..sa=\E0%p5%{64}%+%p4%{2}%*%+%p3%{16}%*%+%p2%{32}%*%+%p1%{17}%*%+%c\016:\
+ :se=^O:sf=^J:so=\E0Q\016:ue=^O:up=^Z:us=\E0`\016:ve=^X:\
+ :vi=^W:
+
+#### Perkin-Elmer (Owl)
+#
+# These are official terminfo entries from within Perkin-Elmer.
+#
+
+bantam|pe550|pe6100|perkin elmer 550:\
+ :bs:\
+ :co#80:li#24:\
+ :bl=^G:ce=\EI:cl=\EK:cm=\EX%+ \EY%+ :cr=^M:do=^J:ho=\EH:\
+ :le=^H:ll=\EH\EA:nd=\EC:sf=^J:up=\EA:
+fox|pe1100|perkin elmer 1100:\
+ :am:bs:\
+ :co#80:li#24:\
+ :bl=^G:cd=\EJ:ce=\EI:cl=\EH\EJ:cm=\EX%+ \EY%+ :cr=^M:\
+ :ct=\E3:do=^J:ho=\EH:le=^H:ll=\EH\EA:nd=\EC:sf=^J:st=\E1:\
+ :up=\EA:vb=\020\002\020\003:
+owl|pe1200|perkin elmer 1200:\
+ :am:bs:in:\
+ :co#80:li#24:\
+ :al=\EL:bl=^G:cd=\EJ:ce=\EI:cl=\EH\EJ:cm=\EX%+ \EY%+ :\
+ :cr=^M:ct=\E3:dc=\EO:dl=\EM:do=^J:ei=:ho=\EH:ic=\EN:im=:ip=:\
+ :k0=\ERJ:k1=\ERA:k2=\ERB:k3=\ERC:k4=\ERD:k5=\ERE:k6=\ERF:\
+ :k7=\ERG:k8=\ERH:k9=\ERI:kb=^H:le=^H:ll=\EH\EA:me=\E\041\0:\
+ :nd=\EC:se=\E\041\0:sf=^J:so=\E\041^H:st=\E1:up=\EA:\
+ :vb=\020\002\020\003:
+pe1251|pe6300|pe6312|perkin elmer 1251:\
+ :am:\
+ :co#80:it#8:li#24:pb#300:sg#1:vt#8:\
+ :bl=^G:cd=\EJ:ce=\EI:cl=\EK:cm=\EX%+ \EY%+ :cr=^M:ct=\E3:\
+ :do=\EB:ho=\EH:k0=\ERA:k1=\ERB:k2=\ERC:k3=\ERD:k4=\ERE:\
+ :k5=\ERF:k6=\ERG:k7=\ERH:k8=\ERI:k9=\ERJ:k;=\ERK:le=\ED:\
+ :nd=\EC:sf=^J:st=\E1:up=\EA:
+# (pe7000m: this had
+# rmul=\E!\0, smul=\E!\040,
+# which is probably wrong, it collides with kf0
+pe7000m|perkin elmer 7000 series monochrome monitor:\
+ :am:\
+ :co#80:li#24:\
+ :bl=^G:bt=\E\041Y:cd=\EJ:ce=\EI:cl=\EK:cm=\ES%+ %+ :cr=^M:\
+ :do=\EB:ho=\EH:i1=\E\041\0\EW 7o\Egf\ES7 :k0=\E\041\0:\
+ :k1=\E\041^A:k2=\E\041^B:k3=\E\041^C:k4=\E\041^D:\
+ :k5=\E\041^E:k6=\E\041^F:k7=\E\041^G:k8=\E\041^H:\
+ :k9=\E\041^I:k;=\E\041^J:kb=^H:kd=\E\041U:kh=\E\041S:\
+ :kl=\E\041V:kr=\E\041W:ku=\E\041T:le=\ED:ll=\ES7 :nd=\EC:\
+ :sf=^J:sr=\ER:up=\EA:
+pe7000c|perkin elmer 7000 series colour monitor:\
+ :i1=\E\041\0\EW 7o\Egf\Eb0\Ec7\ES7 :se=\Eb0:so=\Eb2:\
+ :ue=\E\041\0:us=\E\041 :\
+ :tc=pe7000m:
+
+#### Prime
+#
+# Yes, Prime made terminals. These entries were posted by Kevin J. Cummings
+# <cummings@primerd.prime.com> on 14 Dec 1992 and lightly edited by esr.
+# Prime merged with ComputerVision in the late 1980s; you can reach them at:
+#
+# ComputerVision Services
+# 500 Old Connecticut Path
+# Framingham, Mass.
+#
+
+# Standout mode is dim reverse-video.
+pt100|pt200|wren|fenix|prime pt100/pt200:\
+ :am:bw:mi:ms:\
+ :co#80:it#8:li#24:\
+ :DC=\E[%dP:DL=\E[M:DO=\E[%dB:LE=\E[%dD:RI=\E[%dC:\
+ :UP=\E[%dA:al=\E[L\E[t:bt=\E[Z:cd=\E[J\E[r:ce=\E[K\E[t:\
+ :cl=\E?:cm=\E0%+!%+!:cr=^M:dc=\E[P:do=\ED:ei=\E[4l:ho=\E$B:\
+ :im=\E[4h:kb=^H:kd=\E[B:ke=\E[>13l:kh=\E$A:kl=\E[D:kr=\E[C:\
+ :ks=\E[>13h:ku=\E[A:le=^H:me=\E[m:mh=\E[2m:nd=\E[C:nw=^M^J:\
+ :se=\E[m:sf=^J:so=\E[2;7m:ta=^I:te=:\
+ :ti=\E[>1l\E[>2l\E[>16l\E[4l\E[>9l\E[20l\E[>3l\E[>7h\E[>12l\E[1Q:\
+ :ue=\E[m:up=\EM:us=\E[4m:vb=\E$\E$P:
+pt100w|pt200w|wrenw|fenixw|prime pt100/pt200 in 132-column mode:\
+ :co#132:\
+ :cm=\E[%i%d;%dH:tc=pt100:
+pt250|Prime PT250:\
+ :se@:so@:tc=pt100:
+pt250w|Prime PT250 in 132-column mode:\
+ :se@:so@:tc=pt100w:
+
+#### Sperry Univac
+#
+# Sperry Univac has merged with Burroughs to form Unisys.
+#
+
+# This entry is for the Sperry UTS30 terminal running the TTY
+# utility under control of CP/M Plus 1R1. The functionality
+# provided is comparable to the DEC vt100.
+# (uts30: I added <rmam>/<smam> based on the init string -- esr)
+uts30|sperry uts30 with cp/m@1R1:\
+ :am:bw:hs:\
+ :co#80:li#24:ws#40:\
+ :AL=\E[%dL:DC=\E[%dP:DL=\E[%dM:DO=\E[%dB:IC=\E[%d@:\
+ :LE=\E[%dD:RA=\E[?7l:RI=\E[%dC:SA=\E[?7m:SF=\E[%dB:\
+ :SR=\E[%dA:UP=\E[%dA:\
+ :ac=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~:\
+ :ae=\Ed:al=\EN:as=\EF:bl=^G:cd=\E[J:ce=\E[K:cl=^L:\
+ :cm=\E[%i%d;%dH:cr=^M:cs=\EU%+ %+ :dc=\EM:dl=\EL:do=\EB:\
+ :ei=:fs=^M:ho=\E[H:ic=\EO:im=:is=\E[U 7\E[24;1H:kb=^H:\
+ :kd=\EOB:kh=\E[H:kl=\EOD:kr=\EOC:ku=\EOA:le=^H:mb=\E[5m:\
+ :md=\E[1m:me=\E[m:mr=\E[7m:nd=\EC:\
+ :r2=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h:rc=\EX:\
+ :rf=/usr/share/tabset/vt100:sc=\EW:se=\E[m:sf=^J:\
+ :so=\E[7m:sr=\EI:ta=^I:ts=\E]:uc=\EPB:ue=\E[m:up=\E[A:\
+ :us=\E[4m:ve=\ES:vi=\ER:
+
+#### Tandem
+#
+# Tandem builds these things for use with its line of fault-tolerant
+# transaction-processing computers. They aren't generally available
+# on the merchant market, and so are fairly uncommon.
+#
+
+tandem6510|adm3a repackaged by Tandem:\
+ :tc=adm3a:
+
+# A funny series of terminal that TANDEM uses. The actual model numbers
+# have a fourth digit after 653 that designates minor variants. These are
+# natively block-mode and rather ugly, but they have a character mode which
+# this doubtless(?) exploits. There is a 6520 that is slightly dumber.
+# (tandem653: had ":sb=\ES:", probably someone's mistake for sf; also,
+# removed :if=/usr/share/tabset/tandem653:, no such file -- esr)
+tandem653|t653x|Tandem 653x multipage terminal:\
+ :am:bs:da:db:hs:\
+ :co#80:li#24:sg#1:ws#64:\
+ :cd=\EJ:ce=\EK:cl=\EI:cm=\023%+ %+ :do=^J:ds=\Eo\r:fs=^M:\
+ :ho=\EH:le=^H:me=\E6 :nd=\EC:se=\E6 :sf=\ES:so=\E6$:sr=\ET:\
+ :ts=\Eo:ue=\E6 :up=\EA:us=\E60:
+
+#### Tandy/Radio Shack
+#
+# Tandy has a line of VDTs distinct from its microcomputers.
+#
+
+dmterm|deskmate terminal:\
+ :am:bw:\
+ :co#80:li#24:\
+ :al=\EP:bl=^G:cd=\EJ:ce=\EK:cl=\Ej:cm=\EY%+ %+ :cr=^M:\
+ :dc=\ES:dl=\ER:do=\EB:ei=:ho=\EH:ic=\EQ:im=:k0=\E1:k1=\E2:\
+ :k2=\E3:k3=\E4:k4=\E5:k5=\E6:k6=\E7:k7=\E8:k8=\E9:k9=\E0:\
+ :kd=\EB:kh=\EH:kl=\ED:kr=\EC:ku=\EA:l0=f1:l1=f2:l2=f3:l3=f4:\
+ :l4=f5:l5=f6:l6=f7:l7=f8:l8=f9:l9=f10:le=^H:ll=\EE:mk@:nd=\EC:\
+ :sf=\EX:ta=^I:ue@:up=\EA:us@:ve=\EG6:vi=\EG5:\
+ :tc=adm+sgr:
+dt100|dt-100|Tandy DT-100 terminal:\
+ :xo:\
+ :co#80:li#24:sg#1:\
+ :ac=jjkkllmmnnqqttuuvvwwxx:ae=^O:al=\E[L:as=^N:bl=^G:\
+ :cd=\E[J:ce=\E[K:cl=\E[H\E[2J:cm=\010\E[%i%d;%dH:cr=^M:\
+ :cs=\E[%2;%2r:dc=\E[P:dl=\E[M:do=\E[B:ei=:ho=\E[H:ic=\E[@:\
+ :im=:is=\E[?3l\E)0\E(B:k1=\E[?3i:k2=\E[2i:k3=\E[@:k4=\E[M:\
+ :k5=\E[17~:k6=\E[18~:k7=\E[19~:k8=\E[20~:k9=\E[21~:\
+ :k;=\E[?5i:kN=\E[29~:kP=\E[28~:kd=\E[B:kh=\E[H:kl=\E[D:\
+ :kr=\E[C:ku=\E[A:l1=f1:l2=f2:l3=f3:l4=f4:l5=f5:l6=f6:l7=f7:\
+ :l8=f8:le=^H:me=\E[m:nd=\E[C:se=\E[m:sf=^J:so=\E[7m:sr=\EM:\
+ :ta=^I:ue=\E[m:up=\E[A:us=\E[4m:ve=\E[?25h:vi=\E[?25l:
+dt100w|dt-100w|Tandy DT-100 terminal (wide mode):\
+ :co#132:tc=dt100:
+dt110|Tandy DT-110 emulating ansi:\
+ :xo:\
+ :co#80:li#24:\
+ :@7=\E[K:ac=jjkkllmmnnqqttuuvvwwxx:ae=^O:al=\E[0L:as=^N:\
+ :bl=^G:cd=\E[0J:ce=\E[0K:cl=\E[H\E[2J:cm=\010\E[%i%d;%dH:\
+ :cr=^M:cs=\E[%i%d;%dr:dc=\E[0P:dl=\E[0M:do=\E[0B:\
+ :eA=\E(B\E)0:ei=:ho=\E[H:ic=\E[0@:im=:is=\E[?3l\E)0\E(B:\
+ :k1=\E[1~:k2=\E[2~:k3=\E[3~:k4=\E[4~:k5=\E[5~:k6=\E[6~:\
+ :k7=\E[7~:k8=\E[8~:k9=\E[9~:k;=\E[10~:kI=\E[@:kN=\E[26~:\
+ :kP=\E[25~:kd=\E[B:kh=\E[G:kl=\E[D:kr=\E[C:ku=\E[A:l0=f1:\
+ :l1=f2:l2=f3:l3=f4:l4=f5:l5=f6:l6=f7:l7=f8:l8=f9:l9=f10:le=^H:\
+ :me=\E[m:nd=\E[C:se=\E[m:sf=^J:so=\E[7m:sr=\EM:ta=^I:\
+ :ue=\E[m:up=\E[0A:us=\E[4m:ve=\E[?25h:vi=\E[?25l:
+pt210|TRS-80 PT-210 printing terminal:\
+ :hc:os:\
+ :co#80:\
+ :bl=^G:cr=^M:do=^J:sf=^J:
+
+#### Tektronix (tek)
+#
+# Tektronix tubes are graphics terminals. Most of them use modified
+# oscilloscope technology incorporating a long-persistence green phosphor,
+# and support vector graphics on a main screen with an attached "dialogue
+# area" for interactive text.
+#
+
+tek|tek4012|tektronix 4012:\
+ :bs:os:\
+ :co#75:li#35:\
+ :bl=^G:cl=\E\014:cr=^M:do=^J:ff=\014:is=\E^O:le=^H:
+# (tek4013: added <acsc> to suppress tic warnings re :as:/:ae: --esr)
+tek4013|tektronix 4013:\
+ :ac=:ae=\E^O:as=\E^N:tc=tek4012:
+tek4014|tektronix 4014:\
+ :co#81:li#38:\
+ :is=\E\017\E9:tc=tek4012:
+# (tek4015: added <acsc> to suppress tic warnings re :as:/:ae: --esr)
+tek4015|tektronix 4015:\
+ :ac=:ae=\E^O:as=\E^N:tc=tek4014:
+tek4014-sm|tektronix 4014 in small font:\
+ :co#121:li#58:\
+ :is=\E\017\E\072:tc=tek4014:
+# (tek4015-sm: added <acsc> to suppress tic warnings re :as:/:ae: --esr)
+tek4015-sm|tektronix 4015 in small font:\
+ :ac=:ae=\E^O:as=\E^N:tc=tek4014-sm:
+# Tektronix 4023 from Andrew Klossner <orca!andrew.tektronix@csnet-relay>
+#
+# You need to have "stty nl2" in effect. Some versions of tset(1) know
+# how to set it for you.
+#
+# It's got the Magic Cookie problem around stand-out mode. If you can't
+# live with Magic Cookie, remove the :so: and :se: fields and do without
+# reverse video. If you like reverse video stand-out mode but don't want
+# it to flash, change the letter 'H' to 'P' in the :so: field.
+tek4023|tektronix 4023:\
+ :am:bs:\
+ :co#80:dN#4:li#24:sg#1:vt#4:\
+ :bl=^G:cl=4\E\014:cm=\034%r%+ %+ :cr=^M:do=^J:kb=^H:le=^H:\
+ :nd=^I:nl=^J:se=^_@:so=^_P:
+# It is recommended that you run the 4025 at 4800 baud or less;
+# various bugs in the terminal appear at 9600. It wedges at the
+# bottom of memory (try "cat /usr/dict/words"); ^S and ^Q typed
+# on keyboard don't work. You have to hit BREAK twice to get
+# one break at any speed - this is a documented feature.
+# Can't use cursor motion because it's memory relative, and
+# because it only works in the workspace, not the monitor.
+# Same for home. Likewise, standout only works in the workspace.
+#
+# :ce: was commented out since vi and rogue seem to work better
+# simulating it with lots of spaces!
+#
+# :al: and :AL: had 145ms of padding, but that slowed down vi's ^U
+# and didn't seem necessary.
+#
+tek4024|tek4025|tek4027|tektronix 4024/4025/4027:\
+ :am:bs:da:db:\
+ :co#80:it#8:li#34:lm#0:\
+ :AL=\037up\r\037ili %d\r:CC=^_:DL=\037dli %d\r\006:\
+ :DO=\037dow %d\r:LE=\037lef %d\r:RI=\037rig %d\r:\
+ :UP=\037up %d\r:al=\037up\r\037ili\r:bl=^G:\
+ :cd=\037dli 50\r:cl=\037era\r\n\n:cr=^M:dc=\037dch\r:\
+ :dl=\037dli\r\006:do=^F^J:ei=:ic=\037ich\r \010:im=:\
+ :is=\041com 31\r\n\037sto 9 17 25 33 41 49 57 65 73\r:\
+ :ke=\037lea p2\r\037lea p4\r\037lea p6\r\037lea p8\r\037lea f5\r:\
+ :ks=\037lea p4 /h/\r\037lea p8 /k/\r\037lea p6 / /\r\037lea p2 /j/\r\037lea f5 /H/\r:\
+ :le=^H:nd=\037rig\r:sf=^F^J:ta=^I:up=^K:
+tek4025-17|tek 4025 17 line window:\
+ :li#17:tc=tek4025:
+tek4025-17-ws|tek 4025 17 line window in workspace:\
+ :is=\041com 31\r\n\037sto 9 17 25 33 41 49 57 65 73\r\037wor 17\r\037mon 17\r:\
+ :se=\037att s\r:so=\037att e\r:te=\037mon h\r:\
+ :ti=\037wor h\r:\
+ :tc=tek4025-17:
+tek4025-ex|tek4027-ex|tek 4025/4027 w/!:\
+ :is=\037com 33\r\n\041sto 9 17 25 33 41 49 57 65 73\r:\
+ :te=\037com 33\r:ti=\041com 31\r:\
+ :tc=tek4025:
+# Tektronix 4025a
+# From: Doug Gwyn <gwyn@brl-smoke.ARPA>
+# The following status modes are assumed for normal operation (replace the
+# initial "!" by whatever the current command character is):
+# !COM 29 # NOTE: changes command character to GS (^])
+# ^]DUP
+# ^]ECH R
+# ^]EOL
+# ^]RSS T
+# ^]SNO N
+# ^]STO 9 17 25 33 41 49 57 65 73
+# Other modes may be set according to communication requirements.
+# If the command character is inadvertently changed, termcap can't restore it.
+# Insert-character cannot be made to work on both top and bottom rows.
+# Clear-to-end-of-display emulation via !DLI 988 is too grotty to use, alas.
+# There also seems to be a problem with vertical motion, perhaps involving
+# delete/insert-line, following a typed carriage return. This terminal sucks.
+# Delays not specified; use "stty ixon -ixany" to enable DC3/DC1 flow control!
+# (tek4025a: removed obsolete ":xx:". This may mean the tek4025a entry won't
+# work any more. -- esr)
+tek4025a|Tektronix 4025A:\
+ :am:bs:bw:da:db:pt:xo:\
+ :co#80:it#8:li#34:\
+ :CC=^]:DC=\035dch %d;:DL=\035dli %d;:DO=\035dow %d;:\
+ :LE=\035lef %d;:RI=\035rig %d;:SF=\035dow %d;:\
+ :UP=\035up %d;:al=\013\035ili;:bl=^G:bt=\035bac;:\
+ :ce=\035dch 80;:ch=\r\035rig %d;:cl=\035era;\n\035rup;:\
+ :cr=^M:ct=\035sto;:dc=\035dch;:dl=\035dli;:do=^J:le=^H:\
+ :nd=\035rig;:\
+ :rs=\041com 29\035del 0\035rss t\035buf\035buf n\035cle\035dis\035dup\035ech r\035eol\035era g\035for n\035pad 203\035pad 209\035sno n\035sto 9 17 25 33 41 49 57 65 73\035wor 0;:\
+ :sf=^J:ta=^I:up=^K:
+# From: cbosg!teklabs!davem Wed Sep 16 21:11:41 1981
+# Here's the command file that I use to get rogue to work on the 4025.
+# It should work with any program using the old curses (e.g. it better
+# not try to scroll, or cursor addressing won't work. Also, you can't
+# see the cursor.)
+# (This "learns" the arrow keys for rogue. I have adapted it for termcap - mrh)
+tek4025-cr|tek 4025 for curses and rogue:\
+ :am:bs:\
+ :co#80:it#8:li#33:\
+ :cl=\037era;:cm=\037jum%i%d\054%d;:do=^F^J:\
+ :is=\041com 31\r\n\037sto 9 17 25 33 41 49 57 65 73\r:\
+ :le=^H:nd=\037rig;:sf=^F^J:ta=^I:te=\037wor 0:\
+ :ti=\037wor 33h:up=^K:
+# next two lines commented out since curses only allows 128 chars, sigh.
+# :ti=\037lea p1/b/\037lea p2/j/\037lea p3/n/\037lea p4/h/\037lea p5/ /\037lea p6/l/\037lea p7/y/\037lea p8/k/\037lea p9/u/\037lea p./f/\037lea pt/`era w/13\037lea p0/s/\037wor 33h:\
+# :te=\037lea p1\037lea p2\037lea p3\037lea p4\037lea pt\037lea p5\037lea p6\037lea p7\037lea p8\037lea p9/la/13\037lea p.\037lea p0\037wor 0:
+tek4025ex|4025ex|4027ex|tek 4025 w/!:\
+ :is=\037com 33\r\n\041sto 9\05417\05425\05433\05441\05449\05457\05465\05473\r:\
+ :te=\037com 33\r:ti=\041com 31\r:\
+ :tc=tek4025:
+tek4105|tektronix 4105:\
+ :am:bs:mi:ms:ul:xn:xt:\
+ :co#79:it#8:li#29:\
+ :ac=:ae=\E[m:al=\E[1L:as=\E[1m:bl=^G:bt=\E[Z:cd=\E[J:\
+ :ce=\E[K:cl=\E[2J\E[H:cm=\E[%i%2;%2H:cr=^M:ct=\E[1g:\
+ :dc=\E[1P:dl=\E[1M:do=\E[1B:ei=\E[4l:ho=\E[H:i1=\E%!1\E[m:\
+ :im=\E[4h:is=\E%!1\E[?6141\E[m:kb=^H:kd=\E[1B:kl=\E[1D:\
+ :kr=\E[1C:ku=\E[1A:mb=\E[=3;<7m:md=\E[=7;<4m:\
+ :me=\E[=0;<1m:mh=\E[=1;<6m:mk=\E[=6;<5:mr=\E[=1;<3m:\
+ :nd=\E[1C:se=\E[=0;<1m:sf=\E[S:so=\E[=2;<3m:sr=\E[T:ta=^I:\
+ :te=:ti=\E%!1\E[?6l\E[2J:ue=\E[=0;<1m:up=\E[1A:\
+ :us=\E[=5;<2m:
+
+# (tek4105-30: I added <rmam>/<smam> based on the init string -- esr)
+tek4105-30|4015 emulating 30 line vt100:\
+ :am:mi:ms:xn:xo:\
+ :co#80:it#8:li#30:vt#3:\
+ :@8=\EOM:DO=\E[%dB:K1=\EOq:K2=\EOr:K3=\EOs:K4=\EOp:K5=\EOn:\
+ :LE=\E[%dD:RA=\E[?7l:RI=\E[%dC:SA=\E[?7h:UP=\E[%dA:\
+ :ac=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~:\
+ :ae=^O:as=^N:bl=^G:cb=\E[1K:cd=\E[J:ce=\E[K:cl=\E[H\E[J:\
+ :cm=\E[%i%d;%dH:cr=^M:cs=\E[%i%d;%dr:ct=\E[3g:do=^J:\
+ :eA=\E(B\E)0:ho=\E[H:k0=\EOy:k1=\EOP:k2=\EOQ:k3=\EOR:\
+ :k4=\EOS:k5=\EOt:k6=\EOu:k7=\EOv:k8=\EOl:k9=\EOw:k;=\EOx:\
+ :kb=^H:kd=\EOB:ke=\E[?1l\E>:kl=\EOD:kr=\EOC:ks=\E[?1h\E=:\
+ :ku=\EOA:le=^H:mb=\E[5m:md=\E[1m:me=\E[m\017:mr=\E[7m:\
+ :nd=\E[C:r2=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h:rc=\E8:\
+ :..sa=\E[0%?%p1%p6%|%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;%?%p4%t;5%;m%?%p9%t\016%e\017%;:\
+ :sc=\E7:se=\E[m:sf=^J:so=\E[1;7m:sr=\EM:st=\EH:ta=^I:\
+ :ue=\E[m:up=\E[A:us=\E[4m:
+
+# Tektronix 4105 from BRL
+# The following setup modes are assumed for normal operation:
+# CODE ansi CRLF no DABUFFER 141
+# DAENABLE yes DALINES 30 DAMODE replace
+# DAVISIBILITY yes ECHO no EDITMARGINS 1 30
+# FLAGGING input INSERTREPLACE replace LFCR no
+# ORIGINMODE relative PROMPTMODE no SELECTCHARSET G0 B
+# SELECTCHARSET G1 0 TABS -2
+# Other setup modes may be set for operator convenience or communication
+# requirements; I recommend
+# ACURSOR 1 0 AUTOREPEAT yes AUTOWRAP yes
+# BYPASSCANCEL <LF> CURSORKEYMODE no DAINDEX 1 0 0
+# EOFSTRING '' EOLSTRING <CR> EOMCHARS <CR> <NU>
+# GAMODE overstrike GCURSOR 0 100 0 GSPEED 10 1
+# IGNOREDEL no KEYEXCHAR <DL> NVDEFINE -53 "<NU>"
+# PROMPTSTRING '' QUEUESIZE 2460 WINDOW 0 0 4095 3132
+# XMTDELAY 0
+# and factory color maps. After setting these modes, save them with NVSAVE. No
+# delays are specified; use "stty ixon -ixany" to enable DC3/DC1 flow control!
+# "IC" cannot be used in combination with "im" & "ei".
+# "tek4105a" is just a guess:
+tek4105a|Tektronix 4105:\
+ :bs:ms:pt:xo:\
+ :co#80:it#8:kn#8:li#30:vt#3:\
+ :AL=\E[%dL:DC=\E[%dP:DL=\E[%dM:DO=\E[%dB:LE=\E[%dD:\
+ :RI=\E[%dC:SF=\E[%dS:SR=\E[%dT:UP=\E[%dA:ac=:ae=^O:al=\E[L:\
+ :as=^N:bl=^G:bt=\E[Z:cd=\E[J:ce=\E[K:cl=\E[H\E[J:\
+ :cm=\E[%i%d;%dH:cr=^M:cs=\E[%i%d;%dr:ct=\E[3g:dc=\E[P:\
+ :dl=\E[M:do=^J:ec=\E[%dX:ei=\E[4l:ho=\E[H:im=\E[4h:\
+ :is=\E%!1:k0=\EOA:k1=\EOB:k2=\EOC:k3=\EOD:k4=\EOP:k5=\EOQ:\
+ :k6=\EOR:k7=\EOS:kb=^H:kd=\EOB:ke=\E[?1l\E>:kl=\EOD:\
+ :kr=\EOC:ks=\E[?1h\E=:ku=\EOA:l0=F1:l1=F2:l2=F3:l3=F4:l4=F5:\
+ :l5=F6:l6=F8:le=^H:ll=\E[30;H:mb=\E[5m:md=\E[1m:me=\E[m:\
+ :mr=\E[7m:nd=\E[C:nw=\EE:rc=\E8:\
+ :rs=\030\E%!0\EKC\E\014\EKR0\EKF0\ENM0\ELBH=\ETF8000010F40\ELI100\ELLA>\ELM0\EKE0\ENF1\EKS0\END0\E%!1\Ec\E[?3;5l\E[?7;8h\E[r\E[m\E>:\
+ :sc=\E7:se=\E[m:sf=^J:so=\E[7m:sr=\EM:st=\EH:ta=^I:\
+ :te=\E%!0\ELBH=\E%!1:ti=\E[?6l:ue=\E[m:up=\EM:us=\E[4m:\
+ :ve=\E%!0\ETD10\E%!1:vi=\E%!0\ETD00\E%!1:\
+ :vs=\E%!0\ETD70\E%!1:
+
+#
+# Tektronix 4106/4107/4109 from BRL
+# The following setup modes are assumed for normal operation:
+# CODE ansi COLUMNMODE 80 CRLF no
+# DABUFFER 141 DAENABLE yes DALINES 32
+# DAMODE replace DAVISIBILITY yes ECHO no
+# EDITMARGINS 1 32 FLAGGING input INSERTREPLACE replace
+# LFCR no LOCKKEYBOARD no ORIGINMODE relative
+# PROMPTMODE no SELECTCHARSET G0 B SELECTCHARSET G1 0
+# TABS -2
+# Other setup modes may be set for operator convenience or communication
+# requirements; I recommend
+# ACURSOR 1 0 AUTOREPEAT yes AUTOWRAP yes
+# BYPASSCANCEL <LF> CURSORKEYMODE no DAINDEX 1 0 0
+# EOFSTRING '' EOLSTRING <CR> EOMCHARS <CR> <NU>
+# GAMODE overstrike GCURSOR 0 100 0 GSPEED 9 3
+# IGNOREDEL no KEYEXCHAR <DL> NVDEFINE -53 "<NU>"
+# PROMPTSTRING '' QUEUESIZE 2620 WINDOW 0 0 4095 3132
+# XMTDELAY 0
+# and factory color maps. After setting these modes, save them with NVSAVE. No
+# delays are specified; use "stty ixon -ixany" to enable DC3/DC1 flow control!
+# "IC" cannot be used in combination with "im" & "ei".
+tek4106brl|tek4107brl|tek4109brl|Tektronix 4106 4107 or 4109:\
+ :ms:xo:\
+ :co#80:it#8:li#32:vt#3:\
+ :AL=\E[%dL:DC=\E[%dP:DL=\E[%dM:DO=\E[%dB:LE=\E[%dD:\
+ :RI=\E[%dC:SF=\E[%dS:SR=\E[%dT:UP=\E[%dA:ac=:ae=^O:al=\E[L:\
+ :as=^N:bl=^G:bt=\E[Z:cd=\E[J:ce=\E[K:cl=\E[H\E[J:\
+ :cm=\E[%i%d;%dH:cr=^M:cs=\E[%i%d;%dr:ct=\E[3g:dc=\E[P:\
+ :dl=\E[M:do=^J:ec=\E[%dX:ei=\E[4l:ho=\E[H:im=\E[4h:\
+ :is=\E%!1:k0=\EOA:k1=\EOB:k2=\EOC:k3=\EOD:k4=\EOP:k5=\EOQ:\
+ :k6=\EOR:k7=\EOS:kb=^H:kd=\EOB:ke=\E[?1l\E>:kl=\EOD:\
+ :kr=\EOC:ks=\E[?1h\E=:ku=\EOA:l0=F1:l1=F2:l2=F3:l3=F4:l4=F5:\
+ :l5=F6:l6=F8:le=^H:ll=\E[32;H:mb=\E[5m:md=\E[1m:me=\E[m:\
+ :mr=\E[7m:nd=\E[C:nw=\EE:\
+ :r1=\030\E%!0\EKC\E\014\EKR0\EKF0\ENM0\ELBH=\ETF8000010F40\ELI100\ELLB0\ELM0\EKE0\ENF1\EKS0\END0\ERE0\E%!1\Ec\E[?3;5l\E[?7;8h\E[r\E[m\E>:\
+ :rc=\E8:sc=\E7:se=\E[m:sf=^J:so=\E[7;42m:sr=\EM:st=\EH:\
+ :ta=^I:te=\E%!0\ELBH=\E%!1:ti=\E[?6l:ue=\E[m:up=\EM:\
+ :us=\E[4m:ve=\E%!0\ETD10\E%!1:vi=\E%!0\ETD00\E%!1:\
+ :vs=\E%!0\ETD70\E%!1:
+
+tek4107|tek4109|tektronix terminals 4107 4109:\
+ :am:bs:mi:ms:ul:xn:xt:\
+ :co#79:it#8:li#29:\
+ :bl=^G:cd=\EJ:ce=\EK:cl=\ELZ:cm=\EY%+ %+ :cr=^M:do=^J:kb=^H:\
+ :kd=\EB:kl=\ED:kr=\EC:ku=\EA:le=^H:mb=\E%!1\E[5m\E%!0:\
+ :md=\E%!1\E[1m\E%!0:me=\E%!1\E[m\E%!0:\
+ :mh=\E%!1\E[<0m\E%!0:mr=\E%!1\E[7m\E%0:nd=\EC:\
+ :..sa=\E%%\0411\E[%?%p1%t;7%;%?%p2%t;4%;%?%p3%t;7%;%?%p4%t;5%;%?%p6%t;1%;m\E%%\0410:\
+ :se=\E%!1\E[m\E%!0:sf=^J:so=\E%!1\E[7;5m\E%!0:sr=\EI:\
+ :ta=^I:ue=\E%!1\E[m\E%!0:up=\EA:us=\E%!1\E[4m\E%!0:\
+ :ve=\E%!0:vs=\E%!3:
+# Tektronix 4207 with sysline. In the ancestral termcap file this was 4107-s;
+# see the note attached to tek4207.
+tek4207-s|Tektronix 4207 with sysline but no memory:\
+ :es:hs:\
+ :ds=\E7\E[?6l\E[2K\E[?6h\E8:fs=\E[?6h\E8:\
+ :i1=\E%!1\E[2;32r\E[132D\E[2g\EH\E[8C\EH\E[8C\EH\E[8C\EH\E[8C\EH\E[8C\EH\E[8C\EH\E[8C\EH\E[8C\EH\E[8C\EH\E[J:\
+ :is=\E7\E[?6l\E[2K\E[?6h\E8:\
+ :ts=\E7\E[?6l\E[2K\E[;%i%df:tc=tek4107:
+
+# The 4110 series may be a wonderful graphics series, but they make the 4025
+# look good for screen editing. In the dialog area, you can't move the cursor
+# off the bottom line. Out of the dialog area, ^K moves it up, but there
+# is no way to scroll.
+#
+# Note that there is a floppy for free from Tek that makes the
+# 4112 emulate the vt52 (use the vt52 termcap). There is also
+# an expected enhancement that will use ANSI standard sequences.
+#
+# 4112 in non-dialog area pretending to scroll. It really wraps
+# but vi is said to work (more or less) in this mode.
+#
+# 'vi' works reasonably well with this entry.
+#
+otek4112|o4112-nd|otek4113|otek4114|old tektronix 4110 series:\
+ :am:\
+ :co#80:li#34:\
+ :bl=^G:cl=\E^L:cr=^M:do=^J:le=^H:sf=^J:te=\EKA1\ELV1:\
+ :ti=\EKA0\ELV0\EMG0:up=^K:
+# The 4112 with the ANSI compatibility enhancement
+tek4112|tek4114|tektronix 4110 series:\
+ :am:bs:db:\
+ :co#80:li#34:\
+ :al=\E[L:bt=\E[Z:cd=\E[0J:ce=\E[0K:cl=\E[2J\E[0;0H:\
+ :cm=\E[%i%d;%dH:dc=\E[P:dl=\E[M:ei=:ic=\E[@:im=:\
+ :is=\E3\0411:le=^H:me=\E[m:nd=\E[C:se=\E[m:\
+ :sf=\E7\E[0;0H\E[M\E8:so=\E[7m:sr=\E7\E[0;0H\E[L\E8:\
+ :ue=\E[m:up=\EM:us=\E[4m:
+tek4112-nd|4112 not in dialog area:\
+ :ns:\
+ :up=^K:tc=tek4112:
+tek4112-5|4112 in 5 line dialog area:\
+ :li#5:tc=tek4112:
+# (tek4113: this used to have ":nd=\LM1\s\LM0:", someone's mistake;
+# removed ":as=\E^N:, :ae=\E^O:", which had been commented out in 8.3.
+# Note, the !0 and !1 sequences in :te:/:ti:/:ve:/:vi: were
+# previously \0410 and \0411 sequences...I don't *think* they were supposed
+# to be 4-digit octal -- esr)
+tek4113|tektronix 4113 color graphics with 5 line dialog area:\
+ :am:bs:da:eo:\
+ :co#80:li#5:\
+ :cl=\ELZ:do=^J:is=\EKA1\ELL5\ELV0\ELV1:le=^H:\
+ :nd=\ELM1 \ELM0:uc=\010\ELM1_\ELM0:\
+ :vb=\ERBA4\ERBA4\ERBA4\ERBA4\ERBA4\ERBA4\ERBA4\ERBA4\ERBA4\ERBA4\ERB0:
+tek4113-34|tektronix 4113 color graphics with 34 line dialog area:\
+ :li#34:\
+ :is=\EKA1\ELLB2\ELV0\ELV1:tc=tek4113:
+# :ns: left off to allow vi visual mode. APL font (:as=\E^N:/:ae=\E^O:) not
+# supported here. :uc: is slow, but looks nice. Suggest setenv MORE -up .
+# :vb: needs enough delay to let you see the background color being toggled.
+tek4113-nd|tektronix 4113 color graphics with no dialog area:\
+ :am:bs:eo:\
+ :co#80:it#8:li#34:\
+ :cl=\E^L:do=^J:ho=\ELF7l\177 @:is=\ELZ\EKA0\ELF7l\177 @:\
+ :le=^H:ll=\ELF hl @:nd=^I:se=\EMT1:so=\EMT2:ta=^I:\
+ :uc=\010\EMG1_\EMG0:up=^K:\
+ :vb=\ERBA4\ERBA4\ERBA4\ERBA4\ERBA4\ERBA4\ERBA4\ERBA4\ERBA4\ERBA4\ERB0:\
+ :vs=\ELZ\EKA0:
+# This entry is from Tek. Inc. (Brian Biehl)
+# (tek4115: :bc: renamed to :le:, <rmam>/<smam> added based on init string -- esr)
+otek4115|Tektronix 4115:\
+ :am:bs:da:db:eo:\
+ :co#80:it#8:li#34:\
+ :RA=\E[?7l:SA=\E[?7h:al=\E[L:bt=\E[Z:cd=\E[J:ce=\E[K:\
+ :cl=\E[H\E[2J:cm=\E[%i%d;%dH:dc=\E[P:dl=\E[M:do=\E[B:\
+ :ei=\E[4l:ho=\E[H:if=/usr/share/tabset/vt100:im=\E[4h:\
+ :is=\E%!0\E%\014\ELV0\EKA1\ELBB2\ENU@=\ELLB2\ELM0\ELV1\EKYA?\E%!1\E[<1l\E[?7h\E[?8h\E[34;1H\E[34B\E[m:\
+ :kb=^H:ke=\E>:ks=\E=:le=\E[D:me=\E[m:nd=\E[C:se=\E[m:\
+ :so=\E[7m:sr=\EM:ta=^I:te=\E%!0\ELBG8\E%!1\E[34;1H\E[J:\
+ :ti=\E%!0\ELBB2\E%!1:ue=\E[m:up=\E[A:us=\E[4m:\
+ :ve=\E%!0\ELBG8\E%!1\E[34;1H:vs=\E%!0\ELBB2\E%!1:
+tek4115|newer tektronix 4115 entry with more ANSI capabilities:\
+ :am:xo:\
+ :co#80:li#34:\
+ :AL=\E[%dL:DL=\E[%dM:DO=\E[%dB:IC=\E[%d@:LE=\E[%dD:\
+ :RA=\E[?7l:RI=\E[%dC:SA=\E[?7h:UP=\E[%dA:al=\E[L:bl=^G:\
+ :bt=\E[Z:cd=\E[J:ce=\E[K:ch=\E[%+^AG:cl=\E[H\E[J:\
+ :cm=\E[%i%d;%dH:cr=^M:ct=\E[2g:cv=\E[%+^Ad:dc=\E[P:\
+ :dl=\E[M:do=^J:ei=:ho=\E[H:ic=\E[@:im=:kb=^H:kd=\E[B:kh=\E[H:\
+ :kl=\E[D:kr=\E[C:ku=\E[A:le=^H:mb=\E[5m:md=\E[1m:me=\E[m:\
+ :mk=\E[8m:mr=\E[7m:nd=\E[C:..rp=%p1%c\E[%p2%{1}%-%db:\
+ :..sa=\E[%?%p1%t7;%;%?%p2%t4;%;%?%p3%t7;%;%?%p4%t5;%;%?%p6%t1;%;m:\
+ :se=\E[m:sf=^J:so=\E[7m:st=\EH:ta=^I:ue=\E[m:up=\E[A:\
+ :us=\E[4m:
+# The tek4125 emulates a vt100 incorrectly - the scrolling region
+# command is ignored. The following entry replaces :cs: with the needed
+# :AL:, :AL:, and :im:; removes some cursor pad commands that the tek4125
+# chokes on; and adds a lot of initialization for the tek dialog area.
+# Note that this entry uses all 34 lines and sets the cursor color to green.
+# Steve Jacobson 8/85
+# (tek4125: there were two "\!"s in the is that I replaced with "\E!";
+# commented out, :im:=\E1 because there's no :ei: -- esr)
+tek4125|tektronix 4125:\
+ :li#34:\
+ :al=\E[1L:cs@:dl=\E[1M:\
+ :is=\E%\E\0410\EQD1\EUX03\EKA\ELBB2\ELCE0\ELI100\ELJ2\ELLB2\ELM0\ELS1\ELX00\ELV1\E%\E\0411\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h:\
+ :ks=\E=:rc@:sc@:\
+ :tc=vt100:
+
+# From: <jcoker@ucbic>
+# (tek4207: This was the termcap file's entry for the 4107/4207, but SCO
+# supplied another, less capable 4107 entry. So we'll use that for 4107 and
+# note that if jcoker wasn't confused you may be able to use this one.
+# I merged in :ms:,:sf:,:sr:,<invis>,:ct: from a BRL entry -- esr)
+tek4207|Tektronix 4207 graphics terminal with memory:\
+ :am:bw:mi:ms:ul:xn:\
+ :co#80:it#8:li#32:\
+ :al=3\E[L:bt=\E[Z:cd=\E[J:ce=5\E[K:cl=156\E[H\E[J:\
+ :cm=\E[%i%d;%dH:ct=\E[1g:dc=4\E[P:dl=3\E[M:do=^J:ei=:\
+ :ho=\E[H:ic=4\E[@:im=:\
+ :is=\E%!0\ELBP0\E%!1\E[H\E[2g\EH\E[8C\EH\E[8C\EH\E[8C\EH\E[8C\EH\E[8C\EH\E[8C\EH\E[8C\EH\E[8C\EH\E[8C\EH\E[J:\
+ :kd=\ED:kh=\E[H:kl=\E[D:kr=\E[C:ku=\EM:le=^H:mb=\E[5m:\
+ :md=\E[1m:me=\E[m:mk=\E[=6;<5:mr=\E[7m:nd=\E[C:se=\E[m:\
+ :sf=\E[S:so=\E[7m:sr=\E[T:ta=^I:\
+ :te=\E[?6h\E%!0\ELBP0\E%!1\E[32;1f:ti=\E[?6l\E[H\E[J:\
+ :ue=\E[m:up=\EM:us=\E[4m:
+
+# From: <carolyn@dali.berkeley.edu> Thu Oct 31 12:54:27 1985
+# (tek4404: There was a "\!" in :ti: that I replaced with "\E!".
+# Tab had been given as \E2I,that must be the tab-set capability -- esr)
+tek4404|tektronix 4404:\
+ :bs:\
+ :co#80:it#8:li#32:\
+ :al=\E[1L:cd=\E[J:ce=\E[K:cl=\E[H\E[2J:cm=\E[%i%d;%dH:\
+ :cs=\E[%i%d;%dr:dc=\E[P:dl=\E[1M:do=^J:ei=\E[4l:ho=\E[H:\
+ :im=\E[4h:kd=\E[B:ke=\E[?1h:kl=\E[D:kr=\E[C:ks=\E[?1l:\
+ :ku=\E[A:le=^H:mb=\E[5m:md=\E[1m:me=\E[m:nd=\E[C:rc=\E8:\
+ :sc=\E7:se=\E[27m:so=\E[7m:st=\E[2I:ta=^I:\
+ :te=\E[1;1H\E[0J\E[?6h\E[?1l:\
+ :ti=\E%\E\0411\E[1;32r\E[?6l\E>:ue=\E[m:up=\E[A:\
+ :us=\E[4m:
+# Some unknown person wrote:
+# I added the is string - straight Unix has ESC ; in the login
+# string which sets a ct8500 into monitor mode (aka 4025 snoopy
+# mode). The is string here cleans up a few things (but not
+# everything).
+ct8500|tektronix ct8500:\
+ :am:bw:da:db:\
+ :co#80:li#25:\
+ :al=\E^L:bl=^G:bt=\E^I:cd=\E^U:ce=\E^T:cl=\E^E:\
+ :cm=\E|%+ %+ :cr=^M:dc=\E^]:dl=\E^M:do=^J:ei=:ic=\E^\:im=:\
+ :is=\037\EZ\Ek:le=^H:me=\E :nd=\ES:se=\E :sf=^J:so=\E$:\
+ :sr=\E^A:ta=^I:ue=\E :up=\ER:us=\E\041:
+
+# Tektronix 4205 terminal.
+#
+# am is not defined because the wrap around occurs not when the char.
+# is placed in the 80'th column, but when we are attempting to type
+# the 81'st character on the line. (esr: hmm, this is like the vt100
+# version of xenl, perhaps am + xenl would work!)
+#
+# Bold, dim, and standout are simulated by colors and thus not allowed
+# with colors. The tektronix color table is mapped into the RGB color
+# table by setf/setb. All colors are reset to factory specifications by oc.
+# The <initc> cap uses RGB notation to define colors. for arguments 1-3 the
+# interval (0-1000) is broken into 8 smaller sub-intervals (125). Each sub-
+# interval then maps into pre-defined value.
+# (untranslatable capabilities removed to fit entry within 1023 bytes)
+tek4205|tektronix 4205:\
+ :cc:mi:ms:\
+ :Co#8:NC#49:co#80:it#8:li#30:pa#63:\
+ :AL=\E[%dL:DO=\E[%dB:IC=\E[%d@:LE=\E[%dD:RI=\E[%dC:\
+ :UP=\E[%dA:\
+ :ac=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~:\
+ :ae=^O:al=\E[1L:as=^N:bl=^G:bt=\E[Z:cb=\E[1K:cd=\E[J:\
+ :ce=\E[K:cl=\E[2J\E[H:cm=\E[%i%d;%dH:cr=^M:ct=\E[1g:\
+ :dc=\E[1P:dl=\E[1M:do=\E[B:eA=\E)0:ec=\E%dX:ei=\E[4l:\
+ :ho=\E[H:i1=\E%!0\ETM1\E%!1\E[m:im=\E[4h:k0=\EOA:k1=\EOB:\
+ :k2=\EOC:k3=\EOD:k4=\EP:k5=\EQ:k6=\ER:k7=\ES:kb=^H:kd=\E[B:\
+ :kl=\E[D:kr=\E[C:ku=\E[A:le=\E[D:mb=\E[5m:md=\E[=7;<4m:\
+ :me=\E[=0;<1m\E[24;25;27m\017:mh=\E[=1;<6m:mk=\E[=6;<5:\
+ :mr=\E[7m:nd=\E[C:\
+ :oc=\E%!0\ETFB000001F4F4F42F40030F404A4C<F450F4F46F40F47F4F40\E%!1:\
+ :op=\E[39;40m:se=\E[=0;<1m:sf=\ED:so=\E[=2;<3m:sr=\EM:\
+ :ta=^I:te=:ti=\E%%\0411\E[?6l\E[2J:ue=\E[24m:up=\E[A:\
+ :us=\E[4m:
+
+#### Teletype (tty)
+#
+# These are the hardcopy Teletypes from before AT&T bought the company,
+# clattering electromechanical dinosaurs in Bakelite cases that printed on
+# pulpy yellow roll paper. If you remember these you go back a ways.
+# Teletype-branded VDTs are listed in the AT&T section.
+#
+# The earliest UNIXes were designed to use these clunkers; nroff and a few
+# other programs still default to emitting codes for the Model 37.
+#
+
+tty33|tty35|model 33 or 35 teletype:\
+ :hc:os:xo:\
+ :co#72:\
+ :bl=^G:cr=^M:do=^J:sf=^J:
+tty37|model 37 teletype:\
+ :bs:hc:os:xo:\
+ :bl=^G:cr=^M:do=^J:hd=\E9:hu=\E8:le=^H:sf=^J:up=\E7:
+
+# There are known to be at least three flavors of the tty40, all seem more
+# like IBM half duplex forms fillers than ASCII terminals. They have lots of
+# awful braindamage, such as printing a visible newline indicator after each
+# newline. The 40-1 is a half duplex terminal and is hopeless. The 40-2 is
+# braindamaged but has hope and is described here. The 40-4 is a 3270
+# lookalike and beyond hope. The terminal has visible bell but I don't know
+# it - it's null here to prevent it from showing the BL character.
+# There is an \EG in <nl> because of a bug in old vi (if stty says you have
+# a "newline" style terminal (-crmode) vi figures all it needs is nl
+# to get crlf, even if :cr: is not ^M.)
+# (tty40: removed obsolete ":nl=\EG\EB:", it's just do+cr -- esr)
+tty40|ds40|ds40-2|dataspeed40|teletype dataspeed 40/2:\
+ :bs:xo:\
+ :co#80:li#24:\
+ :al=\EL:cd=\EJ:cl=\EH\EJ:cr=\EG:ct=\EH\E2:dc=\EP:dl=\EM:\
+ :do=\EB:ei=:ho=\EH:ic=\E\136:im=:kb=^]:kl=^H:le=^H:nd=\EC:\
+ :pf=^T:po=\022:r2=\023\ER:se=\E4:sf=\ES:so=\E3:sr=\ET:\
+ :st=\E1:ta=\E@:up=\E7:
+tty43|model 43 teletype:\
+ :am:bs:hc:os:xo:\
+ :co#132:\
+ :bl=^G:cr=^M:do=^J:kb=^H:le=^H:sf=^J:
+
+#### Tymshare
+#
+
+# You can add :is=\E<: to put this 40-column mode, though I can't
+# for the life of me think why anyone would want to.
+scanset|sc410|sc415|Tymshare Scan Set:\
+ :am:bw:ms:\
+ :co#80:li#24:\
+ :ac=j%k4l<m-q\054x5:ae=^O:as=^N:bl=^G:cd=\EJ:ce=\EK:\
+ :cl=\EH\EJ:cm=\EY%+ %+ :cr=^M:do=^J:ho=\EH:kd=\EB:kl=\ED:\
+ :kr=\EC:ku=\EA:le=^H:nd=^I:pf=\E;0:po=\E;0:ps=\E;3:r1=\E>:\
+ :rc=^C:sc=^B:sf=^J:up=^K:
+
+#### Volker-Craig (vc)
+#
+# If you saw a Byte Magazine cover with a terminal on it during the early
+# 1980s, it was probably one of these. Carl Helmers liked them because
+# they could crank 19.2 and were cheap (that is, he liked them until he tried
+# to program one...)
+#
+
+# Missing in vc303a and vc303 descriptions: they scroll 2 lines at a time
+# every other linefeed.
+vc303|vc103|vc203|volker-craig 303:\
+ :am:bs:ns:\
+ :co#80:li#24:\
+ :bl=^G:cl=\014:cr=^M:do=^J:ho=\013:kd=^J:kl=^H:kr=^I:ku=^N:\
+ :le=^H:ll=\017W:nd=^I:up=^N:
+vc303a|vc403a|volker-craig 303a:\
+ :ce=\026:cl=\030:ho=\031:kr=^U:ku=^Z:ll=^P:nd=^U:up=^Z:tc=vc303:
+# (vc404: removed obsolete ":ma=^Z^P^U :" -- esr)
+vc404|volker-craig 404:\
+ :am:bs:\
+ :co#80:li#24:\
+ :bl=^G:cd=\027:ce=\026:cl=\030:cm=\020%+ %+ :cr=^M:do=^J:\
+ :ho=\031:kd=^J:kl=^H:kr=^U:ku=^Z:le=^H:nd=^U:sf=^J:up=^Z:
+vc404-s|volker-craig 404 w/standout mode:\
+ :do=^J:se=^O:so=^N:tc=vc404:
+# From: <wolfgang@cs.sfu.ca>
+# (vc414: merged in cup/dl1/home from an old vc414h-noxon)
+vc414|vc414h|Volker-Craig 414H in sane escape mode.:\
+ :am:bs:\
+ :co#80:li#24:\
+ :al=\E\032:cd=\E^X:ce=10\E\017:cl=\E\034:cm=\E\021%r%.%.:\
+ :dc=\E3:dl=\E\023:do=\E^K:ei=:ho=\E^R:ic=\E\072:im=:k0=\EA:\
+ :k1=\EB:k2=\EC:k3=\ED:k4=\EE:k5=\EF:k6=\EG:k7=\EH:kd=\E^K:\
+ :kh=\E^R:kl=^H:kr=^P:ku=\E^L:l0=PF1:l1=PF2:l2=PF3:l3=PF4:\
+ :l4=PF5:l5=PF6:l6=PF7:l7=PF8:nd=^P:se=\E^_:so=\E^Y:up=\E^L:
+vc415|volker-craig 415:\
+ :cl=^L:tc=vc404:
+
+######## OBSOLETE PERSONAL-MICRO CONSOLES AND EMULATIONS
+#
+
+#### IBM PC and clones
+#
+
+# The pcplot IBM-PC terminal emulation program is really messed up. It is
+# supposed to emulate a vt-100, but emulates the wraparound bug incorrectly,
+# doesn't support scrolling regions, ignores add line commands, and ignores
+# delete line commands. Consequently, the resulting behavior looks like a
+# crude adm3a-type terminal.
+# Steve Jacobson 8/85
+pcplot|pc-plot terminal emulation program:\
+ :xn@:\
+ :AL@:DL@:al@:cs@:dl@:rc@:sc@:tc=vt100:
+# KayPro II from Richard G Turner <rturner at Darcom-Hq.ARPA>
+# I've found that my KayPro II, running MDM730, continues to emulate an
+# ADM-3A terminal, just like I was running TERM.COM. On our 4.2 UNIX
+# system the following termcap entry works well:
+# I have noticed a couple of minor glitches, but nothing I can't work
+# around. (I added two capabilities from the BRL entry -- esr)
+kaypro|kaypro2|kaypro II:\
+ :am:bs:\
+ :co#80:li#24:\
+ :al=\EE:bl=^G:cd=^W:ce=^X:cl=1\032:cm=\E=%+ %+ :cr=^M:\
+ :dl=\ER:do=^J:ho=^^:kd=^J:kr=^L:ku=^K:nd=^L:sf=^J:up=^K:
+
+# From IBM, Thu May 5 19:35:27 1983
+# (ibmpc: commented out :im:=\200R because we don't know :ei: -- esr)
+ibm-pc|ibm5051|5051|IBM Personal Computer (no ANSI.SYS):\
+ :am:bs:\
+ :co#80:li#24:\
+ :bl=^G:cl=^L^K:cr=^M^^:do=^J:ho=^K:kd=^_:le=^]:nd=^\:sf=\n:\
+ :up=^^:
+
+ibmpc|wy60-PC|wyse60-PC|IBM PC/XT running PC/IX:\
+ :am:bw:eo:hs:km:ms:ul:\
+ :co#80:it#8:li#24:\
+ :@7=\E[Y:DO=\E[%dB:LE=\E[%dD:RI=\E[%dC:SF=\E[%dS\E[%dB:\
+ :SR=\E[%dT\E[%dA:UP=\E[%dA:\
+ :ac=j\331k\277l\332m\300n\305q\304t\303u\264v\301w\302x\263:\
+ :bl=^G:cd=\E[J:ce=\E[K:ch=\E[%i%dG:cl=\Ec:cm=\E[%i%d;%dH:\
+ :cr=^M:do=\E[B:ec=\E[%dX:ho=\E[H:k1=\240:k2=\241:k3=\242:\
+ :k4=\243:k5=\244:k6=\245:k7=\246:k8=\247:k9=\250:k;=\251:\
+ :kB=^]:kD=\177:kI=\E[^H:kN=\E[U:kb=^H:kd=\E[B:kh=\E[H:\
+ :kl=\E[D:kr=\E[C:ku=\E[A:le=\E[D:ll=\E[24;1H:mb=\E[5m:\
+ :md=\E[1m:me=\E[m:mk=\E[30;40m:mr=\E[7m:nd=\E[C:nw=^M:\
+ :..sa=\E[%?%p1%t;7%;%?%p2%t;4%;%?%p3%t;7%;%?%p4%t;5%;%?%p6%t;1%;m:\
+ :se=\E[m:sf=\E[S\E[B:so=\E[7m:sr=\E[T\E[A:ue=\E[m:up=\E[A:\
+ :us=\E[4m:
+
+#### Apple II
+#
+# Apple II firmware console first, then various 80-column cards and
+# terminal emulators. For two cents I'd toss all these in the UFO file
+# along with the 40-column apple entries.
+#
+
+# From: brsmith@umn-cs.cs.umn.edu (Brian R. Smith) via BRL
+# 'it#8' tells UNIX that you have tabs every 8 columns. This is a
+# function of TIC, not the firmware.
+# The clear key on a IIgs will do something like clear-screen,
+# depending on what you're in.
+appleIIgs|appleIIe|appleIIc|Apple 80 column firmware interface:\
+ :am:bs:bw:eo:ms:\
+ :co#80:it#8:li#24:\
+ :bl=^G:cd=^K:ce=^]:cl=^L:cm=\036%r%+ %+ :cr=^M:do=^J:ho=^Y:\
+ :kC=^X:kD=\177:kb=^H:kd=^J:kl=^H:kr=^U:ku=^K:le=^H:nd=^\:\
+ :nw=^M^W:se=^N:sf=^W:so=^O:sr=^V:ta=^I:up=^_:
+# Apple //e with 80-column card, entry from BRL
+# The modem interface is permitted to discard LF (maybe DC1), otherwise
+# passing characters to the 80-column firmware via COUT (PR#3 assumed).
+# Auto-wrap does not work right due to newline scrolling delay, which also
+# requires that you set "stty cr2".
+# Note: Cursor addressing is only available via the Pascal V1.1 entry,
+# not via the BASIC PR#3 hook. All this nonsense can be avoided only by
+# using a terminal emulation program instead of the built-in firmware.
+apple2e|Apple //e:\
+ :bw:ms:\
+ :co#80:li#24:\
+ :bl=^G:cd=4*\013:ce=4\035:cl=100\014:do=^J:ho=^Y:is=^R^N:\
+ :kb=^H:kd=^J:kl=^H:kr=^U:ku=^K:le=^H:me=^N:mr=^O:nw=100\r:\
+ :r1=^R^N:se=^N:sf=^W:so=^O:sr=^V:ta=^I:up=^_:
+# mcvax!vu44!vu45!wilcke uses the "ap" entry together with Ascii Express Pro
+# 4.20, with incoming and outgoing terminals both on 0, emulation On.
+apple2e-p|Apple //e via Pascal:\
+ :cm=\036%r%+ %+ :kb=^H:kd=^J:kl=^H:tc=apple2e:
+# (ASCII Express) MouseTalk "Standard Apple //" emulation from BRL
+# Enable DC3/DC1 flow control with "stty ixon -ixany".
+apple-ae|ASCII Express:\
+ :am:bs:bw:ms:nx:xo:\
+ :co#80:it#8:li#24:\
+ :bl=500\007:cd=^K:ce=^]:cl=^L:cm=\036%r%+ %+ :cr=^M:do=^J:\
+ :ho=^Y:is=^R^N:kC=^X:kd=^J:kl=^H:kr=^U:ku=^K:le=^H:me=^N:\
+ :mr=^O:nd=^U:r1=^R^N:se=^N:sf=^W:so=^O:sr=^V:up=^_:
+appleII|apple ii plus:\
+ :am:bs:\
+ :co#80:it#8:li#24:\
+ :cd=^K:ce=^]:cl=^L:cm=\036%r%+ %+ :do=^J:ho=\E^Y:\
+ :is=\024T1\016:kd=^J:kr=^U:le=^H:me=^N:nd=^\:se=^N:so=^O:\
+ :ta=^I:up=^_:vb=\024G1\024T1:ve=^TC2:vs=^TC6:
+# Originally by Gary Ford 21NOV83
+# From: <ee178aci%sdcc7@SDCSVAX.ARPA> Fri Oct 11 21:27:00 1985
+apple-80|apple II with smarterm 80 col:\
+ :am:bs:bw:\
+ :co#80:li#24:\
+ :bt=^R:cd=10*\013:ce=10\035:cl=10*\014:cm=\036%r%+ %+ :\
+ :cr=10*\r:do=^J:ho=^Y:le=^H:nd=^\:up=^_:
+apple-soroc|apple emulating soroc 120:\
+ :am:\
+ :co#80:li#24:\
+ :bl=^G:cd=\EY:ce=\ET:cl=\E*:cm=\E=%+ %+ :cr=^M:do=^J:ho=^^:\
+ :kd=^J:kl=^H:kr=^L:ku=^K:le=^H:nd=^L:sf=^J:up=^K:
+# From Peter Harrison, Computer Graphics Lab, San Francisco
+# ucbvax!ucsfmis!harrison .....uucp
+# ucbvax!ucsfmis!harrison@BERKELEY .......ARPA
+# "These two work. If you don't have the inverse video chip for the
+# Apple with videx then remove the :so: and :se: fields."
+# (apple-videx: this used to be called DaleApple -- esr)
+apple-videx|Apple with videx videoterm 80 column board with inverse video:\
+ :am:bs:xn:\
+ :co#80:it#8:li#24:\
+ :cd=^K:ce=^]:cl=300\014:cm=\036%r%+ %+ :do=^J:ho=^Y:kd=^J:\
+ :kh=^Y:kl=^H:kr=^U:le=^H:me=^Z2:nd=^\:se=^Z2:so=^Z3:ta=^I:\
+ :up=^_:
+# My system [for reference] : Apple ][+, 64K, Ultraterm display card,
+# Apple Cat ][ 212 modem, + more all
+# controlled by ASCII Express: Pro.
+# From Dave Shaver <isucs1!shaver>
+apple-uterm-vb|Videx Ultraterm for Apple micros with Visible Bell:\
+ :am:bs:eo:xt:\
+ :co#80:li#24:\
+ :ac=:cd=^K:ce=^]:cl=^L:cm=\036%r%+ %+ :ho=^Y:\
+ :is=^V4^W06\017\rVisible Bell Installed.\016\r\n:\
+ :nd=^\:se=^N:so=^O:up=^_:vb=^W35^W06:
+apple-uterm|Ultraterm for Apple micros:\
+ :am:bs:eo:xt:\
+ :co#80:li#24:\
+ :ac=:cd=^K:ce=^]:cl=^L:cm=\036%r%+ %+ :ho=^Y:\
+ :is=^V4^W06\016:nd=^\:se=^N:so=^O:up=^_:
+# from trwrba!bwong (Bradley W. Wong):
+#
+# This entry assumes that you are using an apple with the UCSD Pascal
+# language card. SYSTEM.MISCINFO is assumed to be the same as that
+# supplied with the standard apple except that screenwidth should be set
+# using SETUP to 80 columns. Note that the right arrow in not mapped in
+# this termcap entry. This is because that key, on the Apple, transmits
+# a ^U and would thus preempt the more useful "up" function of vi.
+#
+# HMH 2/23/81
+apple80p|80-column apple with Pascal card:\
+ :am:bw:\
+ :co#80:li#24:\
+ :cd=^K:ce=^]:cl=^Y^L:cm=\036%r%+ %+ :ho=^Y:kl=^H:nd=^\\072:\
+ :up=^_:
+#
+# Apple II+ equipped with Videx 80 column card
+#
+# Terminfo from ihnp4!ihu1g!djc1 (Dave Christensen) via BRL;
+# manually converted by D A Gwyn
+#
+# DO NOT use any terminal emulation with this data base, it works directly
+# with the Videx card. This has been tested with vi 1200 baud and works fine.
+#
+# This works great for vi, except I've noticed in pre-R2, ^U will scroll back
+# 1 screen, while in R2 ^U doesn't.
+# For inverse alternate character set add:
+# :as:=^O::ae:=^N:
+# (apple-v: added it#8 -- esr)
+apple-videx2|Apple II+ w/ Videx card (similar to Datamedia h1520):\
+ :am:xn:\
+ :co#80:it#8:li#24:\
+ :bl=100\007:cd=16*\013:ce=^]:cl=16*\014:cm=\036%r%+ %+ :\
+ :cr=^M:do=^J:ho=^Y:kb=^H:kd=^J:kh=^Y:kl=^H:kr=^\:ku=^_:le=^H:\
+ :nd=^\:se=^Z2:sf=^J:so=^Z3:ta=8\011:up=^_:
+apple-videx3|vapple|Apple II with 80 col card:\
+ :am:bs:\
+ :co#80:li#24:\
+ :ce=\Ex:cl=\Ev:cm=\EY%+ %+ :ho=\EH:k0=\EP:k1=\EQ:k2=\ER:\
+ :k3=\E :k4=\E\041:k5=\E":k6=\E#:k7=\E$:k8=\E%:k9=\E&:kd=\EB:\
+ :kh=\EH:kl=\ED:kr=\EC:ku=\EA:nd=\EC:up=\EA:
+#From: decvax!cbosgd!cbdkc1!mww Mike Warren via BRL
+aepro|Apple II+ running ASCII Express Pro--vt52:\
+ :bs:\
+ :co#80:li#24:\
+ :cd=\EJ:ce=\EK:cl=300\014:cm=\EY%+ %+ :ho=\EH:nd=\EC:\
+ :up=\EA:
+# UCSD addition: Yet another termcap from Brian Kantor's Micro Munger Factory
+apple-vm80|ap-vm80|apple with viewmax-80:\
+ :bs:\
+ :co#80:li#24:\
+ :cd=300\013:ce=^]:cl=300\014:cm=100\036%+ %+ :ho=200\031:\
+ :nd=^\\072:up=^_:
+
+#### Apple Lisa & Macintosh
+#
+
+# (lisa: changed :vs: to :ve: -- esr)
+lisa|apple lisa console display (black on white):\
+ :am:bs:eo:ms:\
+ :co#88:it#8:li#32:\
+ :ac=jdkclfmenbqattuvvuwsx`:ae=\E[10m:al=\E[L:as=\E[11m:\
+ :cd=\E[J:ce=\E[K:cl=^L:cm=\E[%i%d;%dH:dc=\E[P:dl=\E[M:\
+ :do=\E[B:ei=:ho=\E[H:ic=\E[@:im=:is=\E>\E[m\014:kb=^H:\
+ :kd=\E[B:kl=\E[D:kr=\E[C:ku=\E[A:le=^H:me=\E[m:nd=\E[C:\
+ :se=\E[m:so=\E[7m:ta=^I:ue=\E[m:up=\E[A:us=\E[4m:ve=\E[5l:\
+ :vi=\E[5h:
+liswb|apple lisa console display (white on black):\
+ :is=\E>\E[0;7m\014:se=\E[0;7m:so=\E[m:ue=\E[0;7m:\
+ :us=\E[4m:tc=lisa:
+
+# lisaterm from ulysses!gamma!epsilon!mb2c!jed (John E. Duncan III) via BRL;
+# :is: revised by Ferd Brundick <fsbrn@BRL.ARPA>
+#
+# These entries assume that the 'Auto Wraparound' is enabled.
+# Xon-Xoff flow control should also be enabled.
+#
+# The vt100 uses :rs2: and :rf: rather than :is2:/:tbc:/:hts: because the tab
+# settings are in non-volatile memory and don't need to be reset upon login.
+# Also setting the number of columns glitches the screen annoyingly.
+# You can type "reset" to get them set.
+#
+lisaterm|Apple Lisa or Lisa/2 running LisaTerm vt100 emulation:\
+ :am:bs:pt:xn:xo:\
+ :co#80:it#8:kn#4:li#24:vt#3:\
+ :DO=\E[%dB:LE=\E[%dD:RI=\E[%dC:UP=\E[%dA:bl=^G:cd=\E[J:\
+ :ce=\E[K:cl=\E[H\E[2J:cm=\E[%i%d;%dH:cr=^M:\
+ :cs=\E[%i%d;%dr:ct=\E[3g:do=^J:ho=\E[H:k0=\EOP:k1=\EOQ:\
+ :k2=\EOR:k3=\EOS:kb=^H:kd=\EOB:ke=\E[?1l\E>:kl=\EOD:\
+ :kr=\EOC:ks=\E[?1h\E=:ku=\EOA:l0=F1:l1=F2:l2=F3:l3=F4:le=^H:\
+ :mb=\E[5m:md=\E[1m:me=\E[m:mr=\E[7m:nd=\E[C:\
+ :r1=\E>\E[?1l\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h\E[1;24r:\
+ :rc=\E8:sc=\E7:se=\E[m:sf=^J:so=\E[7m:sr=\EM:st=\EH:ta=^I:\
+ :ue=\E[m:up=\E[A:us=\E[4m:
+# Lisaterm in 132 column ("wide") mode.
+lisaterm-w|Apple Lisa with Lisaterm in 132 column mode:\
+ :co#132:\
+ :kb=^H:kd=^J:kl=^H:tc=lisaterm:
+# Although MacTerminal has insert/delete line, it is commented out here
+# since it is much faster and cleaner to use the "lock scrolling region"
+# method of inserting and deleting lines due to the MacTerminal implementation.
+# Also, the "Insert/delete ch" strings have an extra character appended to them
+# due to a bug in MacTerminal V1.1. Blink is disabled since it is not
+# supported by MacTerminal.
+mac|macintosh|Macintosh with MacTerminal:\
+ :xn:\
+ :dN#30:\
+ :dc=7\E[P:ei=:ic=9\E[@:im=:ip=7:mb@:tc=lisa:
+# Lisaterm in 132 column ("wide") mode.
+mac-w|macterminal-w|Apple Macintosh with Macterminal in 132 column mode:\
+ :co#132:tc=mac:
+
+#### Radio Shack/Tandy
+#
+
+# (coco3: This had "ta" used incorrectly as a boolean and bl given as "bl#7".
+# I read these as mistakes for ":it#8:" and ":bl=\007:" respectively -- esr)
+# From: <{pbrown,ctl}@ocf.berkeley.edu> 12 Mar 90
+coco3|os9LII|Tandy CoCo3 24*80 OS9 Level II:\
+ :am:bs:\
+ :co#80:it#8:li#24:\
+ :al=^_0:bl=^G:cd=^K:ce=^D:cl=5*\014:cm=2\002%r%+ %+ :\
+ :dl=^_1:do=^J:ho=^A:kd=^J:kl=^H:kr=^I:ku=^L:le=^H:mb=^_":\
+ :md=\E\072^A:me=\037\041\E\072\0:mr=^_ :nd=^F:se=^_\041:\
+ :so=^_ :ue=^_#:up=^I:us=^_":ve=^E\041:vi=^E :
+# (trs2: removed obsolete ":nl=^_:" -- esr)
+trs2|trsII|trs80II|Radio Shack Model II using P&T CP/M:\
+ :am:bs:ms:\
+ :co#80:it#8:li#24:\
+ :al=^D:bl=^G:cd=^B:ce=^A:cl=^L:cm=\EY%+ %+ :cr=^M:dl=^K:\
+ :do=^_:ho=^F:kb=^H:kd=^_:kl=^\:kr=^]:ku=^^:le=^H:me=^O:nd=^]:\
+ :se=^O:sf=^J:so=^N:ta=^I:up=^^:
+# From: Kevin Braunsdorf <ksb@mentor.cc.purdue.edu>
+# (This had extension capabilities
+# :BN=\E[?33h:BF=\E[?33l:UC=\E[_ q:BC=\E[\177 q:\
+# :CN=\ERC:CF=\ERc:NR=\ERD:NM=\ER@:
+# I also deleted the unnecessary ":kn#2:", ":sg#0:" -- esr)
+trs16|trs-80 model 16 console:\
+ :am:bs:\
+ :co#80:it#8:li#24:\
+ :ac=jak`l_mbquvewcxs:ae=\ERg:al=\EL:as=\ERG:bl=^G:cd=\EJ:\
+ :ce=\EK:cl=^L:cm=\EY%+ %+ :cr=^M:dc=\EQ:dl=\EM:do=\EB:ei=:\
+ :ho=\EH:ic=\EP:im=:k0=^A:k1=^B:k2=^D:k3=^L:k4=^U:k5=^P:k6=^N:\
+ :k7=^S:kb=^H:kd=\EB:kh=^W:kl=\ED:kr=\EC:ku=\EA:l0=f1:l1=f2:\
+ :l2=f3:l3=f4:l4=f5:l5=f6:l6=f7:l7=f8:le=^H:me=\ER@:nd=\EC:\
+ :pf=\E]+:po=\E]=:se=\ER@:sf=^J:so=\ERD:ta=^I:up=\EA:ve=\ERC:\
+ :vi=\ERc:
+
+#### Atari ST
+#
+
+# From: Simson L. Garfinkel <simsong@media-lab.mit.edu>
+atari|atari st:\
+ :am:bs:\
+ :co#80:it#8:li#25:\
+ :al=\EL:cd=\EJ:ce=\EK:cl=\EH\EJ:cm=\EY%+ %+ :dl=\EM:do=\EB:\
+ :kd=\EB:kl=\ED:kr=\EC:ku=\EA:le=\ED:me=\Eq:nd=\EC:se=\Eq:\
+ :so=\Ep:sr=\EI:ta=^I:up=\EA:
+# UniTerm terminal program for the Atari ST: 49-line VT220 emulation mode
+# From: Paul M. Aoki <aoki@ucbvax.berkeley.edu>
+uniterm|uniterm49|UniTerm VT220 emulator with 49 lines:\
+ :li#49:\
+ :is=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h\E[1;49r\E[49;1H:tc=vt220:
+# MiNT VT52 emulation. 80 columns, 25 rows.
+# MiNT is Now TOS, the operating system which comes with all Ataris now
+# (mainly Atari Falcon). This termcap is for the VT52 emulation you get
+# under tcsh/zsh/bash/sh/ksh/ash/csh when you run MiNT in `console' mode
+# From: Per Persson <pp@gnu.ai.mit.edu>, 27 Feb 1996
+st52|Atari ST with VT52 emulation:\
+ :am:km:\
+ :co#80:li#25:\
+ :K1=\E#7:K2=\E#9:K3=\E#5:K4=\E#1:K5=\E#3:al=\EL:bl=^G:\
+ :cd=\EJ:ce=\EK:cl=\EH\EJ:cm=\EY%+ %+ :cr=^M:dl=\EM:do=\EB:\
+ :ho=\EH:k0=\E#D:k1=\E#;:k2=\E#<:k3=\E#=:k4=\E#>:k5=\E#?:\
+ :k6=\E#@:k7=\E#A:k8=\E#B:k9=\E#C:kA=\E#R:kC=\E#7:kF=\E#2:\
+ :kR=\E#8:kb=^H:kd=\E#P:kh=\E#G:kl=\E#K:kr=\E#M:ku=\E#H:\
+ :l0=f10:le=\ED:me=\Eq:nd=\EC:nw=^M^J:r1=\Ez_\Eb@\EcA:\
+ :rc=\Ek:sc=\Ej:se=\Eq:sf=^J:so=\Ep:sr=\EI:ta=^I:te=:ti=\Ee:\
+ :up=\EA:ve=\Ee:vi=\Ef:
+
+#### Commodore Business Machines
+#
+# Formerly located in West Chester, PA; went spectacularly bust in 1994
+# after years of shaky engineering and egregious mismanagement. Made one
+# really nice machine (the Amiga) and boatloads of nasty ones (PET, C-64,
+# C-128, VIC-20). The C-64 is said to have been the most popular machine
+# ever (most units sold); they can still be found gathering dust in closets
+# everywhere.
+#
+
+# From: Kent Polk <kent@swrinde.nde.swri.edu>, 30 May 90
+# Added a few more entries, converted caret-type control sequence (^x) entries
+# to '\0xx' entries since a couple of people mentioned losing '^x' sequences.
+# Corrections by Ty Sarna <tsarna@endicor.com>, Sat Feb 28 18:55:15 1998
+#
+# :as:, :ae: Support for alternate character sets.
+# :ve=\E[\040p:vi=\E[\060\040p: cursor visible/invisible.
+# :xn: vt100 kludginess at column 80/NEWLINE ignore after 80 cols(Concept)
+# This one appears to fix a problem I always had with a line ending
+# at 'width+1' (I think) followed by a blank line in vi. The blank
+# line tended to disappear and reappear depending on how the screen
+# was refreshed. Note that this is probably needed only if you use
+# something like a Dnet Fterm with the window sized to some peculiar
+# dimension larger than 80 columns.
+# :k0=\E9~: map F10 to k0 - could have F0-9 -> k0-9, but ... F10 was 'k;'
+# (amiga: removed obsolete :kn#10:,
+# also added empty <acsc> to suppress a warning --esr)
+amiga|Amiga ANSI:\
+ :am:bs:bw:xn:\
+ :co#80:li#24:\
+ :AL=\E[%dL:DC=\E[%dP:DL=\E[%dM:DO=\E[%dB:IC=\E[%d@:\
+ :LE=\E[%dD:RI=\E[%dC:SF=\E[%dS:SR=\E[%dT:UP=\E[%dA:ac=:\
+ :ae=^O:al=\E[L:as=^N:bl=^G:bt=\E[Z:cd=\E[J:ce=\E[K:\
+ :cl=\E[H\E[J:cm=\E[%i%d;%dH:dc=\E[P:dl=\E[M:do=\E[B:ei=:\
+ :ho=\E[H:ic=\E[@:im=:is=\E[20l:k0=\E[9~:k1=\E[0~:k2=\E[1~:\
+ :k3=\E[2~:k4=\E[3~:k5=\E[4~:k6=\E[5~:k7=\E[6~:k8=\E[7~:\
+ :k9=\E[8~:kb=^H:kd=\E[B:kl=\E[D:kr=\E[C:ku=\E[A:le=\E[D:\
+ :mb=\E[7;2m:md=\E[1m:me=\E[m:mh=\E[2m:mk=\E[8m:mr=\E[7m:\
+ :nd=\E[C:r1=\Ec:se=\E[m:sf=\E[S:so=\E[7m:sr=\E[T:ue=\E[m:\
+ :up=\E[A:us=\E[4m:ve=\E[ p:vi=\E[0 p:
+
+# From: Hans Verkuil <hans@wyst.hobby.nl>, 4 Dec 1995
+# (amiga: added empty <acsc> to suppress a warning.
+# I'm told this entry screws up badly with AS225, the Amiga
+# TCP/IP package once from Commodore, and now sold by InterWorks.--esr)
+amiga-h|Hans Verkuil's Amiga ANSI:\
+ :bs:bw:ms:\
+ :co#80:li#24:\
+ :DC=\233%dP:DO=\233%dB:IC=\233%d@:LE=\233%dD:RI=\233%dC:\
+ :SF=\233%dS:SR=\233%dT:UP=\233%dA:ac=:ae=^O:as=^N:bl=^G:\
+ :bt=\233Z:cd=\233J:ce=\233K:cl=\233H\233J:\
+ :cm=\233%i%d;%dH:cr=^M:dc=\233P:do=\233B:ec=\233%dP:ei=:\
+ :ho=\233H:ic=\233@:im=:is=\23320l:k0=\2339~:k1=\2330~:\
+ :k2=\2331~:k3=\2332~:k4=\2333~:k5=\2334~:k6=\2335~:\
+ :k7=\2336~:k8=\2337~:k9=\2338~:kD=\177:kb=^H:kd=\233B:\
+ :kl=\233D:kr=\233C:ku=\233A:le=\233D:mb=\2337;2m:\
+ :md=\2331m:me=\2330m:mh=\2332m:mk=\2338m:mr=\2337m:\
+ :nd=\233C:nw=\233B\r:r1=\Ec:se=\2330m:sf=\233S:so=\2337m:\
+ :sr=\233T:ta=^I:te=\233?7h:ti=\233?7l:ue=\2330m:up=\233A:\
+ :us=\2334m:vb=^G:ve=\233 p:vi=\2330 p:
+
+# From: Henning 'Faroul' Peters <Faroul@beyond.kn-bremen.de>, 25 Sep 1999
+amiga-8bit|Amiga ANSI using 8-bit controls:\
+ :AL=\233%dL:DL=\233%dM:SF@:SR@:ac=:al=\233L:dl=\233M:\
+ :sf=\204:sr=\215:\
+ :tc=amiga-h:
+
+# Commodore B-128 microcomputer from Doug Tyrol <det@HEL-ACE.ARPA>
+# I'm trying to write a termcap for a commodore b-128, and I'm
+# having a little trouble. I've had to map most of my control characters
+# to something that unix will accept (my delete-char is a ctrl-t, etc),
+# and create some functions (like cm), but thats life.
+# The problem is with the arrow keys - right, and up work fine, but
+# left deletes the previous character and down I just can't figure out.
+# Jove knows what I want, but I don't know what it's sending to me (it
+# isn't thats bound to next-line in jove).
+# Anybody got any ideas? Here's my termcap.
+# DAG -- I changed his "^n" entries to "\n"; see if that works.
+#
+commodore|b-128|Commodore B-128 micro:\
+ :am:bw:\
+ :co#80:dN#20:li#24:pb#150:\
+ :al=10\Ei:bc=^H:ce=10\Eq:cl=10\E\006:\
+ :cm=20\E\013%2\054%2\054:cr=^M:dc=10*\177:dl=10*\Ed:\
+ :do=^J:ei=:ho=\E^E:ic=5\E\n:im=:kd=^J:kh=\E^E:kl=^B:kr=^F:\
+ :ku=^P:nd=^F:nl=^M:ta=5\011:up=^P:
+
+#### North Star
+#
+# North Star Advantage from Lt. Fickie <brl-ibd!fickie> via BRL
+northstar|North Star Advantage:\
+ :bs:\
+ :co#80:li#24:\
+ :cd=200\017:ce=200\016:cl=200\004:cm=1\E=%+ %+ :\
+ :ho=200\034\032:
+
+#### Osborne
+#
+# Thu Jul 7 03:55:16 1983
+#
+# As an aside, be careful; it may sound like an anomaly on the
+# Osborne, but with the 80-column upgrade, it's too easy to
+# enter lines >80 columns!
+#
+# I've already had several comments...
+# The Osborne-1 with the 80-col option is capable of being
+# 52, 80, or 104 characters wide; default to 80 for compatibility
+# with most systems.
+#
+# The tab is destructive on the Ozzie; make sure to 'stty -tabs'.
+osborne-w|osborne1-w|osborne I in 104-column mode:\
+ :ms:ul:xt:\
+ :co#104:li#24:\
+ :al=\EE:bl=^G:ce=\ET:cl=^Z:cm=\E=%+ %+ :cr=^M:dc=\EW:dl=\ER:\
+ :do=^J:ei=:ic=\EQ:im=:kd=^J:kl=^H:kr=^L:ku=^K:le=^H:nd=^L:\
+ :se=\E(:sf=^J:so=\E):ue=\Em:up=^K:us=\El:
+# Osborne I from ptsfa!rhc (Robert Cohen) via BRL
+osborne|osborne1|osborne I in 80-column mode:\
+ :am:bs:mi:ms:ul:xs:\
+ :co#80:dB#4:li#24:\
+ :al=\EE:ce=\ET:cl=^Z:cm=\E=%+ %+ :dc=4\EW:dl=\ER:do=^J:ei=:\
+ :im=\EQ:is=^Z:kb=^H:kd=^J:kl=^H:kr=^L:ku=^K:le=\010:nd=^L:\
+ :se=\E):so=\E(:ue=\Em:up=^K:us=\El:
+#
+# Osborne Executive definition from BRL
+# Similar to tvi920
+# Added by David Milligan and Tom Smith (SMU)
+osexec|Osborne executive:\
+ :am:bs:\
+ :co#80:li#24:sg#1:\
+ :al=\EE:bl=^G:cd=\EY:ce=\ET:cl=^Z:cm=\E=%+ %+ :cr=^M:ct=\E3:\
+ :dc=\EW:dl=\ER:do=^J:ei=:ho=^^:ic=\EQ:im=:\
+ :is=\Eq\Ek\Em\EA\Ex0:k0=^A@\r:k1=^AA\r:k2=^AB\r:k3=^AC\r:\
+ :k4=^AD\r:k5=^AE\r:k6=^AF\r:k7=^AG\r:k8=^AH\r:k9=^AI\r:\
+ :kb=^H:kd=^J:kl=^H:kr=^L:ku=^K:le=^H:nd=^L:nl=^J:se=\Ek:\
+ :so=\Ej:st=\E1:ue=\Em:up=^K:us=\El:
+
+#### Console types for obsolete UNIX clones
+#
+# Coherent, Minix, Venix, and several lesser-known kin were OSs for 8088
+# machines that tried to emulate the UNIX look'n'feel. Coherent and Venix
+# were commercial, Minix an educational tool sold in conjunction with a book.
+# Memory-segmentation limits and a strong tendency to look like V7 long after
+# it was obsolete made all three pretty lame. Venix croaked early. Coherent
+# and Minix were ported to 32-bit Intel boxes, only to be run over by a
+# steamroller named `Linux' (which, to be fair, traces some lineage to Minix).
+# Coherent's vendor, the Mark Williams Company, went belly-up in 1994. There
+# are also, I'm told, Minix ports that ran on Amiga and Atari machines and
+# even as single processes under SunOS and the Macintosh OS.
+#
+
+# This is the entry provided with minix 1.7.4, with bogus :ri: removed.
+minix|minix console (v1.7):\
+ :am:xn:\
+ :co#80:it#8:li#25:\
+ :AL=\E[%dL:DC=\E[%dP:DL=\E[%dM:DO=\E[%dB:IC=\E[%d@:\
+ :LE=\E[%dD:RI=\E[%dC:UP=\E[%dA:al=\E[L:bl=^G:cd=\E[0J:\
+ :ce=\E[K:cl=\E[H\E[0J:cm=\E[%i%d;%dH:cr=^M:dc=\E[P:\
+ :dl=\E[M:do=\E[B:ei=:ho=\E[H:ic=\E[@:im=:is=\E[0m:k0=\E[Y:\
+ :k1=\E[V:k2=\E[U:k3=\E[T:k4=\E[S:k5=\E[G:kb=^H:kd=\E[B:\
+ :kh=\E[H:kl=\E[D:kr=\E[C:ku=\E[A:l0=End:l1=PgUp:l2=PgDn:\
+ :l3=Num +:l4=Num -:l5=Num 5:le=^H:mb=\E[5m:md=\E[1m:\
+ :me=\E[0m:mr=\E[7m:nd=\E[C:nw=^M^J:se=\E[0m:sf=^J:so=\E[7m:\
+ :sr=\EM:ta=^I:ue=\E[0m:up=\E[A:us=\E[4m:
+# Corrected Jan 14, 1997 by Vincent Broman <broman@nosc.mil>
+minix-old|minix console (v1.5):\
+ :xo:\
+ :co#80:it#8:li#25:\
+ :AL=\E[%dL:DC=\E[%dP:DL=\E[%dM:DO=\E[%dB:IC=\E[%d@:\
+ :LE=\E[%dD:RI=\E[%dC:UP=\E[%dA:al=\E[L:bl=^G:cd=\E[0J:\
+ :ce=\E[K:cl=\E[H\E[0J:cm=\E[%i%d;%dH:cr=^M:dc=\E[P:\
+ :dl=\E[M:do=\E[B:ei=:ho=\E[H:ic=\E[@:im=:k0=\E[Y:k1=\E[V:\
+ :k2=\E[U:k3=\E[T:k4=\E[S:k5=\E[G:kb=^H:kd=\E[B:kh=\E[H:\
+ :kl=\E[D:kr=\E[C:ku=\E[A:le=^H:mb=\E[5m:md=\E[1m:me=\E[0m:\
+ :mr=\E[7m:nd=\E[C:nw=^M^J:se=\E[0m:sf=^J:so=\E[7m:sr=\EM:\
+ :ta=^I:ue=\E[0m:up=\E[A:us=\E[4m:
+# The linewrap option can be specified by editing /usr/include/minix/config.h
+# before recompiling the minix 1.5 kernel.
+minix-old-am|minix console with linewrap:\
+ :am:tc=minix-old:
+
+pc-minix|minix console on an Intel box:\
+ :tc=klone+acs:tc=minix:
+
+# According to the Coherent 2.3 manual, the PC console is similar
+# to a z19. The differences seem to be (1) 25 lines, (2) no status
+# line, (3) standout is broken, (4) ins/del line is broken, (5)
+# has blinking and bold.
+pc-coherent|pcz19|coherent|IBM PC console running Coherent:\
+ :am:mi:\
+ :co#80:it#8:li#25:\
+ :bl=^G:cd=\EJ:ce=\EK:cl=\EE:cm=\EY%+ %+ :cr=^M:dc=\EN:\
+ :do=\EB:ei=\EO:ho=\EH:im=\E@:kb=^H:kd=\EB:kh=\EH:kl=\ED:\
+ :kr=\EC:ku=\EA:le=^H:me=\Eq:nd=\EC:se=\Eq:sf=^J:so=\Ep:\
+ :sr=\EI:ta=^I:up=\EA:
+
+# According to the Venix 1.1 manual, the PC console is similar
+# to a DEC vt52. Differences seem to be (1) arrow keys send
+# different strings, (2) enhanced standout, (3) added insert/delete line.
+# Note in particular that it doesn't have automatic margins.
+# There are other keys (f1-f10, kpp, knp, kcbt, kich1, kdch1) but they
+# not described here because this derives from an old termcap entry.
+pc-venix|venix|IBM PC console running Venix:\
+ :co#80:it#8:li#25:\
+ :al=\EL:bl=^G:cd=\EJ:ce=\EK:cl=\EH\EJ:cm=\EY%+ %+ :cr=^M:\
+ :dl=\EM:do=^J:kb=^H:kd=\EP:kh=\EG:kl=\EK:kr=\EM:ku=\EH:le=^H:\
+ :nd=\EC:sf=^J:sr=\EI:ta=^I:up=\EA:
+
+#### Miscellaneous microcomputer consoles
+#
+# If you know anything more about any of these, please tell me.
+#
+
+# The MAI Basic Four computer was obsolete at the end of the 1980s.
+# It may be used as a terminal by putting it in "line" mode as seen on
+# one of the status lines.
+# Initialization is similar to CIT80. :is: will set ANSI mode for you.
+# Hardware tabs set by :if: at 8-spacing. Auto line wrap causes glitches so
+# wrap mode is reset by :vs:. Using :sf:=\E[S caused errors so I
+# used \ED instead.
+# From: bf347@lafn.org (David Lawyer), 28 Jun 1997
+mai|basic4|MAI Basic Four in ansi mode:\
+ :am:da:db:mi:ms:\
+ :co#82:it#8:li#25:\
+ :al=\E[L:bl=^G:cd=^_:ce=^^:cl=^]^_:cm=\E[%i%d;%dH:cr=^M:\
+ :cs=\E[%i%d;%dr:dc=\E[1P:dl=\E[M:do=^J:ei=\E[4l:ho=^]:\
+ :if=/usr/lib/tabset/vt100:im=\E[4h:\
+ :is=\E>\E[?1h\E[?7h\E[?5l\017\E(B\E[m\E[20l\E[1;24r\E[24;1H:\
+ :k1=\EOP:k2=\EOQ:k3=\EOR:k4=\EOS:k5=\EOT:k6=\EOU:k7=\EOV:\
+ :k8=\EOW:kb=^H:kd=\EOB:kl=\EOD:kr=\EOC:ku=\EOA:le=^H:\
+ :mb=\E[5m:md=\E[1m:me=\E[m:mr=\E[7m:nd=^X:nw=^M\ED:rc=\E8:\
+ :sc=\E7:se=\E[m:sf=\ED:so=\E[7m:sr=\E[T:ta=^I:ue=\E[m:up=^Z:\
+ :us=\E[4m:ve=\E[?7h:vs=\E[?7l:
+# basis from Peter Harrison, Computer Graphics Lab, San Francisco
+# ucbvax!ucsfmis!harrison ...uucp / ucbvax!ucsfmis!harrison@BERKELEY ...ARPA
+#
+# On Sat, 7 Aug 1999, Torsten Jerzembeck <toje@nightingale.ms.sub.org> wrote:
+# The Basis 108 was a Apple II clone, manufactured by the "Basis
+# Mikrocomputer GmbH" in Munster, Germany (the company still exists today,
+# about 1,5 km from where I live, but doesn't build own computers any
+# more). A Basis 108 featured a really heavy (cast aluminium?) case, was
+# equipped with one or two 5.25" disk drives, had a monochrome and colour
+# video output for a TV set or a dedicated monitor and several slots for
+# Apple II cards. Basis 108 were quite popular at german schools before
+# the advent of the IBM PC. They run, for example, the UCSD Pascal
+# development system (which I used even in 1993 to program the steering
+# and data recording for our school's experimental solar panel :), Apple DOS
+# or CP/M.
+# (basis: removed obsolete ":ma=^K^P^R^L^L :nl=5000*^J:" -- esr)
+basis|BASIS108 computer with terminal translation table active:\
+ :cd=\EY:ce=\ET:cl=300\E*:do=5000\n:kb=^H:kd=^J:kl=^H:kr=^L:\
+ :ku=^K:me=\E):se=\E):so=\E(:\
+ :tc=adm3a:
+# luna's BMC terminal emulator
+luna|luna68k|LUNA68K Bitmap console:\
+ :co#88:li#46:tc=ansi-mini:
+megatek|pegasus workstation terminal emulator:\
+ :am:os:\
+ :co#83:li#60:
+# The Xerox 820 was a Z80 micro with a snazzy XEROX PARC-derived
+# interface (pre-Macintosh by several years) that went nowhere.
+xerox820|x820|Xerox 820:\
+ :am:\
+ :co#80:li#24:\
+ :bl=^G:cd=^Q:ce=^X:cl=1^Z:cm=\E=%+ %+ :cr=^M:do=^J:ho=^^:\
+ :le=^H:nd=^L:sf=^J:up=^K:
+
+#### Videotex and teletext
+#
+
+# From: Alexandre Montaron <canal@mygale.org>, 18 Jun 1998
+#
+minitel1|minitel 1:\
+ :am:bw:es:hs:hz:ms:\
+ :Co#8:co#40:li#24:pa#8:\
+ :..Sf=\E%?%p1%{1}%=%tD%e%p1%{3}%=%tF%e%p1%{4}%=%tA%e%p1%{6}%=%tC%e%p1%{64}%+%c%;:\
+ :ac=+.\054\054./f0g1:bl=^G:ce=^X:cl=^L:cm=\037%+A%+A:\
+ :cr=^M:do=^J:eA=^Y:fs=^J:ho=^^:\
+ :is=\E;`ZQ\E\072iC\E\072iE\021:le=^H:mb=\EH:me=\EI\E\:\
+ :mr=\E]:nd=^I:nw=^M^J:op=\EG:rp=%.\022%+?:\
+ :..sa=%?%p1%t\E]%;%?%p3%t\E]%;%?%p4%t\EH%;:se=\E\:\
+ :sf=^J:so=\E]:sr=^K:ts=\037@%p1%{65}%+%c:up=^K:ve=^Q:vi=^T:
+# is2=Fnct TE, Fnct MR, Fnct CM et pour finir: curseur ON.
+minitel1b|minitel 1-bistandard (in 40cols mode):\
+ :mi:\
+ :AL=\E[%dL:DC=\E[%dP:DL=\E[%dM:DO=\E[%dB:LE=\E[%dD:\
+ :RI=\E[%dC:UP=\E[%dA:al=\E[L:cb=\E[1K:cd=\E[J:dc=\E[P:\
+ :dl=\E[M:ei=\E[4l:i1=\E;iYA\E;jYC:im=\E[4h:kA=\E[L:\
+ :kC=\E[2J:kD=\E[P:kE=^X:kI=\E[4h:kL=\E[M:kd=\E[B:kh=\E[H:\
+ :kl=\E[D:kr=\E[C:ks=\E;iYA\E;jYC:kt=^I:ku=\E[A:\
+ :tc=minitel1:
+# :ke: posait des problemes (logout en sortant de vi).
+minitel1b-80|minitel 1-bistandard (standard teleinformatique):\
+ :am@:bw@:hz@:\
+ :Co@:co#80:it#8:pa@:\
+ :@8=\EOM:Sf@:ce=\E[K:cl=\E[H\E[2J:cm=\E[%i%d;%dH:ho=\E[H:\
+ :i1@:is@:k0=\EOp:k1=\EOq:k2=\EOr:k3=\EOs:k4=\EOt:k5=\EOu:\
+ :k6=\EOv:k7=\EOw:k8=\EOx:k9=\EOy:ke@:ks@:mb=\E[5m:md=\E[1m:\
+ :me=\E[m:mr=\E[7m:nd=\E[C:nw=\EE:op@:rc=\E8:rp@:\
+ :..sa=\E[%?%p1%t7;%;%?%p2%t4;%;%?%p3%t7;%;%?%p4%t5;%;%?%p6%t1;%;m:\
+ :sc=\E7:se=\E[27m:sf=\ED:so=\E[7m:sr=\EM:ta=^I:ue=\E[24m:\
+ :up=\E[A:us=\E[4m:ve=\037@A\021\n:vi=\037@A\024\n:\
+ :tc=minitel1b:
+# \E\:1} switch to te'le'informatique mode (ascii terminal/ISO 6429)
+# \E[?3l 80 columns
+# \E[?4l scrolling on
+# \E[12h local echo off
+# \Ec reset: G0 U.S. charset (to get #,@,{,},...), 80 cols, clear screen
+# \E)0 G1 DEC set (line graphics)
+#
+# From: Igor Tamitegama <igor@ppp1493-ft.teaser.fr>, 18 Jan 1997
+m2-nam|minitel|minitel-2|minitel-2-nam|France Telecom Minitel 2 mode te'le'informatique:\
+ :bs:es:hs:xn:\
+ :co#80:it#8:li#24:sg#0:ws#72:\
+ :AL=\E[%dL:DC=\E[%dP:DL=\E[%dM:DO=\E[%dB:LE=\E[%dD:\
+ :RI=\E[%dC:SF=^J:SR=\EM:UP=\E[%dA:\
+ :ac=aaffggjjkkllmmnnooqqssttuuvvwwxx:ae=^O:al=\E[L:\
+ :as=^N:bl=^G:cd=\E[J:ce=\E[K:cl=\E[H\E[J:cm=\E[%i%d;%dH:\
+ :cr=^M:cs=\E[%i%d;%dr:dc=\E[P:dl=\E[M:do=\E[B:ei=\E[4l:\
+ :fs=^J:ho=\E[H:i1=\E\0721}\Ec\E[?4l\E[12h:\
+ :i2=\E[?3l kbs=\010:im=\E[4h:ip=7:is=\Ec\E[12h\E)0:\
+ :k0=\EOp:k1=\EOq:k2=\EOr:k3=\EOs:k4=\EOt:k5=\EOu:k6=\EOv:\
+ :k7=\EOw:k8=\EOx:k9=\EOy:k;=\EOp:kA=\E[4l:kC=\E[2J:kD=\E[P:\
+ :kI=\E[4h:kL=\E[M:kN=\EOn:kP=\EOR:kd=\E[B:kh=\E[H:kl=\E[D:\
+ :kr=\E[C:ku=\E[A:le=\E[D:ll=\E[24;80H:mb=\E[5m:md=\E[1m:\
+ :me=\E[m:mr=\E[7m:nd=\E[C:nw=^M^J:ps=\E[i:\
+ :r1=\Ec\E[?4l\E[12h:r2=\Ec\E)0:rc=\E8:sc=\E7:se=\E[27m:\
+ :sf=^J:so=\E[7m:sr=\EM:ta=^I:ts=^_@A:u6=\E[%i%d;%dR:\
+ :u7=\E[6n:ue=\E[24m:up=\E[A:us=\E[4m:vb=^G:ve=\E[<1l:\
+ :vi=\E[<1h:
+
+######## OBSOLETE VDT TYPES
+#
+# These terminals are *long* dead -- these entries are retained for
+# historical interest only.
+
+#### Amtek Business Machines
+#
+
+# (abm80: early versions of this entry apparently had ":se=\E^_:so=\E^Y",
+# but these caps were commented out in 8.3; also, removed overridden
+# ":do=^J:" -- esr)
+abm80|amtek business machines 80:\
+ :am:bs:bw:\
+ :co#80:li#24:\
+ :al=\E^Z:bt=^T:cd=\E^X:ce=\E^O:cl=\E^\:cm=\E\021%r%+ %+ :\
+ :dl=\E^S:do=\E^K:ho=\E^R:le=^H:nd=^P:up=\E^L:
+
+#### Bell Labs blit terminals
+#
+# These were AT&T's official entries. The 5620 FAQ maintained by
+# David Breneman <daveb@dgtl.com> has this to say:
+#
+# Actually, in the beginning was the Jerq, and the Jerq was white with a
+# green face, and Locanthi and Pike looked upon the Jerq and said the Jerq
+# was good. But lo, upon the horizon loomed a mighty management-type person
+# (known now only by the initials VP) who said, the mighty Jerq must stay
+# alone, and could not go forth into the world. So Locanthi and Pike put the
+# Jerq to sleep, cloned its parts, and the Blit was brought forth unto the
+# world. And the Jerq lived the rest of its days in research, but never
+# strayed from those paths.
+#
+# In all seriousness, the Blit was originally known as the Jerq, but when
+# it started to be shown outside of the halls of the Bell Labs Research
+# organization, the management powers that be decided that the name could
+# not remain. So it was renamed to be Blit. This was in late 1981.
+#
+# (The AT&T 5620 was the commercialized Blit. Its successors were the 630,
+# 730, and 730+.)
+#
+
+blit|jerq|blit running teletype rom:\
+ :am:eo:ul:xo:\
+ :co#87:it#8:li#72:\
+ :AL=\EF%+ :DC=\Ee%+ :DL=\EE%+ :IC=\Ef%+ :al=\EF\041:bl=^G:\
+ :ce=\EK:cl=^L:cm=\EY%r%+ %+ :cr=^M:dc=\Ee\041:dl=\EE\041:\
+ :do=^J:ei=:ic=\Ef\041:im=:k1=\Ex:k2=\Ey:k3=\Ez:kb=^H:kd=\EB:\
+ :kl=\ED:kr=\EC:ku=\EA:le=\ED:nd=\EC:sf=^J:ta=^I:up=\EA:
+
+# (cbblit: here's a BSD termcap that says :do=\EG: -- esr)
+cbblit|fixterm|blit running columbus code:\
+ :co#88:\
+ :cd=\EJ:ei=\ER:ic@:im=\EQ:pO=\EP%03:pf=^T:po=^R:se=\EV\041:\
+ :so=\EU\041:ue=\EV":us=\EU":vb=\E^G:\
+ :tc=blit:
+
+oblit|ojerq|first version of blit rom:\
+ :am:da:db:eo:mi:ul:xo:\
+ :co#88:it#8:li#72:\
+ :AL=\Ef%+ :DL=\Ee%+ :al=\EF:bl=^G:cd=\EJ:ce=\EK:cl=^L:\
+ :cm=\EY%r%+ %+ :cr=^M:dc=\EO:dl=\EE:do=^J:ei=\ER:im=\EQ:\
+ :kb=^H:le=\ED:nd=\EC:sf=^J:ta=^I:up=\EA:vb=\E^G:
+
+#### Bolt, Beranek & Newman (bbn)
+#
+# The BitGraph was a product of the now-defunct BBN Computer Corporation.
+# The parent company, best known as the architects of the Internet, is
+# still around.
+#
+# Jeff DelPapa <dp@world.std.com> writes:
+# The bitgraph was a large white box that contained a monochrome bitmap
+# display, and a 68000 to run it. You could download code and run it on
+# the cpu, it had 128kb (I think) of memory. I used one in the late
+# 70's, sure beat a vt100. It had one strange feature tho -- it used
+# the cpu to bitblt pixels to scroll, it took longer than the refresh
+# rate, and looked like a rubber sheet stretching, then snapping
+# upwards. It had everything the early mac had, except a floppy drive a
+# small screen (it had a 17" crisp beauty) and a real OS. They (Bolt
+# Beranek and Neuman) sold at most a few hundred of them to the real
+# world. DOD may have bought more...
+#
+
+# Entries for the BitGraph terminals. The problem
+# with scrolling in vi can only be fixed by getting BBN to put
+# smarter scroll logic in the terminal or changing vi or padding
+# scrolls with about 500 ms delay.
+#
+# I always thought the problem was related to the terminal
+# counting newlines in its input buffer before scrolling and
+# then moving the screen that much. Then vi comes along and
+# paints lines in on the bottom line of the screen, so you get
+# this big white gap.
+
+bitgraph|bg2.0nv|bg3.10nv|bbn bitgraph 2.0 or later (normal video):\
+ :is=\E>\E[?5l\E[?7h:vb=\E[?5h\E[?5l:\
+ :tc=bg2.0:
+bg2.0rv|bg3.10rv|bbn bitgraph 2.0 (reverse video):\
+ :is=\E>\E[?5h\E[?7h:vb=\E[?5l\E[?5h:tc=bg2.0:
+bg2.0|bg3.10|bbn bitgraph 2.0 or later (no init):\
+ :bs:xn:\
+ :co#85:li#64:\
+ :al=\E[L:bl=^G:cd=\E[J:ce=\E[K:cl=\E[H\E[J:cm=%i\E[%d;%dH:\
+ :cr=^M:cs=\E[%i%d;%dr:dl=\E[M:do=\E[B:k1=\EOP:k2=\EOQ:\
+ :k3=\EOR:k4=\EOS:kd=\E[B:ke=\E>:kl=\E[D:kr=\E[C:ks=\E=:\
+ :ku=\E[A:l1=PF1:l2=PF2:l3=PF3:l4=PF4:le=^H:me=\E[m:nd=\E[C:\
+ :rc=\E8:sc=\E7:se=\E[m:sf=\n:so=\E[7m:ta=^I:up=\E[A:
+
+bg1.25rv|bbn bitgraph 1.25 (reverse video):\
+ :is=\E>\E[?5h\E[?7h:vb=\E[?5l\E[?5h:tc=bg1.25:
+bg1.25nv|bbn bitgraph 1.25 (normal video):\
+ :is=\E>\E[?5l\E[?7h:vb=\E[?5h\E[?5l:tc=bg1.25:
+# (bg1.25: I added <rmam>/<smam> based on the init string -- esr)
+bg1.25|bbn bitgraph 1.25:\
+ :co#85:li#64:\
+ :RA=\E[?7l:SA=\E[?7h:al=\E[L:bl=^G:cd=\E[J:ce=\E[K:\
+ :cl=\E[H\E[J:cm=%i\E[%d;%dH:cr=^M:dl=\E[M:do=\E[B:k1=\EP:\
+ :k2=\EQ:k3=\ER:k4=\ES:kd=\EB:ke=\E>:kl=\ED:kr=\EC:ks=\E=:\
+ :ku=\EA:l1=PF1:l2=PF2:l3=PF3:l4=PF4:le=^H:ll=\E[64;1H:\
+ :me=\E[m:nd=\E[C:se=\E[m:sf=\n:so=\E[7m:ta=^I:up=\E[A:
+
+#### Bull (bq, dku, vip)
+#
+# (Adapted for terminfo; AIX extension capabilities translated -- esr)
+
+#============================================#
+# BULL QUESTAR 210 `SDP' terminals emulation #
+#============================================#
+#
+# Description written by R.K.Saunders (Bull Transac)
+#
+# Modifications written by F. Girard (Bull MTS)
+# 19-05-87 V02.00.01
+# 17-12-87 V02.00.02
+# 15-09-89 V02.00.05
+#
+# Typical technical selections F1 (modes SDP/ROLL):
+# -------------------------------------------------------
+# | 01 02 03 04 05 06 07 08 09 10 |
+# | 1010 0011 1010 0110 0110 0001 0100 0000 0000 0000 |
+# | |
+# | 11 12 13 14 15 16 17 18 19 20 |
+# | 0000 0110 100? 0000 0000 0000 0001 0000 0000 0001 |
+# | |
+# | 21 22 23 24 25 26 27 28 29 30 |
+# | 0011 0000 0001 1000 0000 0000 0000 0000 0000 0000 |
+# | |
+# | 31 32 33 34 35 36 37 38 39 40 |
+# | 1010 0011 0000 0000 0000 0000 0000 0000 0000 0000 |
+# -------------------------------------------------------
+# Typical firmware identification F5 "etat 6":
+# P287.02.04b (AZERTY)
+# P297.11.04 (24-pin: 2732) or P798.11.04 (28-pin: 2764)
+# P298.03.03 (monochrome) or P374.03.02 (colour)
+#
+# SM SDP mode (VIP command): ^[[?=h
+# RIS (erases screen): ^[c
+# DMI disable keyboard: ^[`
+# SM double rendition mode: ^[[?>h
+# RM solicited status mode: ^[[5l
+# RM character mode: ^[[>l
+# RM echoplex mode: ^[[12l
+# RM column tab mode: ^[[18l
+# RM forbid SS2 keyboard mode: ^[[?<l
+# SM scroll mode: ^[[=h
+# FCF enable XON/XOFF: ^[P1s^[\
+# MTL select end msg character: ^[[^Wp
+# EMI enable keyboard: ^[b
+# RIS retour etat initial: ^[c
+# enable FC keypad: ^[[?<h,
+# MPW map status line window: ^[PY99:98^[\
+# SCP select status line: ^[[0;98v
+# ED erase entire partition: ^[[2J
+# SCP select main partition: ^[[v
+# SM character insertion mode: ^[[4h
+# RM character replacement mode: ^[[4l
+# COO cursor on: ^[[r
+# COO cursor off: ^[[1r
+# SGR dim (turquoise) rev attr: ^[[2;7m
+# SGR Data normal attr: ^[[m
+# SO Line-graphic mode ON: ^N
+# SI Line-graphic mode OFF: ^O
+# MC start routing to printer: ^[[5i
+# MC stop routing to printer: ^M^[[4i
+#
+
+# This entry covers the following terminals:
+# dku7102, tws2102, and tws models 2105 to 2112
+# (untranslatable capabilities removed to fit entry within 1023 bytes)
+# (sgr removed to fit entry within 1023 bytes)
+# (terminfo-only capabilities suppressed to fit entry within 1023 bytes)
+tws-generic|dku7102|Bull Questar tws terminals:\
+ :am:es:hs:mi:ms:xn:xo:xs@:\
+ :co#80:it#8:li#24:ws#80:\
+ :AL=\E[%dL:DC=\E[%dP:DL=\E[%dM:DO=\E[%dB:LE=\E[%dD:\
+ :RI=\E[%dC:UP=\E[%dA:ae=^O:al=\E[L:as=^N:bl=^G:bt=\E[Z:\
+ :cd=\E[J:ce=\E[K:cl=\E[2J:cm=\E[%i%d;%df:cr=^M:ct=\E[2g:\
+ :dc=\E[P:dl=\E[M:do=^J:\
+ :ds=\EPY99\07298\E\\E[0;98v\E[2J\E[v:ei=\E[4l:fs=\E[v:\
+ :ho=\E[H:i1=\E[?=h\Ec\E`\E[?>h\EPY99\07298\E\:\
+ :i2=\Eb\E[?<h:im=\E[4h:\
+ :is=\E[5;>;12;18;?<l\E[=h\EP1s\E\\E[\027p:\
+ :k1=\E[1u\027:k2=\E[2u\027:k3=\E[3u\027:k4=\E[4u\027:\
+ :k5=\E[5u\027:k6=\E[6u\027:k7=\E[7u\027:k8=\E[8u\027:\
+ :kD=\E[P:kb=^H:kd=\E[B:kh=\E[H:kl=\E[D:kr=\E[C:ku=\E[A:\
+ :le=^H:ll=\E[H\E[A:mb=\E[0;5m:me=\E[m\017:mh=\E[0;2m:\
+ :mr=\E[0;7m:nd=\E[C:se=\E[m:sf=^J:so=\E[0;7m:st=\EH:\
+ :ta=\E[I:te=\E[0;98v\E[2J\E[v:ti=\E[?>h\EPY99\07298\E\:\
+ :ts=\EPY99\07298\E\\E[0;98v\E[2;7m:ue=\E[m:up=\E[A:\
+ :us=\E[0;4m:ve=\E[r:vi=\E[1r:
+tws2102-sna|dku7102-sna|BULL Questar tws2102 for SNA:\
+ :ds=\E[0;98v\E[2J\E[v:fs=\E[v:i2=\Eb:ts=\E[0;98v:\
+ :tc=tws-generic:
+tws2103|xdku|BULL Questar tws2103:\
+ :ta=^I:tc=tws-generic:
+tws2103-sna|dku7103-sna|BULL Questar tws2103 for SNA:\
+ :ta=^I:\
+ :tc=tws2102-sna:
+dku7102-old|BULL Questar 200 DKU7102 (microcode version < 6):\
+ :AL@:DL@:al@:ce=\E[K\E[m:cl=\E[2J\E[H:cm@:dl@:\
+ :ds=\EPY99\07298\E\\E[0;98v\E[2J\E[H\E[v:\
+ :ts=\EPY99\07298\E\\E[0;98v\E[H\E[2;7m:\
+ :tc=tws-generic:
+dku7202|BULL Questar 200 DKU7202 (colour/character attributes):\
+ :i2=\E[?3h\Eb:mb=\E[0;2;4m:mh=\E[0;5m:so=\E[0;4;5;7m:\
+ :ta=^I:us=\E[0;2m:\
+ :tc=tws-generic:
+
+#=========================================================#
+# BULL QUESTAR 303 & 310 `DEC VT 320' terminals emulation #
+#=========================================================#
+#
+# Description written by J. Staerck (BULL SA)
+# Copyright (c) 1989 BULL SA
+#---------------------------------------------------------------------------
+# This entry is used for terminals with vt320 emulation mode
+# and following set-up :
+# 8 bit ISO Latin Character Set (ISO 8859-1),
+# 7 bit Control Characters,
+# 80 columns screen.
+# Hereafter are some DEC vt terminals' commands. (valid on vt200 and 300)
+# They are used in string capabilities with vt220-320 emulation mode.
+# In the following DEC definitions, two kinds of terminfo databases are
+# provided :
+# 1. the first with Command Sequence Introducer starting with escape
+# sequence in 7 bits characters ex. ESC [ : 2 chars. in 7-bit mode.
+# 2. the second with Command Sequence Introducer starting with escape
+# sequence in 8 bits characters ex. ESC [ : 1 char. 'CSI' =x9B.
+# Soft Terminal Reset esc [ ! p
+# RIS (erases screen): esc c
+# DECKPNM numeric keypad mode: esc >
+# DECKPAM applic. keypad mode: esc =
+# DECSTBM Scrolling region: esc [ r
+# SCS select G0 = US: esc ( B
+# SCS select G1 = line-graphic: esc ) 0
+# Select 7-bit C1 controls: esc sp F
+# Select 8-bit C1 controls: esc sp G
+# Select cursor home: esc [ H
+# Select erase screen: esc [ J
+# SM KAM lock keyboard: esc [ 2 h
+# RM KAM unlock keyboard: esc [ 2 l
+# SM SRM local echo off: esc [ 1 2 h
+# RM SRM local echo on: esc [ 1 2 l
+# SM LNM New line : esc [ 2 0 h
+# RM LNM return = CR only: esc [ 2 0 l
+# SM DECCKM cursor keys mode: esc [ ? 1 h
+# RM DECCKM appli. keys mode: esc [ ? 1 l
+# SM DECANM ANSI mode on: esc [ ? 2 h
+# RM DECANM ANSI mode off: esc [ ? 2 l
+# SM DECCOLM 132-column screen: esc [ ? 3 h
+# RM DECCOLM 80-column screen: esc [ ? 3 l
+# SM DECSCLM Smooth scroll: esc [ ? 4 h
+# RM DECSCLM Jump scroll: esc [ ? 4 l
+# SM DECSCNM screen light backgr. esc [ ? 5 h
+# RM DECSCNM screen dark backgr. esc [ ? 5 l
+# SM DECOM move within margins: esc [ ? 6 h
+# RM DECOM move outside margins: esc [ ? 6 l
+# SM DECAWM auto right margin: esc [ ? 7 h
+# RM DECAWM auto right margin: esc [ ? 7 l
+# SM DECARM auto repeat: esc [ ? 8 h
+# RM DECARM auto repeat: esc [ ? 8 l
+# DECSASD Select active main: esc [ 0 $ }
+# DECSASD Select active status: esc [ 1 $ }
+# DECSSDT Select status none: esc [ 0 $ ~
+# DECSSDT Select status indic.: esc [ 1 $ ~
+# DECSSDT Select status host-wr: esc [ 2 $ ~
+# SM DECTCEM Visible cursor: esc [ ? 2 5 h
+# RM DECTCEM Invisible cursor: esc [ ? 2 5 l
+# SM DECNCRM 7 bits NCR set: esc [ ? 4 2 h
+# RM DECNCRM Multi or ISO latin: esc [ ? 4 2 l
+# SM DECNKM numeric keypad mode: esc [ ? 6 6 h
+# RM DECNKM numeric keypad appl.: esc [ ? 6 6 l
+# SM DECKBUM clavier informatique esc [ ? 6 8 h
+# RM DECKBUM clavier bureautique: esc [ ? 6 8 l
+# DECSCL vt300 mode 8-bit ctrl: esc [ 6 3 " p
+# or DECSCL vt300 mode 8-bit ctrl: esc [ 6 3 ; 0 " p
+# or DECSCL vt300 mode 8-bit ctrl: esc [ 6 3 ; 2 " p
+# DECSCL vt300 mode 7-bit ctrl: esc [ 6 3 ; 1 " p
+# Char. and Line attributes: esc [ Ps ... Ps m
+# with: 0 All off, 1 Bold, 4 Underline, 5 Blinking, 7 Reverse
+# and : 22 Bold off, 24 Underline off, 25 Blinking off, 27 Reverse off
+#
+
+# This entry covers BQ303, BQ306, BQ310, Q303, Q306, Q310
+# (untranslatable capabilities removed to fit entry within 1023 bytes)
+# (sgr removed to fit entry within 1023 bytes)
+# (terminfo-only capabilities suppressed to fit entry within 1023 bytes)
+bq300|Bull vt320 ISO Latin 1 80 columns terminal:\
+ :am:eo:es:hs:km:mi:ms:xn:xo:\
+ :co#80:it#8:li#24:vt#3:ws#80:\
+ :AL=\E[%dL:DC=\E[%dP:DL=\E[%dM:DO=\E[%dB:IC=\E[%d@:\
+ :K1=\EOw:K2=\EOu:K3=\EOy:K4=\EOq:K5=\EOs:LE=\E[%dD:\
+ :RI=\E[%dC:UP=\E[%dA:ae=^O:al=\E[L:as=^N:bl=^G:cd=\E[J:\
+ :ce=\E[K:cl=\E[H\E[J:cm=\E[%i%d;%dH:cr=^M:cs=\E[%i%d;%dr:\
+ :ct=\E[3g:dc=\E[P:dl=\E[M:do=\E[B:\
+ :ds=\E[1$}\E[2$~\n\E[0$}:ec=\E[%dX:ei=\E[4l:fs=\E[0$}:\
+ :ho=\E[H:i1=\E[63;1"p\E[2h:\
+ :i2=\E[0$}\E[?25h\E[2l\E[H\E[J:im=\E[4h:\
+ :is=\E[?2h\E[?3l\E[?5l\E[?7h\E[?8h\E>\E[?1l\E F\E[?42l\E[?4l:\
+ :k1=\EOP:k2=\EOQ:k3=\EOR:k4=\EOS:k6=\E[17~:k7=\E[18~:\
+ :k8=\E[19~:k9=\E[20~:kD=\E[3~:kI=\E[2~:kN=\E[6~:kP=\E[5~:\
+ :kb=^H:kd=\E[B:ke=\E[?1l\E>:kl=\E[D:kr=\E[C:ku=\E[A:\
+ :le=\E[D:mb=\E[5m:md=\E[1m:me=\E[0m\E(B:mr=\E[7m:nd=\E[C:\
+ :nw=\EE:rc=\E8:sc=\E7:se=\E[27m:sf=\ED:so=\E[7m:sr=\EM:\
+ :st=\EH:ta=^I:te=\E[?7h:ti=\E[?7l\E[?1l\E(B:\
+ :ts=\E[1$}\E[2$~:ue=\E[24m:up=\E[A:us=\E[4m:\
+ :vb=\E[?5h\E[?5l:ve=\E[?25h:vi=\E[?25l:vs=\E[?25h:
+bg300-rv|Bull vt320 reverse 80 columns:\
+ :is=\E[?2h\E[?3l\E[?5h\E[?7h\E[?8h\E>\E[?1l\E F\E[?42l\E[?4l:\
+ :vb=\E[?5l\E[?5h:\
+ :tc=bq300:
+bq300-w|Bull vt320 132 columns:\
+ :co#132:ws#132:\
+ :is=\E[?2h\E[?3h\E[?5l\E[?7h\E[?8h\E>\E[?1l\E F\E[?42l\E[?4l:\
+ :r2=\E[?3h:\
+ :tc=bq300:
+bq300-w-rv|Bull vt320 reverse mode 132 columns:\
+ :co#132:ws#132:\
+ :is=\E[?2h\E[?3h\E[?5h\E[?7h\E[?8h\E>\E[?1l\E F\E[?42l\E[?4l:\
+ :r2=\E[?3h:vb=\E[?5l\E[?5h:\
+ :tc=bq300:
+
+# This entry is used for terminals with vt320 emulation mode
+# and following set-up :
+# 8 bit ISO Latin Character Set (ISO 8859-1),
+# 8 bit Control Characters, (CSI coded as x9B for ESC [)
+# 80 columns screen.
+# Soft Terminal Reset csi ! p
+# RIS (erases screen): esc c
+# DECKPNM numeric keypad mode: esc >
+# DECKPAM applic. keypad mode: esc =
+# DECSTBM Scrolling region: esc [ r
+# SCS select G0 = US: esc ( B
+# SCS select G1 = line-graphic: esc ) 0
+# Select 7-bit C1 controls: esc sp F
+# Select 8-bit C1 controls: esc sp G
+# Select cursor home: csi H
+# Select erase screen: csi J
+# SM KAM lock keyboard: csi 2 h
+# RM KAM unlock keyboard: csi 2 l
+# SM SRM local echo off: csi 1 2 h
+# RM SRM local echo on: csi 1 2 l
+# SM LNM New line : csi 2 0 h
+# RM LNM return = CR only: csi 2 0 l
+# SM DECCKM cursor keys mode: csi ? 1 h
+# RM DECCKM appli. keys mode: csi ? 1 l
+# SM DECANM ANSI mode on: csi ? 2 h
+# RM DECANM ANSI mode off: csi ? 2 l
+# SM DECCOLM 132-column screen: csi ? 3 h
+# RM DECCOLM 80-column screen: csi ? 3 l
+# SM DECSCLM Smooth scroll: csi ? 4 h
+# RM DECSCLM Jump scroll: csi ? 4 l
+# SM DECSCNM screen light backgr. csi ? 5 h
+# RM DECSCNM screen dark backgr. csi ? 5 l
+# SM DECOM move within margins: csi ? 6 h
+# RM DECOM move outside margins: csi ? 6 l
+# SM DECAWM auto right margin: csi ? 7 h
+# RM DECAWM auto right margin: csi ? 7 l
+# SM DECARM auto repeat: csi ? 8 h
+# RM DECARM auto repeat: csi ? 8 l
+# DECSASD Select active main: csi 0 $ }
+# DECSASD Select active status: csi 1 $ }
+# DECSSDT Select status none: csi 0 $ ~
+# DECSSDT Select status indic.: csi 1 $ ~
+# DECSSDT Select status host-wr: csi 2 $ ~
+# SM DECTCEM Visible cursor: csi ? 2 5 h
+# RM DECTCEM Invisible cursor: csi ? 2 5 l
+# SM DECNCRM 7 bits NCR set: csi ? 4 2 h
+# RM DECNCRM Multi or ISO latin: csi ? 4 2 l
+# DECSCL vt300 mode 8-bit ctrl: csi 6 3 " p
+# or DECSCL vt300 mode 8-bit ctrl: csi 6 3 ; 0 " p
+# DECSCL vt300 mode 7-bit ctrl: csi 6 3 ; 1 " p
+# Char. and Line attributes: csi Ps ... Ps m
+# with: 0 All off, 1 Bold, 4 Underline, 5 Blinking, 7 Reverse
+# and : 22 Bold off, 24 Underline off, 25 Blinking off, 27 Reverse off
+# (bq300-8: :le:,:nd:,:up:,:do:,:dl:,:al: to get under 1024 --esr)
+# (untranslatable capabilities removed to fit entry within 1023 bytes)
+# (sgr removed to fit entry within 1023 bytes)
+# (terminfo-only capabilities suppressed to fit entry within 1023 bytes)
+bq300-8|Bull vt320 full 8 bits 80 columns:\
+ :am:eo:es:hs:km:mi:ms:xn:xo:\
+ :co#80:it#8:li#24:vt#3:ws#80:\
+ :AL=\233%dL:DC=\233%dP:DL=\233%dM:DO=\233%dB:IC=\233%d@:\
+ :K1=\217w:K2=\217u:K3=\217y:K4=\217q:K5=\217s:LE=\233%dD:\
+ :RI=\233%dC:UP=\233%dA:ae=^O:as=^N:bl=^G:cd=\233J:ce=\233K:\
+ :cl=\233H\233J:cm=\233%i%d;%dH:cr=^M:cs=\233%i%d;%dr:\
+ :ct=\2333g:dc=\233P:ds=\2331$}\2332$~\n\2330$}:\
+ :ec=\233%dX:ei=\2334l:fs=\2330$}:ho=\233H:\
+ :i1=\E[63;2"p\E[2h:i2=\2330$}\233?25h\2332l\233H\233J:\
+ :im=\2334h:\
+ :is=\E[?2h\E[?3l\E[?5l\E[?7h\E[?8h\E>\E[?1l\E G\E[?42l\E[?4l:\
+ :k1=\217P:k2=\217Q:k3=\217R:k4=\217S:k6=\23317~:\
+ :k7=\23318~:k8=\23319~:k9=\23320~:kD=\2333~:kI=\2332~:\
+ :kN=\2336~:kP=\2335~:kb=^H:kd=\233B:ke=\233?1l\E>:\
+ :kl=\233D:kr=\233C:ku=\233A:mb=\2335m:md=\2331m:\
+ :me=\2330m\E(B:mr=\2337m:nw=\EE:rc=\E8:sc=\E7:se=\23327m:\
+ :sf=\ED:so=\2337m:sr=\EM:st=\EH:ta=^I:te=\233?7h:\
+ :ti=\233?7l\233?1l\E(B:ts=\2331$}\2332$~:ue=\23324m:\
+ :us=\2334m:vb=\233?5h\233?5l:ve=\233?25h:vi=\233?25l:\
+ :vs=\233?25h:
+bq300-8rv|Bull vt320 8-bit reverse mode 80 columns:\
+ :is=\E[?2h\E[?3l\E[?5h\E[?7h\E[?8h\E>\E[?1l\E G\E[?42l\E[?4l:\
+ :vb=\233?5l\233?5h:\
+ :tc=bq300-8:
+bq300-8w|Bull vt320 8-bit 132 columns:\
+ :co#132:ws#132:\
+ :is=\E[?2h\E[?3h\E[?5l\E[?7h\E[?8h\E>\E[?1l\E G\E[?42l\E[?4l:\
+ :r2=\233?3h:\
+ :tc=bq300-8:
+bq300-w-8rv|Bull vt320 8-bit reverse mode 132 columns:\
+ :co#132:ws#132:\
+ :is=\E[?2h\E[?3h\E[?5h\E[?7h\E[?8h\E>\E[?1l\E G\E[?42l\E[?4l:\
+ :r2=\233?3h:vb=\233?5l\233?5h:\
+ :tc=bq300-8:
+
+# This entry is used for terminals with vt320 emulation mode
+# a 102 keys keyboard (PC scancode !) and following set-up :
+# 8 bit ISO Latin Character Set (ISO 8859-1),
+# 7 bit Control Characters,
+# 80 columns screen.
+bq300-pc|Questar 303 with PC keyboard ISO Latin 1 80 columns:\
+ :%0@:%1@:*6@:@0@:@7=\E[4~:F1=\E[29~:F2=\E[31~:F3@:F4@:F5@:F6@:\
+ :F7@:F8@:F9@:FA@:k1=\E[17~:k2=\E[18~:k3=\E[19~:k4=\E[20~:\
+ :k5=\E[21~:k6=\E[23~:k7=\E[24~:k8=\E[25~:k9=\E[26~:\
+ :k;=\E[28~:kD=\E[3~:kI=\E[2~:kN=\E[6~:kP=\E[5~:kb=^H:\
+ :kh=\E[1~:l1@:l2@:l3@:l4@:\
+ :tc=bq300:
+bq300-pc-rv|Questar 303 with PC keyboard reverse mode 80 columns:\
+ :is=\E[?2h\E[?3l\E[?5h\E[?7h\E[?8h\E>\E[?1l\E F\E[?42l\E[?4l:\
+ :vb=\E[?5l\E[?5h:\
+ :tc=bq300-pc:
+bq300-pc-w|Questar 303 with PC keyboard 132 columns terminal:\
+ :co#132:ws#132:\
+ :is=\E[?2h\E[?3h\E[?5l\E[?7h\E[?8h\E>\E[?1l\E F\E[?42l\E[?4l:\
+ :r2=\E[?3h:\
+ :tc=bq300-pc:
+bq300-pc-w-rv|Questar 303 with PC keyboard reverse mode 132 columns:\
+ :co#132:ws#132:\
+ :is=\E[?2h\E[?3h\E[?5h\E[?7h\E[?8h\E>\E[?1l\E F\E[?42l\E[?4l:\
+ :r2=\E[?3h:vb=\E[?5l\E[?5h:\
+ :tc=bq300-pc:
+# 8 bit ISO Latin Character Set (ISO 8859-1),
+# 8 bit Control Characters,
+# 80 columns screen.
+bq300-8-pc|Q306-8-pc|Questar 303 with PC keyboard in full 8 bits 80 columns:\
+ :%0@:%1@:*6@:@0@:@7=\2334~:F1=\23329~:F2=\23331~:F3@:F4@:F5@:\
+ :F6@:F7@:F8@:F9@:FA@:k1=\23317~:k2=\23318~:k3=\23319~:\
+ :k4=\23320~:k5=\23321~:k6=\23323~:k7=\23324~:k8=\23325~:\
+ :k9=\23326~:k;=\23328~:kD=\2333~:kI=\2332~:kN=\2336~:\
+ :kP=\2335~:kb=^H:kh=\2331~:l1@:l2@:l3@:l4@:\
+ :tc=bq300-8:
+bq300-8-pc-rv|Questar 303 with PC keyboard full 8 bits reverse mode 80 columns:\
+ :is=\E[?2h\E[?3l\E[?5h\E[?7h\E[?8h\E>\E[?1l\E G\E[?42l\E[?4l:\
+ :vb=\E[?5l\E[?5h:\
+ :tc=bq300-8-pc:
+bq300-8-pc-w|Questar 303 with PC keyboard full 8 bits 132 columns:\
+ :co#132:ws#132:\
+ :is=\E[?2h\E[?3h\E[?5l\E[?7h\E[?8h\E>\E[?1l\E G\E[?42l\E[?4l:\
+ :r2=\E[?3h:\
+ :tc=bq300-8-pc:
+bq300-8-pc-w-rv|Questar 303 with PC keyboard full 8 bits reverse 132 columns:\
+ :co#132:ws#132:\
+ :is=\E[?2h\E[?3h\E[?5h\E[?7h\E[?8h\E>\E[?1l\E G\E[?42l\E[?4l:\
+ :r2=\E[?3h:vb=\E[?5l\E[?5h:\
+ :tc=bq300-8-pc:
+
+#======================================================#
+# BULL QUESTAR 310 `VIP 7800/8800' terminals emulation #
+#======================================================#
+
+# normal mode, 8 bits, 80 columns terminal.
+# RES reset : ^[e
+# RIS reset initial state: ^[c
+# BLE bell enable ^[h
+# BLD bell disable ^[g
+# CAMS char. attr. mode set ^[[D
+# CAMR char. attr. mode reset ^[[G
+# CLR clear ^[`
+# KBU keyboard unlock (set) ^[[W
+# KBL keyboard lock (reset) ^[[X
+# CM character mode (async.) ^[k
+# NEP non echoplex mode (by host) ^[l
+# EP echoplex mode (by host) ^[m
+# IM insert mode set ^[[I
+# IM insert mode reset ^[[J
+# RMS roll mode set ^[r
+# RMR roll mode reset ^[q
+# SM78 set mode vip7800 ^[[1q
+# SD scroll up (72 lines) ^[[0s
+# SD scroll down (72 lines) ^[[1s
+# RBM block mode reset ^[[E
+# SLS status line set ^[w
+# SLR status line reset ^[v
+# SLL status line lock ^[O
+# LGS Line-graphic mode set ^[G
+# LGR Line-graphic mode reset ^[F
+# TBC tab clear (at cursor pos.) ^[[g
+# TBI tab initialize ^[[N
+# TBS tab set (at cursor pos.) ^[p
+# PDS print data space ^[[0p
+# PHD print host data ^[[3p
+# PDT print data terminator ^[[<p
+# PRES print adapter reset ^[[2p
+# SSPR multi-part. reset ^[[<>u
+# SSP0 partition 0 set ^[[00u
+# SSP1 partition n format 1 ^[[PnPnSTRINGu
+# SSP2 partition n format 2 ^[[PnPnSTRINGu
+# SSP3 partition n format 3 ^[[PnPnu
+# ATR attribute (visual)
+# blink : ^[sB
+# dim : ^[sL
+# hide (blank) : ^[sH
+# restore : ^[sR
+# inverse video : ^[sI
+# prot. : ^[sP
+# underline : ^[s_
+# reset : ^{
+#
+# This covers the vip7800 and BQ3155-vip7800
+# (untranslatable capabilities removed to fit entry within 1023 bytes)
+# (sgr removed to fit entry within 1023 bytes)
+# (terminfo-only capabilities suppressed to fit entry within 1023 bytes)
+vip|Bull Questar 3155-7800:\
+ :am:es:hs:km:ms:xn:xo:\
+ :co#80:it#8:li#24:vt#3:ws#80:\
+ :ae=\EF:as=\EG:bl=^G:bt=\E[Z:cd=\EJ:ce=\EK:cl=\E`:\
+ :cm=\E[%i%03%03f:cr=^M:ct=\E[N:dc=\E[P:dl=\E[M:do=^J:\
+ :ds=\Ev:ei=\E[J:fs=\EO:ho=\EH:i2=\Er\E[W\E`:ic=\E[I:\
+ :im=\E[I:is=\E[00u\E[<>001001024080024080u\E[01u:\
+ :k1=\E0:k2=\E2:k3=\E6:k4=\E8:k5=\E\072:k6=\E<:k7=\E>:k8=\EP:\
+ :k9=\ER:kD=\E[P:kH=\EH\EA:kI=\E[I:kb=^H:kd=\EB:kh=\EH:\
+ :kl=\ED:kr=\EC:ku=\EA:le=^H:ll=\EH\EA:mb=\EsB:\
+ :me=\EsR\EsU\EF:mh=\EsL:mr=\EsI:nd=\EC:nw=^M:se=\EsR:sf=^J:\
+ :so=\EsI:sr=\EA\EJ\EH\E[L:st=\Ep:ta=^I:ts=\Ew:ue=\EsR:\
+ :up=\EA:us=\Es_:vb=\007\007\007:
+# normal screen, 8 bits, 132 columns terminal.
+vip-w|vip7800-w|Q310-vip-w|Q310-vip-w-am|Questar 3155-vip7800 wide:\
+ :co#132:ws#132:\
+ :is=\E[00u\E[<>001001024132024132u\E[01u:tc=vip:
+vip-H|vip7800-H|Q310-vip-H|Q310-vip-H-am|Questar 3155-vip7800 72 lines:\
+ :li#72:\
+ :is=\E[00u\E[<>001001024080072080u\E[01u:tc=vip:
+vip-Hw|vip7800-Hw|Q310-vip-Hw|Questar 3155-vip7800 wide 72 lines:\
+ :co#132:li#72:ws#132:\
+ :is=\E[00u\E[<>001001024132072132u\E[01u:tc=vip:
+#### Chromatics
+#
+
+# I have put the long strings in :ti:/:te:. Ti sets up a window
+# that is smaller than the screen, and puts up a warning message
+# outside the window. Te erases the warning message, puts the
+# window back to be the whole screen, and puts the cursor at just
+# below the small window. I defined :ve: and :vi: to really turn
+# the cursor on and off, but I have taken this out since I don't
+# like the cursor being turned off when vi exits.
+cg7900|chromatics|chromatics 7900:\
+ :am:\
+ :co#80:li#40:\
+ :al=^A>2:bl=^G:cd=^Al:ce=^A`:cl=^L:cm=\001M%r%d\054%d\054:\
+ :cr=^M:dc=^A<1:dl=^A<2:do=^J:ei=:ho=^\:ic=^A>1:im=:le=^H:\
+ :ll=^A|:nd=^]:se=\001C1\054\001c2\054:sf=^J:\
+ :so=\001C4\054\001c7\054:\
+ :te=\001W0\05440\05485\05448\054\014\001W0\0540\05485\05448\054\001M0\05440\054:\
+ :ti=\001P0\001O1\001R1\001C4\054\001c0\054\014\001M0\05442\054WARNING DOUBLE ENTER ESCAPE and \025\001C1\054\001c2\054\001W0\0540\05479\05439\054:\
+ :uc=\001\001_\001\0:up=^K:
+
+#### Computer Automation
+#
+
+ca22851|computer automation 22851:\
+ :am:\
+ :co#80:li#24:\
+ :bl=^G:cd=^\:ce=^]:cl=\014:cm=\002%i%.%.:cr=^M:do=^J:ho=^^:\
+ :kd=^W:kh=^^:kl=^U:ku=^V:le=^U:nd=^I:sf=^J:up=^V:
+
+#### Cybernex
+#
+
+# This entry has correct padding and the undocumented "ri" capability
+cyb83|xl83|cybernex xl-83:\
+ :am:bs:\
+ :co#80:li#24:\
+ :bl=^G:cd=\020:ce=\017:cl=\014:cm=\027%+ %+ :cr=^M:do=^J:\
+ :ho=^K:kd=^J:kl=^H:kr=^I:ku=^N:le=^H:nd=^I:sf=^J:sr=^N:up=^N:
+# (mdl110: removed obsolete ":ma=^Z^P:" and overridden ":cd=145^NA^W:" -- esr)
+cyb110|mdl110|cybernex mdl-110:\
+ :am:bs:\
+ :co#80:li#24:\
+ :al=\016A\016\035:bl=^G:cd=\016@\026:ce=\016@\026:\
+ :cl=\030:cm=\020%+ %+ :cr=^M:dc=\016A\036:\
+ :dl=\016A\016\036:do=^J:ei=:ho=^Y:ic=\016A\035:im=:le=^H:\
+ :nd=^U:se=^NG:sf=^J:so=^NF:ta=\011:up=^Z:
+
+#### Datapoint
+#
+# Datapoint is gone. They used to be headquartered in Texas.
+# They created ARCnet, an Ethernet competitor that flourished for a while
+# in the early 1980s before 3COM got wise and cut its prices. The service
+# side of Datapoint still lives (1995) in the form of Intelogic Trace.
+#
+
+dp3360|datapoint|datapoint 3360:\
+ :am:bs:\
+ :co#82:li#25:\
+ :bl=^G:cd=^_:ce=^^:cl=^]^_:cr=^M:do=^J:ho=^]:le=^H:nd=^X:\
+ :sf=^J:up=^Z:
+
+# From: Jan Willem Stumpel <jw.stumpel@inter.nl.net>, 11 May 1997
+# The Datapoint 8242 Workstation was sold at least between 1985
+# and 1989. To make the terminal work with this entry, press
+# CONTROL-INT-INT to take the terminal off-line, and type (opt).
+# Set the options AUTO ROLL, ROLL DN, and ESC KBD on, and AUTO
+# CR/LF off. Use control-shift-[] as escape key, control-I as tab,
+# shift-F1 to shift-F5 as F6 to F10 (unshifted F1 to F5 are in
+# fact unusable because the strings sent by the terminal conflict
+# with other keys).
+# The terminal is capable of displaying "box draw" characters.
+# For each graphic character you must send 2 ESC's (\E\E) followed
+# by a control character as follows:
+# character meaning
+# ========= =======
+# ctrl-E top tee
+# ctrl-F right tee
+# ctrl-G bottom tee
+# ctrl-H left tee
+# ctrl-I cross
+# ctrl-J top left corner
+# ctrl-K top right corner
+# ctrl-L bottom left corner
+# ctrl-M bottom right corner
+# ctrl-N horizontal line
+# ctrl-O vertical line
+# Unfortunately this cannot be fitted into the termcap/terminfo
+# description scheme.
+dp8242|datapoint 8242:\
+ :ms:\
+ :co#80:li#25:\
+ :al=\E^T:bl=^G:cd=^W:ce=^V:cl=\025\E\004\027\030:\
+ :cm=\011%r%+\%+\:cr=^M:dl=\E^Z:do=^J:ho=^U:\
+ :i1=\E\014\E\016\0\230\0\317\025\027\030\E\004:\
+ :k1=^G\Ee:k2=^I\Ed:k3=^J\Ec:k4=^J\Eb:k5=^S\Ea:k6=\EO\Ee:\
+ :k7=\EN\Ed:k8=\EM\Ec:k9=\EL\Eb:k;=\EK\Ea:kb=^H:kd=^B:kl=^D:\
+ :kr=^F:ku=^E:le=^H:nw=^M^J:\
+ :r1=\E\014\E\016\0\230\0\317\025\027\030\E\004:\
+ :rp=\E\023%.%.:se=\E^D:sf=^C:so=\E^E:sr=^K:ta=^I:ue=\E^D:\
+ :us=\E^F:ve=^X:vi=^Y:\
+ :..wi=\E\014\E\016%p1%'\0'%+%c%p2%'\0'%+%c%p3%'\0'%+%c%p4%'\0'%+%c\025:
+
+#### DEC terminals (Obsolete types: DECwriter and vt40/42/50)
+#
+# These entries are DEC's official terminfos for its older terminals.
+# Contact Bill Hedberg <hedberg@hannah.enet.dec.com> of Terminal Support
+# Engineering for more information. Updated terminfos and termcaps
+# are kept available at ftp://gatekeeper.dec.com/pub/DEC/termcaps.
+#
+
+gt40|dec gt40:\
+ :bs:os:\
+ :co#72:li#30:\
+ :bl=^G:cr=^M:do=^J:le=^H:
+gt42|dec gt42:\
+ :bs:os:\
+ :co#72:li#40:\
+ :bl=^G:cr=^M:do=^J:le=^H:
+
+vt50|dec vt50:\
+ :bs:\
+ :co#80:li#12:\
+ :bl=^G:cd=\EJ:ce=\EK:cl=\EH\EJ:cr=^M:do=^J:le=^H:nd=\EC:\
+ :sf=^J:ta=^I:up=\EA:
+vt50h|dec vt50h:\
+ :bs:\
+ :co#80:li#12:\
+ :bl=^G:cd=\EJ:ce=\EK:cl=\EH\EJ:cm=\EY%+ %+ :cr=^M:do=^J:\
+ :le=^H:nd=\EC:sf=^J:sr=\EI:ta=^I:up=\EA:
+# (<acsc>/:ae:/:as: capabilities aren't in DEC's official entry -- esr)
+vt52|dec vt52:\
+ :bs:\
+ :co#80:it#8:li#24:\
+ :ac=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~:\
+ :ae=\EG:as=\EF:bl=^G:cd=\EJ:ce=\EK:cl=\EH\EJ:cm=\EY%+ %+ :\
+ :cr=^M:do=\EB:ho=\EH:kb=^H:kd=\EB:kl=\ED:kr=\EC:ku=\EA:\
+ :le=\ED:nd=\EC:nw=^M^J:sf=^J:sr=\EI:ta=^I:up=\EA:
+
+# (vt61: there's a BSD termcap that claims :dl=\EPd:, :al=\EPf.: :kb=^H:)
+vt61|vt-61|vt61.5|dec vt61:\
+ :co#80:li#24:\
+ :bl=^G:cd=\EJ:ce=\EK:cl=\EH\EJ:cm=\EY%+ %+ :cr=\r:do=^J:\
+ :kd=\EB:kl=\ED:kr=\EC:ku=\EA:le=^H:nd=\EC:sf=\n:sr=\EI:ta=^I:\
+ :up=\EA:
+
+# The gigi does standout with red!
+# (gigi: I added <rmam>/<smam> based on the init string, corrected cub1 -- esr)
+gigi|vk100|dec gigi graphics terminal:\
+ :am:bs:xn:\
+ :co#84:li#24:\
+ :DO=\E[%dB:LE=\E[%dD:RA=\E[?7l:RI=\E[%dC:SA=\E[?7h:\
+ :UP=\E[%dA:bl=^G:cd=\E[J:ce=\E[K:cl=\E[H\E[2J:\
+ :cm=\E[%i%d;%dH:cr=^M:do=^J:\
+ :is=\E>\E[?3l\E[?4l\E[?5l\E[?20l\E[?7h\E[?8h:k1=\EOP:\
+ :k2=\EOQ:k3=\EOR:k4=\EOS:kd=\EOB:ke=\E[?1l\E>:kh=\E[H:\
+ :kl=\EOD:kr=\EOC:ks=\E[?1h\E=:ku=\EOA:le=^H:me=\E[m:\
+ :nd=\E[C:se=\E[m:sf=^J:so=\E[7;31m:sr=\EM:ta=^I:ue=\E[m:\
+ :up=\E[A:us=\E[4m:
+
+# DEC PRO-350 console (VT220-style). The 350 was DEC's attempt to produce
+# a PC differentiated from the IBM clones. It was a total, ludicrous,
+# grossly-overpriced failure (among other things, DEC's OS didn't include
+# a format program, so you had to buy pre-formatted floppies from DEC at
+# a hefty premium!).
+pro350|decpro|dec pro console:\
+ :bs:\
+ :co#80:it#8:li#24:\
+ :ac=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~:\
+ :ae=\EG:as=\EF:cd=\EJ:ce=\EK:cl=\EH\EJ:cm=\EY%+ %+ :do=\EB:\
+ :ho=\EH:k0=\EE:k1=\EF:k2=\EG:k3=\EH:k4=\EI:k5=\EJ:k6=\Ei:\
+ :k7=\Ej:kd=\EB:kh=\EH:kl=\ED:kr=\EC:ku=\EA:le=^H:nd=\EC:\
+ :se=\E^N:so=\E^H:sr=\EI:ta=^I:ue=\E^C:up=\EA:us=\E^D:
+
+dw1|decwriter I:\
+ :bs:hc:os:\
+ :co#72:\
+ :bl=^G:cr=^M:do=^J:le=^H:sf=^J:
+dw2|decwriter|dw|decwriter II:\
+ :bs:hc:os:\
+ :co#132:\
+ :bl=^G:cr=^M:do=^J:kb=^H:le=^H:sf=^J:
+# \E(B Use U.S. character set (otherwise # => british pound !)
+# \E[20l Disable "linefeed newline" mode (else puts \r after \n,\f,\v)
+# \E[w 10 char/in pitch
+# \E[1;132 full width horizontal margins
+# \E[2g clear all tab stops
+# \E[z 6 lines/in
+# \E[66t 66 lines/page (for \f)
+# \E[1;66r full vertical page can be printed
+# \E[4g clear vertical tab stops
+# \E> disable alternate keypad mode (so it transmits numbers!)
+# \E[%i%p1%du set tab stop at column %d (origin == 1)
+# (Full syntax is \E[n;n;n;n;n;...;nu where each 'n' is
+# a tab stop)
+#
+# The dw3 does standout with wide characters.
+#
+dw3|la120|decwriter III:\
+ :bs:hc:os:\
+ :co#132:\
+ :bl=^G:cr=^M:do=^J:\
+ :i1=\E(B\E[20l\E[w\E[0;132s\E[2g\E[z\E[66t\E[1;66r\E[4g\E>:\
+ :is=\E[9;17;25;33;41;49;57;65;73;81;89;97;105;113;121;129u\r:\
+ :kb=^H:le=^H:me=\E[w:se=\E[w:sf=^J:so=\E[6w:ta=^I:
+dw4|decwriter IV:\
+ :am:bs:hc:os:\
+ :co#132:\
+ :bl=^G:cr=^M:do=^J:is=\Ec:k0=\EOP:k1=\EOQ:k2=\EOR:k3=\EOS:\
+ :kb=^H:le=^H:sf=^J:ta=^I:
+
+# These aren't official
+ln03|dec ln03 laser printer:\
+ :hc:\
+ :co#80:li#66:\
+ :bl=^G:cr=^M:do=^J:hd=\EK:hu=\EL:me=\E[m:nw=^M^J:se=\E[22m:\
+ :sf=^J:so=\E[1m:ta=^I:ue=\E[24m:us=\E[4m:
+ln03-w|dec ln03 laser printer 132 cols:\
+ :co#132:\
+ :bl=^G:cr=^M:do=^J:kb=^H:kd=^J:kl=^H:nw=^M^J:sf=^J:ta=^I:tc=ln03:
+
+#### Delta Data (dd)
+#
+
+# Untested. The cup sequence is hairy enough that it probably needs work.
+# The idea is ctrl(O), dd(row), dd(col), where dd(x) is x - 2*(x%16) + '9'.
+# There are BSD-derived termcap entries floating around for this puppy
+# that are *certainly* wrong.
+delta|dd5000|delta data 5000:\
+ :am:bs:\
+ :co#80:li#27:\
+ :bl=^G:ce=^NU:cl=^NR:cm=\017%+^P%+^P:dc=^NV:do=^J:ho=^NQ:\
+ :le=^H:nd=^Y:sf=^J:up=^Z:
+
+#### Digital Data Research (ddr)
+#
+
+# (ddr: I added <rmam>/<smam> based on the init string -- esr)
+ddr|rebus3180|ddr3180|Rebus/DDR 3180 vt100 emulator:\
+ :am:bs:xn:\
+ :co#80:it#8:li#24:vt#3:\
+ :RA=\E[7l:SA=\E[7l:cd=50\E[J:ce=3\E[K:cl=50\E[H\E[2J:\
+ :cm=5\E[%i%d;%dH:cs=\E[%i%d;%dr:do=^J:ho=\E[H:\
+ :is=\E[1;24r\E[24;1H:k1=\EOP:k2=\EOQ:k3=\EOR:k4=\EOS:\
+ :kb=^H:kd=\E[B:ke=\E[?1l\E>:kl=\E[D:kr=\E[C:ks=\E[?1h\E=:\
+ :ku=\E[A:le=^H:mb=2\E[5m:md=2\E[1m:me=2\E[m:mr=2\E[7m:\
+ :nd=2\E[C:r1=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h:rc=\E8:\
+ :rf=/usr/share/tabset/vt100:sc=\E7:se=\E[m:sf=5\ED:\
+ :so=\E[7m:sr=5\EM:ta=^I:ue=2\E[m:up=2\E[A:us=2\E[4m:
+
+#### Evans & Sutherland
+#
+
+# Jon Leech <leech@cs.unc.edu> tells us:
+# The ps300 was the Evans & Sutherland Picture System 300, a high
+# performance 3D vector graphics system with a bunch of specialized hardware.
+# Approximate date of release was 1982 (early 80s, anyway), and it had several
+# evolutions including (limited) color versions such as the PS330C. PS300s
+# were effectively obsolete by the late 80s, replaced by raster graphics
+# systems, although specialized applications like molecular modelling
+# hung onto them for a while longer. AFAIK all E&S vector graphics systems
+# are out of production, though of course E&S is very much alive (in 1996).
+# (ps300: changed ":pt@:" to "it@" -- esr)
+#
+ps300|Picture System 300:\
+ :xt:\
+ :it@:\
+ :se@:so@:ue@:us@:tc=vt100:
+
+#### General Electric (ge)
+#
+
+terminet1200|terminet300|tn1200|tn300|terminet|GE terminet 1200:\
+ :bs:hc:os:\
+ :co#120:\
+ :bl=^G:cr=^M:do=^J:sf=^J:
+
+#### Heathkit/Zenith
+#
+
+# Here is a description of the H19 DIP switches:
+#
+# S401
+# 0-3 = baud rate as follows:
+#
+# 3 2 1 0
+# --- --- --- ---
+# 0 0 1 1 300 baud
+# 0 1 0 1 1200 baud
+# 1 0 0 0 2400 baud
+# 1 0 1 0 4800 baud
+# 1 1 0 0 9600 baud
+# 1 1 0 1 19.2K baud
+#
+# 4 = parity (0 = no parity)
+# 5 = even parity (0 = odd parity)
+# 6 = stick parity (0 = normal parity)
+# 7 = full duplex (0 = half duplex)
+#
+# S402
+# 0 = block cursor (0 = underscore cursor)
+# 1 = no key click (0 = keyclick)
+# 2 = wrap at end of line (0 = no wrap)
+# 3 = auto LF on CR (0 = no LF on CR)
+# 4 = auto CR on LF (0 = no CR on LF)
+# 5 = ANSI mode (0 = VT52 mode)
+# 6 = keypad shifted (0 = keypad unshifted)
+# 7 = 50Hz refresh (1 = 60Hz refresh)
+#
+# Factory Default settings are as follows:
+# 7 6 5 4 3 2 1 0
+# S401 1 0 0 0 1 1 0 0
+# S402 0 0 0 0 0 0 0 0
+# (h19: I added <rmam>/<smam> based on the init string;
+# also added empty <acsc> to suppress a tic warning -- esr)
+h19-a|h19a|heath-ansi|heathkit-a|heathkit h19 ansi mode:\
+ :am:bs:mi:ms:\
+ :co#80:it#8:li#24:\
+ :RA=\E[?7l:SA=\E[?7h:ac=:ae=\E[11m:al=\E[1L:as=\E[10m:\
+ :bl=^G:cd=\E[J:ce=\E[K:cl=\E[2J:cm=\E[%i%d;%dH:cr=^M:\
+ :dc=\E[1P:dl=\E[1M:do=\E[1B:ei=\E[4l:ho=\E[H:im=\E[4h:\
+ :is=\E<\E[>1;2;3;4;5;6;7;8;9l\E[m\E[11m\E[?7h:k1=\EOS:\
+ :k2=\EOT:k3=\EOU:k4=\EOV:k5=\EOW:k6=\EOP:k7=\EOQ:k8=\EOR:\
+ :kb=^H:kd=\E[1B:kh=\E[H:kl=\E[1D:kr=\E[1C:ku=\E[1A:l6=blue:\
+ :l7=red:l8=white:le=^H:nd=\E[1C:se=\E[m:sf=^J:so=\E[7m:\
+ :sr=\EM:ta=^I:up=\E[1A:ve=\E[>4l:vs=\E[>4h:
+h19-bs|heathkit w/keypad shifted:\
+ :ke=\Eu:ks=\Et:tc=h19-b:
+h19-us|h19us|h19-smul|heathkit w/keypad shifted/underscore cursor:\
+ :ke=\Eu:ks=\Et:\
+ :tc=h19-u:
+# (h19: merged in :ip: from BSDI hp19-e entry>;
+# also added empty <acsc> to suppress a tic warning --esr)
+# From: Tim Pierce <twp@skepsis.com>, 23 Feb 1998
+# Tim tells us that:
+# I have an old Zenith-19 terminal at home that still gets a lot of use.
+# This terminal suffers from the same famous insert-mode padding lossage
+# that has been acknowledged for the Z29 terminal. Emacs is nearly
+# unusable on this box, since even a half-scroll up or down the window
+# causes flaming terminal death.
+#
+# On the Z19, the only way I have found around this problem is to remove
+# the :al: and :dl: entries entirely. No amount of extra padding will
+# help (I have tried up to 20000). Removing :al=\EL$: and :dl=\EM$:
+# makes Emacs a little slower, but it remains in the land of the living.
+# Big win.
+h19|heath|h19-b|heathkit|heath-19|z19|zenith|heathkit h19:\
+ :am:bs:es:hs:mi:ms:\
+ :co#80:it#8:li#24:\
+ :ac=:ae=\EG:as=\EF:bl=^G:cd=\EJ:ce=\EK:cl=\EE:cm=\EY%+ %+ :\
+ :cr=^M:dc=\EN:do=\EB:ei=\EO:fs=\Ek\Ey5:ho=\EH:im=\E@:\
+ :ip=1.5<1.5/>:k1=\ES:k2=\ET:k3=\EU:k4=\EV:k5=\EW:k6=\EP:\
+ :k7=\EQ:k8=\ER:kb=^H:kd=\EB:kh=\EH:kl=\ED:kr=\EC:ku=\EA:\
+ :l6=blue:l7=red:l8=white:le=^H:nd=\EC:se=\Eq:sf=^J:so=\Ep:\
+ :sr=\EI:ta=^I:ts=\Ej\Ex5\EY8%p1%{32}%+%c\Eo\Eo:up=\EA:\
+ :ve=\Ey4:vs=\Ex4:
+h19-u|heathkit with underscore cursor:\
+ :ve@:vs@:tc=h19-b:
+h19-g|h19g|heathkit w/block cursor:\
+ :ve=\Ex4:tc=h19-b:
+alto-h19|altoh19|altoheath|alto-heath|alto emulating heathkit h19:\
+ :li#60:\
+ :al=\EL:dl=\EM:tc=h19:
+
+# The major problem with the Z29 is that it requires more padding than the Z19.
+#
+# The problem with declaring an H19 to be synonymous with a Z29 is that
+# it needs more padding. It especially loses if a program attempts
+# to put the Z29 into insert mode and insert text at 9600 baud. It
+# even loses worse if the program attempts to insert tabs at 9600
+# baud. Adding padding to text that is inserted loses because in
+# order to make the Z29 not die, one must add so much padding that
+# whenever the program tries to use insert mode, the effective
+# rate is about 110 baud.
+#
+# What program would want to put the terminal into insert mode
+# and shove stuff at it at 9600 baud you ask?
+#
+# Emacs. Emacs seems to want to do the mathematically optimal
+# thing in doing a redisplay rather than the practical thing.
+# When it is about to output a line on top of a line that is
+# already on the screen, instead of just killing to the end of
+# the line and outputting the new line, it compares the old line
+# and the new line and if there are any similarities, it
+# constructs the new line by deleting the text on the old line
+# on the terminal that is already there and then inserting new
+# text into the line to transform it into the new line that is
+# to be displayed. The Z29 does not react kindly to this.
+#
+# But don't cry for too long.... There is a solution. You can make
+# a termcap entry for the Z29 that says the Z29 has no insert mode.
+# Then Emacs cannot use it. "Oh, no, but now inserting into a
+# line will be really slow", you say. Well there is a sort of a
+# solution to that too. There is an insert character option on
+# the Z29 that will insert one character. Unfortunately, it
+# involves putting the terminal into ansi mode, inserting the
+# character, and changing it back to H19 mode. All this takes 12
+# characters. Pretty expensive to insert one character, but it
+# works. Either Emacs doesn't try to use its inserting hack when
+# it's only given an insert character ability or the Z29 doesn't
+# require padding with this (the former is probably more likely,
+# but I haven't checked it out).
+# (z29: added empty <acsc> to suppress a tic warning, merged in
+# status line capabilities from BRL entry --esr)
+z29|zenith29|z29b|zenith z29b:\
+ :am:bs:es:hs:mi:ms:pt:\
+ :co#80:kn#10:li#24:\
+ :ac=:ae=\EF:al=1\EL:as=\EG:bc=\ED:bl=^G:bt=\E-:cd=\EJ:ce=\EK:\
+ :cl=\EE:cm=\EY%+ %+ :cr=^M:dc=\EN:dl=1\EM:do=\EB:ds=\Ey1:\
+ :ei=\EO:fs=\Ek\Ey5:ho=\EH:ic=\E<\E[1@\E[?2h:im=\E@:\
+ :is=\E<\E[?2h\Ev:k0=\E~:k1=\ES:k2=\ET:k3=\EU:k4=\EV:k5=\EW:\
+ :k6=\EP:k7=\EQ:k8=\ER:k9=\E0I:kb=^H:kd=\EB:kh=\EH:kl=\ED:\
+ :kr=\EC:ku=\EA:l0=home:le=^H:nd=\EC:se=\Eq:sf=\n:so=\Ep:\
+ :sr=2\EI:ta=^I:ts=\Ej\Ex5\Ex1\EY8%+ \Eo:ue=\Es0:up=\EA:\
+ :us=\Es8:ve=\Ey4:vs=\Ex4:
+# z29 in ansi mode. Assumes that the cursor is in the correct state, and that
+# the world is stable. <rs1> causes the terminal to be reset to the state
+# indicated by the name. kc -> key click, nkc -> no key click, uc -> underscore
+# cursor, bc -> block cursor.
+# From: Mike Meyers
+# (z29a: replaced nonexistent :if=/usr/share/tabset/zenith29: befause :st:
+# looks vt100-compatible -- esr)
+z29a|z29a-kc-bc|h29a-kc-bc|heath/zenith 29 in ansi mode:\
+ :am:bs:es:hs:mi:ms:pt:\
+ :co#80:it#8:kn#10:li#24:\
+ :AL=\E[%dL:DC=\E[%dP:DL=\E[%dM:DO=\E[%dB:LE=\E[%dD:\
+ :RI=\E[%dC:UP=\E[%dA:bc=\ED:bl=^G:cd=\E[J:ce=\E[K:cl=\E[2J:\
+ :cm=\E[%i%d;%dH:cr=^M:cs=\E[%i%d;%dr:ct=\E[3g:dc=\E[1P:\
+ :do=^J:ds=\E[>1l:fs=\E[u\E[>5l:ho=\E[H:\
+ :if=/usr/share/tabset/vt100:k0=\E[~:k1=\EOS:k2=\EOT:\
+ :k3=\EOU:k4=\EOV:k5=\EOW:k6=\EOP:k7=\EOQ:k8=\EOR:k9=\EOX:\
+ :kC=\E[J:kS=\E[J:kb=^H:kd=\EOB:kh=\E[H:kl=\EOD:kr=\EOC:\
+ :ku=\EOA:l0=help:le=^H:mb=\E[5m:md=\E[2m:me=\E[m:mh=\E[2m:\
+ :mr=\E[7m:nd=\E[C:nw=^M\ED:ps=\E#7:\
+ :r1=\E<\E[1;24r\E[24;1H\E[?7h\E[>4h\E[>1;2;3;5;6;7;8;9l\E[m\E[11m:\
+ :rc=\E[r:sc=\E[s:se=\E[m:sf=\ED:so=\E[7;2m:sr=\EM:st=\EH:\
+ :ta=^I:te=\E[?7h:ti=\E[?7l:\
+ :ts=\E[s\E[>5;1h\E[25;%i%dH\E[1K:ue=\E[m:up=\E[A:\
+ :us=\E[4m:
+z29a-kc-uc|h29a-kc-uc|z29 ansi mode with keyckick and underscore cursor:\
+ :r1=\E<\E[1;24r\E[24;1H\E[?7h\E[>1;2;3;4;5;6;7;8;9l\E[m\E[11m:\
+ :tc=z29a:
+z29a-nkc-bc|h29a-nkc-bc|z29 ansi mode with block cursor and no keyclick:\
+ :r1=\E<\E[1;24r\E[24;1H\E[?7h\E[>2;4h\E[>1;3;5;6;7;8;9l\E[m\E[11m:\
+ :tc=z29a:
+z29a-nkc-uc|h29a-nkc-uc|z29 ansi mode with underscore cursor and no keyclick:\
+ :r1=\E<\E[1;24r\E[24;1H\E[?7h\E[>2h\E[>1;3;4;5;6;7;8;9l\E[m\E[11m:\
+ :tc=z29a:
+# From: Jeff Bartig <jeffb@dont.doit.wisc.edu> 31 Mar 1995
+z39-a|z39a|zenith39-a|zenith39-ansi|Zenith 39 in ANSI mode:\
+ :5i:am:es:hs:mi:ms:xo:\
+ :co#80:li#24:\
+ :%1=\E[~:AL=\E[%dL:DC=\E[%dP:DL=\E[%dM:DO=\E[%dB:K1=\EOw:\
+ :K2=\EOy:K3=\EOu:K4=\EOq:K5=\EOs:LE=\E[%dD:RI=\E[%dC:\
+ :UP=\E[%dA:ac=0a``aaffggjjkkllmmnnooqqssttuuvvwwxx~~:\
+ :ae=\E(B:al=\E[1L:as=\E(0:bl=^G:bt=\E[1Z:cb=\E[1K:cd=\E[0J:\
+ :ce=\E[0K:cl=\E[2J\E[H:cm=\E[%i%d;%dH:cr=^M:\
+ :cs=\E[%i%d;%dr:ct=\E[3g:dc=\E[1P:dl=\E[1M:do=\E[B:\
+ :ds=\E[>1l:ei=\E[4l:fs=\E[u:ho=\E[H:im=\E[4h:\
+ :is=\E<\E[>1;3;5;6;7l\E[0m\E[2J:k1=\EOS:k2=\EOT:k3=\EOU:\
+ :k4=\EOV:k5=\EOW:k6=\EOP:k7=\EOQ:k8=\EOR:k9=\EOX:kS=\E[J:\
+ :kb=^H:kd=\E[B:ke=\E[>7l:kh=\E[H:kl=\E[D:kr=\E[C:ks=\E[>7h:\
+ :ku=\E[A:le=^H:ll=\E[24;1H:mb=\E[5m:md=\E[1m:me=\E[0m:\
+ :mh=\E[2m:mr=\E[7m:nd=\E[C:pf=\E[4i:po=\E[5i:\
+ :ps=\E[?19h\E[i:r2=\E<\Ec\0:rc=\E[u:sc=\E[s:se=\E[0m:\
+ :sf=^J:so=\E[7m:st=\EH:ta=^I:ts=\E[s\E[>1h\E[25;%i%p1%dH:\
+ :ue=\E[0m:up=\E[A:us=\E[4m:ve=\E[>5l:vi=\E[>5h:
+
+# From: Brad Brahms <Brahms@USC-ECLC>
+z100|h100|z110|z-100|h-100|heath/zenith z-100 pc with color monitor:\
+ :ve=\Ey4\Em70:vs=\Ex4\Em71:\
+ :tc=z100bw:
+# (z100bw: removed obsolete ":kn#10:", added empty <acsc> -- esr)
+z100bw|h100bw|z110bw|z-100bw|h-100bw|heath/zenith z-100 pc:\
+ :bs:mi:ms:pt:\
+ :co#80:it#8:kn#10:li#24:\
+ :ac=:ae=\EG:al=5*\EL:as=\EF:cd=\EJ:ce=\EK:cl=5*\EE:\
+ :cm=1*\EY%+ %+ :dc=1*\EN:dl=5*\EM:do=\EB:ei=\EO:ho=\EH:\
+ :im=\E@:k0=\EJ:k1=\ES:k2=\ET:k3=\EU:k4=\EV:k5=\EW:k6=\EP:\
+ :k7=\EQ:k8=\ER:k9=\EOI:kb=^H:kd=\EB:kh=\EH:kl=\ED:kr=\EC:\
+ :ku=\EA:le=^H:nd=\EC:se=\Eq:so=\Ep:sr=\EI:ta=^I:up=\EA:\
+ :ve=\Ey4:vs=\Ex4:
+p19|h19-b with il1/dl1:\
+ :al=2*\EL:dl=2*\EM:tc=h19-b:
+# From: <ucscc!B.fiatlux@ucbvax.berkeley.edu>
+# (ztx: removed duplicate :sr: -- esr)
+ztx|ztx11|zt-1|htx11|ztx-1-a|ztx-10 or 11:\
+ :am:bs:es:hs:\
+ :co#80:it#8:li#24:\
+ :al=\EL:cd=\EJ:ce=\EK:cl=\EE:cm=\EY%+ %+ :dl=\EM:do=^J:\
+ :ds=\Ey1:fs=\Ek\Ey5:ho=\EH:\
+ :is=\Ej\EH\Eq\Ek\Ev\Ey1\Ey5\EG\Ey8\Ey9\Ey>:k0=\ES:\
+ :k1=\EB:k2=\EU:k3=\EV:k4=\EW:k5=\EP:k6=\EQ:k7=\ER:kb=^H:\
+ :kd=\EB:kl=\ED:kr=\EC:ku=\EA:le=^H:nd=\EC:se=\Eq:so=\Es5:\
+ :sr=\EI:ta=^I:ts=\Ej\Ex5\Ex1\EY8%+ \Eo:ue=\Eq:up=\EA:\
+ :us=\Es2:
+
+#### IMS International (ims)
+#
+# There was a company called IMS International located in Carson City,
+# Nevada, that flourished from the mid-70s to mid-80s. They made S-100
+# bus/Z80 hardware and a line of terminals called Ultimas.
+#
+
+# From: Erik Fair <fair@ucbarpa.berkeley.edu> Sun Oct 27 07:21:05 1985
+ims950-b|bare ims950 no init string:\
+ :is@:tc=ims950:
+# (ims950: removed obsolete ":ko@:" -- esr)
+ims950|ims televideo 950 emulation:\
+ :xn@:\
+ :k0@:k1@:k2@:k3@:k4@:k5@:k6@:k7@:k8@:k9@:kb@:kd@:kh@:kl@:kr@:ku@:vb@:tc=tvi950:
+# (ims950-rv: removed obsolete ":ko@:" -- esr)
+ims950-rv|ims tvi950 rev video:\
+ :xn@:\
+ :k0@:k1@:k2@:k3@:k4@:k5@:k6@:k7@:k8@:k9@:kb@:kd@:kh@:kl@:kr@:ku@:vb@:tc=tvi950-rv:
+ims-ansi|ultima2|ultimaII|IMS Ultima II:\
+ :am:bs:\
+ :co#80:it#8:li#24:\
+ :cd=\E[0J:ce=\E[0K:cl=\E[H\E[2J:cm=\E[%i%2;%2H:do=\ED:\
+ :if=/usr/share/tabset/vt100:\
+ :is=\E[m\E[>14l\E[?1;?5;20l\E>\E[1m\r:kd=\E[B:kh=\E[H:\
+ :kl=\E[D:kr=\E[C:ku=\E[A:le=^H:me=\E[m:se=\E[m\E[1m:\
+ :so=\E[7m:sr=\EM:ta=^I:ue=\E[m\E[1m:up=\EM:us=\E[4m:
+
+#### Intertec Data Systems
+#
+# I think this company is long dead as of 1995. They made an early CP/M
+# micro called the "Intertec Superbrain" that was moderately popular,
+# then sank out of sight.
+#
+
+superbrain|intertec superbrain:\
+ :am:bs:bw:\
+ :co#80:li#24:\
+ :bc=^U:bl=^G:cd=\E~k<10*>:ce=\E~K:cl=\014:cm=\EY%+ %+ :\
+ :cr=^M:do=^J:kd=^J:kl=^U:kr=^F:ku=^K:le=^H:nd=^F:sf=^J:ta=^I:\
+ :te=^L:ti=^L:up=^K:
+# (intertube: a Gould entry via BRL asserted smul=\E0@$<200/>,
+# rmul=\E0A$<200/>; my guess is the highlight letter is bit-coded like an ADM,
+# and the reverse is actually true. Try it. -- esr)
+intertube|intertec|Intertec InterTube:\
+ :am:bs:\
+ :co#80:li#25:\
+ :bl=^G:cl=^L:cm=\EY%+ %+ :cr=^M:do=^J:ho=^A:le=^H:nd=^F:\
+ :se=\E0@:sf=^J:so=\E0P:up=^Z:
+# The intertube 2 has the "full duplex" problem like the tek 4025: if you
+# are typing and a command comes in, the keystrokes you type get interspersed
+# with the command and it messes up
+intertube2|intertec data systems intertube 2:\
+ :bs:\
+ :ce=\EK:ch=\020%+^J:cm=\016%.\020%+^J:cv=\013%.:\
+ :ll=^K^X\r:\
+ :tc=intertube:
+
+#### Ithaca Intersystems
+#
+# This company made S100-bus personal computers long ago in the pre-IBM-PC
+# past. They used to be reachable at:
+#
+# Ithaca Intersystems
+# 1650 Hanshaw Road
+# Ithaca, New York 14850
+#
+# However, the outfit went bankrupt years ago.
+#
+
+# The Graphos III was a color graphics terminal from Ithaca Intersystems.
+# These entries were written (originally in termcap syntax) by Brian Yandell
+# <yandell@stat.wisc.edu> and Mike Meyer <mikem@stat.wisc.edu> at the
+# University of Wisconsin.
+
+# (graphos: removed obsolete and syntactically incorrect :kn=4:,
+# removed :if=/usr/share/tabset/init.graphos: and
+# <rf=/usr/share/tabset/init.graphos> no such file & no :st: -- esr)
+graphos|graphos III:\
+ :am:mi:\
+ :co#80:it#8:li#24:\
+ :AL=\E[%dL:DL=\E[%dM:DO=\E[%dB:LE=\E[%dD:RI=\E[%dC:\
+ :UP=\E[%dA:al=\E[L:cd=\E[J:ce=\E[K:cl=\E[H\E[2J:\
+ :cm=\E[%i%d;%dH:cr=^M:dc=\E[P:dl=\E[M:dm=\E[4h:do=\E[B:\
+ :ed=\E[4l:ei=\E[4l:ho=\E[H:im=\E[4h:k1=\EOP:k2=\EOQ:\
+ :k3=\EOR:k4=\EOS:kb=^H:kd=\E[B:kh=\E[H:kl=\E[D:kr=\E[C:\
+ :ku=\E[A:le=^H:me=\E[m:nd=\E[C:nw=^M\ED:rc=\E8:sc=\E7:\
+ :se=\E[m:sf=\ED:so=\E[7m:sr=\EM:ta=^I:up=\E[A:\
+ :ve=\Ez56;2;0;0z\Ez73z\Ez4;1;1z:\
+ :vs=\Ez4;2;1z\Ez56;2;80;24z:
+graphos-30|graphos III with 30 lines:\
+ :li#30:\
+ :vs=\Ez4;2;1z\Ez56;2;80;30z:tc=graphos:
+
+#### Modgraph
+#
+# These people used to be reachable at:
+#
+# Modgraph, Inc
+# 1393 Main Street,
+# Waltham, MA 02154
+# Vox: (617)-890-5796.
+#
+# However, if you call that number today you'll get an insurance company.
+# I have mail from "Michael Berman, V.P. Sales, Modgraph" dated
+# 26 Feb 1997 that says:
+#
+# Modgraph GX-1000, replaced by GX-2000. Both are out of production, have been
+# for ~7 years. Modgraph still in business. Products are rugged laptop and
+# portable PC's and specialized CRT and LCD monitors (rugged, rack-mount
+# panel-mount etc). I can be emailed at sonfour@aol.com
+#
+# Peter D. Smith <pdsmith@nbbn.com> notes that his modgraph manual was
+# dated 1984. According to the manual, it featured Tek 4010/4014
+# graphics and DEC VT100/VT52 + ADM-3A emulation with a VT220-style keyboard.
+#
+
+modgraph|mod24|modgraph terminal emulating vt100:\
+ :xn@:\
+ :co#80:li#24:\
+ :is=\E\1369;0s\E\1367;1s\E[3g\E\13611;9s\E\13611;17s\E\13611;25s\E\13611;33s\E\13611;41s\E\13611;49s\E\13611;57s\E\13611;65s\E\13611;73s\E\13611;81s\E\13611;89s:\
+ :rf@:sr=5\EM\E[K:vs=\E\1369;0s\E\1367;1s:\
+ :tc=vt100:
+# The GX-1000 manual is dated 1984. This looks rather like a VT-52.
+modgraph2|modgraph gx-1000 80x24 with keypad not enabled:\
+ :am:da:db:\
+ :co#80:it#8:li#24:\
+ :cd=50\EJ:ce=3\EK:cl=50\EH\EJ:cm=5\EY%+ %+ :\
+ :is=\E<\E\1365;2s\E\1367;1s\E[3g\E\13611;9s\E\13611;17s\E\13611;25s\E\13611;33s\E\13611;41s\E\13611;49s\E\13611;57s\E\13611;65s\E\13611;73s\E\13611;81s\E\13611;89s\E\13612;0s\E\13614;2s\E\13615;9s\E\13625;1s\E\1369;1s\E\13627;1:\
+ :le=^H:nd=2\EC:sr=5\EI:ta=^I:up=2\EA:
+#
+# Modgraph from Nancy L. Cider <nancyc@brl-tbd>
+# BUG NOTE from Barbara E. Ringers <barb@brl-tbd>:
+# If we set TERM=vt100, and set the Modgraph screen to 24 lines, setting a
+# mark and using delete-to-killbuffer work correctly. However, we would
+# like normal mode of operation to be using a Modgraph with 48 line setting.
+# If we set TERM=mod (which is a valid entry in termcap with 48 lines)
+# the setting mark and delete-to-killbuffer results in the deletion of only
+# the line the mark is set on.
+# We've discovered that the delete-to-killbuffer works correctly
+# with TERM=mod and screen set to 80x48 but it's not obvious. Only
+# the first line disappears but a ctrl-l shows that it did work
+# correctly.
+modgraph48|mod|Modgraph w/48 lines:\
+ :am:bs:pt:xn:\
+ :co#80:it#8:li#48:vt#3:\
+ :bl=^G:cd=\E[J:ce=\E[K:cl=\E[;H\E[2J:cm=\E[%i%d;%dH:cr=^M:\
+ :cs=\E[%i%d;%dr:do=^J:ho=\E[H:\
+ :is=\E<\E[1;48r\E[0q\E[3;4q\E=\E[?1h:k1=\EOP:k2=\EOQ:\
+ :k3=\EOR:k4=\EOS:kb=^H:kd=\EOB:ke=\E[?1l\E>:kl=\EOD:\
+ :kr=\EOC:ks=\E[?1h\E=:ku=\EOA:le=^H:mb=\E[5m:md=\E[1m:\
+ :me=\E[m:mr=\E[7m:nd=\E[C:nl=^J:r1=\E=\E[0q\E>:rc=\E8:\
+ :sc=\E7:se=\E[m:so=\E[7m:sr=\EM:ta=^I:ue=\E[m:up=\E[A:\
+ :us=\E[4m:vb=\E[?5h\E[0q\E[1;2q\E[?5l\E[0q\E[4;3q:
+
+#### Morrow Designs
+#
+# This was George Morrow's company. They started in the late 1970s making
+# S100-bus machines. They used to be reachable at:
+#
+# Morrow
+# 600 McCormick St.
+# San Leandro, CA 94577
+#
+# but they're long gone now (1995).
+#
+
+# The mt70 terminal was shipped with the Morrow MD-3 microcomputer.
+# Jeff's specimen was dated June 1984.
+# From: Jeff Wieland <wieland@acn.purdue.edu> 24 Feb 1995
+mt70|mt-70|Morrow MD-70; native Morrow mode:\
+ :am:mi:ms:xo:\
+ :co#80:it#8:li#24:\
+ :%1=^AO\r:F1=^A`\r:F2=^Aa\r:F3=^Ab\r:F4=^Ac\r:F5=^Ad\r:\
+ :F6=^Ae\r:F7=^Af\r:F8=^Ag\r:F9=^Ah\r:FA=^Ai\r:\
+ :ac=+z\054{-x.yOi`|jGkFlEmDnHqJtLuKvNwMxI:ae=\E%:\
+ :al=\EE:as=\E$:bl=^G:bt=\EI:cd=\EY:ce=\ET:cl=^Z:\
+ :cm=\E=%+ %+ :cr=^M:ct=\E0:dc=\EW:dl=\ER:do=^J:ei=:ho=^^:\
+ :i1=\E"2\EG0\E]:ic=\EQ:im=:k1=^A@\r:k2=^AA\r:k3=^AB\r:\
+ :k4=^AC\r:k5=^AD\r:k6=^AE\r:k7=^AF\r:k8=^AG\r:k9=^AH\r:\
+ :k;=^AI\r:kB=^A^Z\r:kC=^An\r:kD=\177:kb=^H:kd=^AK\r:\
+ :kh=^AN\r:kl=^AL\r:kr=^AM\r:ku=^AJ\r:le=^H:mh=\EG2:mk@:\
+ :nd=^L:nw=^_:sf=^J:ta=^I:te=:ti=\E"2\EG0\E]:up=^K:us=\EG1:\
+ :vb=\EK1\EK0:ve=\E"2:vi=\E"0:\
+ :tc=adm+sgr:
+
+#### Motorola
+#
+
+# Motorola EXORterm 155 from {decvax, ihnp4}!philabs!sbcs!megad!seth via BRL
+# (Seth H Zirin)
+ex155|Motorola Exorterm 155:\
+ :am:bs:bw:\
+ :co#80:kn#5:li#24:\
+ :bt=\E[:cd=\ET:ce=\EU:cl=\EX:cm=\EE%+ %+ :do=\EB:ho=\E@:\
+ :kB=\E[:kC=\EX:kE=\EU:kS=\ET:kb=^H:kd=^J:kh=\E@:kl=^H:kr=^L:\
+ :ku=^K:nd=\ED:se=\Ec\ED:so=\Eb\ED:ta=\EZ:ue=\Eg\ED:\
+ :us=\Ef\ED:
+
+#### Omron
+#
+# This company is still around in 1995, manufacturing point-of-sale systems.
+
+omron|Omron 8025AG:\
+ :am:bs:da:db:\
+ :co#80:li#24:\
+ :al=\EL:bl=^G:cd=\ER:ce=\EK:cl=\EJ:cr=^M:dc=\EP:dl=\EM:do=^J:\
+ :ho=\EH:le=^H:nd=\EC:se=\E4:sf=\ES:so=\Ef:sr=\ET:up=\EA:\
+ :vs=\EN:
+
+#### Ramtek
+#
+# Ramtek was a vendor of high-end graphics terminals around 1979-1983; they
+# were competition for things like the Tektronics 4025.
+#
+
+# Ramtek 6221 from BRL, probably by Doug Gwyn
+# The following SET-UP modes are assumed for normal operation:
+# UNDERLINE_CURSOR ANSI_MODE AUTO_XON/XOFF_ON
+# NEWLINE_OFF 80_COLUMNS
+# Other SET-UP modes may be set for operator convenience or communication
+# requirements; I recommend
+# SMOOTH_SCROLL AUTO_REPEAT_ON 3_#_SHIFTED WRAP_AROUND_ON
+# Hardware tabs are assumed to be every 8 columns; they can be set up by the
+# "reset", "tset", or "tabs" utilities (use rt6221-w, 160 columns, for this).
+# Note that the Control-E key is useless on this brain-damaged terminal. No
+# delays are specified; use "stty ixon -ixany" to enable DC3/DC1 flow control!
+rt6221|Ramtek 6221 80x24:\
+ :bs:ms:pt:xo:\
+ :co#80:it#8:kn#4:li#24:vt#3:\
+ :DO=\E[%dB:LE=\E[%dD:RI=\E[%dC:UP=\E[%dA:ac=:ae=^O:as=^N:\
+ :bl=^G:cd=\E[J:ce=\E[K:cl=\E[1;1H\E[J:cm=\E[%i%d;%dH:\
+ :cr=^M:cs=\E[%i%d;%dr:ct=\E[3g:do=^K:ho=\E[1;1H:is=\E)0:\
+ :k0=\EOP:k1=\EOQ:k2=\EOR:k3=\EOS:kb=^H:kd=\E[B:ke=\E>:\
+ :kl=\E[D:kr=\E[C:ks=\E=:ku=\E[A:l0=PF1:l1=PF2:l2=PF3:l3=PF4:\
+ :le=^H:ll=\E[24;1H:mb=\E[5m:md=\E[1m:me=\E[m:mr=\E[7m:\
+ :nd=\E[C:nw=\EE:\
+ :r1=\E[1w\E[>37m\E[>39m\E[1v\E[20l\E[?3l\E[?6l\E[>5h\E[>6h\E[>7h\E[>8l\E[>9h\E[>10l\E[1;24r\E[m\E[q\E(B\017\E)0\E#5\E>:\
+ :rc=\E8:sc=\E7:se=\E[m:sf=^J:so=\E[7m:sr=\EM:st=\EH:ta=^I:\
+ :ue=\E[m:up=\EM:us=\E[4m:ve=\E[>5h\E[>9h:vi=\E[>5l:\
+ :vs=\E[>7h\E[>9l:
+# [TO DO: Check out: short forms of ho/cl and ll; reset (\Ec)].
+rt6221-w|Ramtek 6221 160x48:\
+ :co#160:li#48:\
+ :ll=\E[48;1H:tc=rt6221:
+
+#### RCA
+#
+
+# RCA VP3301 or VP3501
+rca|rca vp3301/vp3501:\
+ :bs:\
+ :co#40:li#24:\
+ :cl=^L:cm=\EY%+ %+ :ho=^Z:nd=^U:se=\E\ES0:so=\E\ES1:up=^K:
+
+
+#### Selanar
+#
+
+# Selanar HiREZ-100 from BRL, probably by Doug Gwyn
+# The following SET-UP modes are assumed for normal operation:
+# SET_DEFAULT_TABS 48_LINES 80_COLUMNS
+# ONLINE ANSI CURSOR_VISIBLE
+# VT102_AUTO_WRAP_ON VT102_NEWLINE_OFF VT102_MONITOR_MODE_OFF
+# LOCAL_ECHO_OFF US_CHAR_SET WPS_TERMINAL_DISABLED
+# CPU_AUTO_XON/XOFF_ENABLED PRINT_FULL_SCREEN
+# For use with graphics software, all graphics modes should be set to factory
+# default. Other SET-UP modes may be set for operator convenience or
+# communication requirements. No delays are specified; use "stty ixon -ixany"
+# to enable DC3/DC1 flow control!
+# I commented out the scrolling capabilities since they are too slow.
+hirez100|Selanar HiREZ-100:\
+ :bs:mi:ms:pt:xo:\
+ :co#80:it#8:kn#4:li#48:vt#3:\
+ :AL=\E[%dL:DC=\E[%dP:DL=\E[%dM:DO=\E[%dB:LE=\E[%dD:\
+ :RI=\E[%dC:UP=\E[%dA:ac=:ae=^O:al=\E[L:as=^N:bl=^G:cd=\E[J:\
+ :ce=\E[K:cl=\E[H\E[J:cm=\E[%i%d;%dH:cr=^M:ct=\E[3g:\
+ :dc=\E[P:dl=\E[M:do=^J:ho=\E[H:is=\E<\E)0:k0=\EOP:k1=\EOQ:\
+ :k2=\EOR:k3=\EOS:kb=^H:kd=\EOB:ke=\E[?1l\E>:kl=\EOD:\
+ :kr=\EOC:ks=\E[?1h\E=:ku=\EOA:l0=PF1:l1=PF2:l2=PF3:l3=PF4:\
+ :le=^H:ll=\E[48H:mb=\E[5m:md=\E[1m:me=\E[m:mr=\E[7m:\
+ :nd=\E[C:nw=\EE:pf=\E[4i\E[?4i:po=\E[?5i\E[5i:ps=\E[i:\
+ :r1=\030\E2\E<\E[4i\E[?4i\E[12h\E[2;4;20l\E[?0;7h\E[?1;3;6;19l\E[r\E[m\E(B\017\E)0\E>:\
+ :rc=\E8:sc=\E7:se=\E[m:so=\E[7m:st=\EH:ta=^I:ue=\E[m:up=\EM:\
+ :us=\E[4m:
+hirez100-w|Selanar HiREZ-100 in 132-column mode:\
+ :co#132:tc=hirez100:
+
+#### Signetics
+#
+
+# From University of Wisconsin
+vsc|Signetics Vsc Video driver by RMC:\
+ :am:ms:\
+ :co#80:it#8:li#26:\
+ :ce=\E[K:cl=50\E[;H\E[2J:cm=\E[%i%d;%dH:cr=^M:do=^J:\
+ :ho=\E[H:kb=^H:kd=^J:kl=^H:le=^H:me=^_\041:mr=^_ :nd=\E[C:\
+ :nw=^M^J:se=^_\041:sf=^J:so=^_ :ta=^I:ue=^_#:up=\E[A:us=^_":
+
+#### Soroc
+#
+# Alan Frisbie <frisbie@flying-disk.com> writes:
+#
+# As you may recall, the Soroc logo consisted of their name,
+# with the letter "S" superimposed over an odd design. This
+# consisted of a circle with a slightly smaller 15 degree (approx.)
+# wedge with rounded corners inside it. The color was sort of
+# a metallic gold/yellow.
+#
+# If I had been more of a beer drinker it might have been obvious
+# to me, but it took a clue from their service department to make
+# me exclaim, "Of course!" The circular object was the top of
+# a beer can (the old removable pop-top style) and "Soroc" was an
+# anagram for "Coors".
+#
+# I can just imagine the founders of the company sitting around
+# one evening, tossing back a few and trying to decide what to
+# call their new company and what to use for a logo.
+#
+
+# (soroc120: removed obsolete ":ma=^K^P^R^L^L :" -- esr)
+soroc120|iq120|soroc|soroc iq120:\
+ :cd=\EY:ce=\ET:cl=\E*:do=^J:kd=^J:kl=^H:kr=^L:ku=^K:tc=adm3a:
+soroc140|iq140|soroc iq140:\
+ :am:bs:mi:\
+ :co#80:li#24:\
+ :al=\Ee:bl=^G:bt=\EI:cd=\Ey:ce=\Et:cl=\E+:cm=\E=%+ %+ :\
+ :cr=^M:dc=\Ew:dl=\Er:do=^J:ei=\E8:ho=^^:im=\E9:k0=^A0\r:\
+ :k1=^A@\r:k2=^AA\r:k3=^AB\r:k4=^AC\r:k5=^AD\r:k6=^AE\r:\
+ :k7=^AF\r:k8=^AG\r:k9=^AH\r:kb=^H:kh=^^:kr=^L:ku=^K:le=^H:\
+ :ll=^^^K:nd=^L:se=\E\177:sf=^J:so=\E\177:ue=\E^A:up=^K:\
+ :us=\E^A:
+
+#### Synertek
+#
+# Bob Manson <manson@pattyr.acs.ohio-state.edu> writes (28 Apr 1995):
+#
+# Synertek used to make ICs, various 6502-based single-board process
+# control and hobbyist computers, and assorted peripherals including a
+# series of small inexpensive terminals (I think they were one of the
+# first to have a "terminal-on-a-keyboard", where the terminal itself
+# was only slightly larger than the keyboard).
+#
+# They apparently had a KTM-1 model, which I've never seen. The KTM-2/40
+# was a 40x24 terminal that could connect to a standard TV through a
+# video modulator. The KTM-2/80 was the 80-column version (the 2/40
+# could be upgraded to the 2/80 by adding 2 2114 SRAMs and a new ROM).
+# I have a KTM-2/80 still in working order. The KTM-2s had fully
+# socketed parts, used 2 6507s, a 6532 as keyboard scanner, a program
+# ROM and 2 ROMs as character generators. They were incredibly simple,
+# and I've never had any problems with mine (witness the fact that mine
+# was made in 1981 and is still working great... I've blown the video
+# output transistor a couple of times, but it's a 2N2222 :-)
+#
+# The KTM-3 (which is what is listed in the terminfo file) was their
+# attempt at putting a KTM-2 in a box (and some models came with a
+# CRT). It wasn't much different from the KTM-2 hardware-wise, but the
+# control and escape sequences are very different. The KTM-3 was always
+# real broken, at least according to the folks I've talked to about it.
+#
+# The padding in the entry is probably off--these terminals were very
+# slow (it takes like 100ms for the KTM-2 to clear the screen...) And
+# anyone with any sanity replaced the ROMs with something that provided
+# a reasonable subset of VT100 functionality, since the usual ROMs were
+# obviously very primitive... oh, you could get an upgraded ROM from
+# Synertek for some incredible amount of money, but what hacker with an
+# EPROM burner would do that? :)
+#
+# Sorry I don't have any contact info; I believe they were located in
+# Sunnyvale, and I'm fairly sure they are still manufacturing ICs
+# (they've gone to ASICs and FPGAs), but I doubt they're in the computer
+# business these days.
+#
+
+# Tested, seems to work fine with vi.
+synertek|ktm|synertek380|synertek ktm 3/80 tubeless terminal:\
+ :am:\
+ :co#80:li#24:\
+ :cd=\EJ:ce=\EK:cl=^Z:cm=\E=%+ %+ :le=^H:nd=^L:up=^K:
+
+#### Tab Office Products
+#
+# TAB Products Co. - Palo Alto, California
+# Electronic Office Products,
+# 1451 California Avenue 94304
+#
+# I think they're out of business.
+#
+
+# The tab 132 uses xon/xoff, so no padding needed.
+# :ks:/:ke: have nothing to do with arrow keys.
+# :is: sets 80 col mode, normal video, autowrap on (for :am:).
+# Seems to be no way to get rid of status line.
+# The manual for this puppy was dated June 1981. It claims to be VT52-
+# compatible but looks more vt100-like.
+tab132|tab|tab132-15|tab 132/15:\
+ :da:db:\
+ :co#80:dN@:li#24:lm#96:\
+ :al=\E[L:cm=\E[%i%d;%dH:dc=\E[P:dl=\E[M:do=^J:ei=\E[4l:\
+ :im=\E[4h:is=\E[?7h\E[?3l\E[?5l:kd=\E[B:ke@:kl=\E[D:ks@:\
+ :ku=\E[A:\
+ :tc=vt100:
+tab132-w|tab132 in wide mode:\
+ :co#132:\
+ :is=\E[?7h\E[?3h\E[?5l:tc=tab132:
+tab132-rv|tab132 in reverse-video mode:\
+ :is=\E[?7h\E[?3l\E[?5h:tc=tab132:
+tab132-w-rv|tab132 in reverse-video/wide mode:\
+ :is=\E[?7h\E[?3h\E[?5h:tc=tab132-w:
+
+
+#### Teleray
+#
+# Research Incorporated
+# 6425 Flying Cloud Drive
+# Eden Prairie, MN 55344
+# Vox: (612)-941-3300
+#
+# The Teleray terminals were all discontinued in 1992-93. RI still services
+# and repairs these beasts, but no longer manufactures them. The Teleray
+# people believe that all the types listed below are very rare now (1995).
+# There was a newer line of Telerays (Model 7, Model 20, Model 30, and
+# Model 100) that were ANSI-compatible.
+#
+# Note two things called "teleray". Reorder should move the common one
+# to the front if you have either. A dumb teleray with the cursor stuck
+# on the bottom and no obvious model number is probably a 3700.
+#
+
+t3700|dumb teleray 3700:\
+ :bs:\
+ :co#80:li#24:\
+ :bl=^G:cl=^L:cr=^M:do=^J:le=^H:sf=^J:
+t3800|teleray 3800 series:\
+ :bs:\
+ :co#80:it#8:li#24:\
+ :bl=^G:cd=\EJ:ce=\EK:cl=^L:cm=\EY%+ %+ :cr=^M:do=^J:ho=\EH:\
+ :le=^H:ll=\EY7 :nd=\EC:sf=^J:ta=^I:up=^K:
+t1061|teleray|teleray 1061:\
+ :am:bs:km:xs:xt:\
+ :co#80:it#8:li#24:sg#1:\
+ :al=\EL:bl=^G:cd=\EJ:ce=\EK:cl=\014:cm=\EY%+ %+ :cr=^M:\
+ :ct=\EG:dc=\EQ:dl=\EM:do=^J:ei=:ho=\EH:ic=\EP:im=:ip=:\
+ :is=\Ee\EU01^Z1\EV\EU02^Z2\EV\EU03^Z3\EV\EU04^Z4\EV\EU05^Z5\EV\EU06^Z6\EV\EU07^Z7\EV\EU08^Z8\EV\Ef:\
+ :k1=^Z1:k2=^Z2:k3=^Z3:k4=^Z4:k5=^Z5:k6=^Z6:k7=^Z7:k8=^Z8:\
+ :le=^H:nd=\EC:se=\ER@:sf=^J:so= \ERD:st=\EF:ta=^I:ue=\ER@:\
+ :up=\EA:us=\ERH:
+t1061f|teleray 1061 with fast PROMs:\
+ :al=\EL:dl=\EM:ip@:tc=t1061:
+# "Teleray Arpa Special", officially designated as
+# "Teleray Arpa network model 10" with "Special feature 720".
+# This is the new (1981) fast microcode updating the older "arpa" proms
+# (which gave meta-key and programmable-fxn keys). 720 is much much faster,
+# converts the keypad to programmable function keys, and has other goodies.
+# Standout mode is still broken (magic cookie, etc) so is suppressed as no
+# programs handle such lossage properly.
+# Note: this is NOT the old termcap's "t1061f with fast proms."
+# From: J. Lepreau <lepreau@utah-cs> Tue Feb 1 06:39:37 1983, Univ of Utah
+# (t10: removed overridden ":so@:se@:us@:ue@:" -- esr)
+t10|teleray 10 special:\
+ :bs:km:xs:xt:\
+ :co#80:it#8:li#24:sg#2:\
+ :al=\EL:cd=\EJ:ce=\EK:cl=30\Ej:cm=\EY%+ %+ :dc=\EQ:dl=\EM:\
+ :ei=:ho=\EH:ic=\EP:im=:le=^H:nd=\EC:pc=\0:se=\ER@:sf=\Eq:\
+ :so=\ERD:sr=\Ep:ta=^I:ue=\ER@:up=\EA:us=\ERH:
+# teleray 16 - map the arrow keys for vi/rogue, shifted to up/down page, and
+# back/forth words. Put the function keys (f1-f10) where they can be
+# found, and turn off the other magic keys along the top row, except
+# for line/local. Do the magic appropriate to make the page shifts work.
+# Also toggle ^S/^Q for those of us who use Emacs.
+t16|teleray 16:\
+ :am:da:db:mi:xs:xt:\
+ :co#80:li#24:\
+ :al=\E[L:bl=^G:cd=\E[0J:ce=\E[0K:cl=\E[H\E[2J:\
+ :cm=%i\E[%d;%df:cr=^M:dc=\E[P:dl=\E[M:do=\E[B:ei=\E[4l:\
+ :ho=\E[H:im=\E[4h:k1=^Z1:k2=^Z2:k3=^Z3:k4=^Z4:k5=^Z5:k6=^Z6:\
+ :k7=^Z7:k8=^Z8:k9=^Z9:k;=^Z0:le=^H:me=\E[m:nd=\E[C:se=\E[m:\
+ :sf=^J:so=\E[7m:sr=\E[T:ta=^I:te=\E[V\E[24;1f\E[?38h:\
+ :ti=\E[U\E[?38l:ue=\E[m:up=\E[A:us=\E[4m:
+
+#### Texas Instruments (ti)
+#
+
+# The Silent 700 was so called because it was built around a quiet thermal
+# printer. It was portable, equipped with an acoustic coupler, and pretty
+# neat for its day.
+ti700|ti733|ti735|ti745|ti800|ti silent 700/733/735/745 or omni 800:\
+ :bs:hc:os:\
+ :co#80:\
+ :bl=^G:cr=\r:do=^J:le=^H:sf=^J:
+
+#
+# Texas Instruments 916 VDT 7 bit control mode
+#
+ti916|ti916-220-7|Texas Instruments 916 VDT 8859/1 vt220 mode 7 bit CTRL:\
+ :da:db:in:ms:\
+ :%9=^X:@4=\E[29~:@8=^J:AL=\E[%dL:DC=\E[%dP:DL=\E[%dM:\
+ :DO=\E[%dB:F1=\E[29~:F2=\E[31~:IC=\E[%d@:LE=\E[%dD:\
+ :RI=\E[%dC:UP=\E[%dA:ae=\017:as=\016:bt=\E[Z:cb=\E[1K:\
+ :cd=\E[J:ce=\E[0K:ch=\E[%+^AG:cl=\E[H\E[2J:\
+ :cm=\E[%i%d;%dH:ct=\E[3g:cv=\E[%+^Ad:dc=\E[P:eA=\E(B\E)0:\
+ :ec=\E[%dX:ei=:ff=^L:im=:ip=:is=\E[1;24r\E[24;1H:k1=\E[17~:\
+ :k2=\E[18~:k3=\E[19~:k4=\E[20~:k5=\E[21~:k6=\E[23~:\
+ :k7=\E[24~:k8=\E[25~:k9=\E[26~:k;=\E[28~:kD=\E[P:kI=\E[@:\
+ :kN=\E[S:kP=\E[T:kh=\E[H:mp=\E&:r2=\E[\041p:st=\E[0W:\
+ :vb=\E[?5h\E[?5l:ve=\E[?25h:vi=\E[?25l:vs=\E[?25h:\
+ :tc=vt220:
+#
+# Texas Instruments 916 VDT 8 bit control mode
+#
+ti916-8|ti916-220-8|Texas Instruments 916 VDT 8859/1 8 vt220 mode bit CTRL:\
+ :%9=^X:@4=\23329~:@8=^J:F1=\23329~:F2=\23331~:k1=\23317~:\
+ :k2=\23318~:k3=\23319~:k4=\23320~:k5=\23321~:k6=\23323~:\
+ :k7=\23324~:k8=\23325~:k9=\23326~:k;=\23328~:kD=\233P:\
+ :kI=\233@:kN=\233S:kP=\233T:kd=\233B:kh=\233H:kl=\233D:\
+ :kr=\233C:ku=\233A:\
+ :tc=ti916:
+#
+# Texas Instruments 916 VDT 8859/1 7 bit control 132 column mode
+#
+ti916-132|Texas Instruments 916 VDT vt220 132 column:\
+ :co#132:tc=ti916:
+#
+# Texas Instruments 916 VDT 8859/1 8 bit control 132 column mode
+#
+ti916-8-132|Texas Instruments 916 VDT 8-bit vt220 132 column:\
+ :co#132:tc=ti916-8:
+ti924|Texas Instruments 924 VDT 8859/1 7 bit CTRL:\
+ :am:bs:xo:\
+ :co#80:it#8:li#24:\
+ :al=\E[L:bl=^G:cd=\E[J:ce=\E[K:cl=\E[2J\E[H:\
+ :cm=%i\E[%d;%dH:cr=^M:cs=%i\E[%d;%dr:ct=\E[3g:dl=\E[M:\
+ :do=\E[B:ho=\E[H:k1=\EOP:k2=\EOQ:k3=\EOR:k4=\EOS:k5=\E[16~:\
+ :k6=\E[17~:k7=\E[18~:k8=\E[19~:k9=\E[20~:kD=\E[P:kI=\E[@:\
+ :kb=^H:kd=\E[B:kl=\E[D:kr=\E[C:ku=\E[A:le=\E[D:mb=\E[5m:\
+ :md=\E[1m:me=\E[m:mr=\E[7m:nd=\E[C:rc=\E8:sc=\E7:se=\E[m:\
+ :sf=\ED:so=\E[7m:sr=\EM:st=\EH:ta=^I:ue=\E[m:up=\E[A:\
+ :us=\E[4m:ve=\E[?25h:vi=\E[?25l:vs=\E[?31h:
+ti924-8|Texas Instruments 924 VDT 8859/1 8 bit CTRL:\
+ :am:xo:\
+ :co#80:it#8:li#24:\
+ :al=\E[L:bl=^G:cd=\E[J:ce=\E[K:cl=\E[2J\E[H:\
+ :cm=%i\E[%d;%dH:cr=^M:cs=%i\E[%d;%dr:ct=\E[3g:dl=\E[M:\
+ :do=\E[B:ho=\E[H:k1=P\217>:k2=Q\217>:k3=R\217>:k4=S\217>:\
+ :k5=~\23316>:k6=~\23317>:k7=~\23318>:k8=~\23319>:\
+ :k9=~\23320>:kD=P\233>:kI=@\233>:kb=^H:kd=\E[B:kl=\E[D:\
+ :kr=\E[C:ku=\E[A:le=\E[D:mb=\E[5m:md=\E[1m:me=\E[m:\
+ :mr=\E[7m:nd=\E[C:rc=\E8:sc=\E7:se=\E[m:sf=\ED:so=\E[7m:\
+ :sr=\EM:st=\EH:ta=^I:ue=\E[m:up=\E[A:us=\E[4m:ve=\E[?25h:\
+ :vi=\E[?25l:vs=\E[?31h:
+ti924w|Texas Instruments 924 VDT 7 bit - 132 column mode:\
+ :co#132:tc=ti924:
+ti924-8w|Texas Instruments 924 VDT 8 bit - 132 column mode:\
+ :co#132:tc=ti924-8:
+ti931|Texas Instruments 931 VDT:\
+ :am:bs:xo:\
+ :co#80:li#24:\
+ :al=\EN:bl=^G:cd=\EJ:ce=\EI:cl=\EL:cm=\EY%+ %+ :cr=^M:\
+ :dc=\EQ:dl=\EO:do=\EB:ei=:ho=\EH:ic=\ER\EP\EM:im=:\
+ :is=\EGB\E(@B@@\E):k1=\Ei1:k2=\Ei2:k3=\Ei3:k4=\Ei4:\
+ :k5=\Ei5:k6=\Ei6:k7=\Ei7:k8=\Ei8:k9=\Ei9:kA=\EN:kD=\EQ:\
+ :kI=\EP:kL=\EO:kd=\EB:kl=\ED:kr=\EC:ku=\EA:le=\ED:mb=\E4P:\
+ :me=\E4@:mk=\E4H:mr=\E4B:nd=\EC:se=\E4@:sf=\Ea:so=\E4A:\
+ :sr=\Eb:ue=\E4@:up=\EA:us=\E4D:ve=\E4@:
+ti926|Texas Instruments 926 VDT 8859/1 7 bit CTRL:\
+ :cs@:sf=\E[1S:sr=\E[1T:tc=ti924:
+# (ti926-8: I corrected this from the broken SCO entry -- esr)
+ti926-8|Texas Instruments 926 VDT 8859/1 8 bit CTRL:\
+ :cs@:sf=\2331S:sr=\2331T:\
+ :tc=ti924-8:
+ti_ansi|basic entry for ti928:\
+ :am:eo:ut:xn:xo:\
+ :Co#8:co#80:it#8:li#25:pa#64:\
+ :@7=\E[F:AB=\E[4%p1%dm:AF=\E[3%p1%dm:al=\E[L:bl=^G:\
+ :bt=\E[Z:cd=\E[J:ce=\E[K:cl=\E[2J\E[H:cm=\E[%i%d;%dH:\
+ :cr=^M:cs=\E[%i%d;%dr:dc=\E[P:dl=\E[M:do=\E[B:ei=:ho=\E[H:\
+ :ic=\E[@:im=:k0=\E[V:k1=\E[M:k2=\E[N:k3=\E[O:k4=\E[P:\
+ :k5=\E[Q:k6=\E[R:k7=\E[S:k8=\E[T:k9=\E[U:kN=\E[G:kP=\E[I:\
+ :kb=^H:kd=\E[B:kh=\E[H:kl=\E[D:kr=\E[C:ku=\E[A:le=^H:\
+ :mb=\E[5m:md=\E[1m:me=\E[m:nd=\E[C:op=\E[37;40m:se=\E[m:\
+ :sf=\E[S:so=\E[7m:sr=\E[T:ta=^I:ue=\E[m:up=\E[A:us=\E[4m:
+#
+# 928 VDT 7 bit control mode
+#
+ti928|Texas Instruments 928 VDT 8859/1 7 bit CTRL:\
+ :%9=\E[35~:@7=\E_1\E\:@8=\E[8~:F1=\E[29~:F2=\E[31~:\
+ :F3=\E[32~:F5=\E[34~:k1=\E[17~:k2=\E[18~:k3=\E[19~:\
+ :k4=\E[20~:k5=\E[21~:k6=\E[23~:k7=\E[24~:k8=\E[25~:\
+ :k9=\E[26~:k;=\E[28~:kD=\E[P:kI=\E[@:kN=\E[S:kP=\E[T:\
+ :tc=ti_ansi:
+#
+# 928 VDT 8 bit control mode
+#
+ti928-8|Texas Instruments 928 VDT 8859/1 8 bit CTRL:\
+ :%9=\23335~:@7=\2371\234:@8=\2338~:F1=\23329~:F2=\23331~:\
+ :F3=\23332~:F5=\23334~:k1=\23317~:k2=\23318~:k3=\23319~:\
+ :k4=\23320~:k5=\23321~:k6=\23323~:k7=\23324~:k8=\23325~:\
+ :k9=\23326~:k;=\23328~:kD=\233P:kI=\233@:kN=\233S:\
+ :kP=\233T:kh=\233H:\
+ :tc=ti_ansi:
+
+#### Zentec (zen)
+#
+
+# (zen30: removed obsolete :ma=^L ^R^L^K^P:. This entry originally
+# had just :so:=\EG6 which I think means standout was supposed to be
+# dim-reverse using ADM12-style attributes. ADM12 :us:/:ue: and
+# <invis> might work-- esr)
+zen30|z30|zentec 30:\
+ :am:bs:mi:ul:\
+ :co#80:li#24:\
+ :al=\EE:bl=^G:cd=\EY:ce=\ET:cl=\E*:cm=\E=%+ %+ :cr=^M:\
+ :dc=\EW:dl=\ER:do=^J:ei=\Er:ho=^^:im=\Eq:le=^H:mh=\EG2:nd=^L:\
+ :sf=^J:so=\EG6:ue@:up=^K:us@:\
+ :tc=adm+sgr:
+# (zen50: this had extension capabilities
+# :BS=^U:CL=^V:CR=^B:
+# UK/DK/RK/LK/HM were someone's aliases for ku/kd/kl/kr/kh,
+# which were also in the original entry -- esr)
+# (zen50: removed obsolete ":ma=^Hh^Ll^Jj^Kk:" -- esr)
+zen50|z50|zentec zephyr:\
+ :am:bs:\
+ :co#80:li#24:sg#1:\
+ :al=\EE:cd=\EY:ce=\ET:cl=\E+:cm=\E=%+ %+ :dc=\EW:dl=\ER:ei=:\
+ :ic=\EQ:im=:kd=^J:kh=^^:kl=^H:kr=^L:ku=^K:le=^H:mk@:ue@:up=^K:\
+ :us@:\
+ :tc=adm+sgr:
+
+# CCI 4574 (Office Power) from Will Martin <wmartin@BRL.ARPA> via BRL
+cci|cci1|z8001|zen8001|CCI Custom Zentec 8001:\
+ :am:bs:bw:\
+ :co#80:li#24:\
+ :cd=\EJ:ce=\EK:cl=\EH\EJ:cm=\EY%+ %+ :cs=\ER%+ %+ :do=^J:\
+ :ho=\EH:is=\EM \EF\ET\EP\ER 7:kb=^H:kd=\EB:kh=\EH:kl=\ED:\
+ :kr=\EC:ku=\EA:le=^H:mb=\EM":me=\EM :mh=\EM\041:mk=\EM(:\
+ :mr=\EM$:nd=\EC:pf=^T:po=^R:se=\EM :so=\EM$:sr=\EI:ue=\EM :\
+ :up=\EA:us=\EM0:ve=\EP:vs=\EF\EQ\EM \ER 7:
+
+######## OBSOLETE UNIX CONSOLES
+#
+
+#### Altos
+#
+# Altos made a moderately successful line of UNIX boxes. In 1990 they were
+# bought out by Acer, a major Taiwanese manufacturer of PC-clones.
+# Acer has a web site at http://www.acer.com.
+#
+# Altos descriptions from Ted Mittelstaedt <tedm@agora.rain.com> 4 Sep 1993
+# His comments suggest they were shipped with the system.
+#
+
+# (altos2: had extension capabilities
+# :c0=^A`\r:c1=^Aa\r:c2=^Ab\r:c3=^Ac\r:\
+# :c4=^Ad\r:c5=^Ae\r:c6=^Af\r:c7=^Ag\r:\
+# :c8=^Ah\r:c9=^Ai\r:cA=^Aj\r:cB=^Ak\r:\
+# :cC=^Al\r:cD=^Am\r:cE=^An\r:cF=^Ao\r:
+# :XU=^Aq\r:XD=^Ar\r:XR=^As\r:XL=^At\r:\
+# :YU=^AQ\r:YD=^AR\r:YR=^AS\r:YL=^AT\r:\
+# :HL=^AP\r:SP=\E[i:\
+# :IS=\E[@:DE=\E[P:IL=\E[L:NS=\E[S:PS=\E[T:\
+# :LO=\E[0q:LC=\E[5q:LL=\E[6q:\
+# Comparison with the k* capabilities makes it obvious that the c* things are
+# shift keys. I have renamed them to keys 32 and up accordingly. Also,
+# :sr: was given as a boolean-- esr)
+altos2|alt2|altos-2|altos II:\
+ :co#80:it#8:li#24:sg#0:\
+ :*5=^Am\r:*8=^An\r:DL=\E[M:FM=^A`\r:FN=^Aa\r:FO=^Ab\r:\
+ :FP=^Ac\r:FQ=^Ad\r:FR=^Ae\r:FS=^Af\r:FT=^Ag\r:FU=^Ah\r:\
+ :FV=^Ai\r:FW=^Aj\r:FX=^Ak\r:RA=\E[?7l:SA=\E[?7h:al=\E[L:\
+ :cd=\E[J:ce=\E[K:cl=\E[H\E[2J:cm=\E[%i%d;%dH:cr=^M:\
+ :dc=\E[P:do=\E[1B:ei=:ho=\E[H:ic=\E[@:\
+ :if=/usr/share/tabset/vt100:im=:\
+ :is=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h:k0=^AI\r:\
+ :k1=^A@\r:k2=^AA\r:k3=^AB\r:k4=^AC\r:k5=^AD\r:k6=^AE\r:\
+ :k7=^AF\r:k8=^AG\r:k9=^AH\r:kA=^AJ\r:kB=^AK\r:kC=^AL\r:\
+ :kD=^AM\r:kE=^AN\r:kF=^AO\r:kb=^H:kd=\E[B:kh=\E[f:kl=\E[D:\
+ :kr=\E[C:ku=\E[A:le=^H:me=\E[m:nd=\E[1C:nw=^M^J:se=\E[m:\
+ :sf=^J:so=\E[7m:ta=^I:ue=\E[m:up=\E[1A:us=\E[4m:
+# (altos3: had extension capabilities
+# :c0=^A`\r:c1=^Aa\r:c2=^Ab\r:c3=^Ac\r:\
+# :c4=^Ad\r:c5=^Ae\r:c6=^Af\r:c7=^Ag\r:\
+# :c8=^Ah\r:c9=^Ai\r:cA=^Aj\r:cB=^Ak\r:\
+# :cC=^Al\r:cD=^Am\r:cE=^An\r:cF=^Ao\r:
+# :XU=^Aq\r:XD=^Ar\r:XR=^As\r:XL=^At\r:\
+# :HL=^AP\r:SP=\E[i:\
+# :IS=\E[@:DE=\E[P:IL=\E[L:NS=\E[S:PS=\E[T:\
+altos3|altos5|alt3|alt5|altos-3|altos-5|altos III or V:\
+ :mb=\E[5p:me=\E[p:sr=\EM:\
+ :tc=altos2:
+altos4|alt4|altos-4|altos IV:\
+ :tc=wy50:
+# (altos7: had extension capabilities:
+# :GG#0:GI=\EH8:GF=\EH7:\
+# :c0=^A`\r:c1=^Aa\r:c2=^Ab\r:c3=^Ac\r:\
+# :c4=^Ad\r:c5=^Ae\r:c6=^Af\r:c7=^Ag\r:\
+# :c8=^Ah\r:c9=^Ai\r:cA=^Aj\r:cB=^Ak\r:\
+# :cC=^Al\r:cD=^Am\r:cE=^An\r:cF=^Ao\r:
+# Comparison with the k* capabilities makes it obvious that the c* things are
+# shift keys. I have renamed them to keys 32 and up accordingly. I have
+# also made this entry relative to adm12 in order to give it an :sa:. The
+# <invis> imported by use=adm+sgr may work, let me know. -- esr)
+altos7|alt7|altos VII:\
+ :am:mi:\
+ :co#80:li#24:sg#0:\
+ :*5=^Am\r:*8=^An\r:DL=\ER:FM=^A`\r:FN=^Aa\r:FO=^Ab\r:\
+ :FP=^Ac\r:FQ=^Ad\r:FR=^Ae\r:FS=^Af\r:FT=^Ag\r:FU=^Ah\r:\
+ :FV=^Ai\r:FW=^Aj\r:FX=^Ak\r:\
+ :ac=j5k3l2m1n8q\072t4u9v=w0x6:al=\EE:cd=\EY:ce=\ET:\
+ :cl=\E+^^:cm=\E=%+ %+ :cr=^M:dc=\EW:do=^J:ei=\Er:ho=^^:\
+ :im=\Eq:is=\E`\072\Ee(\EO\Ee6\Ec41\E~4\Ec21\Eu\E~2:\
+ :k0=^AI\r:k1=^A@\r:k2=^AA\r:k3=^AB\r:k4=^AC\r:k5=^AD\r:\
+ :k6=^AE\r:k7=^AF\r:k8=^AG\r:k9=^AH\r:kA=^AJ\r:kB=^AK\r:\
+ :kC=^AL\r:kD=^AM\r:kE=^AN\r:kF=^AO\r:kN=\EK:kP=\EJ:kb=^H:\
+ :kd=^J:kh=^^:kl=^H:kr=^L:ku=^K:le=^H:mb=\EG2:md=\EGt:mh=\EGp:\
+ :mk=\EG1:nd=^L:nw=^M^J:pf=\EJ:po=\Ed#:sf=^J:sr=\Ej:ta=^I:\
+ :up=^K:\
+ :tc=adm+sgr:
+altos7pc|alt7pc|altos PC VII:\
+ :@7=\ET:tc=altos7:
+
+#### Apollo consoles
+#
+# Apollo got bought by Hewlett-Packard. The Apollo workstations are
+# labeled HP700s now.
+#
+
+# From: Gary Darland <goodmanc@garnet.berkeley.edu>
+apollo|apollo console:\
+ :am:bs:mi:\
+ :co#88:li#53:\
+ :al=\EI:cd=\EJ:ce=\EK:ch=\EN%d:cl=^L:cm=\EM%+ %d):cv=\EO+ :\
+ :dc=\EP:dl=\EL:do=\EB:ei=\ER:im=\EQ:le=^H:nd=\EC:se=\ET:\
+ :sf=\EE:so=\ES:sr=\ED:te=\EX:ti=\EW:ue=\EV:up=\EA:us=\EU:
+
+# We don't know whether or not the apollo guys replicated DEC's firmware bug
+# in the VT132 that reversed :ei:/:im:. To be on the safe side, disable
+# both these capabilities.
+apollo_15P|apollo 15 inch display:\
+ :ei@:im@:tc=vt132:
+apollo_19L|apollo 19 inch display:\
+ :ei@:im@:tc=vt132:
+apollo_color|apollo color display:\
+ :ei@:im@:tc=vt132:
+
+#### Convergent Technology
+#
+# Burroughs bought Convergent shortly before it merged with Univac.
+# CTOS is (I believe) dead. Probably the aws is too (this entry dates
+# from 1991 or earlier).
+#
+
+# Convergent AWS workstation from Gould/SEL UTX/32 via BRL
+# (aws: removed unknown :dn=^K: -- esr)
+aws|Convergent Technologies AWS workstation under UTX and Xenix:\
+ :am:\
+ :co#80:li#28:sg#0:\
+ :ac=:ae=\EAAF:al=\EIL:as=\EAAN:bc=^H:cd=\EEF:ce=\EEL:\
+ :ch=\EH%.:cl=^L:cm=\EC%r%.%.:cv=\EV%.:dc=\EDC:dl=\EDL:\
+ :do=^K:ei=:ic=\EIC:im=:kb=^H:kd=^K:kl=^N:kr=^R:ku=^A:\
+ :ma=\016h\013j\001k\022l\002m:nd=^R:nl=^J:se=\EARF:\
+ :sf=\ESU:so=\EARN:sr=\ESD:ue=\EAUF:up=^A:us=\EAUN:
+awsc|Convergent Technologies AWS workstation under CTOS:\
+ :am:\
+ :co#80:li#24:sg#0:\
+ :ac=:ae=\EAAF:as=\EAAN:bc=^N:cd=\EEF:ce=\EEL:cl=^L:\
+ :cm=\EC%r%.%.:do=^K:kb=^H:kd=^K:kl=^N:kr=^R:ku=^A:\
+ :ma=\016h\013j\001k\022l\002m:nd=^R:se=\EAA:so=\EAE:\
+ :ue=\EAA:up=^A:us=\EAC:
+
+#### DEC consoles
+#
+
+# The MicroVax console. Tim Theisen <tim@cs.wisc.edu> writes:
+# The digital uVax II's had a graphic display called a qdss. It was
+# supposed to be a high performance graphic accelerator, but it was
+# late to market and barely appeared before faster dumb frame buffers
+# appeared. I have only used this display while running X11. However,
+# during bootup, it was in text mode, and probably had a terminal emulator
+# within it. And that is what your termcap entry is for. In graphics
+# mode the screen size is 1024x864 pixels.
+qdss|qdcons|qdss glass tty:\
+ :am:bs:\
+ :co#128:li#57:\
+ :cl=1\032:cm=\E=%.%.:do=^J:le=^H:nd=^L:up=^K:
+
+#### Fortune Systems consoles
+#
+# Fortune made a line of 68K-based UNIX boxes that were pretty nifty
+# in their day; I (esr) used one myself for a year or so around 1984.
+# They had no graphics, though, and couldn't compete against Suns and
+# the like. R.I.P.
+#
+
+# From: Robert Nathanson <c160-3bp@Coral> via tut Wed Oct 5, 1983
+# (This had extension capabilities
+# :rv=\EH:re=\EI:rg=0:GG=0:\
+# :CO=\E\\:WL=^Aa\r:WR=^Ab\r:CL=^Ac\r:CR=^Ad\r:DL=^Ae\r:RF=^Af\r:\
+# :RC=^Ag\r:CW=^Ah\r:NU=^Aj\r:EN=^Ak\r:HM=^Al:PL=^Am\r:\
+# :PU=^An\r:PD=^Ao\r:PR=^Ap\r:HP=^A@\r:RT=^Aq\r:TB=\r:CN=\177:MP=\E+F:
+# It had both ":bs:" and ":bs=^H:"; I removed the latter. Also, it had
+# ":sg=0:" and ":ug=0:"; evidently the composer was trying (unnecessarily)
+# to force both magic cookie glitches off. Once upon a time, I
+# used a Fortune myself, so I know the capabilities of the form ^A[a-z]\r are
+# function keys; thus the "Al" value for HM was certainly an error. I renamed
+# EN/PD/PU/CO/CF/RT according to the XENIX/TC mappings, but not HM/DL/RF/RC.
+# I think :rv: and :re: are start/end reverse video and :rg: is a nonexistent
+# "reverse-video-glitch" capability; I have put :rv: and :re: in with standard
+# names below. I've removed obsolete ":nl=5^J:" as there is a :do: -- esr)
+fos|fortune|Fortune system:\
+ :am:bs:bw:\
+ :co#80:li#25:\
+ :@7=^Ak\r:@8=^Aq:ac=j*k(l m"q&v%w#x-:ae=^O:al=\034E:\
+ :as=\Eo:bl=^G:cd=\034Y:ce=^\Z:cl=\014:cm=\034C%+ %+ :cr=^M:\
+ :dc=\034W:dl=\034R:do=\n:ei=:ho=\036:ic=\034Q:im=:is=^_..:\
+ :k1=^Aa\r:k2=^Ab\r:k3=^Ac\r:k4=^Ad\r:k5=^Ae\r:k6=^Af\r:\
+ :k7=^Ag\r:k8=^Ah\r:kN=^Ao\r:kP=^An\r:kb=^H:kd=^Ay\r:\
+ :kh=^A?\r:kl=^Aw\r:kr=^Az\r:ku=^Ax\r:le=^H:mb=\EN:me=\EI:\
+ :mr=\EH:nw=^M^J:se=^\I`:sf=^J:so=^\H`:ta=^Z:ue=^\IP:up=\013:\
+ :us=^\HP:ve=\E\:vi=\E]:vs=\E\072:
+
+#### IBM Unix consoles
+#
+
+# The following is a version of the ibm-pc entry distributed with PC/IX,
+# (Interactive Systems' System 3 for the Big Blue), modified by Richard
+# McIntosh at UCB/CSM. The :pt: and :uc: have been removed from the original,
+# (the former is untrue, and the latter failed under UCB/man); standout and
+# underline modes have been added. Note: this entry describes the "native"
+# capabilities of the PC monochrome display, without ANY emulation; most
+# communications packages (but NOT PC/IX connect) do some kind of emulation.
+pcix|PC/IX console:\
+ :am:bw:eo:\
+ :co#80:li#24:\
+ :cd=\E[J:ce=\E[K:cl=\Ec:cm=\E[%i%2;%2H:do=\E[B:ho=\E[H:\
+ :le=^H:me=\E[m:nd=\E[C:se=\E[m:so=\E[7m:ue=\E[m:up=\E[A:\
+ :us=\E[4m:
+
+# (ibmpcx: this entry used to be known as ibmx.
+# It formerly included the following extension capabilities:
+# :GC=b:GL=v:GR=t:RT=^J:\
+# :GH=\E[196g:GV=\E[179g:\
+# :GU=\E[193g:GD=\E[194g:\
+# :G1=\E[191g:G2=\E[218g:G3=\E[192g:G4=\E[217g:\
+# :CW=\E[E:NU=\E[F:RF=\E[G:RC=\E[H:\
+# :WL=\E[K:WR=\E[L:CL=\E[M:CR=\E[N:\
+# I renamed GS/GE/WL/WR/CL/CR/PU/PD/HM/EN; also, removed a duplicate
+# ":kh=\E[Y:". Added IBM-PC forms characters and highlights, they match
+# what was there before. -- esr)
+ibmpcx|xenix|ibmx|IBM PC xenix console display:\
+ :am:bs:ms:\
+ :co#80:li#25:\
+ :@7=\E[d:al=\E[L:cd=\E[J:ce=\E[K:cl=^L:cm=\E[%d;%dH:\
+ :dc=\E[P:dl=\E[M:do=\E[B:ei=:ho=\E[H:ic=\E[@:im=:k1=\E[K:\
+ :k2=\E[L:k3=\E[M:k4=\E[N:kN=\E[e:kP=\E[Z:kb=^H:kd=\E[B:\
+ :kh=\E[Y:kl=\E[D:kr=\E[C:ku=\E[A:le=^H:nd=\E[C:up=\E[A:\
+ :tc=klone+acs:tc=klone+sgr:
+
+
+#### Masscomp consoles
+#
+# Masscomp has gone out of business. Their product line was purchased by
+# comany in Georgia (US) called "XS International", parts and service may
+# still be available through them.
+#
+
+# (masscomp: ":MT:" changed to ":km:"; -- esr)
+masscomp|masscomp workstation console:\
+ :bs:km:mi:\
+ :co#80:it#8:li#24:\
+ :al=\E[L:cd=\E[J:ce=\E[K:cl=\E[2J:cm=\E[%i%d;%dH:dc=\E[P:\
+ :dl=\E[M:do=\E[B:ei=\E[4l:im=\E[4h:is=\EGc\EGb\EGw:kb=^H:\
+ :kd=\EOB:kl=\EOD:kr=\EOC:ku=\EOA:le=^H:nd=\E[C:se=\E[m:\
+ :so=\E[7m:ta=^I:ue=\EGau:up=\E[A:us=\EGu:
+masscomp1|masscomp large screen version 1:\
+ :co#104:li#36:tc=masscomp:
+masscomp2|masscomp large screen version 2:\
+ :co#64:li#21:tc=masscomp:
+
+#### Sony NEWS workstations
+#
+
+# (news-unk: this had :KB=news: -- esr)
+news-unk|SONY NEWS vt100 emulator old common entry:\
+ :am:bs:pt:xn:\
+ :co#80:\
+ :AL=\E[%dL:DL=\E[%dM:al=\E[L:bl=^G:cd=\E[J:ce=\E[K:\
+ :cl=\E[H\E[2J:cm=\E[%i%d;%dH:cr=^M:cs=\E[%i%d;%dr:\
+ :dl=\E[M:do=^J:ho=\E[H:if=/usr/lib/tabset/vt100:\
+ :is=\E[?7h\E[?1l\E[?3l\E7\E8:k0=\EOY:k1=\EOP:k2=\EOQ:\
+ :k3=\EOR:k4=\EOS:k5=\EOT:k6=\EOU:k7=\EOV:k8=\EOW:k9=\EOX:\
+ :kb=^H:kd=\EOB:ke=\E[?1l\E>:kl=\EOD:kr=\EOC:ks=\E[?1h\E=:\
+ :ku=\EOA:le=^H:mb=\E[5m:md=\E[1m:me=\E[m:mr=\E[7m:nd=\E[C:\
+ :nl=^J:rc=\E8:rs=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h\E[r:\
+ :sc=\E7:se=\E[m:so=\E[7m:sr=\EM:ta=^I:ue=\E[m:up=\E[A:\
+ :us=\E[4m:
+#
+# (news-29: this had :TY=ascii: --esr)
+news-29:\
+ :li#29:tc=news-unk:
+# (news-29-euc: this had :TY=euc: --esr)
+news-29-euc:\
+ :tc=news-29:
+# (news-29-sjis: this had :TY=sjis: --esr)
+news-29-sjis:\
+ :tc=news-29:
+#
+# (news-33: this had :TY=ascii: --esr)
+news-33:\
+ :li#33:tc=news-unk:
+# (news-33-euc: this had :TY=euc: --esr)
+news-33-euc:\
+ :tc=news-33:
+# (news-33-sjis: this had :TY=sjis: --esr)
+news-33-sjis:\
+ :tc=news-33:
+#
+# (news-42: this had :TY=ascii: --esr)
+news-42:\
+ :li#42:tc=news-unk:
+# (news-42-euc: this had :TY=euc: --esr)
+news-42-euc:\
+ :tc=news-42:
+# (news-42-sjis: this had :TY=sjis: --esr)
+news-42-sjis:\
+ :tc=news-42:
+#
+# NEWS-OS old termcap entry
+#
+# (news-old-unk: this had :KB=news:TY=sjis: --esr)
+news-old-unk|SONY NEWS vt100 emulator common entry:\
+ :am:bs:pt:xn:\
+ :co#80:vt#3:\
+ :bl=^G:cd=\E[J:ce=\E[K:cl=\E[;H\E[2J:cm=\E[%i%d;%dH:cr=^M:\
+ :cs=\E[%i%d;%dr:do=^J:ho=\E[H:if=/usr/lib/tabset/vt100:\
+ :k1=\EOP:k2=\EOQ:k3=\EOR:k4=\EOS:kb=^H:kd=\EOB:\
+ :ke=\E[?1l\E>:kl=\EOD:kr=\EOC:ks=\E[?1h\E=:ku=\EOA:le=^H:\
+ :mb=\E[5m:md=\E[1m:me=\E[m:mr=\E[7m:nd=\E[C:nl=^J:rc=\E8:\
+ :rs=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h:sc=\E7:se=\E[m:\
+ :so=\E[7m:sr=\EM:ta=^I:ue=\E[m:up=\E[A:us=\E[4m:
+#
+# (nwp512: this had :DE=^H:, which I think means :bs: --esr)
+nwp512|news|nwp514|news40|vt100-bm|old sony vt100 emulator 40 lines:\
+ :bs:\
+ :li#40:\
+ :is=\E7\E[r\E8\EE\EE\EE\EM\EM\EM\E[?7h\E[?1l\E[?3l\E7\E[1;40r\E8:tc=news-old-unk:
+#
+# (nwp512-a: this had :TY=ascii: and the alias vt100-bm --esr)
+nwp512-a|nwp514-a|news-a|news42|news40-a|sony vt100 emulator 42 line:\
+ :li#42:\
+ :is=\E[?7h\E[?1l\E[?3l\E7\E[1;42r\E8:tc=news-old-unk:
+#
+# (nwp-512-o: this had :KB=nwp410:DE=^H: I interpret the latter as :bs:. --esr)
+nwp512-o|nwp514-o|news-o|news40-o|vt100-bm-o|sony vt100 emulator 40 lines:\
+ :bs:\
+ :li#40:\
+ :is=\E7\E[r\E8\EE\EE\EE\EM\EM\EM\E[?7h\E[?1l\E[?3l\E7\E[1;40r\E8:tc=news-old-unk:
+#
+# (nwp513: this had :DE=^H: and the alias vt100-bm --esr)
+nwp513|nwp518|nwe501|newscbm|news31|sony vt100 emulator 33 lines:\
+ :bs:\
+ :li#31:\
+ :is=\E7\E[r\E8\EE\EE\EE\EM\EM\EM\E[?7h\E[?1l\E[?3l\E7\E[1;31r\E8:tc=news-old-unk:
+#
+# (nwp513-a: this had :TY=ascii: and :DE=^H:, which I interpret as :bs:; --esr)
+# also the alias vt100-bm.
+nwp513-a|nwp518-a|nwe501-a|nwp251-a|newscbm-a|news31-a|newscbm33|news33|old sony vt100 emulator 33 lines:\
+ :bs:\
+ :li#33:\
+ :is=\E7\E[r\E8\EE\EE\EE\EM\EM\EM\E[?7h\E[?1l\E[?3l\E7\E[1;33r\E8:tc=news-old-unk:
+#
+# (nwp513-o: had :DE=^H:, I think that's :bs:; also the alias vt100-bm --esr)
+nwp513-o|nwp518-o|nwe501-o|nwp251-o|newscbm-o|news31-o|old sony vt100 emulator 33 lines:\
+ :bs:\
+ :li#31:\
+ :is=\E7\E[r\E8\EE\EE\EE\EM\EM\EM\E[?7h\E[?1l\E[?3l\E7\E[1;31r\E8:tc=news-old-unk:
+#
+# (news28: this had :DE=^H:, I think that's :bs:, and :KB=nws1200: --esr)
+news28|sony vt100 emulator 28 lines:\
+ :bs:\
+ :li#28:\
+ :is=\E7\E[r\E8\EE\EE\EE\EM\EM\EM\E[?7h\E[?1l\E[?3l\E7\E[1;28r\E8:tc=news-old-unk:
+#
+# (news29: this had :TY=ascii:KB=nws1200:\ --esr)
+news29|news28-a|sony vt100 emulator 29 lines:\
+ :li#29:\
+ :is=\E7\E[r\E8\EE\EE\EE\EM\EM\EM\E[?7h\E[?1l\E[?3l\E7\E[1;29r\E8:tc=news-old-unk:
+#
+# (news511: this had :TY=sjis: --esr)
+nwp511|nwp-511|nwp-511 vt100:\
+ :am:bs:pt:xn:\
+ :co#80:li#24:\
+ :al=\E[L:cd=30\E[J:ce=3\E[K:cl=20\E[;H\E[2J:\
+ :cm=\E[%i%d;%dH:dl=\E[M:is=\E[?5l\E[?1l\E>\E[?7h\E[?8h:\
+ :k1=\EOP:k2=\EOQ:k3=\EOR:k4=\EOS:k5=\EOT:k6=\E#W:kd=\E[B:\
+ :kh=\E[H:kl=\E[D:kr=\E[C:ku=\E[A:nd=\E[C:\
+ :rs=\E7\E[r\E8\E[?5l\E[?1l\E>\E[?7h\E[?8h:se=2\E[m:\
+ :so=2\E[7m:sr=5\EM:ue=2\E[m:up=2\E[A:us=2\E[4m:\
+ :vb=\E[?5h\0\0\0\0\0\0\0\0\0\0\0\0\0\E[?5l:
+# (news517: this had :TY=sjis:. --esr)
+nwp517|nwp-517|nwp-517 vt200 80 cols 30 rows:\
+ :es:hs:\
+ :co#80:li#30:\
+ :ds=\E[1$~:fs=\E[0$}:i2=\E[2$~\n:\
+ :is=\E7\E[r\E8\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h:\
+ :ts=\E[1$}\E[;%df:\
+ :tc=vt200:
+# (news517-w: this had :TY=sjis:. --esr)
+nwp517-w|nwp-517-w|nwp-517 vt200 132 cols 50 rows:\
+ :es:hs:\
+ :co#132:li#50:\
+ :ds=\E[1$~:fs=\E[0$}:i2=\E[2$~\n:\
+ :is=\E7\E[r\E8\E>\E[?3h\E[?4l\E[?5l\E[?7h\E[?8h:\
+ :rs=\E>\E[?3h\E[?4l\E[?5l\E[?7h\E[?8h:\
+ :ts=\E[1$}\E[;%df:tc=vt200:
+
+#### Obsolete virtual-terminal types.
+#
+
+# Columbus UNIX virtual terminal. This terminal also appears in
+# UNIX 4.0 and successors as line discipline 1 (?), but is
+# undocumented and does not really work quite right.
+cbunix|cb unix virtual terminal:\
+ :am:bs:da:db:\
+ :co#80:li#24:lm#0:\
+ :al=\EP:bl=^G:cd=\EL:ce=\EK:cl=\EL:cm=\EG%r%.%.:cr=^M:\
+ :dc=\EM:dl=\EN:do=^J:ei=:ic=\EO:im=:kd=\EB:kh=\EE:kl=\ED:\
+ :kr=\EC:ku=\EA:le=^H:nd=\EC:se=\Eb^D:sf=^J:so=\Ea^D:\
+ :ue=\Eb^A:up=\EA:us=\Ea^A:
+# (vremote: removed obsolete ":nl@:" -- esr)
+vremote|virtual remote terminal:\
+ :am@:\
+ :co#79:tc=cbunix:
+
+pty|4bsd pseudo teletype:\
+ :cm=\EG%+ %+ :se=\Eb$:so=\Ea$:ue=\Eb\041:us=\Ea\041:tc=cbunix:
+
+######## OTHER OBSOLETE TYPES
+#
+# These terminals are *long* dead -- these entries are retained for
+# historical interest only.
+#
+
+#### Obsolete non-ANSI software emulations
+#
+
+#### Avatar
+#
+# These entries attempt to describe Avatar, a terminal emulation used with
+# MS-DOS bulletin-board systems. It was designed to give ANSI-like
+# capabilities, but with cheaper (shorter) control sequences. Messy design,
+# excessively dependent on PC idiosyncracies, but apparently rather popular
+# in the BBS world.
+#
+# No color support. Avatar doesn't fit either of the Tektronix or HP color
+# models that terminfo knows about. An Avatar color attribute is the
+# low 7 bits of the IBM-PC display-memory attribute. Bletch.
+#
+# I wrote these entries while looking at the Avatar spec. I don't have
+# the facilities to test them. Let me know if they work, or don't.
+#
+# Avatar escapes not used by these entries (because maybe you're smarter
+# and more motivated than I am and can figure out how to wrap terminfo
+# around some of them, and because they are weird enough to be funny):
+# level 0:
+# ^L -- clear window/reset current attribute to default
+# ^V^A%p1%c -- set current color attribute, parameter decodes as follows:
+#
+# bit: 6 5 4 3 2 1 0
+# | | | | |
+# +---+---+ | +---+---+
+# | | |
+# | | foreground color
+# | foreground intensity
+# background color
+# level 0+:
+# ^V^J%p1%c%p2%c%p3%c%p4%c%p5%c -- scroll (p2,p3) to (p4,p5) up by p1 lines
+# ^V^K%p1%c%p2%c%p3%c%p4%c%p5%c -- scroll (p2,p3) to (p4,p5) down by p1 lines
+# ^V^L%p1%c%p2%c%p3%c -- clear p2 lines and p3 cols w/attr %p1
+# ^V^M%p1%c%p2%c%p3%c%p4%c -- fill p3 lines & p4 cols w/char p2+attr %p1
+# (^V^L and ^V^M set the current attribute as a side-effect.)
+# ^V ^Y <a> [...] <c> -- repeat pattern. <a> specifies the number of bytes
+# in the pattern, <c> the number of times the pattern
+# should be repeated. If either value is 0, no-op.
+# The pattern can contain Avatar console codes,
+# including other ^V ^Y patterns.
+# level 1:
+# ^V^O -- clockwise mode on; turn print direction right each time you
+# hit a window edge (yes, really). Turned off by CR
+# ^V^P -- no-op
+# ^V^Q%c -- query the driver
+# ^V^R -- driver reset
+# ^V^S -- Sound tone (PC-specific)
+# ^V^T -- change highlight at current cursor poition to %c
+# ^V^U%p1%c%p2%c -- highlight window <a> with attribute <b>
+# ^V^V%p1%c%p2%c%p3%c%p4%c%p5%c
+# -- define window
+#
+# From: Eric S. Raymond <esr@snark.thyrsus.com> 1 Nov 1995
+# (The :mb:/:md:/:mr:/:as:/:us:/:so: capabilities exist only to
+# tell ncurses that the corresponding highlights exist; it should use :sa:,
+# which is the only method that will actually work for multiple highlights.)
+avatar0|avatar terminal emulator level 0:\
+ :am:ms:ut:\
+ :co#80:it#8:li#25:\
+ :as=:ce=^V^G:cm=\026\010%.%.:cr=^M:do=^V^D:le=^V^E:\
+ :mb=^A^V\177:md=^V^A^P:me=^V^A^G:mk=^V^A\0:mr=^A^Vp:\
+ :nd=^V^F:r2=^L:rp=\031%.%d:\
+ :..sa=\026\001%{0}%?%p1%t%{112}%|%;%?%p2%t%{1}%|%;%?%p3%t%{112}%|%;%?%p4%t{128}%|%;%?%p6%t%{16}%|%;:\
+ :sf=^J:so=^A^Vp:up=^V^C:us=^V^A:\
+ :tc=klone+acs:
+# From: Eric S. Raymond <esr@snark.thyrsus.com> 1 Nov 1995
+avatar0+|avatar terminal emulator level 0+:\
+ :dc=^V^N:ei=\026\n\0\0\0\0:im=^V^I:tc=avatar0:
+# From: Eric S. Raymond <esr@snark.thyrsus.com> 1 Nov 1995
+avatar|avatar1|avatar terminal emulator level 1:\
+ :RA=^V":SA=^V$:al=^V+:dl=^V-:ei=^V^P:ve=^V'^A:vi=^V'^B:\
+ :vs=^V^C:\
+ :tc=avatar0+:
+
+#### RBcomm
+#
+# RBComm is a lean and mean terminal emulator written by the Interrupt List
+# maintainer, Ralf Brown. It was fairly popular in the late DOS years (early
+# '90s), especially in the BBS world, and still has some loyal users due to
+# its very small memory footprint and to a cute macro language.
+rbcomm|IBM PC with RBcomm and EMACS keybindings:\
+ :am:bw:mi:ms:xn:\
+ :co#80:it#8:li#25:\
+ :AL=\E[%dL:DL=\E[%dM:al=^K:bl=^G:bt=\E[Z:cd=^F5:ce=^P^P:\
+ :cl=^L:cm=\037%r%+ %+ :cr=^M:cs=\E[%i%d;%dr:dc=^W:dl=^Z:\
+ :dm=:do=^C:ec=\E[%dX:ed=:ei=^]:im=^\:\
+ :is=\017\035\E(B\E)0\E[?7h\E[?3l\E[>8g:kb=^H:kd=^N:\
+ :ke=\E>:kh=^A:kl=^B:kr=^F:ks=\E=:ku=^P:le=^H:mb=\E[5m:\
+ :md=\E[1m:me=\E[m:mk=\E[8m:mr=^R:nd=^B:nw=^M\ED:\
+ :r1=\017\E(B\E)0\025\E[?3l\E[>8g:rc=\E8:rp=\030%.%.:\
+ :sc=\E7:se=^U:sf=\ED:so=^R:sr=\EM:ta=^I:te=:ti=:ue=^U:up=^^:\
+ :us=^T:ve=\E[?25h:vi=\E[?25l:vs=\E[?25h:
+rbcomm-nam|IBM PC with RBcomm without autowrap:\
+ :am@:\
+ :bl=^G:cr=^M:do=^J:\
+ :is=\017\035\E(B\E)0\E[?7l\E[?3l\E[>8g:kb=^H:kd=^J:\
+ :kl=^H:nw=^M^J:sf=^J:ta=^I:\
+ :tc=rbcomm:
+rbcomm-w|IBM PC with RBcomm in 132 column mode:\
+ :co#132:\
+ :bl=^G:cr=^M:do=^J:\
+ :is=\017\035\E(B\E)0\E[?7h\E[?3h\E[>8g:kb=^H:kd=^J:\
+ :kl=^H:nw=^M^J:sf=^J:ta=^I:\
+ :tc=rbcomm:
+
+# CTRM terminal emulator
+# 1. underlining is not allowed with colors: first, is is simulated by
+# black on white, second, it disables background color manipulations.
+# 2. BLINKING, REVERSE and BOLD are allowed with colors,
+# so we have to save their status in the static registers A, B and H
+# respectively, to be able to restore them when color changes
+# (because any color change turns off ALL attributes)
+# 3. :md: and :mr: sequences alternate modes,
+# rather then simply entering them. Thus we have to check the
+# static register B and H to determine the status, before sending the
+# escape sequence.
+# 4. :me: now must set the status of all 3 register (A,B,H) to zero
+# and then reset colors
+# 5. implementation of the protect mode would badly penalize the performance.
+# we would have to use \E&bn sequence to turn off colors (as well as all
+# other attributes), and keep the status of protect mode in yet another
+# static variable. If someone really needs this mode, they would have to
+# create another terminfo entry.
+# 6. original color-pair is white on black.
+# store the information about colors into static registers
+# 7. set foreground color. it performs the following steps.
+# 1) turn off all attributes
+# 2) turn on the background and video attributes that have been turned
+# on before (this information is stored in static registers X,Y,Z,A,B,H,D).
+# 3) turn on foreground attributes
+# 4) store information about foreground into U,V,W static registers
+# 8. turn on background: similar to turn on foreground above
+# (untranslatable capabilities removed to fit entry within 1023 bytes)
+ctrm|C terminal emulator:\
+ :am:ut:xo:\
+ :Co#8:NC#2:Nl#0:co#80:lh#0:li#24:lm#0:lw#0:pa#63:pb#19200:vt#6:\
+ :al=\EL:bl=^G:bt=\Ei:cd=\EJ:ce=\EK:ch=\E&a%dC:cl=\EH\EJ:\
+ :cm=\E&a%r%dc%dY:cr=^M:ct=\E3:cv=\E&a%dY:dc=\EP:dl=\EM:\
+ :do=^J:ei=\ER:im=\EQ:ip=:is=\E&jA\r:k1=\Ep\r:k2=\Eq\r:\
+ :k3=\Er\r:k4=\Es\r:k5=\Et\r:k6=\Eu\r:k7=\Ev\r:k8=\Ew\r:\
+ :kb=^H:kd=\Ew\r:ke=\E&jA:kh=\Ep\r:kl=\Eu\r:kr=\Ev\r:\
+ :ks=\E&jB:ku=\Et\r:le=^H:mb=\E&dA%{1}%PA:\
+ :md=%?%gH%{0}%=%t\E&dH%{1}%PH%;:\
+ :me=\E&d@%{0}%PA%{0}%PB%{0}%PH:\
+ :mr=%?%gB%{0}%=%t\E&dB%{1}%PB%;:nd=\EC:\
+ :op=\E&bn\E&bB\E&bG\E&bR%{0}%PX%{0}%PY%{0}%PZ%{1}%PW%{1}%PV%{1}%PU:\
+ :sf=^J:so=\E&dD:st=\E1:ta=\011:up=\EA:us=\E&dD:
+
+# gs6300 - can't use blue foreground, it clashes with underline;
+# it's simulated with cyan
+# Bug: The <op> capability probably resets attributes.
+# (gs6300: commented out <rmln> (no <smln>) --esr)
+gs6300|emots|AT&T PC6300 with EMOTS terminal emulator:\
+ :am:ms:ut:xo:\
+ :Co#8:co#80:it#8:li#24:pa#63:\
+ :AL=\E[%dL:DC=\E[%dP:DL=\E[%dM:DO=\E[%dB:IC=\E[%d@:\
+ :LE=\E[%dD:RI=\E[%dC:Sb=\E[?;%dm:\
+ :..Sf=\E[?%?%p1%{0}%=%t0%e%p1%{1}%=%t2%e%p1%{1}%-%d%;m:\
+ :UP=\E[%dA:\
+ :ac=++\054\054--..``aaffgghhiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~:\
+ :ae=\E[10m:al=\E[L:as=\E[11m:bl=^G:cd=\E[J:ce=\E[K:\
+ :cl=\E[H\E[J:cm=\E[%i%d;%dH:cr=^M:dc=\E[P:dl=\E[M:do=^J:\
+ :ei=:ho=\E[H:ic=\E[@:im=:is=\E[m:k1=\E[0s:k2=\E[24s:\
+ :k3=\E[1s:k4=\E[23s:k5=\E[2s:k6=\E[22s:k7=\E[3s:k8=\E[21s:\
+ :kB=^R^I:kb=^H:kd=\E[B:kh=\E[H:kl=\E[D:kr=\E[C:ku=\E[A:\
+ :le=^H:mb=\E[5m:md=\E[1m:me=\E[m\E[10m:mr=\E[7m:nd=\E[C:\
+ :op=\E[?;m:pf=\E[4i:po=\E[5i:r1=\Ec:sf=^J:so=\E[1m:sr=\E[L:\
+ :ta=^I:up=\E[A:us=\E[4m:
+
+# From: <earle@smeagol.UUCP> 29 Oct 85 05:40:18 GMT
+# MS-Kermit with Heath-19 emulation mode enabled
+# (h19k: changed ":pt@:" to ":it@"
+h19k|h19kermit|heathkit emulation provided by Kermit (no auto margin):\
+ :am@:da:db:xt:\
+ :it@:\
+ :ta@:tc=h19-u:
+
+# Apple Macintosh with Versaterm, a terminal emulator distributed by Synergy
+# Software (formerly Peripherals Computers & Supplies, Inc) of
+# 2457 Perkiomen Ave., Reading, PA 19606, 1-800-876-8376. They can
+# also be reached at support@synergy.com.
+versaterm|versaterm vt100 emulator for the macintosh:\
+ :am:xn:\
+ :co#80:it#8:li#24:\
+ :al=9\E[1L:bl=^G:cd=50\E[J:ce=3\E[K:cl=50\E[;H\E[2J:\
+ :cm=5\E[%i%d;%dH:cr=^M:cs=\E[%i%d;%dr:dc=7\E[1P:\
+ :dl=9\E[1M:do=^J:ei=:ho=\E[H:ic=7\E[1@:im=:\
+ :is=\E[1;24r\E[24;1H:k1=\EOP:k2=\EOQ:k3=\EOR:k4=\EOS:\
+ :kb=^H:kd=\EOB:ke=\E>\E[?1l:kl=\EOD:kr=\EOC:ks=\E=\E[?1h:\
+ :ku=\EOA:le=^H:mb=2\E[5m:md=2\E[1m:me=2\E[m:mr=2\E[7m:\
+ :nd=2\E[C:nw=^M^J:r1=\E>:rc=\E8:\
+ :rf=/usr/share/tabset/vt100:sc=\E7:se=2\E[m:so=2\E[7m:\
+ :sr=5\EM:ta=^I:ue=2\E[m:up=2\E[A:us=2\E[4m:
+
+# From: Rick Thomas <ihnp4!btlunix!rbt>
+# (xtalk: I added <rmam>/<smam> based on the init string.
+xtalk|IBM PC with xtalk communication program (versions up to 3.4):\
+ :am:mi:ms:xo:\
+ :co#80:it#8:li#24:sg#1:vt#3:\
+ :@8=\EOM:DO=\E[%dB:K1=\EOq:K2=\EOr:K3=\EOs:K4=\EOp:K5=\EOn:\
+ :LE=\E[%dD:RA=\E[?7l:RI=\E[%dC:SA=\E[?7h:UP=\E[%dA:\
+ :ac=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~:\
+ :ae=^O:al=\E[L:as=^N:bl=^G:cb=\E[1K:cd=\E[J:ce=\E[K:\
+ :cl=\E[H\E[J:cm=\E[%i%d;%dH:cr=^M:ct=\E[3g:dl=\E[M:do=^J:\
+ :eA=\E(B\E)0:ho=\E[H:k0=\EOy:k1=\EOP:k2=\EOQ:k3=\EOR:\
+ :k4=\EOS:k5=\EOt:k6=\EOu:k7=\EOv:k8=\EOl:k9=\EOw:k;=\EOx:\
+ :kb=^H:kd=\EOB:ke=\E[?1l\E>:kl=\EOD:kr=\EOC:ks=\E[?1h\E=:\
+ :ku=\EOA:le=^H:me=\E[m:nd=\E[C:\
+ :r2=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h:se=\E[m :sf=^J:\
+ :so=\E[7m :sr=\EM:st=\EH:ta=^I:up=\E[A:
+
+# The official PC terminal emulator program of the AT&T Product Centers.
+# Note - insert mode commented out - doesn't seem to work on AT&T PC.
+simterm|attpc running simterm:\
+ :am:\
+ :co#80:li#24:\
+ :al=\EL:bl=^G:cd=\EJ:ce=\EK:cl=\EH\EJ:cm=\E=%+ %+ :cr=^M:\
+ :dc=\ER:dl=\EM:do=\EB:ho=\EH:le=^H:me=\E&d@:nd=\EC:se=\E&d@:\
+ :sf=^J:so=\E&dB:te=\EVE:ti=\EVS:up=\EA:
+
+#### Miscellaneous obsolete terminals, manufacturers unknown
+#
+# If you have any information about these (like, a manufacturer's name,
+# and a date on the serial-number plate) please send it!
+
+cad68-3|cgc3|cad68 basic monitor transparent mode size 3 chars:\
+ :am:bs:\
+ :co#73:li#36:\
+ :cl=^Z:ho=^^:le=^H:nd=^L:up=^K:
+cad68-2|cgc2|cad68 basic monitor transparent mode size 2 chars:\
+ :am:bs:\
+ :co#85:li#39:\
+ :cl=^Z:ho=^^:k1=\E5:k2=\E6:k3=\E7:k4=\E8:kd=\E2:kl=\E3:\
+ :kr=\E4:ku=\E1:le=^H:nd=^L:se=\Em^C:so=\Em^L:up=^K:
+cops10|cops|cops-10|cops 10:\
+ :am:bw:\
+ :co#80:li#24:\
+ :bl=^G:cd=^W:ce=^V:cl=30\030:cm=\020%+ %+ :cr=^M:do=^J:\
+ :kb=^H:kd=^J:kh=^Y:kl=^H:kr=^L:ku=^K:le=^H:nd=^L:sf=^J:up=^K:
+# (d132: removed duplicate :ic=\E5:,
+# merged in capabilities from a BRL entry -- esr)
+d132|datagraphix|datagraphix 132a:\
+ :da:db:in:\
+ :co#80:li#30:\
+ :al=\E3:bl=^G:cl=^L:cm=\E8%i%3%3:cr=^M:dc=\E6:do=^J:ei=:\
+ :ho=\ET:ic=\E5:im=:kb=^H:kd=^J:kl=^H:le=^H:nd=\EL:nw=^M^J:\
+ :sf=^J:sr=\Ew:ta=^I:up=\EK:ve=\Em\En:vs=\Ex:
+# The d800 was an early portable terminal from c.1984-85 that looked a lot
+# like the original Compaq `lunchbox' portable (but no handle). It had a vt220
+# mode (which is what this entry looks like) and several other lesser-known
+# emulations.
+d800|Direct 800/A:\
+ :am:bs:da:db:ms:xs:\
+ :co#80:it#8:li#24:\
+ :ac=``a1fxgqh0jYk?lZm@nEooppqDrrsstCu4vAwBx3yyzz{{||}}~~:\
+ :ae=\E[m:as=\E[1m:bl=^G:cd=\E[J:ce=\E[K:cl=\E[1;1H\E[2J:\
+ :cm=\E[%i%d;%dH:cr=^M:do=^J:k1=\EOP:k2=\EOQ:k3=\EOR:\
+ :k4=\EOS:k5=\EOT:k6=\EOU:k7=\EOV:k8=\EOW:kd=\E[B:kl=\E[D:\
+ :kr=\E[C:ku=\E[A:le=^H:me=\E[m:nd=\E[C:se=\E[m:sf=\ED:\
+ :so=\E[7m:sr=\EM:ta=^I:ue=\E[m:up=\E[A:us=\E[4m:ve=\E[>12h:\
+ :vs=\E[>12l:
+digilog|digilog 333:\
+ :bs:\
+ :co#80:li#16:\
+ :bl=^G:ce=^X:cr=^M:do=^J:ho=^N:le=^H:nd=^I:sf=^J:up=^O:
+# The DWK was a terminal manufactured in the Soviet Union c.1986
+dwk|dwk-vt|dwk terminal:\
+ :am:\
+ :co#80:it#8:li#24:\
+ :ac=+\136\054Q-S.M0\177`+a\072f'g#h#i#jXkClJmFnNo~qUs_tEuPv\wKxW~_:\
+ :ae=\EG:as=\EF:bl=^G:cd=\EJ:ce=\EK:cl=\EH\EJ:cm=\EY%+ %+ :\
+ :cr=^M:dc=\EP:do=^J:ei=:ho=\EH:ic=\EQ:im=:k1=\Ef1:k2=\Ef2:\
+ :k3=\Ef3:k4=\Ef4:k5=\Ef5:k6=\Ef6:k7=\Ef7:k8=\Ef8:k9=\Ef9:\
+ :k;=\Ef0:kD=\Ee:kI=\Ed:kN=\Eh:kP=\Eg:kb=\177:kd=\EB:kl=\ED:\
+ :kr=\EC:ku=\EA:le=^H:me=\EX:mr=\ET:nd=\EC:nw=^M^J:se=\EX:\
+ :sf=^J:so=\ET:sr=\ES:ta=^I:up=\EA:
+env230|envision230|envision 230 graphics terminal:\
+ :xn@:\
+ :pf=\E[4i:po=\E[5i:ps=\E[0i:\
+ :..sa=\E[%?%p1%t;1%;%?%p2%t;4%;%?%p3%t;7%;%?%p4%t;5%;%?%p6%t;1%;m:tc=vt100:
+# These execuports were impact-printer ttys with a 30- or maybe 15-cps acoustic
+# coupler attached, the whole rig fitting in a suitcase and more or less
+# portable. Hot stuff for c.1977 :-) -- esr
+ep48|ep4080|execuport 4080:\
+ :am:bs:os:\
+ :co#80:\
+ :bl=^G:cr=^M:do=^J:hd=^\:hu=^^:le=^H:sf=^J:
+ep40|ep4000|execuport 4000:\
+ :co#136:tc=ep4080:
+# Adam Thompson <athompso@pangea.ca> tells us:
+# Informer series - these are all portable units, resembling older
+# automatic bread-baking machines. The terminal looks like a `clamshell'
+# design, but isn't. The structure is similar to the Direct terminals,
+# but only half the width. The entire unit is only about 10" wide.
+# It features an 8" screen (6" or 7" if you have color!), and an 9"x6"
+# keyboard. All the keys are crammed together, much like some laptop
+# PCs today, but perhaps less well organized...all these units have a
+# bewildering array of plugs on the back, including a built-in modem.
+# The 305 was a color version of the 304; the 306 and 307 were mono and
+# color terminals built for IBM bisync protocols.
+# From: Paul Leondis <unllab@amber.berkeley.edu>
+ifmr|Informer D304:\
+ :am:bs:\
+ :co#80:li#24:\
+ :cd=\E/:ce=\EQ:cl=\EZ:cm=\EY%r%+ %+ :dc=\E\:do=^J:ei=:\
+ :ho=\EH:ic=\E[:im=:le=^H:me=\EK:nd=\EC:se=\EK:so=\EJ:sr=\En:\
+ :up=\EA:
+# Entry largely based on wy60 and has the features of wy60ak.
+# (untranslatable capabilities removed to fit entry within 1023 bytes)
+# (sgr removed to fit entry within 1023 bytes)
+# (terminfo-only capabilities suppressed to fit entry within 1023 bytes)
+opus3n1+|Esprit Opus3n1+ in wy60 mode with ANSI arrow keys:\
+ :am:bw:hs:km:mi:ms:ul:xo:\
+ :co#80:li#24:ws#80:\
+ :ae=\EH^C:al=\EE:as=\EH^B:bl=^G:bt=\EI:cd=\EY:ce=\ET:cl=\E*:\
+ :cm=\Ea%i%dR%dC:cr=^M:ct=\E0:dc=\EW:dl=\ER:do=^J:ds=\Ez(\r:\
+ :ei=\Er:fs=^M:ho=\036:if=/usr/share/tabset/std:im=\Eq:ip=:\
+ :is=\E`\072\Ee(\EO\Ee6\Ec41\E~4\Ec21\Ed/\Ezz&\E[A\177\Ezz'\E[B\177\Ezz(\E[D\177\Ezz)\E[C\177\Ezz<\E[Q\177\Ezz`\E[F\177\EA1*\EZH12:\
+ :k1=^A@\r:k2=^AA\r:k3=^AB\r:k4=^AC\r:k5=^AD\r:k6=^AE\r:\
+ :k7=^AF\r:k8=^AG\r:k9=^AH\r:kD=\EW:kI=\EQ:kN=\EK:kP=\EJ:\
+ :kb=^H:kd=\E[B:kh=^^:kl=\E[D:kr=\E[C:ku=\E[A:le=^H:mb=\EG2:\
+ :me=\E(\EH\003\EG0\EcD:mh=\EGp:nd=^L:nw=\r\n:sf=^J:sr=\Ej:\
+ :st=\E1:ta=\011:te=:\
+ :ti=\Ezz&\E[A\177\Ezz'\E[B\177\Ezz(\E[D\177\Ezz)\E[C\177\Ezz<\E[Q\177:\
+ :ts=\Ez(:uc=\EG8%p1%c\EG0:up=^K:ve=\E`1:vi=\E`0:\
+ :tc=adm+sgr:
+teletec|Teletec Datascreen:\
+ :am:bs:\
+ :co#80:li#24:\
+ :bl=^G:cl=^L:cr=^M:do=^J:ho=^^:le=^H:nd=^_:sf=^J:up=^K:
+# From: Mark Dornfeld <romwa@ucbvax.berkeley.edu>
+# This description is for the LANPAR Technologies VISION 3220
+# terminal from 1984/85. The function key definitions k0-k5 represent the
+# edit keypad: FIND, INSERT HERE, REMOVE, SELECT, PREV SCREEN,
+# NEXT SCREEN. The key definitions k6-k9 represent the PF1 to PF4 keys.
+#
+# Kenneth Randell <kenr@datametrics.com> writes on 31 Dec 1998:
+# I had a couple of scopes (3221) like this once where I used to work, around
+# the 1987 time frame if memory serves me correctly. These scopes were made
+# by an outfit called LANPAR Technologies, and were meant to me DEC VT 220
+# compatible. The 3220 was a plain text terminal like the VT-220, the 3221
+# was a like the VT-240 (monochrome with Regis + Sixel graphics), and the 3222
+# was like the VT-241 (color with Regis + Sixel Graphics). These terminals
+# (3221) cost about $1500 each, and one was always broken -- had to be sent
+# back to the shop for repairs.
+# The only real advantage these scopes had over the VT-240's were:
+# 1) They were faster in the Regis display, or at least the ones I did
+# 2) They had a handy debugging feature where you could split-screen the
+# scope, the graphics would appear on the top, and the REGIS commands would
+# appear on the bottom. I don't remember the VT-240s being able to do that.
+# I would swear that LANPAR Technologies was in MA someplace, but since I
+# don't work at the same place anymore, and those terminals and manuals were
+# long since junked, I cannot be any more sure than that.
+#
+# (v3220: removed obsolete ":kn#10:",
+# I added <rmam>/<smam> based on the init string -- esr)
+v3220|LANPAR Vision II model 3220/3221/3222:\
+ :am:bs:mi:xn:\
+ :co#80:it#8:li#24:\
+ :RA=\E[?7l:SA=\E[?7h:al=\E[L:cd=\E[J:ce=\E[K:cl=\E[H\E[J:\
+ :cm=\E[%i%d;%dH:dc=\E[P:dl=\E[M:ei=\E[4l:im=\E[4h:\
+ :is=\E>\E[?3l\E[?7h\E[?8h\E[p:k0=\E[1~:k1=\E[2~:\
+ :k2=\E[3~:k3=\E[4~:k4=\E[5~:k5=\E[6~:k6=\E[OP:k7=\E[OQ:\
+ :k8=\E[OR:k9=\E[OS:kd=\E[B:ke=\E>:kh=\E[H:kl=\E[D:kr=\E[C:\
+ :ks=\E=:ku=\E[A:le=^H:me=\E[m:nd=\E[C:se=\E[m:so=\E[7m:\
+ :sr=\EM:ta=^I:ue=\E[m:up=\E[A:us=\E[4m:
+######## ICH/ICH1 VERSUS RMIR/SMIR
+#
+# Some non-curses applications get confused if both ich/ich1 and rmir/smir
+# are present; the symptom is doubled characters in an update using insert.
+# These applications are technically correct; in both 4.3BSD termcap and
+# terminfo, you're not actually supposed to specify both ich/ich1 and rmir/smir
+# unless the terminal needs both. To my knowledge, no terminal still in this
+# file requires both other than the very obsolete dm2500.
+#
+# For ncurses-based applications this is not a problem, as ncurses uses
+# one or the other as appropriate but never mixes the two. Therefore we
+# have not corrected entries like `linux' and `xterm' that specify both.
+# If you see doubled characters from these, use the linux-nic and xterm-nic
+# entries that suppress ich/ich1. And upgrade to ncurses!
+#
+
+######## VT100/ANSI/ISO 6429/ECMA-48/PC-TERM TERMINAL STANDARDS
+#
+# ANSI X3.64 has been withdrawn and replaced by ECMA-48. The ISO 6429 and
+# ECMA-48 standards are said to be almost identical, but are not the same
+# as X3.64 (though for practical purposes they are close supersets of it).
+#
+# You can obtain ECMA-48 for free by sending email to helpdesk@ecma.ch
+# requesting the standard(s) you want (i.e. ECMA-48, "Control Functions for
+# Coded Character Sets"), include your snail-mail address, and you should
+# receive the document in due course. Don't expect an email acknowledgement.
+#
+# Related standards include "X3.4-1977: American National Standard Code for
+# Information Interchange" (the ASCII standard) and "X3.41.1974:
+# Code-Extension Techniques for Use with the 7-Bit Coded Character Set of
+# American National Standard for Information Interchange." I believe (but
+# am not certain) that these are effectively identical to ECMA-6 and ECMA-35
+# respectively.
+#
+
+#### VT100/ANSI/ECMA-48
+#
+# ANSI Standard (X3.64) Control Sequences for Video Terminals and Peripherals
+# and ECMA-48 Control Functions for Coded Character Sets.
+#
+# Much of the content of this comment is adapted from a table prepared by
+# Richard Shuford, based on a 1984 Byte article. Terminfo correspondences,
+# discussion of some terminfo-related issues, and updates to capture ECMA-48
+# have been added. Control functions described in ECMA-48 only are tagged
+# with * after their names.
+#
+# The table is a complete list of the defined ANSI X3.64/ECMA-48 control
+# sequences. In the main table, \E stands for an escape (\033) character,
+# SPC for space. Pn stands for a single numeric parameter to be inserted
+# in decimal ASCII. Ps stands for a list of such parameters separated by
+# semicolons. Parameter meanings for most parametrized sequences are
+# decribed in the notes.
+#
+# Sequence Sequence Parameter or
+# Mnemonic Name Sequence Value Mode terminfo
+# -----------------------------------------------------------------------------
+# APC Applicatn Program Command \E _ - Delim -
+# BEL Bell * ^G - - bel
+# BPH Break Permitted Here * \E B - * -
+# BS Backpace * ^H - EF -
+# CAN Cancel * ^X - - - (A)
+# CBT Cursor Backward Tab \E [ Pn Z 1 eF cbt
+# CCH Cancel Previous Character \E T - - -
+# CHA Cursor Horizntal Absolute \E [ Pn G 1 eF hpa (B)
+# CHT Cursor Horizontal Tab \E [ Pn I 1 eF tab (C)
+# CMD Coding Method Delimiter * \E
+# CNL Cursor Next Line \E [ Pn E 1 eF nel (D)
+# CPL Cursor Preceding Line \E [ Pn F 1 eF -
+# CPR Cursor Position Report \E [ Pn ; Pn R 1, 1 - - (E)
+# CSI Control Sequence Intro \E [ - Intro -
+# CTC Cursor Tabulation Control \E [ Ps W 0 eF - (F)
+# CUB Cursor Backward \E [ Pn D 1 eF cub
+# CUD Cursor Down \E [ Pn B 1 eF cud
+# CUF Cursor Forward \E [ Pn C 1 eF cuf
+# CUP Cursor Position \E [ Pn ; Pn H 1, 1 eF cup (G)
+# CUU Cursor Up \E [ Pn A 1 eF cuu
+# CVT Cursor Vertical Tab \E [ Pn Y - eF - (H)
+# DA Device Attributes \E [ Pn c 0 - -
+# DAQ Define Area Qualification \E [ Ps o 0 - -
+# DCH Delete Character \E [ Pn P 1 eF dch
+# DCS Device Control String \E P - Delim -
+# DL Delete Line \E [ Pn M 1 eF dl
+# DLE Data Link Escape * ^P - - -
+# DMI Disable Manual Input \E \ - Fs -
+# DSR Device Status Report \E [ Ps n 0 - - (I)
+# DTA Dimension Text Area * \E [ Pn ; Pn SPC T - PC -
+# EA Erase in Area \E [ Ps O 0 eF - (J)
+# ECH Erase Character \E [ Pn X 1 eF ech
+# ED Erase in Display \E [ Ps J 0 eF ed (J)
+# EF Erase in Field \E [ Ps N 0 eF -
+# EL Erase in Line \E [ Ps K 0 eF el (J)
+# EM End of Medium * ^Y - - -
+# EMI Enable Manual Input \E b Fs -
+# ENQ Enquire ^E - - -
+# EOT End Of Transmission ^D - * -
+# EPA End of Protected Area \E W - - - (K)
+# ESA End of Selected Area \E G - - -
+# ESC Escape ^[ - - -
+# ETB End Transmission Block ^W - - -
+# ETX End of Text ^C - - -
+# FF Form Feed ^L - - -
+# FNK Function Key * \E [ Pn SPC W - - -
+# GCC Graphic Char Combination* \E [ Pn ; Pn SPC B - - -
+# FNT Font Selection \E [ Pn ; Pn SPC D 0, 0 FE -
+# GSM Graphic Size Modify \E [ Pn ; Pn SPC B 100, 100 FE - (L)
+# GSS Graphic Size Selection \E [ Pn SPC C none FE -
+# HPA Horz Position Absolute \E [ Pn ` 1 FE - (B)
+# HPB Char Position Backward \E [ j 1 FE -
+# HPR Horz Position Relative \E [ Pn a 1 FE - (M)
+# HT Horizontal Tab * ^I - FE - (N)
+# HTJ Horz Tab w/Justification \E I - FE -
+# HTS Horizontal Tab Set \E H - FE hts
+# HVP Horz & Vertical Position \E [ Pn ; Pn f 1, 1 FE - (G)
+# ICH Insert Character \E [ Pn @ 1 eF ich
+# IDCS ID Device Control String \E [ SPC O - * -
+# IGS ID Graphic Subrepertoire \E [ SPC M - * -
+# IL Insert Line \E [ Pn L 1 eF il
+# IND Index \E D - FE -
+# INT Interrupt \E a - Fs -
+# JFY Justify \E [ Ps SPC F 0 FE -
+# IS1 Info Separator #1 * ^_ - * -
+# IS2 Info Separator #1 * ^^ - * -
+# IS3 Info Separator #1 * ^] - * -
+# IS4 Info Separator #1 * ^\ - * -
+# LF Line Feed ^J - - -
+# LS1R Locking Shift Right 1 * \E ~ - - -
+# LS2 Locking Shift 2 * \E n - - -
+# LS2R Locking Shift Right 2 * \E } - - -
+# LS3 Locking Shift 3 * \E o - - -
+# LS3R Locking Shift Right 3 * \E | - - -
+# MC Media Copy \E [ Ps i 0 - - (S)
+# MW Message Waiting \E U - - -
+# NAK Negative Acknowledge * ^U - * -
+# NBH No Break Here * \E C - - -
+# NEL Next Line \E E - FE nel (D)
+# NP Next Page \E [ Pn U 1 eF -
+# NUL Null * ^@ - - -
+# OSC Operating System Command \E ] - Delim -
+# PEC Pres. Expand/Contract * \E Pn SPC Z 0 - -
+# PFS Page Format Selection * \E Pn SPC J 0 - -
+# PLD Partial Line Down \E K - FE - (T)
+# PLU Partial Line Up \E L - FE - (U)
+# PM Privacy Message \E ^ - Delim -
+# PP Preceding Page \E [ Pn V 1 eF -
+# PPA Page Position Absolute * \E [ Pn SPC P 1 FE -
+# PPB Page Position Backward * \E [ Pn SPC R 1 FE -
+# PPR Page Position Forward * \E [ Pn SPC Q 1 FE -
+# PTX Parallel Texts * \E [ \ - - -
+# PU1 Private Use 1 \E Q - - -
+# PU2 Private Use 2 \E R - - -
+# QUAD Typographic Quadding \E [ Ps SPC H 0 FE -
+# REP Repeat Char or Control \E [ Pn b 1 - rep
+# RI Reverse Index \E M - FE - (V)
+# RIS Reset to Initial State \E c - Fs -
+# RM Reset Mode * \E [ Ps l - - - (W)
+# SACS Set Add. Char. Sep. * \E [ Pn SPC / 0 - -
+# SAPV Sel. Alt. Present. Var. * \E [ Ps SPC ] 0 - - (X)
+# SCI Single-Char Introducer \E Z - - -
+# SCO Sel. Char. Orientation * \E [ Pn ; Pn SPC k - - -
+# SCS Set Char. Spacing * \E [ Pn SPC g - - -
+# SD Scroll Down \E [ Pn T 1 eF rin
+# SDS Start Directed String * \E [ Pn ] 1 - -
+# SEE Select Editing Extent \E [ Ps Q 0 - - (Y)
+# SEF Sheet Eject & Feed * \E [ Ps ; Ps SPC Y 0,0 - -
+# SGR Select Graphic Rendition \E [ Ps m 0 FE sgr (O)
+# SHS Select Char. Spacing * \E [ Ps SPC K 0 - -
+# SI Shift In ^O - - - (P)
+# SIMD Sel. Imp. Move Direct. * \E [ Ps ^ - - -
+# SL Scroll Left \E [ Pn SPC @ 1 eF -
+# SLH Set Line Home * \E [ Pn SPC U - - -
+# SLL Set Line Limit * \E [ Pn SPC V - - -
+# SLS Set Line Spacing * \E [ Pn SPC h - - -
+# SM Select Mode \E [ Ps h none - - (W)
+# SO Shift Out ^N - - - (Q)
+# SOH Start Of Heading * ^A - - -
+# SOS Start of String * \E X - - -
+# SPA Start of Protected Area \E V - - - (Z)
+# SPD Select Pres. Direction * \E [ Ps ; Ps SPC S 0,0 - -
+# SPH Set Page Home * \E [ Ps SPC G - - -
+# SPI Spacing Increment \E [ Pn ; Pn SPC G none FE -
+# SPL Set Page Limit * \E [ Ps SPC j - - -
+# SPQR Set Pr. Qual. & Rapid. * \E [ Ps SPC X 0 - -
+# SR Scroll Right \E [ Pn SPC A 1 eF -
+# SRCS Set Reduced Char. Sep. * \E [ Pn SPC f 0 - -
+# SRS Start Reversed String * \E [ Ps [ 0 - -
+# SSA Start of Selected Area \E F - - -
+# SSU Select Size Unit * \E [ Pn SPC I 0 - -
+# SSW Set Space Width * \E [ Pn SPC [ none - -
+# SS2 Single Shift 2 (G2 set) \E N - Intro -
+# SS3 Single Shift 3 (G3 set) \E O - Intro -
+# ST String Terminator \E \ - Delim -
+# STAB Selective Tabulation * \E [ Pn SPC ^ - - -
+# STS Set Transmit State \E S - - -
+# STX Start pf Text * ^B - - -
+# SU Scroll Up \E [ Pn S 1 eF indn
+# SUB Substitute * ^Z - - -
+# SVS Select Line Spacing * \E [ Pn SPC \ 1 - -
+# SYN Synchronous Idle * ^F - - -
+# TAC Tabul. Aligned Centered * \E [ Pn SPC b - - -
+# TALE Tabul. Al. Leading Edge * \E [ Pn SPC a - - -
+# TATE Tabul. Al. Trailing Edge* \E [ Pn SPC ` - - -
+# TBC Tab Clear \E [ Ps g 0 FE tbc
+# TCC Tabul. Centered on Char * \E [ Pn SPC c - - -
+# TSR Tabulation Stop Remove * \E [ Pn SPC d - FE -
+# TSS Thin Space Specification \E [ Pn SC E none FE -
+# VPA Vert. Position Absolute \E [ Pn d 1 FE vpa
+# VPB Line Position Backward * \E [ Pn k 1 FE -
+# VPR Vert. Position Relative \E [ Pn e 1 FE - (R)
+# VT Vertical Tabulation * ^K - FE -
+# VTS Vertical Tabulation Set \E J - FE -
+#
+# ---------------------------------------------------------------------------
+#
+# Notes:
+#
+# Some control characters are listed in the ECMA-48 standard without
+# being assigned functions relevant to terminal control there (they
+# referred to other standards such as ISO 1745 or ECMA-35). They are listed
+# here anyway for completeness.
+#
+# (A) ECMA-48 calls this "CancelCharacter" but retains the CCH abbreviation.
+#
+# (B) There seems to be some confusion abroad between CHA and HPA. Most
+# `ANSI' terminals accept the CHA sequence, not the HPA. but terminfo calls
+# the capability (hpa). ECMA-48 calls this "Cursor Character Absolute" but
+# preserved the CHA abbreviation.
+#
+# (C) CHT corresponds to terminfo (tab). Usually it has the value ^I.
+# Occasionally (as on, for example, certain HP terminals) this has the HTJ
+# value. ECMA-48 calls this "Cursor Forward Tabulation" but preserved the
+# CHT abbreviation.
+#
+# (D) terminfo (nel) is usually \r\n rather than ANSI \EE.
+#
+# (E) ECMA-48 calls this "Active Position Report" but preserves the CPR
+# abbreviation.
+#
+# (F) CTC parameter values: 0 = set char tab, 1 = set line tab, 2 = clear
+# char tab, 3 = clear line tab, 4 = clear all char tabs on current line,
+# 5 = clear all char tabs, 6 = clear all line tabs.
+#
+# (G) CUP and HVP are identical in effect. Some ANSI.SYS versions accept
+# HVP, but always allow CUP as an alternate. ECMA-48 calls HVP "Character
+# Position Absolute" but retains the HVP abbreviation.
+#
+# (H) ECMA calls this "Cursor Line Tabulation" but preserves the CVT
+# abbreviation.
+#
+# (I) DSR parameter values: 0 = ready, 1 = busy, 2 = busy, will send DSR
+# later, 3 = malfunction, 4 = malfunction, will send DSR later, 5 = request
+# DSR, 6 = request CPR response.
+#
+# (J) ECMA calls ED "Erase In Page". EA/ED/EL parameters: 0 = clear to end,
+# 1 = clear from beginning, 2 = clear.
+#
+# (K) ECMA calls this "End of Guarded Area" but preserves the EPA abbreviation.
+#
+# (L) The GSM parameters are vertical and horizontal parameters to scale by.
+#
+# (M) Some ANSI.SYS versions accept HPR, but more commonly `ANSI' terminals
+# use CUF for this function and ignore HPR. ECMA-48 calls this "Character
+# Position Relative" but retains the HPR abbreviation.
+#
+# (N) ECMA-48 calls this "Character Tabulation" but retains the HT
+# abbreviation.
+#
+# (O) SGR parameter values: 0 = default mode (attributes off), 1 = bold,
+# 2 = dim, 3 = italicized, 4 = underlined, 5 = slow blink, 6 = fast blink,
+# 7 = reverse video, 8 = invisible, 9 = crossed-out (marked for deletion),
+# 10 = primary font, 10 + n (n in 1..9) = nth alternative font, 20 = Fraktur,
+# 21 = double underline, 22 = turn off 2, 23 = turn off 3, 24 = turn off 4,
+# 25 = turn off 5, 26 = proportional spacing, 27 = turn off 7, 28 = turn off
+# 8, 29 = turn off 9, 30 = black fg, 31 = red fg, 32 = green fg, 33 = yellow
+# fg, 34 = blue fg, 35 = magenta fg, 36 = cyan fg, 37 = white fg, 38 = set
+# fg color as in CCIT T.416, 39 = set default fg color, 40 = black bg
+# 41 = red bg, 42 = green bg, 43 = yellow bg, 44 = blue bg, 45 = magenta bg,
+# 46 = cyan bg, 47 = white bg, 48 = set bg color as in CCIT T.416, 39 = set
+# default bg color, 50 = turn off 26, 51 = framed, 52 = encircled, 53 =
+# overlined, 54 = turn off 51 & 52, 55 = not overlined, 56-59 = reserved,
+# 61-65 = variable highlights for ideograms.
+#
+# (P) SI is also called LSO, Locking Shift Zero.
+#
+# (Q) SI is also called LS1, Locking Shift One.
+#
+# (R) Some ANSI.SYS versions accept VPR, but more commonly `ANSI' terminals
+# use CUD for this function and ignore VPR. ECMA calls it `Line Position
+# Absolute' but retains the VPA abbreviation.
+#
+# (S) MC parameters: 0 = start xfer to primary aux device, 1 = start xfer from
+# primary aux device, 2 = start xfer to secondary aux device, 3 = start xfer
+# from secondary aux device, 4 = stop relay to primary aux device, 5 =
+# start relay to primary aux device, 6 = stop relay to secondary aux device,
+# 7 = start relay to secondary aux device.
+#
+# (T) ECMA-48 calls this "Partial Line Forward" but retains the PLD
+# abbreviation.
+#
+# (U) ECMA-48 calls this "Partial Line Backward" but retains the PLD
+# abbreviation.
+#
+# (V) ECMA-48 calls this "Reverse Line Feed" but retains the RI abbreviation.
+#
+# (W) RM/SM modes are as follows: 1 = Guarder Area Transfer Mode (GATM),
+# 2 = Keyboard Action Mode (KAM), 3 = Control Representation Mode (CRM),
+# 4 = Insertion Replacement Mode, 5 = Status Report Transfer Mode (SRTM),
+# 6 = Erasure Mode (ERM), 7 = Line Editing Mode (LEM), 8 = Bi-Directional
+# Support Mode (BDSM), 9 = Device Component Select Mode (DCSM),
+# 10 = Character Editing Mode (HEM), 11 = Positioning Unit Mode (PUM),
+# 12 = Send/Receive Mode, 13 = Format Effector Action Mode (FEAM),
+# 14 = Format Effector Transfer Mode (FETM), 15 = Multiple Area Transfer
+# Mode (MATM), 16 = Transfer Termination Mode, 17 = Selected Area Transfer
+# Mode, 18 = Tabulation Stop Mode, 19 = Editing Boundary Mode, 20 = Line Feed
+# New Line Mode (LF/NL), Graphic Rendition Combination Mode (GRCM), 22 =
+# Zero Default Mode (ZDM). The EBM and LF/NL modes have actually been removed
+# from ECMA-48's 5th edition but are listed here for reference.
+#
+# (X) Select Alternate Presentation Variants is used only for non-Latin
+# alphabets.
+#
+# (Y) "Select Editing Extent" (SEE) was ANSI "Select Edit Extent Mode" (SEM).
+#
+# (Z) ECMA-48 calls this "Start of Guarded Area" but retains the SPA
+# abbreviation.
+#
+# ---------------------------------------------------------------------------
+#
+# Abbreviations:
+#
+# Intro an Introducer of some kind of defined sequence; the normal 7-bit
+# X3.64 Control Sequence Introducer is the two characters "Escape ["
+#
+# Delim a Delimiter
+#
+# x/y identifies a character by position in the ASCII table (column/row)
+#
+# eF editor function (see explanation)
+#
+# FE format effector (see explanation)
+#
+# F is a Final character in
+# an Escape sequence (F from 3/0 to 7/14 in the ASCII table)
+# a control sequence (F from 4/0 to 7/14)
+#
+# Gs is a graphic character appearing in strings (Gs ranges from
+# 2/0 to 7/14) in the ASCII table
+#
+# Ce is a control represented as a single bit combination in the C1 set
+# of controls in an 8-bit character set
+#
+# C0 the familiar set of 7-bit ASCII control characters
+#
+# C1 roughly, the set of control chars available only in 8-bit systems.
+# This is too complicated to explain fully here, so read Jim Fleming's
+# article in the February 1983 BYTE, especially pages 214 through 224.
+#
+# Fe is a Final character of a 2-character Escape sequence that has an
+# equivalent representation in an 8-bit environment as a Ce-type
+# (Fe ranges from 4/0 to 5/15)
+#
+# Fs is a Final character of a 2-character Escape sequence that is
+# standardized internationally with identical representation in 7-bit
+# and 8-bit environments and is independent of the currently
+# designated C0 and C1 control sets (Fs ranges from 6/0 to 7/14)
+#
+# I is an Intermediate character from 2/0 to 2/15 (inclusive) in the
+# ASCII table
+#
+# P is a parameter character from 3/0 to 3/15 (inclusive) in the ASCII
+# table
+#
+# Pn is a numeric parameter in a control sequence, a string of zero or
+# more characters ranging from 3/0 to 3/9 in the ASCII table
+#
+# Ps is a variable number of selective parameters in a control sequence
+# with each selective parameter separated from the other by the code
+# 3/11 (which usually represents a semicolon); Ps ranges from
+# 3/0 to 3/9 and includes 3/11
+#
+# * Not relevant to terminal control, listed for completeness only.
+#
+# Format Effectors versus Editor Functions
+#
+# A format effector specifies how following output is to be displayed.
+# An editor function allows you to modify the display. Informally
+# format effectors may be destructive; format effectors should not be.
+#
+# For instance, a format effector that moves the "active position" (the
+# cursor or equivalent) one space to the left would be useful when you want to
+# create an overstrike, a compound character made of two standard characters
+# overlaid. Control-H, the Backspace character, is actually supposed to be a
+# format effector, so you can do this. But many systems use it in a
+# nonstandard fashion, as an editor function, deleting the character to the
+# left of the cursor and moving the cursor left. When Control-H is assumed to
+# be an editor function, you cannot predict whether its use will create an
+# overstrike unless you also know whether the output device is in an "insert
+# mode" or an "overwrite mode". When Control-H is used as a format effector,
+# its effect can always be predicted. The familiar characters carriage
+# return, linefeed, formfeed, etc., are defined as format effectors.
+#
+# NOTES ON THE DEC VT100 IMPLEMENTATION
+#
+# Control sequences implemented in the VT100 are as follows:
+#
+# CPR, CUB, CUD, CUF, CUP, CUU, DA, DSR, ED, EL, HTS, HVP, IND,
+# LNM, NEL, RI, RIS, RM, SGR, SM, TBC
+#
+# plus several private DEC commands.
+#
+# Erasing parts of the display (EL and ED) in the VT100 is performed thus:
+#
+# Erase from cursor to end of line Esc [ 0 K or Esc [ K
+# Erase from beginning of line to cursor Esc [ 1 K
+# Erase line containing cursor Esc [ 2 K
+# Erase from cursor to end of screen Esc [ 0 J or Esc [ J
+# Erase from beginning of screen to cursor Esc [ 1 J
+# Erase entire screen Esc [ 2 J
+#
+# Some brain-damaged terminal/emulators respond to Esc [ J as if it were
+# Esc [ 2 J, but this is wrong; the default is 0.
+#
+# The VT100 responds to receiving the DA (Device Attributes) control
+#
+# Esc [ c (or Esc [ 0 c)
+#
+# by transmitting the sequence
+#
+# Esc [ ? l ; Ps c
+#
+# where Ps is a character that describes installed options.
+#
+# The VT100's cursor location can be read with the DSR (Device Status
+# Report) control
+#
+# Esc [ 6 n
+#
+# The VT100 reports by transmitting the CPR sequence
+#
+# Esc [ Pl ; Pc R
+#
+# where Pl is the line number and Pc is the column number (in decimal).
+#
+# The specification for the DEC VT100 is document EK-VT100-UG-003.
+
+#### ANSI.SYS
+#
+# Here is a description of the color and attribute controls supported in the
+# the ANSI.SYS driver under MS-DOS. Most console drivers and ANSI
+# terminal emulators for Intel boxes obey these. They are a proper subset
+# of the ECMA-48 escapes.
+#
+# 0 all attributes off
+# 1 foreground bright
+# 4 underscore on
+# 5 blink on/background bright (not reliable with brown)
+# 7 reverse-video
+# 8 set blank (non-display)
+# 10 set primary font
+# 11 set first alternate font (on PCs, display ROM characters 1-31)
+# 12 set second alternate font (on PCs, display IBM high-half chars)
+#
+# Color attribute sets
+# 3n set foreground color / 0=black, 1=red, 2=green, 3=brown,
+# 4n set background color \ 4=blue, 5=magenta, 6=cyan, 7=white
+# Bright black becomes gray. Bright brown becomes yellow,
+# These coincide with the prescriptions of the ISO 6429/ECMA-48 standard.
+#
+# * If the 5 attribute is on and you set a background color (40-47) it is
+# supposed to enable bright background.
+#
+# * Many VGA cards (such as the Paradise and compatibles) do the wrong thing
+# when you try to set a "bright brown" (yellow) background with attribute
+# 5 (you get a blinking yellow foreground instead). A few displays
+# (including the System V console) support an attribute 6 that undoes this
+# braindamage (this is required by iBCS2).
+#
+# * Some older versions of ANSI.SYS have a bug that causes thems to require
+# ESC [ Pn k as EL rather than the ANSI ESC [ Pn K. (This is not ECMA-48
+# compatible.)
+
+#### Intel Binary Compatibility Standard
+#
+# For comparison, here are the capabilities implied by the Intel Binary
+# Compatibility Standard for UNIX systems (Intel order number 468366-001).
+# These recommendations are optional. IBCS2 allows the leading escape to
+# be either the 7-bit \E[ or 8-bit \0233 introducer, in accordance with
+# the ANSI X.364/ISO 6429/ECMA-48 standard. Here are the iBCS2 capabilities
+# (as described in figure 9-3 of the standard). Those expressed in the ibcs2
+# terminfo entry are followed with the corresponding capability in parens:
+#
+# CSI <n>k disable (n=0) or enable (n=1) keyclick
+# CSI 2h lock keyboard
+# CSI 2i send screen as input
+# CSI 2l unlock keyboard
+# CSI 6m enable background color intensity
+# CSI <0-2>c reserved
+# CSI <0-59>m select graphic rendition
+# CSI <n>;<m>H (cup) cursor to line n and column m
+# CSI <n>;<m>f cursor to line n and column m
+# CSI <n>@ (ich) insert characters
+# CSI <n>A (cuu) cursor up n lines
+# CSI <n>B (cud) cursor down n lines
+# CSI <n>C (cuu) cursor right n characters
+# CSI <n>D (cud) cursor left n characters
+# CSI <n>E cursor down n lines and in first column
+# CSI <n>F cursor up n lines and in first column
+# CSI <n>G (hpa) position cursor at column n-1
+# CSI <n>J (ed) erase in display
+# CSI <n>K (el) erase in line
+# CSI <n>L (il) insert line(s)
+# CSI <n>P (dch) delete characters
+# CSI <n>S (indn) scroll up n lines
+# CSI <n>T (rin) scroll down n lines
+# CSI <n>X (ech) erase characters
+# CSI <n>Z (cbt) back up n tab stops
+# CSI <n>` cursor to column n on line
+# CSI <n>a (cuu) cursor right n characters
+# CSI <n>d (vpa) cursor to line n
+# CSI <n>e cursor down n lines and in first column
+# CSI <n>g (cbt) clear all tabs
+# CSI <n>z make virtual terminal n active
+# CSI ?7h (smam) turn automargin on
+# CSI ?7l (rmam) turn automargin off
+# CSI s save cursor position
+# CSI u restore cursor position to saved value
+# CSI =<c>A set overscan color
+# CSI =<c>F set normal foreground color
+# CSI =<c>G set normal background color
+# CSI =<c>H set reverse foreground color
+# CSI =<c>I set reverse foreground color
+# CSI =<c>J set graphic foreground color
+# CSI =<c>K set graphic foreground color
+# CSI =<n>g (dispc) display n from alternate graphics character set
+# CSI =<p>;<d>B set bell parameters
+# CSI =<s>;<e>C set cursor parameters
+# CSI =<x>D enable/disable intensity of background color
+# CSI =<x>E set/clear blink vs. bold background
+# CSI 7 (sc) (sc) save cursor position
+# CSI 8 (rc) (rc) restore cursor position to saved value
+# CSI H (hts) (hts) set tab stop
+# CSI Q<n><string> define function key string
+# (string must begin and end with delimiter char)
+# CSI c (clear) clear screen
+#
+# The lack of any specification for attributes in SGR (among other things)
+# makes this a wretchedly weak standard. The table above is literally
+# everything iBSC2 has to say about terminal escape sequences; there is
+# no further discussion of their meaning or how to set the parameters
+# in these sequences at all.
+#
+
+######## NONSTANDARD CAPABILITY TRANSLATIONS USED IN THIS FILE
+#
+# The historical termcap file entries were written primarily in 4.4BSD termcap.
+# The 4.4BSD termcap set was substantially larger than the original 4.1BSD set,
+# with the extension names chosen for compatibility with the termcap names
+# assigned in System V terminfo. There are some variant extension sets out
+# there. We try to describe them here.
+#
+# XENIX extensions:
+#
+# The XENIX extensions include a set of function-key capabilities as follows:
+#
+# code XENIX variable name terminfo name name clashes?
+# ---- ------------------- ------------- -----------------------
+# CL key_char_left
+# CR key_char_right
+# CW key_change_window create_window
+# EN key_end kend
+# HM key_home khome
+# HP ??
+# LD key_delete_line kdl1
+# LF key_linefeed label_off
+# NU key_next_unlocked_cell
+# PD key_page_down knp
+# PL ??
+# PN start_print mc5
+# PR ??
+# PS stop_print mc4
+# PU key_page_up kpp pulse
+# RC key_recalc remove_clock
+# RF key_toggle_ref req_for_input
+# RT key_return kent
+# UP key_up_arrow kcuu1 parm_up_cursor
+# WL key_word_left
+# WR key_word_right
+#
+# The XENIX extensions also include the following character-set and highlight
+# capabilities:
+#
+# XENIX terminfo function
+# ----- -------- ------------------------------
+# GS smacs start alternate character set
+# GE rmacs end alternate character set
+# GG :as:/:ae: glitch (analogous to :sg:/:ug:)
+# bo blink begin blink (not used in /etc/termcap)
+# be end blink (not used in /etc/termcap)
+# bb blink glitch (not used in /etc/termcap)
+# it dim begin dim (not used in /etc/termcap)
+# ie end dim (not used in /etc/termcap)
+# ig dim glitch (not used in /etc/termcap)
+#
+# Finally, XENIX also used the following forms-drawing capabilities:
+#
+# single double type ASCII approximation
+# ------ ------ ------------- -------------------
+# GV Gv vertical line |
+# GH Gv horizontal line - _
+# G1 G5 top right corner _ |
+# G2 G6 top left corner |
+# G3 G7 bottom left corner |_
+# G4 G8 bottom right corner _|
+# GD Gd down-tick character T
+# GL Gl left-tick character -|
+# GR Gr right-tick character |-
+# GC Gc middle intersection -|-
+# GU Gu up-tick character _|_
+#
+# These were invented to take advantage of the IBM PC ROM character set. One
+# can compose an acsc string from the single-width characters as follows
+# "j{G4}k{G1}l{G2}m{G3}q{GH}x{GV}t{GR}u{GL}v{GU}w{GD}n{GC}"
+# When translating a termcap file, ncurses tic will do this automatically.
+# The double forms characters don't fit the SVr4 terminfo model.
+#
+# AT&T Extensions:
+#
+# The old AT&T 5410, 5420, 5425, pc6300plus, 610, and s4 entries used a set of
+# nonstandard capabilities. Its signature is the KM capability, used to name
+# some sort of keymap file. EE, BO, CI, CV, XS, DS, FL and FE are in this
+# set. Comments in the original, and a little cross-checking with other AT&T
+# documentation, seem to establish that BO=:mr: (start reverse video), DS=:mh:
+# (start dim), XS=:mk: (secure/invisible mode), EE=:me: (end highlights),
+# FL=:LO: (enable soft labels), FE=:LF: (disable soft labels), CI=:vi: (make
+# cursor invisible), and CV=:ve: (make cursor normal).
+#
+# HP Extensions
+#
+# The HP library (as of mid-1995, their term.h file version 70.1) appears to
+# have the System V capabilities up to SVr1 level. After that, it supports
+# two nonstandard caps meml and memu corresponding to the old termcap :ml:,
+# :mu: capabilities. After that, it supports caps plab_norm, label_on,
+# label_off, and key_f11..key_f63 capabilities like SVr4's. This makes the
+# HP binary format incompatible with SVr4's.
+#
+# IBM Extensions
+#
+# There is a set of nonstandard terminfos used by IBM's AIX operating system.
+# The AIX terminfo library diverged from SVr1 terminfo, and replaces all
+# capabilities following prtr_non with the following special capabilties:
+# box[12], batt[12], colb[0123456789], colf[0123456789], f[01234567], kbtab,
+# kdo, kcmd, kcpn, kend, khlp, knl, knpn, kppn, kppn, kquit, ksel, kscl, kscr,
+# ktab, kmpf[123456789], apstr, ksf1..ksf10, kf11...kf63, kact, topl, btml,
+# rvert, lvert. Some of these are identical to XPG4/SVr4 equivalents:
+# kcmd, kend, khlp, and kf11...kf63. Two others (kbtab and ksel) can be
+# renamed (to kcbt and kslt). The places in the box[12] capabilities
+# correspond to acsc chars, here is the mapping:
+#
+# box1[0] = ACS_ULCORNER
+# box1[1] = ACS_HLINE
+# box1[2] = ACS_URCORNER
+# box1[3] = ACS_VLINE
+# box1[4] = ACS_LRCORNER
+# box1[5] = ACS_LLCORNER
+# box1[6] = ACS_TTEE
+# box1[7] = ACS_RTEE
+# box1[8] = ACS_BTEE
+# box1[9] = ACS_LTEE
+# box1[10] = ACS_PLUS
+#
+# The box2 characters are the double-line versions of these forms graphics.
+# The AIX binary terminfo format is incompatible with SVr4's.
+#
+# Iris console extensions:
+#
+# HS is half-intensity start; HE is half-intensity end
+# CT is color terminal type (for Curses & rogue)
+# CP is color change escape sequence
+# CZ are color names (for Curses & rogue)
+#
+# The ncurses tic utility recognizes HS as an alias for mh <dim>.
+#
+# TC Extensions:
+#
+# There is a set of extended termcaps associated with something
+# called the "Terminal Control" or TC package created by MainStream Systems,
+# Winfield Kansas. This one also uses GS/GE for as/ae, and also uses
+# CF for civis and CO for cvvis. Finally, they define a boolean :ct:
+# that flags color terminals.
+#
+######## CHANGE HISTORY
+#
+# The last /etc/termcap version maintained by John Kunze was 8.3, dated 8/5/94.
+# Releases 9 and up are maintained by Eric S. Raymond as part of the ncurses
+# project.
+#
+# This file contains all the capability information present in John Kunze's
+# last version of the termcap master file, except as noted in the change
+# comments at end of file. Some information about very ancient obsolete
+# capabilities has been moved to comments. Some all-numeric names of older
+# terminals have been retired.
+#
+# I changed :MT: to :km: (the 4.4BSD name) everywhere. I commented out some
+# capabilities (EP, dF, dT, dV, kn, ma, ml, mu, xr, xx) that are no longer
+# used by BSD curses.
+#
+# The 9.1.0 version of this file was translated from my lightly-edited copy of
+# 8.3, then mechanically checked against 8.3 using Emacs Lisp code written for
+# the purpose. Unless the ncurses tic implementation and the Lisp code were
+# making perfectly synchronized mistakes which I then failed to catch by
+# eyeball, the translation was correct and perfectly information-preserving.
+#
+# Major version number bumps correspond to major version changes in ncurses.
+#
+# Here is a log of the changes since then:
+#
+# 9.1.0 (Wed Feb 1 04:50:32 EST 1995):
+# * First terminfo master translated from 8.3.
+# 9.2.0 (Wed Feb 1 12:21:45 EST 1995):
+# * Replaced Wyse entries with updated entries supplied by vendor.
+#
+# 9.3.0 (Mon Feb 6 19:14:40 EST 1995):
+# * Added contact & status info from G. Clark Brown <clark@sssi.com>.
+# 9.3.1 (Tue Feb 7 12:00:24 EST 1995):
+# * Better XENIX keycap translation. Describe TC termcaps.
+# * Contact and history info supplied by Qume.
+# 9.3.2 (Sat Feb 11 23:40:02 EST 1995):
+# * Raided the Shuford FTP site for recent termcaps/terminfos.
+# * Added information on X3.64 and VT100 standard escape sequences.
+# 9.3.3 (Mon Feb 13 12:26:15 EST 1995):
+# * Added a correct X11R6 xterm entry.
+# * Fixed terminfo translations of padding.
+# 9.3.4 (Wed Feb 22 19:27:34 EST 1995):
+# * Added correct acsc/smacs/rmacs strings for vt100 and xterm.
+# * Added u6/u7/u8/u9 capabilities.
+# * Added PCVT entry.
+# 9.3.5 (Thu Feb 23 09:37:12 EST 1995):
+# * Emacs uses :so:, not :mr:, for its mode line. Fix linux entry
+# to use reverse-video standout so Emacs will look right.
+# * Added el1 capability to ansi.
+# * Added smacs/rmacs to ansi.sys.
+#
+# 9.4.0 (Sat Feb 25 16:43:25 EST 1995):
+# * New mt70 entry.
+# * Added COPYRIGHTS AND OTHER DELUSIONS.
+# * Added AT&T 23xx & 500/513, vt220 and vt420, opus3n1+, netronics
+# smartvid & smarterm, ampex 175 & 219 & 232,
+# env230, falco ts100, fluke, intertube, superbrain, ncr7901, vic20,
+# ozzie, trs200, tr600, Tandy & Texas Instruments VDTs, intext2,
+# screwpoint, fviewpoint, Contel Business Systems, Datamedia Colorscan,
+# adm36, mime314, ergo4000, ca22851. Replaced att7300, esprit, dd5500.
+# * Replaced the Perkin-Elmer entries with vendor's official ones.
+# * Restored the old minimal-ansi entry, luna needs it.
+# * Fixed some incorrect ip and proportional-padding translations.
+# 9.4.1 (Mon Feb 27 14:18:33 EST 1995):
+# * Fix linux & AT386 sgr strings to do A_ALTCHARSET turnoff correctly.
+# * Make the xterm entry 65 lines again; create xterm25 and xterm24
+# to force a particular height.
+# * Added beehive4 and reorganized other Harris entries.
+# 9.4.2 (Thu Mar 9 01:45:44 EST 1995):
+# * Merged in DEC's official entries for its terminals. The only old
+# entry I kept was Doug Gwyn's alternate vt100 (as vt100-avo).
+# * Replaced the translated BBN Bitgraph entries with purpose-built
+# ones from AT&T's SVr3.
+# * Replaced the AT&T entries with AT&T's official terminfos.
+# * Added teleray 16, vc415, cops10.
+# * Merged in many individual capabilities from SCO terminfo files.
+# 9.4.3 (Mon Mar 13 02:37:53 EST 1995):
+# * Typo fixes.
+# * Change linux entry so A_PROTECT enables IBM-PC ROM characters.
+# 9.4.4 (Mon Mar 27 12:32:35 EST 1995):
+# * Added tty35, Ann Arbor Guru series. vi300 and 550, cg7900, tvi803,
+# pt210, ibm3164, IBM System 1, ctrm, Tymshare scanset, dt200, adm21,
+# simterm, citoh and variants.
+# * Replaced sol entry with sol1 and sol2.
+# * Replaced Qume QVT and Freedom-series entries with purpose-built
+# terminfo entries.
+# * Enhanced vt220, tvi910, tvi924, hpterm, hp2645, adm42, tek
+# and dg200 entries using caps from from SCO.
+# * Added the usual set of function-key mappings to ANSI entry.
+# * Corrected xterm's function-key capabilities.
+# 9.4.5 (Tue Mar 28 14:27:49 EST 1995):
+# * Fix in xterm entry, cub and cud are not reliable under X11R6.
+# 9.4.6 (Thu Mar 30 14:52:15 EST 1995):
+# * Fix in xterm entry, get the arrow keys right.
+# * Change some \0 escapes to \200.
+# 9.4.7 (Tue Apr 4 11:27:11 EDT 1995)
+# * Added apple (Videx card), adm1a, oadm31.
+# * Fixed malformed ampex csr.
+# * Fixed act4, cyb110; they had old-style prefix padding left in.
+# * Changed mandatory to advisory padding in many entries.
+# * Replaced HP entries up to hpsub with purpose-built ones.
+# * Blank rmir/smir/rmdc/smdc capabilities removed.
+# * Small fixes merged in from SCO entries for lpr, fos, tvi910+, tvi924.
+# 9.4.8 (Fri Apr 7 09:36:34 EDT 199):
+# * Replaced the Ann Arbor entries with SCO's, the init strings are
+# more efficient (but the entries otherwise identical).
+# * Added dg211 from Shuford archive.
+# * Added synertek, apple-soroc, ibmpc, pc-venix, pc-coherent, xtalk,
+# adm42-nl, pc52, gs6300, xerox820, uts30.
+# * Pull SCO's padding into vi200 entry.
+# * Improved capabilities for tvi4107 and other Televideo and Viewpoint
+# entries merged in from SCO's descriptions.
+# * Fixed old-style prefix padding on zen50, h1500.
+# * Moved old superbee entry to superbee-xsb, pulled in new superbee
+# entry from SCO's description.
+# * Reorganized the special entries.
+# * Added lm#0 to cbunix and virtual entries.
+#
+# 9.5.0 (Mon Apr 10 11:30:00 EDT 1995):
+# * Restored cdc456tst.
+# * Fixed sb1 entry, SCO erroneously left out the xsb glitch.
+# * Added megatek, beacon, microkit.
+# * Freeze for ncurses-1.9 release.
+# 9.5.1 (Fri Apr 21 12:46:42 EDT 1995):
+# * Added historical data for TAB.
+# * Comment fixes from David MacKenzie.
+# * Added the new BSDI pc3 entry.
+# 9.5.2 (Tue Apr 25 17:27:52 EDT 1995)
+# * A change in the tic -C logic now ensures that all entries in
+# the termcap translation will fit in < 1024 bytes.
+# * Added `bobcat' and `gator' HP consoles and the Nu machine entries
+# from GNU termcap file. This merges in all their local information.
+# 9.5.3 (Tue Apr 25 22:28:13 EDT 1995)
+# * Changed tic -C logic to dump all capabilities used by GNU termcap.
+# * Added warnings about entries with long translations (restoring
+# all the GNU termcaps pushes a few over the edge).
+# 9.5.4 (Wed Apr 26 15:35:09 EDT 1995)
+# * Yet another tic change, and a couple of entry tweaks, to reduce the
+# number of long (> 1024) termcap translations back to 0.
+#
+# 9.6.0 (Mon May 1 10:35:54 EDT 1995)
+# * Added kf13-kf20 to Linux entry.
+# * Regularize Prime terminal names.
+# * Historical data on Synertek.
+# * Freeze for ncurses-1.9.1.
+# 9.6.1 (Sat May 6 02:00:52 EDT 1995):
+# * Added true xterm-color entry, renamed djm's pseudo-color entry.
+# * Eliminate whitespace in short name fields, this tanks some scripts.
+# * Name field changes to shorten some long entries.
+# * Termcap translation now automatically generates empty rmir/smir
+# when ich1/ich is present (copes with an ancient vi bug).
+# * Added `screen' entries from FSF's screen-3.6.2.
+# * Added linux-nic and xterm-nic entries.
+# 9.6.2 (Sat May 6 17:00:55 EDT 1995):
+# * Change linux entry to use smacs=\E[11m and have an explicit acsc,
+# eliminating some special-case code in ncurses.
+#
+# 9.7.0 (Tue May 9 18:03:12 EDT 1995):
+# * Added vt320-k3, rsvidtx from the Emacs termcap.dat file. I think
+# that captures everything unique from it.
+# * Added reorder script generator.
+# * Freeze for ncurses 1.9.2 release.
+# 9.7.1 (Thu Jun 29 09:35:22 EDT 1995):
+# * Added Sean Farley's kspd, flash, rs1 capabilities for linux.
+# * Added Olaf Siebert's corrections for adm12.
+# * ansi-pc-color now includes the colors and pairs caps, so that
+# entries which use it will inherit them automatically.
+# * The linux entry can now recognize the center (keypad 5) key.
+# * Removed some junk that found its way into Linux acsc.
+#
+# 9.8.0 (Fri Jul 7 04:46:57 EDT 1995):
+# * Add 50% cut mark as a desperate hack to reduce tic's core usage.
+# * xterm doesn't try to use application keypad mode any more.
+# * Freeze for ncurses-1.9.3 release.
+# 9.8.1 (Thu Jul 19 17:02:12 EDT 1995):
+# * Added corrected sun entry from vendor.
+# * Added csr capability to linux entry.
+# * Peter Wemm says the at386 hpa should be \E[%i%p1%dG, not \E[%p1%dG.
+# * Added vt102-nsgr to cope with stupid IBM PC `VT100' emulators.
+# * Some commented-out caps in long entries come back in, my code
+# for computing string-table lengths had a bug in it.
+# * pcansi series modified to fit comm-program reality better.
+# 9.8.2 (Sat Sep 9 23:35:00 EDT 1995):
+# * BSD/OS actually ships the ibmpc3 bold entry as its console.
+# * Correct some bad aliases in the pcansi series
+# * Added entry for QNX console.
+# * Clean up duplicate long names for use with 4.4 library.
+# * Change vt100 standout to be normal reverse vide, not bright reverse;
+# this makes the Emacs status line look better.
+# 9.8.3 (Sun Sep 10 13:07:34 EDT 1995):
+# * Added Adam Thompson's VT320 entries, also his dtx-sas and z340.
+# * Minor surgery, mostly on name strings, to shorten termcap version.
+#
+# 9.9.0 (Sat Sep 16 23:03:48 EDT 1995):
+# * Added dec-vt100 for use with the EWAN emulator.
+# * Added kmous to xterm for use with xterm's mouse-tracking facility.
+# * Freeze for 1.9.5 alpha release.
+# 9.9.1 (Wed Sep 20 13:46:09 EDT 1995):
+# * Changed xterm lines to 24, the X11R6 default.
+# 9.9.2 (Sat Sep 23 21:29:21 EDT 1995):
+# * Added 7 newly discovered, undocumented acsc characters to linux
+# entry (the pryz{|} characters).
+# * ncurses no longer steals A_PROTECT. Simplify linux sgr accordingly.
+# * Correct two typos in the xterm entries introduced in 9.9.1.
+# * I finally figured out how to translate ko capabilities. Done.
+# * Added tvi921 entries from Tim Theisen.
+# * Cleanup: dgd211 -> dg211, adm42-nl -> adm42-nsl.
+# * Removed mystery tec entry, it was neither interesting nor useful.
+# * shortened altos3, qvt203, tvi910+, tvi92D, tvi921-g, tvi955, vi200-f,
+# vi300-ss, att505-24, contel301, dm3045, f200vi, pe7000c, vc303a,
+# trs200, wind26, wind40, wind50, cdc456tst, dku7003, f110, dg211,
+# by making them relative to use capabilities
+# * Added cuf1=^L to tvi925 from deleted variant tvi925a.
+# * fixed cup in adm22 entry and parametrized strings in vt320-k3.
+# * added it#8 to entries that used to have :pt: -- tvi912, vi200,
+# ampex80,
+# * Translate all home=\E[;H capabilities to home=\E[H, they're
+# equivalent.
+# * Translate \E[0m -> \E[m in [rs]mso, [rs]mul, and init strings of
+# vt100 and ANSI-like terminals.
+# 9.9.3 (Tue Sep 26 20:11:15 EDT 1995):
+# * Added it#8 and ht=\t to *all* entries with :pt:; the ncurses tic
+# does this now, too.
+# * fviewpoint is gone, it duplicated screwpoint.
+# * Added hp2627, graphos, graphos-30, hpex, ibmega, ibm8514, ibm8514-c,
+# ibmvga, ibmvga-c, minix, mm340, mt4520-rv, screen2, screen3,
+# versaterm, vi500, vsc, vt131, vt340, vt400 entries from UW.
+# The UW vi50 replaces the old one, which becomes vi50adm,
+# * No more embedded commas in name fields.
+#
+# 9.10.0 (Wed Oct 4 15:39:37 EDT 1995):
+# * XENIX forms characters in fos, trs16, scoansi become acsc strings,
+# * Introduced klone+* entries for describing Intel-console behavior.
+# * Linux kbs is default-mapped to delete for some brain-dead reason.
+# * -nsl -> -ns. The -pp syntax is obsolete.
+# * Eliminate [A-Z]* primaries in accordance with SVr4 terminfo docs.
+# * Make xterm entry do application-keypad mode again. I got complaints
+# that it was messing up someone's 3270 emulator.
+# * Added some longname fields in order to avoid warning messages from
+# older tic implementations.
+# * According to ctrlseqs.ms, xterm has a full vt100 graphics set. Use
+# it! (This gives us pi, greater than, less than, and a few more.)
+# * Freeze for ncurses-1.9.6 release.
+# 9.10.1 (Sat Oct 21 22:18:09 EDT 1995):
+# * Add xon to a number of console entries, they're memory-mapped and
+# don't need padding.
+# * Correct the use dependencies in the ansi series.
+# * Hand-translate more XENIX capabilities.
+# * Added hpterm entry for HP's X terminal emulator.
+# * Added aixterm entries.
+# * Shortened four names so everything fits in 14 chars.
+#
+# 9.11.0 (Thu Nov 2 17:29:35 EST 1995):
+# * Added ibcs2 entry and info on iBCS2 standard.
+# * Corrected hpa/vpa in linux entry. They still fail the worm test.
+# * We can handle the HP meml/memu capability now.
+# * Added smacs to klone entries, just as documentation.
+# * Carrected ansi.sys and cit-500 entries.
+# * Added z39, vt320-k311, v220c, and avatar entries.
+# * Make pcansi use the ansi.sys invis capability.
+# * Added DIP switch descriptions for vt100, adm31, tvi910, tvi920c,
+# tvi925, tvi950, dt80, ncr7900i, h19.
+# * X3.64 has been withdrawn, change some references.
+# * Removed function keys from ansi-m entry.
+# * Corrected ansi.sys entry.
+# * Freeze for ncurses-1.9.7 release.
+# 9.11.1 (Tue Nov 6 18:18:38 EST 1995):
+# * Added rmam/smam capabilities to many entries based on init strings.
+# * Added correct hpa/vpa to linux.
+# * Reduced several entries relative to vt52.
+# 9.11.2 (Tue Nov 7 00:21:06 EST 1995):
+# * Exiled some utterly unidentifiable custom and homebrew types to the
+# UFO file; also, obsolete small-screen hardware; also, entries which
+# look flat-out incorrect, garbled, or redundant. These include the
+# following entries: carlock, cdc456tst, microkit, qdss, ramtek, tec,
+# tec400, tec500, ubell, wind, wind16, wind40, wind50, plasma, agile,
+# apple, bch, daleblit, nucterm, ttywilliams, nuterminal, nu24, bnu,
+# fnu, nunix-30, nunix-61, exidy, ex3000, sexidy, pc52, sanyo55,
+# yterm10, yterm11, yterm10nat, aed, aed-ucb, compucolor, compucolor2,
+# vic20, dg1, act5s, netx, smartvid, smarterm, sol, sol2, dt200,
+# trs80, trs100, trs200, trs600, xitex, rsvidtx, vid, att2300-x40,
+# att2350-x40, att4410-nfk, att5410-ns, otty5410, att5425-nl-w,
+# tty5425-fk, tty5425-w-fk, cita, c108-na, c108-rv-na, c100-rv-na,
+# c108-na-acs, c108-rv-na-acs, ims950-ns, infotonKAS, ncr7900i-na,
+# regent60na, scanset-n, tvi921-g, tvi925n, tvi925vbn, tvi925vb,
+# vc404-na, vc404-s-na, vt420nam, vt420f-nam, vt420pc-nam, vt510nam,
+# vt510pc-nam, vt520nam, vt525nam, xterm25, xterm50, xterm65, xterms.
+# * Corrected pcvt25h as suggested by Brian C. Grayson
+# <bgrayson@pine.ece.utexas.edu>.
+# 9.11.3 (Thu Nov 9 12:14:40 EST 1995):
+# * Added kspd=\E[P, kcbt=\E[Z, to linux entry, changed kbs back to ^H.
+# * Added kent=\EOM to xterm entry.
+#
+# 9.11.4 (Fri Nov 10 08:31:35 EST 1995):
+# * Corrected gigi entry.
+# * Restored cuf/cud1 to xterm, their apparent bugginess was due to
+# bad hpa/vpa capabilities.
+# * Corrected flash strings to have a uniform delay of .2 sec. No
+# more speed-dependent NUL-padding!
+# * terminfo capabilities in comments bracketed with <>.
+# 9.11.5 (Fri Nov 10 15:35:02 EST 1995):
+# * Replaced pcvt with the 3.31 pcvt entries.
+# * Freeze for 1.9.7a.
+# 9.11.6 (Mon Nov 13 10:20:24 EST 1995):
+# * Added emu entry from the X11R6 contrib tape sources.
+#
+# 9.12.0 (Wed Nov 29 04:22:25 EST 1995):
+# * Improved iris-ansi and sun entries.
+# * More flash string improvements.
+# * Corrected wy160 & wy160 as suggested by Robert Dunn
+# * Added dim to at386.
+# * Reconciled pc3 and ibmpc3 with the BSDI termcap file. Keith says
+# he's ready to start using the termcap generated from this one.
+# * Added vt102-w, vt220-w, xterm-bold, wyse-vp, wy75ap, att4424m,
+# ln03, lno3-w, h19-g, z29a*, qdss. Made vt200 an alias of vt220.
+# * Improved hpterm, apollo consoles, fos, qvt101, tvi924. tvi925,
+# att610, att620, att630,
+# * Changed hazeltine name prefix from h to hz.
+# * Sent t500 to the UFI file.
+# * I think we've sucked all the juice out of BSDI's termcap file now.
+# * Freeze for ncurses 1.9.8 release
+# 9.12.1 (Thu Nov 30 03:14:06 EST 1995)
+# * Unfreeze, linux kbs needed to be fixed.
+# * Tim Theisen pinned down a bug in the DMD firmware.
+# 9.12.2 (Thu Nov 30 19:08:55 EST 1995):
+# * Fixes to ansi and klone capabilities (thank you, Aaron Ucko).
+# (The broken ones had been shadowed by sgr.)
+# 9.12.3 (Thu Dec 7 17:47:22 EST 1995):
+# * Added documentation on ECMA-48 standard.
+# * New Amiga entry.
+# 9.12.4 (Thu Dec 14 04:16:39 EST 1995):
+# * More ECMA-48 stuff
+# * Corrected typo in minix entry, added pc-minix.
+# * Corrected khome/kend in xterm (thank you again, Aaron Ucko).
+# * Added rxvt entry.
+# * Added 1.3.x color-change capabilities to linux entry.
+# 9.12.5 (Tue Dec 19 00:22:10 EST 1995):
+# * Corrected rxvt entry khome/kend.
+# * Corrected linux color change capabilities.
+# * NeXT entries from Dave Wetzel.
+# * Cleaned up if and rf file names (all in /usr/share now).
+# * Changed linux op capability to avoid screwing up a background color
+# pair set by setterm.
+# 9.12.6 (Wed Feb 7 16:14:35 EST 1996):
+# * Added xterm-sun.
+# 9.12.7 (Fri Feb 9 13:27:35 EST 1996):
+# * Added visa50.
+#
+# 9.13.0 (Sun Mar 10 00:13:08 EST 1996):
+# * Another sweep through the Shuford archive looking for new info.
+# * Added dg100 alias to dg6053 based on a comp.terminals posting.
+# * Added st52 from Per Persson.
+# * Added eterm from the GNU Emacs 19.30 distribution.
+# * Freeze for 1.9.9.
+# 9.13.1 (Fri Mar 29 14:06:46 EST 1996):
+# * FreeBSD console entries from Andrew Chernov.
+# * Removed duplicate Atari st52 name.
+# 9.13.2 (Tue May 7 16:10:06 EDT 1996)
+# * xterm doesn't actually have ACS_BLOCK.
+# * Change klone+color setf/setb to simpler forms that can be
+# translated into termcap.
+# * Added xterm1.
+# * Removed mechanically-generated junk capabilities from cons* entries.
+# * Added color support to bsdos.
+# 9.13.3 (Thu May 9 10:35:51 EDT 1996):
+# * Added Wyse 520 entries from Wm. Randolph Franklin <wrf@ecse.rpi.edu>.
+# * Created ecma+color, linux can use it. Also added ech to linux.
+# * Teach xterm about more keys. Add Thomas Dickey's 3.1.2E updates.
+# * Add descriptions to FreeBSD console entries. Also shorten
+# some aliases to <= 14 chars for portability.
+# * Added x68k console
+# * Added OTbs to several VT-series entries.
+# 9.13.4 (Wed May 22 10:54:09 EDT 1996):
+# * screen entry update for 3.7.1 from Michael Alan Dorfman.
+# 9.13.5 (Wed Jun 5 11:22:41 EDT 1996):
+# * kterm correction due to Kenji Rikitake.
+# * ACS correction in vt320-kll due to Phillippe De Muyter.
+# 9.13.6 (Sun Jun 16 15:01:07 EDT 1996):
+# * Sun console entry correction from J.T. Conklin.
+# * Changed all DEC VT300 and up terminals to use VT300 tab set
+# 9.13.7 (Mon Jul 8 20:14:32 EDT 1996):
+# * Added smul to linux entry (we never noticed it was missing
+# because of sgr!).
+# * Added rmln to hp+labels (deduced from other HP entries).
+# * Added vt100 acsc capability to vt220, vt340, vt400, d800, dt80-sas,
+# pro350, att7300, 5420_2, att4418, att4424, att4426, att505, vt320-k3.
+# * Corrected vt220 acsc.
+# * The klone+sgr and klone+sgr-dumb entries now use klone+acs;
+# this corresponds to reality and helps prevent some tic warnings.
+# * Added sgr0 to c101, pcix, vt100-nav, screen2, oldsun, next, altos2,
+# hpgeneric, hpansi, hpsub, hp236, hp700-wy, bobcat, dku7003, adm11,
+# adm12, adm20, adm21, adm22, adm31, adm36, adm42, pt100, pt200,
+# qvt101, tvi910, tvi921, tvi92B, tvi925, tvi950, tvi970, wy30-mc,
+# wy50-mc, wy100, wyse-vp, ampex232, regent100, viewpoint, vp90,
+# adds980, cit101, cit500, contel300, cs10, dm80, falco, falco-p,
+# f1720a, go140, sb1, superbeeic, microb, ibm8512, kt7, ergo4000,
+# owl, uts30, dmterm, dt100, dt100, dt110, appleII, apple-videx,
+# lisa, trsII, atari, st52, pc-coherent, basis, m2-man, bg2.0, bg1.25,
+# dw3, ln03, ims-ansi, graphos, t16, zen30, xtalk, simterm, d800,
+# ifmr, v3220, wy100q, tandem653, ibmaed.
+# * Added DWK terminal description.
+# 9.13.8 (Wed Jul 10 11:45:21 EDT 1996):
+# * Many entries now have highlights inherited from adm+sgr.
+# * xterm entry now corresponds to XFree86 3.1.2E, with color.
+# * xtitle and xtitle-twm enable access to the X status line.
+# * Added linux-1.3.6 color palette caps in conventional format.
+# * Added adm1178 terminal.
+# * Move fos and apollo terminals to obsolete category.
+# * Aha! The BRL terminals file told us what the Iris extensions mean.
+# * Added, from the BRL termcap file: rt6221, rt6221-w, northstar,
+# commodore, cdc721-esc, excel62, osexec. Replaced from the BRL file:
+# cit500, adm11.
+# 9.13.9 (Mon Jul 15 00:32:51 EDT 1996):
+# * Added, from the BRL termcap file: cdc721, cdc721l, cdc752, cdc756,
+# aws, awsc, zentec8001, modgraph48, rca vp3301/vp3501, ex155.
+# * Corrected, from BRL termcap file: vi50.
+# * Better rxvt entry & corrected xterm entries from Thomas Dickey.
+# 9.13.10 (Mon Jul 15 12:20:13 EDT 1996):
+# * Added from BRL: cit101e & variants, hmod1, vi200, ansi77, att5620-1,
+# att5620-s, att5620-s, dg210, aas1901, hz1520, hp9845, osborne
+# (old osborne moved to osborne-w), tvi970-vb, tvi970-2p, tvi925-hi,
+# tek4105brl, tek4106brl, tek4107brl,tek4109brl, hazel, aepro,
+# apple40p, apple80p, appleIIgs, apple2e, apple2e-p, apple-ae.
+# * Paired-attribute fixes to various terminals.
+# * Sun entry corrections from A. Lukyanov & Gert-Jan Vons.
+# * xterm entry corrections from Thomas Dickey.
+# 9.13.11 (Tue Jul 30 16:42:58 EDT 1996):
+# * Added t916 entry, translated from a termcap in SCO's support area.
+# * New qnx entry from Michael Hunter.
+# 9.13.12 (Mon Aug 5 14:31:11 EDT 1996):
+# * Added hpex2 from Ville Sulko.
+# * Fixed a bug that ran the qnx and pcvtXX together.
+# 9.13.13 (Fri Aug 9 01:16:17 EDT 1996):
+# * Added dtterm entry from Solaris CDE.
+# 9.13.14 (Tue Sep 10 15:31:56 EDT 1996):
+# * corrected pairs#8 typo in dtterm entry.
+# * added tvi9065.
+# 9.13.15 (Sun Sep 15 02:47:05 EDT 1996):
+# * updated xterm entry to cover 3.1.2E's new features.
+# 9.13.16 (Tue Sep 24 12:47:43 EDT 1996):
+# * Added new minix entry
+# * Removed aliases of the form ^[0-9]* for obsolete terminals.
+# * Commented out linux-old, nobody's using pre-1.2 kernels now.
+# 9.13.17 (Fri Sep 27 13:25:38 EDT 1996):
+# * Added Prism entries and kt7ix.
+# * Caution notes about EWAN and tabset files.
+# * Changed /usr/lib/tabset -> /usr/share/tabset.
+# * Added acsc/rmacs/smacs to vt52.
+# 9.13.18 (Mon Oct 28 13:24:59 EST 1996):
+# * Merged in Thomas Dickey's reorganization of the xterm entries;
+# added technical corrections to avoid warning messages.
+# 9.13.19 (Sat Nov 16 16:05:49 EST 1996):
+# * Added rmso=\E[27m in Linux entry.
+# * Added koi8-r support for Linux console.
+# * Replace xterm entries with canonical ones from XFree86 3.2.
+# 9.13.20 (Sun Nov 17 23:02:51 EST 1996):
+# * Added color_xterm from Jacob Mandelson
+# 9.13.21 (Mon Nov 18 12:43:42 EST 1996):
+# * Back off the xterm entry to use r6 as a base.
+# 9.13.22 (Sat Nov 30 11:51:31 EST 1996):
+# * Added dec-vt220 at Adrian Garside's request.
+# 9.13.23 (Fri Feb 21 16:36:06 EST 1997):
+# * Replaced minitel-2 entry.
+# * Added MGR, ansi-nt.
+# * Minor corrections to xterm entries.
+# * Replaced EWAN telnet entry.
+# * Dropped the reorder script generator. It was a fossil.
+# 9.13.24 (Sun Feb 23 20:55:23 EST 1997):
+# * Thorsten Lockert added termcap `bs' to a lot of types, working from
+# the 4.4BSD Lite2 file.
+# 9.13.25 (Fri Jun 20 12:33:36 EDT 1997):
+# * Added Datapoint 8242, pilot, ansi_psx, rbcomm, vt220js.
+# * Updated iris-ansi; corrected vt102-w.
+# * Switch base xterm entry to 3.3 level.
+# 9.13.26 (Mon Jun 30 22:45:45 EDT 1997)
+# * Added basic4.
+# * Removed rmir/smir from tv92B.
+#
+# 10.2.0 (Sat Feb 28 12:47:36 EST 1998):
+# * add hds200 description (Walter Skorski)
+# * add beterm entry (Fred Fish)
+# * add Thomas Dickey's xterm-xf86-v40, xterm-8bit, xterm-16color,
+# iris-color entries.
+# * add emx entries.
+# * Replaced unixpc entry with Benjamin Sittler's corrected version.
+# * Replaced xterm/rxvt/emu/syscons entries with Thomas Dickey's
+# versions.
+# * remove sgr string from qnx based on report by Xiaodan Tang
+# * Added u8/u9, removed rmul/smul from sun-il.
+# * 4.2 tic displays \0 rather than \200.
+# * add linux-koi8r to replace linux-koi8 (which uses a corrupt acsc,
+# apparently based on cp-866).
+# * Merged in Pavel Roskin's acsc for linux-koi8
+# * Corrected some erroneous \\\s to \.
+# * 4.2 ncurses has been changed to use setaf/setab, consistent w/SysV.
+# * II -> ii in pcvtXX, screen, xterm.
+# * Removed \n chars following ANSI escapes in sgr & friends.
+# * Updated Wyse entries.
+# * h19 corrections from Tim Pierce.
+# * Noted that the dm2500 has both ich and smir.
+# * added pccons for the Alpha under OSF/1.
+# * Added Sony NEWS workstation entries and cit101e-rv.
+# * Reverted `amiga'; to Kent Polk's version, as I'm told
+# the Verkuil entry messes up with Amiga Telnet.
+# 10.2.1 (Sun Mar 8 18:32:04 EST 1998):
+# * Corrected attributions in 10.2.0 release notes.
+# * Scanned the Shuford archive for new terminfos and information.
+# * Removed sgr from qnx entry (Thomas Dickey).
+# * Added entries for ICL and Kokusai Data Systems terminals.
+# * Incorporated NCR terminfos from the Boundless Technology FTP site.
+# * Incorporated att700 from the Boundless Technology FTP site.
+# * Miscellaneous contact-address and Web-page updates.
+# 10.2.2 (Thu May 7 12:18:04 EDT 1998):
+# * Moved Altos to OBSOLETE UNIX CONSOLES
+# * Moved Hewlett-Packard terminals to OLDER TERMINAL TYPES, except for
+# the 700s which go to WORKSTATION CONSOLES.
+# * Major reorganization of ANSI/console/VT types. Moved vt52 to the
+# obsolete section.
+# * Daisy-wheel printers moved to UFO file.
+# 10.2.3 (Tue May 12 22:59:11 EDT 1998):
+# * Commented out hds200 is2 to avoid overflowing terminfo length limit.
+# * Restored OT capabilities to UFO file.
+# * add nxterm and xterm-color terminfo description (request by Cristian
+# Gafton <gafton@redhat.com>).
+# * Modify rxvt terminfo description to clear alternate screen before
+# switching back to normal screen, for compatibility with applications
+# which use xterm (reported by Manoj Kasichainula <manojk@io.com>).
+# * Modify linux terminfo description to reset color palette (reported
+# by Telford Tendys <telford@eng.uts.edu.au>).
+# 10.2.4 (Thu Jul 2 18:13:26 EDT 1998):
+# * Added minitel1 entries from Alexander Montaron.
+# * Added qnxt2 from Federico Bianchi.
+# 10.2.5: (Mon Aug 24 07:32:34 EDT 1998):
+# * Resolve NetBSD Problem Report #4583 by adding civis/cnorm to pcvtXX.
+# * dtterm enacs correction from Alexander V. Lukyanov.
+# * Added ncsa-telnet, resolving Debian bug report 25341.
+# * Added Francesco Potorti's tuned Wyse 99 entries.
+# 10.2.6: (Mon Dec 21 00:49:43 EST 1998):
+# * Home site has changed.
+# 10.2.7: (Wed Mar 3 15:53:04 EST 1999):
+# * Documentation fixes, mainly from David J. Mackenzie.
+#
+# 11.0.0: (Wed Mar 1 22:02:03 EST 2000)
+# * BSD/OS console fixes from Jeffrey Honig at BSDI.
+# ** TD's branch changes up to his 1999/10/23 version begin here
+# * Added arm100 terminfo entries from Dave Millen.
+# * Added Data General entries from Hasufin.
+# * NCSA telnet entry from Francesco Potorti as modified by TD.
+# * Added teraterm, crt, ms-vt100, mach, mach-bold, linux-lat,
+# ofcons, wsvt25, wsvt25m, rcons, rcons-color, cygwin, amiga-8bit,
+# ibm3161-C, ibm3162.
+# * Updated xterm entries, BSD/OS entries, AIX entries.
+# * Updated linux, iris-ansi, screen, beterm entries.
+# * Added full function keys for scoansi.
+# * Typo fixes for icl6404, osborne, eterm. att6386
+# * Corrected hp70092 acsc.
+# * Added ibmpc from AIX 3.2.5; ibm-pc is no longer a synonym.
+# * Added ibm5151 from AIX 3.2.5; ibmmono is no longer a synonym.
+# * Added ibm5154 from AIX 3.2.5; ibmega is no longer a synonym.
+# * Merged acsc, s0ds, s1ds, sgr0 into ibm5081 from AIX 3.2.5.
+# * Merged kend, knp, kpp, mc4, mc5 into ibm3161 in from AIX 3.2.5.
+# * Merged acsc into hft-c from AIX 3.2.5.
+# * Updated ibm3151 from AIX 3.2.5.
+# * Errors in TD's branch not accepted: ibm3101, ibm3151, ibm8514
+# * Merged msgr,colors,pairs,setb,setf into ibm3164 from AIX 3.2.5.
+# ** TD's branch changes end here
+# * Address updates from various contributors.
+# * Historical info on basis console.
+# * Ty Sarna's corrections to the amiga entry.
+# * Add Kevin Turner's entry for the Wyse 85 in 8-bit mode.
+# * Added 22 Bull-Questar terminal variants from AIX 4.1.5
+# * Added OSF/1 console and lft from AIX 4.1.5.
+# * Move vt2220 to vt220-old, vt220-8 to vt220, introduce vt220-8bit
+# from AIX 4.1.5.
+# * swtp moved to UFO file (only 20 lines).
+# * Added pcmw.
+# 11.0.1: (Thu Mar 2 10:49:21 EST 2000):
+# * Disabled hpa, vpa, in rxvt.
+# * Incorporated ansi components and generic-ansi.
+#
+# The following sets edit modes for GNU EMACS.
+# Local Variables:
+# fill-prefix:"\t"
+# fill-column:75
+# comment-column:0
+# comment-start-skip:"^#+"
+# comment-start:"# "
+# compile-command:"tic -c termtypes.master"
+# End:
+######## SHANTIH! SHANTIH! SHANTIH!
diff --git a/source/a/file/file.SlackBuild b/source/a/file/file.SlackBuild
new file mode 100755
index 00000000..aaa0ca41
--- /dev/null
+++ b/source/a/file/file.SlackBuild
@@ -0,0 +1,131 @@
+#!/bin/sh
+
+# Copyright 2005-2008, 2009 Patrick J. Volkerding, Sebeka, MN, USA
+# All rights reserved.
+#
+# Redistribution and use of this script, with or without modification, is
+# permitted provided that the following conditions are met:
+#
+# 1. Redistributions of this script must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# 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.
+
+VERSION=5.03
+ARCH=${ARCH:-x86_64}
+BUILD=${BUILD:-1}
+
+NUMJOBS=${NUMJOBS:--j7}
+
+if [ "$ARCH" = "i486" ]; then
+ SLKCFLAGS="-O2 -march=i486 -mtune=i686"
+ LIBDIRSUFFIX=""
+elif [ "$ARCH" = "i686" ]; then
+ SLKCFLAGS="-O2 -march=i686 -mtune=i686"
+ LIBDIRSUFFIX=""
+elif [ "$ARCH" = "x86_64" ]; then
+ SLKCFLAGS="-O2 -fPIC"
+ LIBDIRSUFFIX="64"
+fi
+
+CWD=$(pwd)
+TMP=${TMP:-/tmp}
+PKG=$TMP/package-file
+rm -rf $PKG
+mkdir -p $TMP $PKG
+
+cd $TMP
+rm -rf file-$VERSION
+tar xvf $CWD/file-$VERSION.tar.?z* || exit 1
+cd file-$VERSION || exit 1
+
+# Make the default data directory /etc/file like it has always been:
+zcat $CWD/file.etc.file.diff.gz | patch -p1 --verbose || exit 1
+# This is needed after the patch above:
+autoreconf || exit 1
+
+chown -R root:root .
+find . \
+ \( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \
+ -exec chmod 755 {} \; -o \
+ \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
+ -exec chmod 644 {} \;
+
+# Don't spew warnings about using the flat text files
+zcat $CWD/file.quiet.diff.gz | patch -p1 -E --verbose || exit 1
+# I don't know what this one does
+zcat $CWD/file.short.diff.gz | patch -p1 -E --verbose || exit 1
+
+# Add zisofs and crda regulatory bin detection
+zcat $CWD/file.zisofs.magic.gz >> magic/Magdir/compress
+zcat $CWD/file.crdaregbin.magic.gz >> magic/Magdir/crdaregbin
+
+CFLAGS="$SLKCFLAGS" \
+./configure \
+ --prefix=/usr \
+ --libdir=/usr/lib${LIBDIRSUFFIX} \
+ --sysconfdir=/etc \
+ --datadir=/etc \
+ --mandir=/usr/man \
+ --infodir=/usr/info \
+ --docdir=/usr/doc/file-$VERSION \
+ --enable-fsect-man5 \
+ --disable-static \
+ --build=$ARCH-slackware-linux
+
+make $NUMJOBS || make || exit 1
+make install DESTDIR=$PKG || exit 1
+
+# Is file really this much of a processing bottleneck? Doubtful.
+#
+# NOTE: Benchmarked flat files vs. .mgc June 2009, found no measurable
+# difference on 3000+ files.
+#
+# If you really need these (let's say you're doing virus scanning
+# and this *would* speed things up quite a bit) you can create
+# the pre-parsed file yourself using file's -C option.
+rm -f $PKG/etc/file/magic.mgc
+mkdir -p $PKG/etc/file/magic
+cp -a magic/Magdir/* $PKG/etc/file/magic
+# After building, this works fine. /etc/file/magic/ takes up 1.2M,
+# while the magic.mgc file is 1.7M. Considering a difference of 500k,
+# and the potential speedup, I'm not sure it's worth the effort...
+# but it does make it easier for an admin to add a small chunk of
+# new magic.
+
+# IMHO, moving this sort of thing does not make sense.
+# We'll support both the traditional and new locations.
+# I hate to squat on a name as generic as "/etc/misc/",
+# but it wasn't my idea.
+( cd $PKG/etc ; ln -sf file misc )
+
+# Strip everything for good measure:
+find $PKG | xargs file | grep -e "executable" -e "shared object" \
+ | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
+
+( cd $PKG/usr/man || exit 1
+ find . -type f -exec gzip -9 {} \;
+ for i in $(find . -type l) ; do ln -s $(readlink $i).gz $i.gz ; rm $i ; done
+)
+
+mkdir -p $PKG/usr/doc/file-$VERSION
+cp -a \
+ AUTHORS COPYING INSTALL MAINT NEWS README TODO \
+ $PKG/usr/doc/file-$VERSION
+
+mkdir -p $PKG/install
+cat $CWD/slack-desc > $PKG/install/slack-desc
+
+# Build the package:
+cd $PKG
+/sbin/makepkg -l y -c n $TMP/file-$VERSION-$ARCH-$BUILD.txz
+
diff --git a/source/a/file/file.crdaregbin.magic b/source/a/file/file.crdaregbin.magic
new file mode 100644
index 00000000..bff01854
--- /dev/null
+++ b/source/a/file/file.crdaregbin.magic
@@ -0,0 +1,5 @@
+# CRDA Regulatory database file
+# http://git.kernel.org/?p=linux/kernel/git/mcgrof/crda.git;a=summary
+# (see regdb.h)
+0 belong 0x52474442 CRDA regulatory database file
+>4 belong 19 (Version 1)
diff --git a/source/a/file/file.etc.file.diff b/source/a/file/file.etc.file.diff
new file mode 100644
index 00000000..98e07548
--- /dev/null
+++ b/source/a/file/file.etc.file.diff
@@ -0,0 +1,11 @@
+--- ./configure.ac.orig 2009-05-06 15:32:25.000000000 -0500
++++ ./configure.ac 2009-06-12 17:40:25.000000000 -0500
+@@ -47,7 +47,7 @@
+ fsect=4
+ ])
+
+-AC_SUBST([pkgdatadir], ['$(datadir)/misc'])
++AC_SUBST([pkgdatadir], ['$(datadir)/file'])
+ AC_SUBST(fsect)
+ AM_CONDITIONAL(FSECT5, test x$fsect = x5)
+
diff --git a/source/a/file/file.quiet.diff b/source/a/file/file.quiet.diff
new file mode 100644
index 00000000..198f62df
--- /dev/null
+++ b/source/a/file/file.quiet.diff
@@ -0,0 +1,14 @@
+diff -Nur file-5.00.orig/src/apprentice.c file-5.00/src/apprentice.c
+--- file-5.00.orig/src/apprentice.c 2009-02-03 14:27:51.000000000 -0600
++++ file-5.00/src/apprentice.c 2009-02-08 22:19:19.215635230 -0600
+@@ -285,8 +285,8 @@
+
+ #ifndef COMPILE_ONLY
+ if ((rv = apprentice_map(ms, &magic, &nmagic, fn)) == -1) {
+- if (ms->flags & MAGIC_CHECK)
+- file_magwarn(ms, "using regular magic file `%s'", fn);
++ /* if (ms->flags & MAGIC_CHECK)
++ file_magwarn(ms, "using regular magic file `%s'", fn); */
+ rv = apprentice_load(ms, &magic, &nmagic, fn, action);
+ if (rv != 0)
+ return -1;
diff --git a/source/a/file/file.short.diff b/source/a/file/file.short.diff
new file mode 100644
index 00000000..be47218c
--- /dev/null
+++ b/source/a/file/file.short.diff
@@ -0,0 +1,12 @@
+diff -Nur file-5.00.orig/src/readelf.h file-5.00/src/readelf.h
+--- file-5.00.orig/src/readelf.h 2008-05-28 15:58:16.000000000 -0500
++++ file-5.00/src/readelf.h 2009-02-08 22:17:26.681636542 -0600
+@@ -233,7 +233,7 @@
+ #define NT_OPENBSD_VERSION 1
+ #define NT_DRAGONFLY_VERSION 1
+ /* GNU executables (name = "GNU") */
+-#define NT_GNU_VERSION 1
++#define NT_GNU_VERSION 0
+
+ /* GNU OS tags */
+ #define GNU_OS_LINUX 0
diff --git a/source/a/file/file.xz.magic b/source/a/file/file.xz.magic
new file mode 100644
index 00000000..9aa36e45
--- /dev/null
+++ b/source/a/file/file.xz.magic
@@ -0,0 +1,9 @@
+
+# XZ (Lempel-Ziv-Markov chain-Algorithm) file format supported by:
+# - 7-Zip <http://7-zip.org/>
+# - LZMA SDK <http://7-zip.org/sdk.html>
+# - XZ Utils <http://tukaani.org/xz/>
+#
+0 ustring \xFD7zXZ\x00 xz compressed data,
+>6 ubyte&0x10 0x00 single-block stream
+>6 ubyte&0x10 0x10 multi-block stream
diff --git a/source/a/file/file.zisofs.magic b/source/a/file/file.zisofs.magic
new file mode 100644
index 00000000..9aeb61ed
--- /dev/null
+++ b/source/a/file/file.zisofs.magic
@@ -0,0 +1,8 @@
+
+#------------------------------------------------------------------------------
+# zisofs: file(1) magic for zisofs/RockRidge compressed files
+#
+# from H. Peter Anvin <hpa@zytor.com> May 4, 2001
+#
+0 string \x37\xE4\x53\x96\xC9\xDB\xD6\x07 zisofs/Rockridge compressed file
+>8 lelong x - %d bytes
diff --git a/source/a/file/slack-desc b/source/a/file/slack-desc
new file mode 100644
index 00000000..96be2617
--- /dev/null
+++ b/source/a/file/slack-desc
@@ -0,0 +1,19 @@
+# HOW TO EDIT THIS FILE:
+# The "handy ruler" below makes it easier to edit a package description. Line
+# up the first '|' above the ':' following the base package name, and the '|'
+# on the right side marks the last column you can put a character in. You must
+# make exactly 11 lines for the formatting to be correct. It's also
+# customary to leave one space after the ':'.
+
+ |-----handy-ruler------------------------------------------------------|
+file: file (a utility to determine file type)
+file:
+file: This is Ian F. Darwin's 'file' utility, used to identify files.
+file: Christos Zoulas has been file's maintainer since 1994.
+file:
+file:
+file:
+file:
+file:
+file:
+file:
diff --git a/source/a/findutils/findutils.SlackBuild b/source/a/findutils/findutils.SlackBuild
new file mode 100755
index 00000000..aca93a0c
--- /dev/null
+++ b/source/a/findutils/findutils.SlackBuild
@@ -0,0 +1,114 @@
+#!/bin/sh
+
+# Copyright 2005-2009 Patrick J. Volkerding, Sebeka, Minnesota, USA
+# All rights reserved.
+#
+# Redistribution and use of this script, with or without modification, is
+# permitted provided that the following conditions are met:
+#
+# 1. Redistributions of this script must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# 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.
+
+VERSION=4.4.2
+ARCH=${ARCH:-x86_64}
+BUILD=${BUILD:-1}
+
+NUMJOBS=${NUMJOBS:--j6}
+
+CWD=$(pwd)
+TMP=${TMP:-/tmp}
+PKG=$TMP/package-findutils
+
+if [ "$ARCH" = "i486" ]; then
+ SLKCFLAGS="-O2 -march=i486 -mtune=i686"
+elif [ "$ARCH" = "s390" ]; then
+ SLKCFLAGS="-O2"
+elif [ "$ARCH" = "x86_64" ]; then
+ SLKCFLAGS="-O2 -fPIC"
+fi
+
+rm -rf $PKG
+mkdir -p $TMP $PKG
+cd $TMP
+rm -rf findutils-$VERSION
+tar xvf $CWD/findutils-$VERSION.tar.?z* || exit 1
+cd findutils-$VERSION || exit 1
+
+chown -R root:root .
+find . \
+ \( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \
+ -exec chmod 755 {} \; -o \
+ \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
+ -exec chmod 644 {} \;
+
+# We use slocate instead of these:
+zcat $CWD/findutils.nolocate.diff.gz | patch -p1 --verbose || exit 1
+
+# Don't output warnings by default. Let's make the crazy assumption that the
+# user actually does know what they are doing, and will use -warn if they'd
+# like to be yelled at.
+zcat $CWD/findutils.no.default.options.warnings.diff.gz | patch -p1 --verbose || exit 1
+
+# Feel free to change the "--without-fts" if you like find to be faster and
+# less reliable. With the current setting, "find" will be non-fts(), and
+# ftsfind will still be there if you want to use it.
+CFLAGS="$SLKCFLAGS" \
+./configure \
+ --prefix=/usr \
+ --mandir=/usr/man \
+ --infodir=/usr/info \
+ --disable-locate \
+ --without-fts \
+ --build=$ARCH-slackware-linux
+
+make $NUMJOBS || make || exit 1
+make install DESTDIR=$PKG || exit 1
+
+find $PKG | xargs file | grep -e "executable" -e "shared object" \
+ | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
+
+mkdir -p $PKG/usr/doc/findutils-$VERSION
+cp -a \
+ AUTHORS COPYING* NEWS README* THANKS TODO \
+ $PKG/usr/doc/findutils-$VERSION
+
+# Compress and if needed symlink the man pages:
+if [ -d $PKG/usr/man ]; then
+ ( cd $PKG/usr/man
+ for manpagedir in $(find . -type d -name "man*") ; do
+ ( cd $manpagedir
+ for eachpage in $( find . -type l -maxdepth 1) ; do
+ ln -s $( readlink $eachpage ).gz $eachpage.gz
+ rm $eachpage
+ done
+ gzip -9 *.?
+ )
+ done
+ )
+fi
+
+# Compress info pages and purge "dir" file from the package:
+if [ -d $PKG/usr/info ]; then
+ ( cd $PKG/usr/info
+ rm -f dir
+ gzip -9 *
+ )
+fi
+
+mkdir -p $PKG/install
+cat $CWD/slack-desc > $PKG/install/slack-desc
+
+cd $PKG
+/sbin/makepkg -l y -c n $TMP/findutils-$VERSION-$ARCH-$BUILD.txz
+
diff --git a/source/a/findutils/findutils.no.default.options.warnings.diff b/source/a/findutils/findutils.no.default.options.warnings.diff
new file mode 100644
index 00000000..2b107673
--- /dev/null
+++ b/source/a/findutils/findutils.no.default.options.warnings.diff
@@ -0,0 +1,11 @@
+--- ./find/util.c.orig 2008-03-10 04:37:22.000000000 -0500
++++ ./find/util.c 2009-02-21 15:50:38.000000000 -0600
+@@ -910,7 +910,7 @@
+
+ if (isatty(0))
+ {
+- p->warnings = true;
++ p->warnings = false;
+ p->literal_control_chars = false;
+ }
+ else
diff --git a/source/a/findutils/findutils.nolocate.diff b/source/a/findutils/findutils.nolocate.diff
new file mode 100644
index 00000000..920b57ba
--- /dev/null
+++ b/source/a/findutils/findutils.nolocate.diff
@@ -0,0 +1,22 @@
+--- ./Makefile.am.orig 2009-02-21 15:09:54.000000000 -0600
++++ ./Makefile.am 2009-02-21 15:18:43.000000000 -0600
+@@ -4,7 +4,7 @@
+ EXTRA_DIST = COPYING ChangeLog TODO config.h.in stamp-h.in \
+ THANKS import-gnulib.sh import-gnulib.config
+ # "tests" is the gnulib unit test dir.
+-SUBDIRS = gnulib tests build-aux lib find xargs locate doc po m4
++SUBDIRS = gnulib tests build-aux lib find xargs doc po m4
+
+ ACLOCAL_AMFLAGS = -I gnulib/m4 -I m4
+
+--- ./Makefile.in.orig 2009-02-21 15:09:54.000000000 -0600
++++ ./Makefile.in 2009-02-21 15:18:56.000000000 -0600
+@@ -572,7 +572,7 @@
+ THANKS import-gnulib.sh import-gnulib.config
+
+ # "tests" is the gnulib unit test dir.
+-SUBDIRS = gnulib tests build-aux lib find xargs locate doc po m4
++SUBDIRS = gnulib tests build-aux lib find xargs doc po m4
+ ACLOCAL_AMFLAGS = -I gnulib/m4 -I m4
+ TESTFILE_SUFFIXES = .exp .xo .xe .xi
+ all: config.h
diff --git a/source/a/findutils/slack-desc b/source/a/findutils/slack-desc
new file mode 100644
index 00000000..f26e4721
--- /dev/null
+++ b/source/a/findutils/slack-desc
@@ -0,0 +1,19 @@
+# HOW TO EDIT THIS FILE:
+# The "handy ruler" below makes it easier to edit a package description. Line
+# up the first '|' above the ':' following the base package name, and the '|'
+# on the right side marks the last column you can put a character in. You must
+# make exactly 11 lines for the formatting to be correct. It's also
+# customary to leave one space after the ':'.
+
+ |-----handy-ruler------------------------------------------------------|
+findutils: findutils (utilities to locate files)
+findutils:
+findutils: This package contains the GNU find and xargs programs. The find and
+findutils: xargs implementations comply with POSIX 1003.2. They also support
+findutils: some additional options, some borrowed from Unix and some unique to
+findutils: GNU.
+findutils:
+findutils:
+findutils:
+findutils:
+findutils:
diff --git a/source/a/floppy/fdutils-5.4-20020222.diff b/source/a/floppy/fdutils-5.4-20020222.diff
new file mode 100644
index 00000000..28a7b040
--- /dev/null
+++ b/source/a/floppy/fdutils-5.4-20020222.diff
@@ -0,0 +1,2991 @@
+diff -ur --new-file --exclude-from=/home/aknaff/floppy/exclude fdutils-5.4/Changelog fdutils/Changelog
+--- fdutils-5.4/Changelog Sat Jun 3 16:29:33 2000
++++ fdutils/Changelog Sun Feb 3 23:51:42 2002
+@@ -1,3 +1,9 @@
++020203 Fix fdmount and superformat bugs
++020203 Create /dev/fd0 before testing for existence of /dev/fd0
++011002 Fix floppycontrol.c printf conditional on FD_DISK_CHANGED, so that
++ it works with gcc3 which apparently considers printf as a macro...
++000612 Explicitly include sysmacros.h, apparently this is needed in
++ certain environments
+ 000603 Released 5.4
+ 000527 Fixed a couple of buffer overrun exploits and other cleanup. Made
+ fdutils compilable with Linux 2.3/2.4 kernels. Documentation fixes
+diff -ur --new-file --exclude-from=/home/aknaff/floppy/exclude fdutils-5.4/INSTALL fdutils/INSTALL
+--- fdutils-5.4/INSTALL Thu Jul 1 19:48:19 1999
++++ fdutils/INSTALL Mon May 21 00:24:21 2001
+@@ -8,14 +8,17 @@
+ 3. Compile the utilities:
+ make
+
+- 3. Run the MAKEFLOPPIES script to create the device files:
++ 4. Install:
++ make install
++
++ 5. Run the MAKEFLOPPIES script to create the device files:
+ cd /dev
+ MAKEFLOPPIES
+
+- 4. Enjoy!
++ 6. Enjoy!
+ I you have any questions, feel free to ask!
+
+- 5. You might also want to get a recent version of mtools (later than
++ 7. You might also want to get a recent version of mtools (later than
+ 3.0)
+
+ A. Knaff
+diff -ur --new-file --exclude-from=/home/aknaff/floppy/exclude fdutils-5.4/config.guess fdutils/config.guess
+--- fdutils-5.4/config.guess Tue Jun 17 22:37:13 1997
++++ fdutils/config.guess Mon May 21 00:24:45 2001
+@@ -1,7 +1,10 @@
+ #! /bin/sh
+ # Attempt to guess a canonical system name.
+-# Copyright (C) 1992, 93, 94, 95, 1996 Free Software Foundation, Inc.
+-#
++# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001
++# Free Software Foundation, Inc.
++
++timestamp='2001-04-20'
++
+ # This file 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
+@@ -22,18 +25,92 @@
+ # the same distribution terms that you use for the rest of that program.
+
+ # Written by Per Bothner <bothner@cygnus.com>.
+-# The master version of this file is at the FSF in /home/gd/gnu/lib.
++# Please send patches to <config-patches@gnu.org>.
+ #
+ # This script attempts to guess a canonical system name similar to
+ # config.sub. If it succeeds, it prints the system name on stdout, and
+ # exits with 0. Otherwise, it exits with 1.
+ #
+ # The plan is that this can be called by configure scripts if you
+-# don't specify an explicit system type (host/target name).
+-#
+-# Only a few systems have been added to this list; please add others
+-# (but try to keep the structure clean).
+-#
++# don't specify an explicit build system type.
++
++me=`echo "$0" | sed -e 's,.*/,,'`
++
++usage="\
++Usage: $0 [OPTION]
++
++Output the configuration name of the system \`$me' is run on.
++
++Operation modes:
++ -h, --help print this help, then exit
++ -t, --time-stamp print date of last modification, then exit
++ -v, --version print version number, then exit
++
++Report bugs and patches to <config-patches@gnu.org>."
++
++version="\
++GNU config.guess ($timestamp)
++
++Originally written by Per Bothner.
++Copyright (C) 1992, 93, 94, 95, 96, 97, 98, 99, 2000
++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."
++
++help="
++Try \`$me --help' for more information."
++
++# Parse command line
++while test $# -gt 0 ; do
++ case $1 in
++ --time-stamp | --time* | -t )
++ echo "$timestamp" ; exit 0 ;;
++ --version | -v )
++ echo "$version" ; exit 0 ;;
++ --help | --h* | -h )
++ echo "$usage"; exit 0 ;;
++ -- ) # Stop option processing
++ shift; break ;;
++ - ) # Use stdin as input.
++ break ;;
++ -* )
++ echo "$me: invalid option $1$help" >&2
++ exit 1 ;;
++ * )
++ break ;;
++ esac
++done
++
++if test $# != 0; then
++ echo "$me: too many arguments$help" >&2
++ exit 1
++fi
++
++
++dummy=dummy-$$
++trap 'rm -f $dummy.c $dummy.o $dummy.rel $dummy; exit 1' 1 2 15
++
++# CC_FOR_BUILD -- compiler used by this script.
++# Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still
++# use `HOST_CC' if defined, but it is deprecated.
++
++case $CC_FOR_BUILD,$HOST_CC,$CC in
++ ,,) echo "int dummy(){}" > $dummy.c
++ for c in cc gcc c89 ; do
++ ($c $dummy.c -c -o $dummy.o) >/dev/null 2>&1
++ if test $? = 0 ; then
++ CC_FOR_BUILD="$c"; break
++ fi
++ done
++ rm -f $dummy.c $dummy.o $dummy.rel
++ if test x"$CC_FOR_BUILD" = x ; then
++ CC_FOR_BUILD=no_compiler_found
++ fi
++ ;;
++ ,,*) CC_FOR_BUILD=$CC ;;
++ ,*,*) CC_FOR_BUILD=$HOST_CC ;;
++esac
+
+ # This is needed to find uname on a Pyramid OSx when run in the BSD universe.
+ # (ghazi@noc.rutgers.edu 8/24/94.)
+@@ -43,37 +120,162 @@
+
+ UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown
+ UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown
+-UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown
++UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown
+ UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown
+
+-trap 'rm -f dummy.c dummy.o dummy; exit 1' 1 2 15
+-
+ # Note: order is significant - the case branches are not exclusive.
+
+ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
++ *:NetBSD:*:*)
++ # Netbsd (nbsd) targets should (where applicable) match one or
++ # more of the tupples: *-*-netbsdelf*, *-*-netbsdaout*,
++ # *-*-netbsdecoff* and *-*-netbsd*. For targets that recently
++ # switched to ELF, *-*-netbsd* would select the old
++ # object file format. This provides both forward
++ # compatibility and a consistent mechanism for selecting the
++ # object file format.
++ # Determine the machine/vendor (is the vendor relevant).
++ case "${UNAME_MACHINE}" in
++ amiga) machine=m68k-unknown ;;
++ arm32) machine=arm-unknown ;;
++ atari*) machine=m68k-atari ;;
++ sun3*) machine=m68k-sun ;;
++ mac68k) machine=m68k-apple ;;
++ macppc) machine=powerpc-apple ;;
++ hp3[0-9][05]) machine=m68k-hp ;;
++ ibmrt|romp-ibm) machine=romp-ibm ;;
++ *) machine=${UNAME_MACHINE}-unknown ;;
++ esac
++ # The Operating System including object format, if it has switched
++ # to ELF recently, or will in the future.
++ case "${UNAME_MACHINE}" in
++ i386|sparc|amiga|arm*|hp300|mvme68k|vax|atari|luna68k|mac68k|news68k|next68k|pc532|sun3*|x68k)
++ if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \
++ | grep __ELF__ >/dev/null
++ then
++ # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout).
++ # Return netbsd for either. FIX?
++ os=netbsd
++ else
++ os=netbsdelf
++ fi
++ ;;
++ *)
++ os=netbsd
++ ;;
++ esac
++ # The OS release
++ release=`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'`
++ # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM:
++ # contains redundant information, the shorter form:
++ # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used.
++ echo "${machine}-${os}${release}"
++ exit 0 ;;
+ alpha:OSF1:*:*)
++ if test $UNAME_RELEASE = "V4.0"; then
++ UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'`
++ fi
+ # A Vn.n version is a released version.
+ # A Tn.n version is a released field test version.
+ # A Xn.n version is an unreleased experimental baselevel.
+ # 1.2 uses "1.2" for uname -r.
+- echo alpha-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[VTX]//'`
++ cat <<EOF >$dummy.s
++ .data
++\$Lformat:
++ .byte 37,100,45,37,120,10,0 # "%d-%x\n"
++
++ .text
++ .globl main
++ .align 4
++ .ent main
++main:
++ .frame \$30,16,\$26,0
++ ldgp \$29,0(\$27)
++ .prologue 1
++ .long 0x47e03d80 # implver \$0
++ lda \$2,-1
++ .long 0x47e20c21 # amask \$2,\$1
++ lda \$16,\$Lformat
++ mov \$0,\$17
++ not \$1,\$18
++ jsr \$26,printf
++ ldgp \$29,0(\$26)
++ mov 0,\$16
++ jsr \$26,exit
++ .end main
++EOF
++ $CC_FOR_BUILD $dummy.s -o $dummy 2>/dev/null
++ if test "$?" = 0 ; then
++ case `./$dummy` in
++ 0-0)
++ UNAME_MACHINE="alpha"
++ ;;
++ 1-0)
++ UNAME_MACHINE="alphaev5"
++ ;;
++ 1-1)
++ UNAME_MACHINE="alphaev56"
++ ;;
++ 1-101)
++ UNAME_MACHINE="alphapca56"
++ ;;
++ 2-303)
++ UNAME_MACHINE="alphaev6"
++ ;;
++ 2-307)
++ UNAME_MACHINE="alphaev67"
++ ;;
++ esac
++ fi
++ rm -f $dummy.s $dummy
++ echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[VTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
++ exit 0 ;;
++ Alpha\ *:Windows_NT*:*)
++ # How do we know it's Interix rather than the generic POSIX subsystem?
++ # Should we change UNAME_MACHINE based on the output of uname instead
++ # of the specific Alpha model?
++ echo alpha-pc-interix
+ exit 0 ;;
+ 21064:Windows_NT:50:3)
+ echo alpha-dec-winnt3.5
+ exit 0 ;;
+ Amiga*:UNIX_System_V:4.0:*)
+- echo m68k-cbm-sysv4
++ echo m68k-unknown-sysv4
+ exit 0;;
+- amiga:NetBSD:*:*)
+- echo m68k-cbm-netbsd${UNAME_RELEASE}
+- exit 0 ;;
+ amiga:OpenBSD:*:*)
+- echo m68k-cbm-openbsd${UNAME_RELEASE}
+- exit 0 ;;
++ echo m68k-unknown-openbsd${UNAME_RELEASE}
++ exit 0 ;;
++ *:[Aa]miga[Oo][Ss]:*:*)
++ echo ${UNAME_MACHINE}-unknown-amigaos
++ exit 0 ;;
++ arc64:OpenBSD:*:*)
++ echo mips64el-unknown-openbsd${UNAME_RELEASE}
++ exit 0 ;;
++ arc:OpenBSD:*:*)
++ echo mipsel-unknown-openbsd${UNAME_RELEASE}
++ exit 0 ;;
++ hkmips:OpenBSD:*:*)
++ echo mips-unknown-openbsd${UNAME_RELEASE}
++ exit 0 ;;
++ pmax:OpenBSD:*:*)
++ echo mipsel-unknown-openbsd${UNAME_RELEASE}
++ exit 0 ;;
++ sgi:OpenBSD:*:*)
++ echo mips-unknown-openbsd${UNAME_RELEASE}
++ exit 0 ;;
++ wgrisc:OpenBSD:*:*)
++ echo mipsel-unknown-openbsd${UNAME_RELEASE}
++ exit 0 ;;
++ *:OS/390:*:*)
++ echo i370-ibm-openedition
++ exit 0 ;;
+ arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*)
+ echo arm-acorn-riscix${UNAME_RELEASE}
+ exit 0;;
+- Pyramid*:OSx*:*:*|MIS*:OSx*:*:*)
++ SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*)
++ echo hppa1.1-hitachi-hiuxmpp
++ exit 0;;
++ Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*)
+ # akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE.
+ if test "`(/bin/universe) 2>/dev/null`" = att ; then
+ echo pyramid-pyramid-sysv3
+@@ -81,9 +283,12 @@
+ echo pyramid-pyramid-bsd
+ fi
+ exit 0 ;;
+- NILE:*:*:dcosx)
++ NILE*:*:*:dcosx)
+ echo pyramid-pyramid-svr4
+ exit 0 ;;
++ sun4H:SunOS:5.*:*)
++ echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
++ exit 0 ;;
+ sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*)
+ echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+ exit 0 ;;
+@@ -108,26 +313,61 @@
+ sun3*:SunOS:*:*)
+ echo m68k-sun-sunos${UNAME_RELEASE}
+ exit 0 ;;
++ sun*:*:4.2BSD:*)
++ UNAME_RELEASE=`(head -1 /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null`
++ test "x${UNAME_RELEASE}" = "x" && UNAME_RELEASE=3
++ case "`/bin/arch`" in
++ sun3)
++ echo m68k-sun-sunos${UNAME_RELEASE}
++ ;;
++ sun4)
++ echo sparc-sun-sunos${UNAME_RELEASE}
++ ;;
++ esac
++ exit 0 ;;
+ aushp:SunOS:*:*)
+ echo sparc-auspex-sunos${UNAME_RELEASE}
+ exit 0 ;;
+- atari*:NetBSD:*:*)
+- echo m68k-atari-netbsd${UNAME_RELEASE}
+- exit 0 ;;
+ atari*:OpenBSD:*:*)
+- echo m68k-atari-openbsd${UNAME_RELEASE}
++ echo m68k-unknown-openbsd${UNAME_RELEASE}
+ exit 0 ;;
+- sun3*:NetBSD:*:*)
+- echo m68k-sun-netbsd${UNAME_RELEASE}
++ # The situation for MiNT is a little confusing. The machine name
++ # can be virtually everything (everything which is not
++ # "atarist" or "atariste" at least should have a processor
++ # > m68000). The system name ranges from "MiNT" over "FreeMiNT"
++ # to the lowercase version "mint" (or "freemint"). Finally
++ # the system name "TOS" denotes a system which is actually not
++ # MiNT. But MiNT is downward compatible to TOS, so this should
++ # be no problem.
++ atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*)
++ echo m68k-atari-mint${UNAME_RELEASE}
+ exit 0 ;;
+- sun3*:OpenBSD:*:*)
+- echo m68k-sun-openbsd${UNAME_RELEASE}
++ atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*)
++ echo m68k-atari-mint${UNAME_RELEASE}
++ exit 0 ;;
++ *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*)
++ echo m68k-atari-mint${UNAME_RELEASE}
+ exit 0 ;;
+- mac68k:NetBSD:*:*)
+- echo m68k-apple-netbsd${UNAME_RELEASE}
++ milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*)
++ echo m68k-milan-mint${UNAME_RELEASE}
++ exit 0 ;;
++ hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*)
++ echo m68k-hades-mint${UNAME_RELEASE}
++ exit 0 ;;
++ *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*)
++ echo m68k-unknown-mint${UNAME_RELEASE}
++ exit 0 ;;
++ sun3*:OpenBSD:*:*)
++ echo m68k-unknown-openbsd${UNAME_RELEASE}
+ exit 0 ;;
+ mac68k:OpenBSD:*:*)
+- echo m68k-apple-openbsd${UNAME_RELEASE}
++ echo m68k-unknown-openbsd${UNAME_RELEASE}
++ exit 0 ;;
++ mvme68k:OpenBSD:*:*)
++ echo m68k-unknown-openbsd${UNAME_RELEASE}
++ exit 0 ;;
++ mvme88k:OpenBSD:*:*)
++ echo m88k-unknown-openbsd${UNAME_RELEASE}
+ exit 0 ;;
+ powerpc:machten:*:*)
+ echo powerpc-apple-machten${UNAME_RELEASE}
+@@ -141,9 +381,17 @@
+ VAX*:ULTRIX*:*:*)
+ echo vax-dec-ultrix${UNAME_RELEASE}
+ exit 0 ;;
++ 2020:CLIX:*:* | 2430:CLIX:*:*)
++ echo clipper-intergraph-clix${UNAME_RELEASE}
++ exit 0 ;;
+ mips:*:*:UMIPS | mips:*:*:RISCos)
+- sed 's/^ //' << EOF >dummy.c
+- int main (argc, argv) int argc; char **argv; {
++ sed 's/^ //' << EOF >$dummy.c
++#ifdef __cplusplus
++#include <stdio.h> /* for printf() prototype */
++ int main (int argc, char *argv[]) {
++#else
++ int main (argc, argv) int argc; char *argv[]; {
++#endif
+ #if defined (host_mips) && defined (MIPSEB)
+ #if defined (SYSTYPE_SYSV)
+ printf ("mips-mips-riscos%ssysv\n", argv[1]); exit (0);
+@@ -158,12 +406,15 @@
+ exit (-1);
+ }
+ EOF
+- ${CC-cc} dummy.c -o dummy \
+- && ./dummy `echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` \
+- && rm dummy.c dummy && exit 0
+- rm -f dummy.c dummy
++ $CC_FOR_BUILD $dummy.c -o $dummy \
++ && ./$dummy `echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` \
++ && rm -f $dummy.c $dummy && exit 0
++ rm -f $dummy.c $dummy
+ echo mips-mips-riscos${UNAME_RELEASE}
+ exit 0 ;;
++ Motorola:PowerMAX_OS:*:*)
++ echo powerpc-motorola-powermax
++ exit 0 ;;
+ Night_Hawk:Power_UNIX:*:*)
+ echo powerpc-harris-powerunix
+ exit 0 ;;
+@@ -179,15 +430,18 @@
+ AViiON:dgux:*:*)
+ # DG/UX returns AViiON for all architectures
+ UNAME_PROCESSOR=`/usr/bin/uname -p`
+- if [ $UNAME_PROCESSOR = mc88100 -o $UNAME_PROCESSOR = mc88110 ] ; then
+- if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx \
+- -o ${TARGET_BINARY_INTERFACE}x = x ] ; then
++ if [ $UNAME_PROCESSOR = mc88100 ] || [ $UNAME_PROCESSOR = mc88110 ]
++ then
++ if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx ] || \
++ [ ${TARGET_BINARY_INTERFACE}x = x ]
++ then
+ echo m88k-dg-dgux${UNAME_RELEASE}
+- else
++ else
+ echo m88k-dg-dguxbcs${UNAME_RELEASE}
++ fi
++ else
++ echo i586-dg-dgux${UNAME_RELEASE}
+ fi
+- else echo i586-dg-dgux${UNAME_RELEASE}
+- fi
+ exit 0 ;;
+ M88*:DolphinOS:*:*) # DolphinOS (SVR3)
+ echo m88k-dolphin-sysv3
+@@ -208,12 +462,20 @@
+ ????????:AIX?:[12].1:2) # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX.
+ echo romp-ibm-aix # uname -m gives an 8 hex-code CPU id
+ exit 0 ;; # Note that: echo "'`uname -s`'" gives 'AIX '
+- i?86:AIX:*:*)
++ i*86:AIX:*:*)
+ echo i386-ibm-aix
+ exit 0 ;;
++ ia64:AIX:*:*)
++ if [ -x /usr/bin/oslevel ] ; then
++ IBM_REV=`/usr/bin/oslevel`
++ else
++ IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE}
++ fi
++ echo ${UNAME_MACHINE}-ibm-aix${IBM_REV}
++ exit 0 ;;
+ *:AIX:2:3)
+ if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then
+- sed 's/^ //' << EOF >dummy.c
++ sed 's/^ //' << EOF >$dummy.c
+ #include <sys/systemcfg.h>
+
+ main()
+@@ -224,8 +486,8 @@
+ exit(0);
+ }
+ EOF
+- ${CC-cc} dummy.c -o dummy && ./dummy && rm dummy.c dummy && exit 0
+- rm -f dummy.c dummy
++ $CC_FOR_BUILD $dummy.c -o $dummy && ./$dummy && rm -f $dummy.c $dummy && exit 0
++ rm -f $dummy.c $dummy
+ echo rs6000-ibm-aix3.2.5
+ elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then
+ echo rs6000-ibm-aix3.2.4
+@@ -233,8 +495,9 @@
+ echo rs6000-ibm-aix3.2
+ fi
+ exit 0 ;;
+- *:AIX:*:4)
+- if /usr/sbin/lsattr -EHl proc0 | grep POWER >/dev/null 2>&1; then
++ *:AIX:*:[45])
++ IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | head -1 | awk '{ print $1 }'`
++ if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then
+ IBM_ARCH=rs6000
+ else
+ IBM_ARCH=powerpc
+@@ -242,7 +505,7 @@
+ if [ -x /usr/bin/oslevel ] ; then
+ IBM_REV=`/usr/bin/oslevel`
+ else
+- IBM_REV=4.${UNAME_RELEASE}
++ IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE}
+ fi
+ echo ${IBM_ARCH}-ibm-aix${IBM_REV}
+ exit 0 ;;
+@@ -252,7 +515,7 @@
+ ibmrt:4.4BSD:*|romp-ibm:BSD:*)
+ echo romp-ibm-bsd4.4
+ exit 0 ;;
+- ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC NetBSD and
++ ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC BSD and
+ echo romp-ibm-bsd${UNAME_RELEASE} # 4.3 with uname added to
+ exit 0 ;; # report: romp-ibm BSD 4.3
+ *:BOSX:*:*)
+@@ -267,18 +530,75 @@
+ hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*)
+ echo m68k-hp-bsd4.4
+ exit 0 ;;
+- 9000/[3478]??:HP-UX:*:*)
++ 9000/[34678]??:HP-UX:*:*)
++ HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'`
+ case "${UNAME_MACHINE}" in
+ 9000/31? ) HP_ARCH=m68000 ;;
+ 9000/[34]?? ) HP_ARCH=m68k ;;
+- 9000/7?? | 9000/8?[1679] ) HP_ARCH=hppa1.1 ;;
+- 9000/8?? ) HP_ARCH=hppa1.0 ;;
++ 9000/[678][0-9][0-9])
++ case "${HPUX_REV}" in
++ 11.[0-9][0-9])
++ if [ -x /usr/bin/getconf ]; then
++ sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null`
++ sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null`
++ case "${sc_cpu_version}" in
++ 523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0
++ 528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1
++ 532) # CPU_PA_RISC2_0
++ case "${sc_kernel_bits}" in
++ 32) HP_ARCH="hppa2.0n" ;;
++ 64) HP_ARCH="hppa2.0w" ;;
++ esac ;;
++ esac
++ fi ;;
++ esac
++ if [ "${HP_ARCH}" = "" ]; then
++ sed 's/^ //' << EOF >$dummy.c
++
++ #define _HPUX_SOURCE
++ #include <stdlib.h>
++ #include <unistd.h>
++
++ int main ()
++ {
++ #if defined(_SC_KERNEL_BITS)
++ long bits = sysconf(_SC_KERNEL_BITS);
++ #endif
++ long cpu = sysconf (_SC_CPU_VERSION);
++
++ switch (cpu)
++ {
++ case CPU_PA_RISC1_0: puts ("hppa1.0"); break;
++ case CPU_PA_RISC1_1: puts ("hppa1.1"); break;
++ case CPU_PA_RISC2_0:
++ #if defined(_SC_KERNEL_BITS)
++ switch (bits)
++ {
++ case 64: puts ("hppa2.0w"); break;
++ case 32: puts ("hppa2.0n"); break;
++ default: puts ("hppa2.0"); break;
++ } break;
++ #else /* !defined(_SC_KERNEL_BITS) */
++ puts ("hppa2.0"); break;
++ #endif
++ default: puts ("hppa1.0"); break;
++ }
++ exit (0);
++ }
++EOF
++ (CCOPTS= $CC_FOR_BUILD $dummy.c -o $dummy 2>/dev/null ) && HP_ARCH=`./$dummy`
++ if test -z "$HP_ARCH"; then HP_ARCH=hppa; fi
++ rm -f $dummy.c $dummy
++ fi ;;
+ esac
+- HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'`
+ echo ${HP_ARCH}-hp-hpux${HPUX_REV}
+ exit 0 ;;
++ ia64:HP-UX:*:*)
++ HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'`
++ echo ia64-hp-hpux${HPUX_REV}
++ exit 0 ;;
+ 3050*:HI-UX:*:*)
+- sed 's/^ //' << EOF >dummy.c
++ sed 's/^ //' << EOF >$dummy.c
+ #include <unistd.h>
+ int
+ main ()
+@@ -303,8 +623,8 @@
+ exit (0);
+ }
+ EOF
+- ${CC-cc} dummy.c -o dummy && ./dummy && rm dummy.c dummy && exit 0
+- rm -f dummy.c dummy
++ $CC_FOR_BUILD $dummy.c -o $dummy && ./$dummy && rm -f $dummy.c $dummy && exit 0
++ rm -f $dummy.c $dummy
+ echo unknown-hitachi-hiuxwe2
+ exit 0 ;;
+ 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* )
+@@ -313,13 +633,16 @@
+ 9000/8??:4.3bsd:*:*)
+ echo hppa1.0-hp-bsd
+ exit 0 ;;
++ *9??*:MPE/iX:*:*)
++ echo hppa1.0-hp-mpeix
++ exit 0 ;;
+ hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* )
+ echo hppa1.1-hp-osf
+ exit 0 ;;
+ hp8??:OSF1:*:*)
+ echo hppa1.0-hp-osf
+ exit 0 ;;
+- i?86:OSF1:*:*)
++ i*86:OSF1:*:*)
+ if [ -x /usr/sbin/sysversion ] ; then
+ echo ${UNAME_MACHINE}-unknown-osf1mk
+ else
+@@ -329,6 +652,9 @@
+ parisc*:Lites*:*:*)
+ echo hppa1.1-hp-lites
+ exit 0 ;;
++ hppa*:OpenBSD:*:*)
++ echo hppa-unknown-openbsd
++ exit 0 ;;
+ C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*)
+ echo c1-convex-bsd
+ exit 0 ;;
+@@ -359,104 +685,297 @@
+ -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/
+ exit 0 ;;
+ CRAY*TS:*:*:*)
+- echo t90-cray-unicos${UNAME_RELEASE}
++ echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
++ exit 0 ;;
++ CRAY*T3D:*:*:*)
++ echo alpha-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
++ exit 0 ;;
++ CRAY*T3E:*:*:*)
++ echo alphaev5-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
++ exit 0 ;;
++ CRAY*SV1:*:*:*)
++ echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+ exit 0 ;;
+ CRAY-2:*:*:*)
+ echo cray2-cray-unicos
+ exit 0 ;;
+- F300:UNIX_System_V:*:*)
+- FUJITSU_SYS=`uname -p | tr [A-Z] [a-z] | sed -e 's/\///'`
++ F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*)
++ FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
++ FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'`
+ FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'`
+- echo "f300-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
++ echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
+ exit 0 ;;
+- F301:UNIX_System_V:*:*)
+- echo f301-fujitsu-uxpv`echo $UNAME_RELEASE | sed 's/ .*//'`
+- exit 0 ;;
+- hp3[0-9][05]:NetBSD:*:*)
+- echo m68k-hp-netbsd${UNAME_RELEASE}
++ hp300:OpenBSD:*:*)
++ echo m68k-unknown-openbsd${UNAME_RELEASE}
+ exit 0 ;;
+- hp3[0-9][05]:OpenBSD:*:*)
+- echo m68k-hp-openbsd${UNAME_RELEASE}
+- exit 0 ;;
+- i?86:BSD/386:*:* | *:BSD/OS:*:*)
++ i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*)
+ echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE}
+ exit 0 ;;
++ sparc*:BSD/OS:*:*)
++ echo sparc-unknown-bsdi${UNAME_RELEASE}
++ exit 0 ;;
++ *:BSD/OS:*:*)
++ echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE}
++ exit 0 ;;
+ *:FreeBSD:*:*)
+ echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`
+ exit 0 ;;
+- *:NetBSD:*:*)
+- echo ${UNAME_MACHINE}-unknown-netbsd`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'`
+- exit 0 ;;
+ *:OpenBSD:*:*)
+ echo ${UNAME_MACHINE}-unknown-openbsd`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'`
+ exit 0 ;;
+ i*:CYGWIN*:*)
+- echo i386-pc-cygwin32
++ echo ${UNAME_MACHINE}-pc-cygwin
++ exit 0 ;;
++ i*:MINGW*:*)
++ echo ${UNAME_MACHINE}-pc-mingw32
++ exit 0 ;;
++ i*:PW*:*)
++ echo ${UNAME_MACHINE}-pc-pw32
++ exit 0 ;;
++ i*:Windows_NT*:* | Pentium*:Windows_NT*:*)
++ # How do we know it's Interix rather than the generic POSIX subsystem?
++ # It also conflicts with pre-2.0 versions of AT&T UWIN. Should we
++ # UNAME_MACHINE based on the output of uname instead of i386?
++ echo i386-pc-interix
++ exit 0 ;;
++ i*:UWIN*:*)
++ echo ${UNAME_MACHINE}-pc-uwin
+ exit 0 ;;
+ p*:CYGWIN*:*)
+- echo powerpcle-unknown-cygwin32
++ echo powerpcle-unknown-cygwin
+ exit 0 ;;
+ prep*:SunOS:5.*:*)
+ echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+ exit 0 ;;
+ *:GNU:*:*)
+- echo `echo ${UNAME_MACHINE}|sed -e 's,/.*$,,'`-unknown-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'`
++ echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'`
+ exit 0 ;;
+- *:Linux:*:*)
+- # The BFD linker knows what the default object file format is, so
+- # first see if it will tell us.
+- ld_help_string=`ld --help 2>&1`
+- if echo "$ld_help_string" | grep >/dev/null 2>&1 "supported emulations: elf_i.86"; then
+- echo "${UNAME_MACHINE}-pc-linux" ; exit 0
+- elif echo "$ld_help_string" | grep >/dev/null 2>&1 "supported emulations: i.86linux"; then
+- echo "${UNAME_MACHINE}-pc-linux-aout" ; exit 0
+- elif echo "$ld_help_string" | grep >/dev/null 2>&1 "supported emulations: i.86coff"; then
+- echo "${UNAME_MACHINE}-pc-linux-coff" ; exit 0
+- elif echo "$ld_help_string" | grep >/dev/null 2>&1 "supported emulations: m68kelf"; then
+- echo "${UNAME_MACHINE}-unknown-linux" ; exit 0
+- elif echo "$ld_help_string" | grep >/dev/null 2>&1 "supported emulations: m68klinux"; then
+- echo "${UNAME_MACHINE}-unknown-linux-aout" ; exit 0
+- elif echo "$ld_help_string" | grep >/dev/null 2>&1 "supported emulations: elf32ppc"; then
+- echo "powerpc-unknown-linux" ; exit 0
+- elif test "${UNAME_MACHINE}" = "alpha" ; then
+- echo alpha-unknown-linux ; exit 0
+- elif test "${UNAME_MACHINE}" = "sparc" ; then
+- echo sparc-unknown-linux ; exit 0
+- else
+- # Either a pre-BFD a.out linker (linux-oldld) or one that does not give us
+- # useful --help. Gcc wants to distinguish between linux-oldld and linux-aout.
+- test ! -d /usr/lib/ldscripts/. \
+- && echo "${UNAME_MACHINE}-pc-linux-oldld" && exit 0
+- # Determine whether the default compiler is a.out or elf
+- cat >dummy.c <<EOF
++ i*86:Minix:*:*)
++ echo ${UNAME_MACHINE}-pc-minix
++ exit 0 ;;
++ arm*:Linux:*:*)
++ echo ${UNAME_MACHINE}-unknown-linux-gnu
++ exit 0 ;;
++ ia64:Linux:*:*)
++ echo ${UNAME_MACHINE}-unknown-linux
++ exit 0 ;;
++ m68*:Linux:*:*)
++ echo ${UNAME_MACHINE}-unknown-linux-gnu
++ exit 0 ;;
++ mips:Linux:*:*)
++ cat >$dummy.c <<EOF
++#ifdef __cplusplus
++#include <stdio.h> /* for printf() prototype */
++int main (int argc, char *argv[]) {
++#else
++int main (argc, argv) int argc; char *argv[]; {
++#endif
++#ifdef __MIPSEB__
++ printf ("%s-unknown-linux-gnu\n", argv[1]);
++#endif
++#ifdef __MIPSEL__
++ printf ("%sel-unknown-linux-gnu\n", argv[1]);
++#endif
++ return 0;
++}
++EOF
++ $CC_FOR_BUILD $dummy.c -o $dummy 2>/dev/null && ./$dummy "${UNAME_MACHINE}" && rm -f $dummy.c $dummy && exit 0
++ rm -f $dummy.c $dummy
++ ;;
++ ppc:Linux:*:*)
++ # Determine Lib Version
++ cat >$dummy.c <<EOF
++#include <features.h>
++#if defined(__GLIBC__)
++extern char __libc_version[];
++extern char __libc_release[];
++#endif
+ main(argc, argv)
+-int argc;
+-char *argv[];
++ int argc;
++ char *argv[];
+ {
++#if defined(__GLIBC__)
++ printf("%s %s\n", __libc_version, __libc_release);
++#else
++ printf("unknown\n");
++#endif
++ return 0;
++}
++EOF
++ LIBC=""
++ $CC_FOR_BUILD $dummy.c -o $dummy 2>/dev/null
++ if test "$?" = 0 ; then
++ ./$dummy | grep 1\.99 > /dev/null
++ if test "$?" = 0 ; then LIBC="libc1" ; fi
++ fi
++ rm -f $dummy.c $dummy
++ echo powerpc-unknown-linux-gnu${LIBC}
++ exit 0 ;;
++ alpha:Linux:*:*)
++ cat <<EOF >$dummy.s
++ .data
++ \$Lformat:
++ .byte 37,100,45,37,120,10,0 # "%d-%x\n"
++ .text
++ .globl main
++ .align 4
++ .ent main
++ main:
++ .frame \$30,16,\$26,0
++ ldgp \$29,0(\$27)
++ .prologue 1
++ .long 0x47e03d80 # implver \$0
++ lda \$2,-1
++ .long 0x47e20c21 # amask \$2,\$1
++ lda \$16,\$Lformat
++ mov \$0,\$17
++ not \$1,\$18
++ jsr \$26,printf
++ ldgp \$29,0(\$26)
++ mov 0,\$16
++ jsr \$26,exit
++ .end main
++EOF
++ LIBC=""
++ $CC_FOR_BUILD $dummy.s -o $dummy 2>/dev/null
++ if test "$?" = 0 ; then
++ case `./$dummy` in
++ 0-0) UNAME_MACHINE="alpha" ;;
++ 1-0) UNAME_MACHINE="alphaev5" ;;
++ 1-1) UNAME_MACHINE="alphaev56" ;;
++ 1-101) UNAME_MACHINE="alphapca56" ;;
++ 2-303) UNAME_MACHINE="alphaev6" ;;
++ 2-307) UNAME_MACHINE="alphaev67" ;;
++ esac
++ objdump --private-headers $dummy | \
++ grep ld.so.1 > /dev/null
++ if test "$?" = 0 ; then
++ LIBC="libc1"
++ fi
++ fi
++ rm -f $dummy.s $dummy
++ echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC}
++ exit 0 ;;
++ parisc:Linux:*:* | hppa:Linux:*:*)
++ # Look for CPU level
++ case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in
++ PA7*) echo hppa1.1-unknown-linux-gnu ;;
++ PA8*) echo hppa2.0-unknown-linux-gnu ;;
++ *) echo hppa-unknown-linux-gnu ;;
++ esac
++ exit 0 ;;
++ parisc64:Linux:*:* | hppa64:Linux:*:*)
++ echo hppa64-unknown-linux-gnu
++ exit 0 ;;
++ s390:Linux:*:* | s390x:Linux:*:*)
++ echo ${UNAME_MACHINE}-ibm-linux
++ exit 0 ;;
++ sh*:Linux:*:*)
++ echo ${UNAME_MACHINE}-unknown-linux-gnu
++ exit 0 ;;
++ sparc:Linux:*:* | sparc64:Linux:*:*)
++ echo ${UNAME_MACHINE}-unknown-linux-gnu
++ exit 0 ;;
++ x86_64:Linux:*:*)
++ echo x86_64-unknown-linux-gnu
++ exit 0 ;;
++ i*86:Linux:*:*)
++ # The BFD linker knows what the default object file format is, so
++ # first see if it will tell us. cd to the root directory to prevent
++ # problems with other programs or directories called `ld' in the path.
++ ld_supported_emulations=`cd /; ld --help 2>&1 \
++ | sed -ne '/supported emulations:/!d
++ s/[ ][ ]*/ /g
++ s/.*supported emulations: *//
++ s/ .*//
++ p'`
++ case "$ld_supported_emulations" in
++ i*86linux)
++ echo "${UNAME_MACHINE}-pc-linux-gnuaout"
++ exit 0
++ ;;
++ elf_i*86)
++ TENTATIVE="${UNAME_MACHINE}-pc-linux-gnu"
++ ;;
++ i*86coff)
++ echo "${UNAME_MACHINE}-pc-linux-gnucoff"
++ exit 0
++ ;;
++ esac
++ # Either a pre-BFD a.out linker (linux-gnuoldld)
++ # or one that does not give us useful --help.
++ # GCC wants to distinguish between linux-gnuoldld and linux-gnuaout.
++ # If ld does not provide *any* "supported emulations:"
++ # that means it is gnuoldld.
++ test -z "$ld_supported_emulations" && echo "${UNAME_MACHINE}-pc-linux-gnuoldld" && exit 0
++ case "${UNAME_MACHINE}" in
++ i*86)
++ VENDOR=pc;
++ ;;
++ *)
++ VENDOR=unknown;
++ ;;
++ esac
++ # Determine whether the default compiler is a.out or elf
++ cat >$dummy.c <<EOF
++#include <features.h>
++#ifdef __cplusplus
++#include <stdio.h> /* for printf() prototype */
++ int main (int argc, char *argv[]) {
++#else
++ int main (argc, argv) int argc; char *argv[]; {
++#endif
+ #ifdef __ELF__
+- printf ("%s-pc-linux\n", argv[1]);
++# ifdef __GLIBC__
++# if __GLIBC__ >= 2
++ printf ("%s-${VENDOR}-linux-gnu\n", argv[1]);
++# else
++ printf ("%s-${VENDOR}-linux-gnulibc1\n", argv[1]);
++# endif
++# else
++ printf ("%s-${VENDOR}-linux-gnulibc1\n", argv[1]);
++# endif
+ #else
+- printf ("%s-pc-linux-aout\n", argv[1]);
++ printf ("%s-${VENDOR}-linux-gnuaout\n", argv[1]);
+ #endif
+ return 0;
+ }
+ EOF
+- ${CC-cc} dummy.c -o dummy 2>/dev/null && ./dummy "${UNAME_MACHINE}" && rm dummy.c dummy && exit 0
+- rm -f dummy.c dummy
+- fi ;;
++ $CC_FOR_BUILD $dummy.c -o $dummy 2>/dev/null && ./$dummy "${UNAME_MACHINE}" && rm -f $dummy.c $dummy && exit 0
++ rm -f $dummy.c $dummy
++ test x"${TENTATIVE}" != x && echo "${TENTATIVE}" && exit 0
++ ;;
+ # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there. earlier versions
+ # are messed up and put the nodename in both sysname and nodename.
+- i?86:DYNIX/ptx:4*:*)
++ i*86:DYNIX/ptx:4*:*)
+ echo i386-sequent-sysv4
+ exit 0 ;;
+- i?86:*:4.*:* | i?86:SYSTEM_V:4.*:*)
++ i*86:UNIX_SV:4.2MP:2.*)
++ # Unixware is an offshoot of SVR4, but it has its own version
++ # number series starting with 2...
++ # I am not positive that other SVR4 systems won't match this,
++ # I just have to hope. -- rms.
++ # Use sysv4.2uw... so that sysv4* matches it.
++ echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION}
++ exit 0 ;;
++ i*86:*:4.*:* | i*86:SYSTEM_V:4.*:*)
++ UNAME_REL=`echo ${UNAME_RELEASE} | sed 's/\/MP$//'`
+ if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then
+- echo ${UNAME_MACHINE}-univel-sysv${UNAME_RELEASE}
++ echo ${UNAME_MACHINE}-univel-sysv${UNAME_REL}
+ else
+- echo ${UNAME_MACHINE}-pc-sysv${UNAME_RELEASE}
++ echo ${UNAME_MACHINE}-pc-sysv${UNAME_REL}
+ fi
+ exit 0 ;;
+- i?86:*:3.2:*)
++ i*86:*:5:7*)
++ # Fixed at (any) Pentium or better
++ UNAME_MACHINE=i586
++ if [ ${UNAME_SYSTEM} = "UnixWare" ] ; then
++ echo ${UNAME_MACHINE}-sco-sysv${UNAME_RELEASE}uw${UNAME_VERSION}
++ else
++ echo ${UNAME_MACHINE}-pc-sysv${UNAME_RELEASE}
++ fi
++ exit 0 ;;
++ i*86:*:3.2:*)
+ if test -f /usr/options/cb.name; then
+ UNAME_REL=`sed -n 's/.*Version //p' </usr/options/cb.name`
+ echo ${UNAME_MACHINE}-pc-isc$UNAME_REL
+@@ -465,11 +984,24 @@
+ (/bin/uname -X|egrep i80486 >/dev/null) && UNAME_MACHINE=i486
+ (/bin/uname -X|egrep '^Machine.*Pentium' >/dev/null) \
+ && UNAME_MACHINE=i586
++ (/bin/uname -X|egrep '^Machine.*Pent ?II' >/dev/null) \
++ && UNAME_MACHINE=i686
++ (/bin/uname -X|egrep '^Machine.*Pentium Pro' >/dev/null) \
++ && UNAME_MACHINE=i686
+ echo ${UNAME_MACHINE}-pc-sco$UNAME_REL
+ else
+ echo ${UNAME_MACHINE}-pc-sysv32
+ fi
+ exit 0 ;;
++ i*86:*DOS:*:*)
++ echo ${UNAME_MACHINE}-pc-msdosdjgpp
++ exit 0 ;;
++ pc:*:*:*)
++ # Left here for compatibility:
++ # uname -m prints for DJGPP always 'pc', but it prints nothing about
++ # the processor, so we play safe by assuming i386.
++ echo i386-pc-msdosdjgpp
++ exit 0 ;;
+ Intel:Mach:3*:*)
+ echo i386-pc-mach3
+ exit 0 ;;
+@@ -489,7 +1021,7 @@
+ exit 0 ;;
+ M68*:*:R3V[567]*:*)
+ test -r /sysV68 && echo 'm68k-motorola-sysv' && exit 0 ;;
+- 3[34]??:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 4850:*:4.0:3.0)
++ 3[34]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 4850:*:4.0:3.0)
+ OS_REL=''
+ test -r /etc/.relid \
+ && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid`
+@@ -500,24 +1032,30 @@
+ 3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*)
+ /bin/uname -p 2>/dev/null | grep 86 >/dev/null \
+ && echo i486-ncr-sysv4 && exit 0 ;;
+- m68*:LynxOS:2.*:*)
++ m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*)
+ echo m68k-unknown-lynxos${UNAME_RELEASE}
+ exit 0 ;;
+ mc68030:UNIX_System_V:4.*:*)
+ echo m68k-atari-sysv4
+ exit 0 ;;
+- i?86:LynxOS:2.*:*)
++ i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.0*:*)
+ echo i386-unknown-lynxos${UNAME_RELEASE}
+ exit 0 ;;
+ TSUNAMI:LynxOS:2.*:*)
+ echo sparc-unknown-lynxos${UNAME_RELEASE}
+ exit 0 ;;
+- rs6000:LynxOS:2.*:* | PowerPC:LynxOS:2.*:*)
++ rs6000:LynxOS:2.*:*)
+ echo rs6000-unknown-lynxos${UNAME_RELEASE}
+ exit 0 ;;
++ PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.0*:*)
++ echo powerpc-unknown-lynxos${UNAME_RELEASE}
++ exit 0 ;;
+ SM[BE]S:UNIX_SV:*:*)
+ echo mips-dde-sysv${UNAME_RELEASE}
+ exit 0 ;;
++ RM*:ReliantUNIX-*:*:*)
++ echo mips-sni-sysv4
++ exit 0 ;;
+ RM*:SINIX-*:*:*)
+ echo mips-sni-sysv4
+ exit 0 ;;
+@@ -529,6 +1067,10 @@
+ echo ns32k-sni-sysv
+ fi
+ exit 0 ;;
++ PENTIUM:CPunix:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort
++ # says <Richard.M.Bartel@ccMail.Census.GOV>
++ echo i586-unisys-sysv4
++ exit 0 ;;
+ *:UNIX_System_V:4*:FTX*)
+ # From Gerald Hewes <hewes@openmarket.com>.
+ # How about differentiating between stratus architectures? -djm
+@@ -541,23 +1083,101 @@
+ mc68*:A/UX:*:*)
+ echo m68k-apple-aux${UNAME_RELEASE}
+ exit 0 ;;
+- R3000:*System_V*:*:* | R4000:UNIX_SYSV:*:*)
++ news*:NEWS-OS:6*:*)
++ echo mips-sony-newsos6
++ exit 0 ;;
++ R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*)
+ if [ -d /usr/nec ]; then
+ echo mips-nec-sysv${UNAME_RELEASE}
+ else
+ echo mips-unknown-sysv${UNAME_RELEASE}
+ fi
+ exit 0 ;;
+- PENTIUM:CPunix:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort
+- # says <Richard.M.Bartel@ccMail.Census.GOV>
+- echo i586-unisys-sysv4
+- exit 0 ;;
++ BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only.
++ echo powerpc-be-beos
++ exit 0 ;;
++ BeMac:BeOS:*:*) # BeOS running on Mac or Mac clone, PPC only.
++ echo powerpc-apple-beos
++ exit 0 ;;
++ BePC:BeOS:*:*) # BeOS running on Intel PC compatible.
++ echo i586-pc-beos
++ exit 0 ;;
++ SX-4:SUPER-UX:*:*)
++ echo sx4-nec-superux${UNAME_RELEASE}
++ exit 0 ;;
++ SX-5:SUPER-UX:*:*)
++ echo sx5-nec-superux${UNAME_RELEASE}
++ exit 0 ;;
++ Power*:Rhapsody:*:*)
++ echo powerpc-apple-rhapsody${UNAME_RELEASE}
++ exit 0 ;;
++ *:Rhapsody:*:*)
++ echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE}
++ exit 0 ;;
++ *:Darwin:*:*)
++ echo `uname -p`-apple-darwin${UNAME_RELEASE}
++ exit 0 ;;
++ *:procnto*:*:* | *:QNX:[0123456789]*:*)
++ if test "${UNAME_MACHINE}" = "x86pc"; then
++ UNAME_MACHINE=pc
++ fi
++ echo `uname -p`-${UNAME_MACHINE}-nto-qnx
++ exit 0 ;;
++ *:QNX:*:4*)
++ echo i386-pc-qnx
++ exit 0 ;;
++ NSR-[KW]:NONSTOP_KERNEL:*:*)
++ echo nsr-tandem-nsk${UNAME_RELEASE}
++ exit 0 ;;
++ *:NonStop-UX:*:*)
++ echo mips-compaq-nonstopux
++ exit 0 ;;
++ BS2000:POSIX*:*:*)
++ echo bs2000-siemens-sysv
++ exit 0 ;;
++ DS/*:UNIX_System_V:*:*)
++ echo ${UNAME_MACHINE}-${UNAME_SYSTEM}-${UNAME_RELEASE}
++ exit 0 ;;
++ *:Plan9:*:*)
++ # "uname -m" is not consistent, so use $cputype instead. 386
++ # is converted to i386 for consistency with other x86
++ # operating systems.
++ if test "$cputype" = "386"; then
++ UNAME_MACHINE=i386
++ else
++ UNAME_MACHINE="$cputype"
++ fi
++ echo ${UNAME_MACHINE}-unknown-plan9
++ exit 0 ;;
++ i*86:OS/2:*:*)
++ # If we were able to find `uname', then EMX Unix compatibility
++ # is probably installed.
++ echo ${UNAME_MACHINE}-pc-os2-emx
++ exit 0 ;;
++ *:TOPS-10:*:*)
++ echo pdp10-unknown-tops10
++ exit 0 ;;
++ *:TENEX:*:*)
++ echo pdp10-unknown-tenex
++ exit 0 ;;
++ KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*)
++ echo pdp10-dec-tops20
++ exit 0 ;;
++ XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*)
++ echo pdp10-xkl-tops20
++ exit 0 ;;
++ *:TOPS-20:*:*)
++ echo pdp10-unknown-tops20
++ exit 0 ;;
++ *:ITS:*:*)
++ echo pdp10-unknown-its
++ exit 0 ;;
+ esac
+
+ #echo '(No uname command or uname output not recognized.)' 1>&2
+ #echo "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" 1>&2
+
+-cat >dummy.c <<EOF
++cat >$dummy.c <<EOF
+ #ifdef _SEQUENT_
+ # include <sys/types.h>
+ # include <sys/utsname.h>
+@@ -595,7 +1215,10 @@
+ #endif
+ int version;
+ version=`(hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null`;
+- printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version);
++ if (version < 4)
++ printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version);
++ else
++ printf ("%s-next-openstep%d\n", __ARCHITECTURE__, version);
+ exit (0);
+ #endif
+
+@@ -640,11 +1263,24 @@
+ #endif
+
+ #if defined (vax)
+-#if !defined (ultrix)
+- printf ("vax-dec-bsd\n"); exit (0);
+-#else
+- printf ("vax-dec-ultrix\n"); exit (0);
+-#endif
++# if !defined (ultrix)
++# include <sys/param.h>
++# if defined (BSD)
++# if BSD == 43
++ printf ("vax-dec-bsd4.3\n"); exit (0);
++# else
++# if BSD == 199006
++ printf ("vax-dec-bsd4.3reno\n"); exit (0);
++# else
++ printf ("vax-dec-bsd\n"); exit (0);
++# endif
++# endif
++# else
++ printf ("vax-dec-bsd\n"); exit (0);
++# endif
++# else
++ printf ("vax-dec-ultrix\n"); exit (0);
++# endif
+ #endif
+
+ #if defined (alliant) && defined (i860)
+@@ -655,8 +1291,8 @@
+ }
+ EOF
+
+-${CC-cc} dummy.c -o dummy 2>/dev/null && ./dummy && rm dummy.c dummy && exit 0
+-rm -f dummy.c dummy
++$CC_FOR_BUILD $dummy.c -o $dummy 2>/dev/null && ./$dummy && rm -f $dummy.c $dummy && exit 0
++rm -f $dummy.c $dummy
+
+ # Apollos put the system type in the environment.
+
+@@ -688,6 +1324,48 @@
+ esac
+ fi
+
+-#echo '(Unable to guess system type)' 1>&2
++cat >&2 <<EOF
++$0: unable to guess system type
++
++This script, last modified $timestamp, has failed to recognize
++the operating system you are using. It is advised that you
++download the most up to date version of the config scripts from
++
++ ftp://ftp.gnu.org/pub/gnu/config/
++
++If the version you run ($0) is already up to date, please
++send the following data and any information you think might be
++pertinent to <config-patches@gnu.org> in order to provide the needed
++information to handle your system.
++
++config.guess timestamp = $timestamp
++
++uname -m = `(uname -m) 2>/dev/null || echo unknown`
++uname -r = `(uname -r) 2>/dev/null || echo unknown`
++uname -s = `(uname -s) 2>/dev/null || echo unknown`
++uname -v = `(uname -v) 2>/dev/null || echo unknown`
++
++/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null`
++/bin/uname -X = `(/bin/uname -X) 2>/dev/null`
++
++hostinfo = `(hostinfo) 2>/dev/null`
++/bin/universe = `(/bin/universe) 2>/dev/null`
++/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null`
++/bin/arch = `(/bin/arch) 2>/dev/null`
++/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null`
++/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null`
++
++UNAME_MACHINE = ${UNAME_MACHINE}
++UNAME_RELEASE = ${UNAME_RELEASE}
++UNAME_SYSTEM = ${UNAME_SYSTEM}
++UNAME_VERSION = ${UNAME_VERSION}
++EOF
+
+ exit 1
++
++# Local variables:
++# eval: (add-hook 'write-file-hooks 'time-stamp)
++# time-stamp-start: "timestamp='"
++# time-stamp-format: "%:y-%02m-%02d"
++# time-stamp-end: "'"
++# End:
+diff -ur --new-file --exclude-from=/home/aknaff/floppy/exclude fdutils-5.4/config.h.in fdutils/config.h.in
+--- fdutils-5.4/config.h.in Fri Jul 2 23:37:12 1999
++++ fdutils/config.h.in Mon May 21 00:24:53 2001
+@@ -14,3 +14,6 @@
+
+ /* Define if you have the <linux/xia_fs.h> header file. */
+ #undef HAVE_LINUX_XIA_FS_H
++
++/* Define if you have the <sys/sysmacros.h> header file. */
++#undef HAVE_SYS_SYSMACROS_H
+diff -ur --new-file --exclude-from=/home/aknaff/floppy/exclude fdutils-5.4/config.sub fdutils/config.sub
+--- fdutils-5.4/config.sub Sun Mar 2 18:43:27 1997
++++ fdutils/config.sub Mon May 21 00:24:43 2001
+@@ -1,6 +1,10 @@
+ #! /bin/sh
+-# Configuration validation subroutine script, version 1.1.
+-# Copyright (C) 1991, 92, 93, 94, 95, 1996 Free Software Foundation, Inc.
++# Configuration validation subroutine script.
++# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001
++# Free Software Foundation, Inc.
++
++timestamp='2001-05-11'
++
+ # This file is (in principle) common to ALL GNU software.
+ # The presence of a machine in this file suggests that SOME GNU software
+ # can handle that machine. It does not imply ALL GNU software can.
+@@ -25,6 +29,8 @@
+ # configuration script generated by Autoconf, you may include it under
+ # the same distribution terms that you use for the rest of that program.
+
++# Please send patches to <config-patches@gnu.org>.
++#
+ # Configuration subroutine to validate and canonicalize a configuration type.
+ # Supply the specified configuration type as an argument.
+ # If it is invalid, we print an error message on stderr and exit with code 1.
+@@ -45,30 +51,73 @@
+ # CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM
+ # It is wrong to echo any other type of specification.
+
+-if [ x$1 = x ]
+-then
+- echo Configuration name missing. 1>&2
+- echo "Usage: $0 CPU-MFR-OPSYS" 1>&2
+- echo "or $0 ALIAS" 1>&2
+- echo where ALIAS is a recognized configuration type. 1>&2
+- exit 1
+-fi
++me=`echo "$0" | sed -e 's,.*/,,'`
+
+-# First pass through any local machine types.
+-case $1 in
+- *local*)
+- echo $1
+- exit 0
+- ;;
+- *)
+- ;;
++usage="\
++Usage: $0 [OPTION] CPU-MFR-OPSYS
++ $0 [OPTION] ALIAS
++
++Canonicalize a configuration name.
++
++Operation modes:
++ -h, --help print this help, then exit
++ -t, --time-stamp print date of last modification, then exit
++ -v, --version print version number, then exit
++
++Report bugs and patches to <config-patches@gnu.org>."
++
++version="\
++GNU config.sub ($timestamp)
++
++Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001
++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."
++
++help="
++Try \`$me --help' for more information."
++
++# Parse command line
++while test $# -gt 0 ; do
++ case $1 in
++ --time-stamp | --time* | -t )
++ echo "$timestamp" ; exit 0 ;;
++ --version | -v )
++ echo "$version" ; exit 0 ;;
++ --help | --h* | -h )
++ echo "$usage"; exit 0 ;;
++ -- ) # Stop option processing
++ shift; break ;;
++ - ) # Use stdin as input.
++ break ;;
++ -* )
++ echo "$me: invalid option $1$help"
++ exit 1 ;;
++
++ *local*)
++ # First pass through any local machine types.
++ echo $1
++ exit 0;;
++
++ * )
++ break ;;
++ esac
++done
++
++case $# in
++ 0) echo "$me: missing argument$help" >&2
++ exit 1;;
++ 1) ;;
++ *) echo "$me: too many arguments$help" >&2
++ exit 1;;
+ esac
+
+ # Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any).
+ # Here we must recognize all the valid KERNEL-OS combinations.
+ maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'`
+ case $maybe_os in
+- linux-gnu*)
++ nto-qnx* | linux-gnu* | storm-chaos* | os2-emx*)
+ os=-$maybe_os
+ basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`
+ ;;
+@@ -94,15 +143,25 @@
+ -convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\
+ -c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \
+ -harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \
+- -apple)
++ -apple | -axis)
+ os=
+ basic_machine=$1
+ ;;
++ -sim | -cisco | -oki | -wec | -winbond)
++ os=
++ basic_machine=$1
++ ;;
++ -scout)
++ ;;
++ -wrs)
++ os=-vxworks
++ basic_machine=$1
++ ;;
+ -hiux*)
+ os=-hiuxwe2
+ ;;
+ -sco5)
+- os=sco3.2v5
++ os=-sco3.2v5
+ basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+ ;;
+ -sco4)
+@@ -121,6 +180,9 @@
+ os=-sco3.2v2
+ basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+ ;;
++ -udk*)
++ basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
++ ;;
+ -isc)
+ os=-isc2.2
+ basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+@@ -143,25 +205,50 @@
+ -psos*)
+ os=-psos
+ ;;
++ -mint | -mint[0-9]*)
++ basic_machine=m68k-atari
++ os=-mint
++ ;;
+ esac
+
+ # Decode aliases for certain CPU-COMPANY combinations.
+ case $basic_machine in
+ # Recognize the basic CPU types without company name.
+ # Some are omitted here because they have special meanings below.
+- tahoe | i860 | m68k | m68000 | m88k | ns32k | arm \
+- | arme[lb] | pyramid \
+- | tron | a29k | 580 | i960 | h8300 | hppa | hppa1.0 | hppa1.1 \
+- | alpha | we32k | ns16k | clipper | i370 | sh \
+- | powerpc | powerpcle | 1750a | dsp16xx | mips64 | mipsel \
+- | pdp11 | mips64el | mips64orion | mips64orionel \
+- | sparc | sparclet | sparclite | sparc64)
++ tahoe | i860 | ia64 | m32r | m68k | m68000 | m88k | ns32k | arc \
++ | arm | arme[lb] | arm[bl]e | armv[2345] | armv[345][lb] | strongarm | xscale \
++ | pyramid | mn10200 | mn10300 | tron | a29k \
++ | 580 | i960 | h8300 \
++ | x86 | ppcbe | mipsbe | mipsle | shbe | shle \
++ | hppa | hppa1.0 | hppa1.1 | hppa2.0 | hppa2.0w | hppa2.0n \
++ | hppa64 \
++ | alpha | alphaev[4-8] | alphaev56 | alphapca5[67] \
++ | alphaev6[78] \
++ | we32k | ns16k | clipper | i370 | sh | sh[34] \
++ | powerpc | powerpcle \
++ | 1750a | dsp16xx | pdp10 | pdp11 \
++ | mips16 | mips64 | mipsel | mips64el \
++ | mips64orion | mips64orionel | mipstx39 | mipstx39el \
++ | mips64vr4300 | mips64vr4300el | mips64vr4100 | mips64vr4100el \
++ | mips64vr5000 | miprs64vr5000el | mcore | s390 | s390x \
++ | sparc | sparclet | sparclite | sparc64 | sparcv9 | sparcv9b \
++ | v850 | c4x \
++ | thumb | d10v | d30v | fr30 | avr | openrisc | tic80 \
++ | pj | pjl | h8500 | z8k)
+ basic_machine=$basic_machine-unknown
+ ;;
++ m6811 | m68hc11 | m6812 | m68hc12)
++ # Motorola 68HC11/12.
++ basic_machine=$basic_machine-unknown
++ os=-none
++ ;;
++ m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | z8k | v70 | w65 | z8k)
++ ;;
++
+ # We use `pc' rather than `unknown'
+ # because (1) that's what they normally are, and
+ # (2) the word "unknown" tends to confuse beginning users.
+- i[3456]86)
++ i*86 | x86_64)
+ basic_machine=$basic_machine-pc
+ ;;
+ # Object if more than one company name word.
+@@ -170,23 +257,52 @@
+ exit 1
+ ;;
+ # Recognize the basic CPU types with company name.
+- vax-* | tahoe-* | i[3456]86-* | i860-* | m68k-* | m68000-* | m88k-* \
+- | sparc-* | ns32k-* | fx80-* | arm-* | c[123]* \
+- | mips-* | pyramid-* | tron-* | a29k-* | romp-* | rs6000-* | power-* \
+- | none-* | 580-* | cray2-* | h8300-* | i960-* | xmp-* | ymp-* \
+- | hppa-* | hppa1.0-* | hppa1.1-* | alpha-* | we32k-* | cydra-* | ns16k-* \
+- | pn-* | np1-* | xps100-* | clipper-* | orion-* | sparclite-* \
+- | pdp11-* | sh-* | powerpc-* | powerpcle-* | sparc64-* | mips64-* | mipsel-* \
+- | mips64el-* | mips64orion-* | mips64orionel-* | f301-*)
++ # FIXME: clean up the formatting here.
++ vax-* | tahoe-* | i*86-* | i860-* | ia64-* | m32r-* | m68k-* | m68000-* \
++ | m88k-* | sparc-* | ns32k-* | fx80-* | arc-* | c[123]* \
++ | arm-* | armbe-* | armle-* | armv*-* | strongarm-* | xscale-* \
++ | mips-* | pyramid-* | tron-* | a29k-* | romp-* | rs6000-* \
++ | power-* | none-* | 580-* | cray2-* | h8300-* | h8500-* | i960-* \
++ | xmp-* | ymp-* \
++ | x86-* | ppcbe-* | mipsbe-* | mipsle-* | shbe-* | shle-* \
++ | hppa-* | hppa1.0-* | hppa1.1-* | hppa2.0-* | hppa2.0w-* \
++ | hppa2.0n-* | hppa64-* \
++ | alpha-* | alphaev[4-8]-* | alphaev56-* | alphapca5[67]-* \
++ | alphaev6[78]-* \
++ | we32k-* | cydra-* | ns16k-* | pn-* | np1-* | xps100-* \
++ | clipper-* | orion-* \
++ | sparclite-* | pdp10-* | pdp11-* | sh-* | sh[34]-* | sh[34]eb-* \
++ | powerpc-* | powerpcle-* | sparc64-* | sparcv9-* | sparcv9b-* | sparc86x-* \
++ | mips16-* | mips64-* | mipsel-* \
++ | mips64el-* | mips64orion-* | mips64orionel-* \
++ | mips64vr4100-* | mips64vr4100el-* | mips64vr4300-* | mips64vr4300el-* \
++ | mipstx39-* | mipstx39el-* | mcore-* \
++ | f30[01]-* | f700-* | s390-* | s390x-* | sv1-* | t3e-* \
++ | [cjt]90-* \
++ | m88110-* | m680[01234]0-* | m683?2-* | m68360-* | z8k-* | d10v-* \
++ | thumb-* | v850-* | d30v-* | tic30-* | tic80-* | c30-* | fr30-* \
++ | bs2000-* | tic54x-* | c54x-* | x86_64-* | pj-* | pjl-*)
+ ;;
+ # Recognize the various machine names and aliases which stand
+ # for a CPU type and a company and sometimes even an OS.
++ 386bsd)
++ basic_machine=i386-unknown
++ os=-bsd
++ ;;
+ 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc)
+ basic_machine=m68000-att
+ ;;
+ 3b*)
+ basic_machine=we32k-att
+ ;;
++ a29khif)
++ basic_machine=a29k-amd
++ os=-udi
++ ;;
++ adobe68k)
++ basic_machine=m68010-adobe
++ os=-scout
++ ;;
+ alliant | fx80)
+ basic_machine=fx80-alliant
+ ;;
+@@ -202,20 +318,24 @@
+ os=-sysv
+ ;;
+ amiga | amiga-*)
+- basic_machine=m68k-cbm
++ basic_machine=m68k-unknown
+ ;;
+- amigados)
+- basic_machine=m68k-cbm
+- os=-amigados
++ amigaos | amigados)
++ basic_machine=m68k-unknown
++ os=-amigaos
+ ;;
+ amigaunix | amix)
+- basic_machine=m68k-cbm
++ basic_machine=m68k-unknown
+ os=-sysv4
+ ;;
+ apollo68)
+ basic_machine=m68k-apollo
+ os=-sysv
+ ;;
++ apollo68bsd)
++ basic_machine=m68k-apollo
++ os=-bsd
++ ;;
+ aux)
+ basic_machine=m68k-apple
+ os=-aux
+@@ -252,13 +372,16 @@
+ basic_machine=cray2-cray
+ os=-unicos
+ ;;
+- [ctj]90-cray)
+- basic_machine=c90-cray
++ [cjt]90)
++ basic_machine=${basic_machine}-cray
+ os=-unicos
+ ;;
+ crds | unos)
+ basic_machine=m68k-crds
+ ;;
++ cris | cris-* | etrax*)
++ basic_machine=cris-axis
++ ;;
+ da30 | da30-*)
+ basic_machine=m68k-da30
+ ;;
+@@ -292,6 +415,10 @@
+ encore | umax | mmax)
+ basic_machine=ns32k-encore
+ ;;
++ es1800 | OSE68k | ose68k | ose | OSE)
++ basic_machine=m68k-ericsson
++ os=-ose
++ ;;
+ fx2800)
+ basic_machine=i860-alliant
+ ;;
+@@ -302,6 +429,10 @@
+ basic_machine=tron-gmicro
+ os=-sysv
+ ;;
++ go32)
++ basic_machine=i386-pc
++ os=-go32
++ ;;
+ h3050r* | hiux*)
+ basic_machine=hppa1.1-hitachi
+ os=-hiuxwe2
+@@ -310,6 +441,14 @@
+ basic_machine=h8300-hitachi
+ os=-hms
+ ;;
++ h8300xray)
++ basic_machine=h8300-hitachi
++ os=-xray
++ ;;
++ h8500hms)
++ basic_machine=h8500-hitachi
++ os=-hms
++ ;;
+ harris)
+ basic_machine=m88k-harris
+ os=-sysv3
+@@ -325,13 +464,30 @@
+ basic_machine=m68k-hp
+ os=-hpux
+ ;;
++ hp3k9[0-9][0-9] | hp9[0-9][0-9])
++ basic_machine=hppa1.0-hp
++ ;;
+ hp9k2[0-9][0-9] | hp9k31[0-9])
+ basic_machine=m68000-hp
+ ;;
+ hp9k3[2-9][0-9])
+ basic_machine=m68k-hp
+ ;;
+- hp9k7[0-9][0-9] | hp7[0-9][0-9] | hp9k8[0-9]7 | hp8[0-9]7)
++ hp9k6[0-9][0-9] | hp6[0-9][0-9])
++ basic_machine=hppa1.0-hp
++ ;;
++ hp9k7[0-79][0-9] | hp7[0-79][0-9])
++ basic_machine=hppa1.1-hp
++ ;;
++ hp9k78[0-9] | hp78[0-9])
++ # FIXME: really hppa2.0-hp
++ basic_machine=hppa1.1-hp
++ ;;
++ hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893)
++ # FIXME: really hppa2.0-hp
++ basic_machine=hppa1.1-hp
++ ;;
++ hp9k8[0-9][13679] | hp8[0-9][13679])
+ basic_machine=hppa1.1-hp
+ ;;
+ hp9k8[0-9][0-9] | hp8[0-9][0-9])
+@@ -340,27 +496,42 @@
+ hppa-next)
+ os=-nextstep3
+ ;;
++ hppaosf)
++ basic_machine=hppa1.1-hp
++ os=-osf
++ ;;
++ hppro)
++ basic_machine=hppa1.1-hp
++ os=-proelf
++ ;;
+ i370-ibm* | ibm*)
+ basic_machine=i370-ibm
+- os=-mvs
+ ;;
+ # I'm not sure what "Sysv32" means. Should this be sysv3.2?
+- i[3456]86v32)
++ i*86v32)
+ basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
+ os=-sysv32
+ ;;
+- i[3456]86v4*)
++ i*86v4*)
+ basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
+ os=-sysv4
+ ;;
+- i[3456]86v)
++ i*86v)
+ basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
+ os=-sysv
+ ;;
+- i[3456]86sol2)
++ i*86sol2)
+ basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
+ os=-solaris2
+ ;;
++ i386mach)
++ basic_machine=i386-mach
++ os=-mach
++ ;;
++ i386-vsta | vsta)
++ basic_machine=i386-unknown
++ os=-vsta
++ ;;
+ iris | iris4d)
+ basic_machine=mips-sgi
+ case $os in
+@@ -386,19 +557,59 @@
+ basic_machine=ns32k-utek
+ os=-sysv
+ ;;
++ mingw32)
++ basic_machine=i386-pc
++ os=-mingw32
++ ;;
+ miniframe)
+ basic_machine=m68000-convergent
+ ;;
++ *mint | -mint[0-9]* | *MiNT | *MiNT[0-9]*)
++ basic_machine=m68k-atari
++ os=-mint
++ ;;
++ mipsel*-linux*)
++ basic_machine=mipsel-unknown
++ os=-linux-gnu
++ ;;
++ mips*-linux*)
++ basic_machine=mips-unknown
++ os=-linux-gnu
++ ;;
+ mips3*-*)
+ basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`
+ ;;
+ mips3*)
+ basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown
+ ;;
++ mmix*)
++ basic_machine=mmix-knuth
++ os=-mmixware
++ ;;
++ monitor)
++ basic_machine=m68k-rom68k
++ os=-coff
++ ;;
++ msdos)
++ basic_machine=i386-pc
++ os=-msdos
++ ;;
++ mvs)
++ basic_machine=i370-ibm
++ os=-mvs
++ ;;
+ ncr3000)
+ basic_machine=i486-ncr
+ os=-sysv4
+ ;;
++ netbsd386)
++ basic_machine=i386-unknown
++ os=-netbsd
++ ;;
++ netwinder)
++ basic_machine=armv4l-rebel
++ os=-linux
++ ;;
+ news | news700 | news800 | news900)
+ basic_machine=m68k-sony
+ os=-newsos
+@@ -411,6 +622,10 @@
+ basic_machine=mips-sony
+ os=-newsos
+ ;;
++ necv70)
++ basic_machine=v70-nec
++ os=-sysv
++ ;;
+ next | m*-next )
+ basic_machine=m68k-next
+ case $os in
+@@ -436,9 +651,32 @@
+ basic_machine=i960-intel
+ os=-nindy
+ ;;
++ mon960)
++ basic_machine=i960-intel
++ os=-mon960
++ ;;
++ nonstopux)
++ basic_machine=mips-compaq
++ os=-nonstopux
++ ;;
+ np1)
+ basic_machine=np1-gould
+ ;;
++ nsr-tandem)
++ basic_machine=nsr-tandem
++ ;;
++ op50n-* | op60c-*)
++ basic_machine=hppa1.1-oki
++ os=-proelf
++ ;;
++ OSE68000 | ose68000)
++ basic_machine=m68000-ericsson
++ os=-ose
++ ;;
++ os68k)
++ basic_machine=m68k-none
++ os=-os68k
++ ;;
+ pa-hitachi)
+ basic_machine=hppa1.1-hitachi
+ os=-hiuxwe2
+@@ -456,30 +694,28 @@
+ pc532 | pc532-*)
+ basic_machine=ns32k-pc532
+ ;;
+- pentium | p5)
+- basic_machine=i586-intel
++ pentium | p5 | k5 | k6 | nexgen)
++ basic_machine=i586-pc
++ ;;
++ pentiumpro | p6 | 6x86 | athlon)
++ basic_machine=i686-pc
+ ;;
+- pentiumpro | p6)
+- basic_machine=i686-intel
++ pentiumii | pentium2)
++ basic_machine=i686-pc
+ ;;
+- pentium-* | p5-*)
++ pentium-* | p5-* | k5-* | k6-* | nexgen-*)
+ basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'`
+ ;;
+- pentiumpro-* | p6-*)
++ pentiumpro-* | p6-* | 6x86-* | athlon-*)
+ basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'`
+ ;;
+- k5)
+- # We don't have specific support for AMD's K5 yet, so just call it a Pentium
+- basic_machine=i586-amd
+- ;;
+- nexen)
+- # We don't have specific support for Nexgen yet, so just call it a Pentium
+- basic_machine=i586-nexgen
++ pentiumii-* | pentium2-*)
++ basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'`
+ ;;
+ pn)
+ basic_machine=pn-gould
+ ;;
+- power) basic_machine=rs6000-ibm
++ power) basic_machine=power-ibm
+ ;;
+ ppc) basic_machine=powerpc-unknown
+ ;;
+@@ -494,12 +730,24 @@
+ ps2)
+ basic_machine=i386-ibm
+ ;;
++ pw32)
++ basic_machine=i586-unknown
++ os=-pw32
++ ;;
++ rom68k)
++ basic_machine=m68k-rom68k
++ os=-coff
++ ;;
+ rm[46]00)
+ basic_machine=mips-siemens
+ ;;
+ rtpc | rtpc-*)
+ basic_machine=romp-ibm
+ ;;
++ sa29200)
++ basic_machine=a29k-amd
++ os=-udi
++ ;;
+ sequent)
+ basic_machine=i386-sequent
+ ;;
+@@ -507,6 +755,10 @@
+ basic_machine=sh-hitachi
+ os=-hms
+ ;;
++ sparclite-wrs)
++ basic_machine=sparclite-wrs
++ os=-vxworks
++ ;;
+ sps7)
+ basic_machine=m68k-bull
+ os=-sysv2
+@@ -514,6 +766,13 @@
+ spur)
+ basic_machine=spur-unknown
+ ;;
++ st2000)
++ basic_machine=m68k-tandem
++ ;;
++ stratus)
++ basic_machine=i860-stratus
++ os=-sysv4
++ ;;
+ sun2)
+ basic_machine=m68000-sun
+ ;;
+@@ -554,10 +813,28 @@
+ sun386 | sun386i | roadrunner)
+ basic_machine=i386-sun
+ ;;
++ sv1)
++ basic_machine=sv1-cray
++ os=-unicos
++ ;;
+ symmetry)
+ basic_machine=i386-sequent
+ os=-dynix
+ ;;
++ t3e)
++ basic_machine=t3e-cray
++ os=-unicos
++ ;;
++ tic54x | c54x*)
++ basic_machine=tic54x-unknown
++ os=-coff
++ ;;
++ tx39)
++ basic_machine=mipstx39-unknown
++ ;;
++ tx39el)
++ basic_machine=mipstx39el-unknown
++ ;;
+ tower | tower-32)
+ basic_machine=m68k-ncr
+ ;;
+@@ -569,6 +846,10 @@
+ basic_machine=a29k-nyu
+ os=-sym1
+ ;;
++ v810 | necv810)
++ basic_machine=v810-nec
++ os=-none
++ ;;
+ vaxv)
+ basic_machine=vax-dec
+ os=-sysv
+@@ -577,7 +858,7 @@
+ basic_machine=vax-dec
+ os=-vms
+ ;;
+- vpp*|vx|vx-*)
++ vpp*|vx|vx-*)
+ basic_machine=f301-fujitsu
+ ;;
+ vxworks960)
+@@ -592,6 +873,14 @@
+ basic_machine=a29k-wrs
+ os=-vxworks
+ ;;
++ w65*)
++ basic_machine=w65-wdc
++ os=-none
++ ;;
++ w89k-*)
++ basic_machine=hppa1.1-winbond
++ os=-proelf
++ ;;
+ xmp)
+ basic_machine=xmp-cray
+ os=-unicos
+@@ -599,6 +888,10 @@
+ xps | xps100)
+ basic_machine=xps100-honeywell
+ ;;
++ z8k-*-coff)
++ basic_machine=z8k-unknown
++ os=-sim
++ ;;
+ none)
+ basic_machine=none-none
+ os=-none
+@@ -606,8 +899,21 @@
+
+ # Here we handle the default manufacturer of certain CPU types. It is in
+ # some cases the only manufacturer, in others, it is the most popular.
++ w89k)
++ basic_machine=hppa1.1-winbond
++ ;;
++ op50n)
++ basic_machine=hppa1.1-oki
++ ;;
++ op60c)
++ basic_machine=hppa1.1-oki
++ ;;
+ mips)
+- basic_machine=mips-mips
++ if [ x$os = x-linux-gnu ]; then
++ basic_machine=mips-unknown
++ else
++ basic_machine=mips-mips
++ fi
+ ;;
+ romp)
+ basic_machine=romp-ibm
+@@ -618,13 +924,20 @@
+ vax)
+ basic_machine=vax-dec
+ ;;
++ pdp10)
++ # there are many clones, so DEC is not a safe bet
++ basic_machine=pdp10-unknown
++ ;;
+ pdp11)
+ basic_machine=pdp11-dec
+ ;;
+ we32k)
+ basic_machine=we32k-att
+ ;;
+- sparc)
++ sh3 | sh4)
++ basic_machine=sh-unknown
++ ;;
++ sparc | sparcv9 | sparcv9b)
+ basic_machine=sparc-sun
+ ;;
+ cydra)
+@@ -636,6 +949,19 @@
+ orion105)
+ basic_machine=clipper-highlevel
+ ;;
++ mac | mpw | mac-mpw)
++ basic_machine=m68k-apple
++ ;;
++ pmac | pmac-mpw)
++ basic_machine=powerpc-apple
++ ;;
++ c4x*)
++ basic_machine=c4x-none
++ os=-coff
++ ;;
++ *-unknown)
++ # Make sure to match an already-canonicalized machine name.
++ ;;
+ *)
+ echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2
+ exit 1
+@@ -668,9 +994,12 @@
+ -solaris)
+ os=-solaris2
+ ;;
+- -unixware* | svr4*)
++ -svr4*)
+ os=-sysv4
+ ;;
++ -unixware*)
++ os=-sysv4.2uw
++ ;;
+ -gnu/linux*)
+ os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'`
+ ;;
+@@ -681,19 +1010,42 @@
+ -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \
+ | -*vms* | -sco* | -esix* | -isc* | -aix* | -sunos | -sunos[34]*\
+ | -hpux* | -unos* | -osf* | -luna* | -dgux* | -solaris* | -sym* \
+- | -amigados* | -msdos* | -newsos* | -unicos* | -aof* | -aos* \
++ | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \
++ | -aos* \
+ | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \
+ | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \
+ | -hiux* | -386bsd* | -netbsd* | -openbsd* | -freebsd* | -riscix* \
+- | -lynxos* | -bosx* | -nextstep* | -cxux* | -aout* | -elf* \
++ | -lynxos* | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \
+ | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \
+ | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \
+- | -cygwin32* | -pe* | -psos* | -moss* | -proelf* | -rtems* \
+- | -linux-gnu* | -uxpv*)
++ | -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \
++ | -mingw32* | -linux-gnu* | -uxpv* | -beos* | -mpeix* | -udk* \
++ | -interix* | -uwin* | -rhapsody* | -darwin* | -opened* \
++ | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \
++ | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* | -os2*)
+ # Remember, each alternative MUST END IN *, to match a version number.
+ ;;
++ -qnx*)
++ case $basic_machine in
++ x86-* | i*86-*)
++ ;;
++ *)
++ os=-nto$os
++ ;;
++ esac
++ ;;
++ -nto*)
++ os=-nto-qnx
++ ;;
++ -sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \
++ | -windows* | -osx | -abug | -netware* | -os9* | -beos* \
++ | -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*)
++ ;;
++ -mac*)
++ os=`echo $os | sed -e 's|mac|macos|'`
++ ;;
+ -linux*)
+- os=`echo $os | sed -e 's|linux|linux|'`
++ os=`echo $os | sed -e 's|linux|linux-gnu|'`
+ ;;
+ -sunos5*)
+ os=`echo $os | sed -e 's|sunos5|solaris2|'`
+@@ -701,6 +1053,12 @@
+ -sunos6*)
+ os=`echo $os | sed -e 's|sunos6|solaris3|'`
+ ;;
++ -opened*)
++ os=-openedition
++ ;;
++ -wince*)
++ os=-wince
++ ;;
+ -osfrose*)
+ os=-osfrose
+ ;;
+@@ -716,12 +1074,18 @@
+ -acis*)
+ os=-aos
+ ;;
++ -386bsd)
++ os=-bsd
++ ;;
+ -ctix* | -uts*)
+ os=-sysv
+ ;;
+ -ns2 )
+ os=-nextstep2
+ ;;
++ -nsk*)
++ os=-nsk
++ ;;
+ # Preserve the version number of sinix5.
+ -sinix5.*)
+ os=`echo $os | sed -e 's|sinix|sysv|'`
+@@ -747,9 +1111,18 @@
+ # This must come after -sysvr4.
+ -sysv*)
+ ;;
++ -ose*)
++ os=-ose
++ ;;
++ -es1800*)
++ os=-ose
++ ;;
+ -xenix)
+ os=-xenix
+ ;;
++ -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*)
++ os=-mint
++ ;;
+ -none)
+ ;;
+ *)
+@@ -775,9 +1148,15 @@
+ *-acorn)
+ os=-riscix1.2
+ ;;
++ arm*-rebel)
++ os=-linux
++ ;;
+ arm*-semi)
+ os=-aout
+ ;;
++ pdp10-*)
++ os=-tops20
++ ;;
+ pdp11-*)
+ os=-none
+ ;;
+@@ -796,15 +1175,36 @@
+ # default.
+ # os=-sunos4
+ ;;
++ m68*-cisco)
++ os=-aout
++ ;;
++ mips*-cisco)
++ os=-elf
++ ;;
++ mips*-*)
++ os=-elf
++ ;;
+ *-tti) # must be before sparc entry or we get the wrong os.
+ os=-sysv3
+ ;;
+ sparc-* | *-sun)
+ os=-sunos4.1.1
+ ;;
++ *-be)
++ os=-beos
++ ;;
+ *-ibm)
+ os=-aix
+ ;;
++ *-wec)
++ os=-proelf
++ ;;
++ *-winbond)
++ os=-proelf
++ ;;
++ *-oki)
++ os=-proelf
++ ;;
+ *-hp)
+ os=-hpux
+ ;;
+@@ -815,7 +1215,7 @@
+ os=-sysv
+ ;;
+ *-cbm)
+- os=-amigados
++ os=-amigaos
+ ;;
+ *-dg)
+ os=-dgux
+@@ -865,9 +1265,21 @@
+ *-masscomp)
+ os=-rtu
+ ;;
+- f301-fujitsu)
++ f30[01]-fujitsu | f700-fujitsu)
+ os=-uxpv
+ ;;
++ *-rom68k)
++ os=-coff
++ ;;
++ *-*bug)
++ os=-coff
++ ;;
++ *-apple)
++ os=-macos
++ ;;
++ *-atari*)
++ os=-mint
++ ;;
+ *)
+ os=-none
+ ;;
+@@ -889,9 +1301,15 @@
+ -aix*)
+ vendor=ibm
+ ;;
++ -beos*)
++ vendor=be
++ ;;
+ -hpux*)
+ vendor=hp
+ ;;
++ -mpeix*)
++ vendor=hp
++ ;;
+ -hiux*)
+ vendor=hitachi
+ ;;
+@@ -907,7 +1325,7 @@
+ -genix*)
+ vendor=ns
+ ;;
+- -mvs*)
++ -mvs* | -opened*)
+ vendor=ibm
+ ;;
+ -ptx*)
+@@ -919,9 +1337,26 @@
+ -aux*)
+ vendor=apple
+ ;;
++ -hms*)
++ vendor=hitachi
++ ;;
++ -mpw* | -macos*)
++ vendor=apple
++ ;;
++ -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*)
++ vendor=atari
++ ;;
+ esac
+ basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"`
+ ;;
+ esac
+
+ echo $basic_machine$os
++exit 0
++
++# Local variables:
++# eval: (add-hook 'write-file-hooks 'time-stamp)
++# time-stamp-start: "timestamp='"
++# time-stamp-format: "%:y-%02m-%02d"
++# time-stamp-end: "'"
++# End:
+diff -ur --new-file --exclude-from=/home/aknaff/floppy/exclude fdutils-5.4/configure fdutils/configure
+--- fdutils-5.4/configure Fri Jul 2 23:37:09 1999
++++ fdutils/configure Mon May 21 00:24:49 2001
+@@ -1250,7 +1250,7 @@
+ esac
+
+
+-for ac_hdr in linux/ext_fs.h linux/xia_fs.h
++for ac_hdr in linux/ext_fs.h linux/xia_fs.h sys/sysmacros.h
+ do
+ ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
+ echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
+diff -ur --new-file --exclude-from=/home/aknaff/floppy/exclude fdutils-5.4/configure.in fdutils/configure.in
+--- fdutils-5.4/configure.in Thu Jul 1 19:22:51 1999
++++ fdutils/configure.in Mon May 21 00:24:21 2001
+@@ -18,7 +18,7 @@
+ AC_C_CONST
+ AC_C_INLINE
+
+-AC_CHECK_HEADERS(linux/ext_fs.h linux/xia_fs.h)
++AC_CHECK_HEADERS(linux/ext_fs.h linux/xia_fs.h sys/sysmacros.h)
+
+ dnl Make fdmount accessible by the floppy group only
+ undefine([fdmount-floppy-only])dnl
+diff -ur --new-file --exclude-from=/home/aknaff/floppy/exclude fdutils-5.4/doc/README fdutils/doc/README
+--- fdutils-5.4/doc/README Thu Jul 1 19:43:45 1999
++++ fdutils/doc/README Mon Jun 11 22:26:36 2001
+@@ -171,7 +171,7 @@
+ disks and also Commodore 1581 disks. Please get Michael Haardt's
+ documentation on floppy drives for a detailed description of those
+ formats. This can be ftp'ed from
+-ftp://cantor.informatik.rwth-aachen.de/pub/linux/floppy.ps
++http://www.moria.de/~michael/floppy/floppy.ps
+
+ Commodore 1581 disks are not yet described in this documentation.
+ Use 'setfdprm /dev/fd0 1600 10 2 80 2 0x2A 0x02 0xDF 0x2E' to use
+diff -ur --new-file --exclude-from=/home/aknaff/floppy/exclude fdutils-5.4/doc/acronyms.texi fdutils/doc/acronyms.texi
+--- fdutils-5.4/doc/acronyms.texi Sat May 27 18:37:00 2000
++++ fdutils/doc/acronyms.texi Mon Jun 11 22:23:31 2001
+@@ -100,7 +100,7 @@
+ disks, i.e. virtually all disks that are available today. The PC
+ hardware can only read MFM and FM disks. The doc at:
+ @example
+-ftp://cantor.informatik.rwth-aachen.de/pub/linux/floppy.ps
++http://www.moria.de/~michael/floppy/floppy.ps
+ @end example
+ contains more detailed information about FM and MFM encoding.
+
+@@ -108,7 +108,7 @@
+ FM is a low level encoding of disk data. It was used for SD disks, and
+ is now considered to be obsolete. The doc at:
+ @example
+-ftp://cantor.informatik.rwth-aachen.de/pub/linux/floppy.ps
++http://www.moria.de/~michael/floppy/floppy.ps
+ @end example
+ contains more detailed information about FM and MFM encoding.
+
+diff -ur --new-file --exclude-from=/home/aknaff/floppy/exclude fdutils-5.4/doc/diskd.1 fdutils/doc/diskd.1
+--- fdutils-5.4/doc/diskd.1 Fri Jun 2 22:28:27 2000
++++ fdutils/doc/diskd.1 Mon Jun 11 22:22:46 2001
+@@ -1,4 +1,4 @@
+-.TH diskd 1 "02jun00" fdutils-5.4
++.TH diskd 1 "11Jun01" fdutils-5.4
+ .SH Name
+ diskd - disk daemon; wait for disk to be inserted
+ '\" t
+diff -ur --new-file --exclude-from=/home/aknaff/floppy/exclude fdutils-5.4/doc/diskseekd.1 fdutils/doc/diskseekd.1
+--- fdutils-5.4/doc/diskseekd.1 Fri Jun 2 22:28:27 2000
++++ fdutils/doc/diskseekd.1 Mon Jun 11 22:22:46 2001
+@@ -1,4 +1,4 @@
+-.TH diskseekd 1 "02jun00" fdutils-5.4
++.TH diskseekd 1 "11Jun01" fdutils-5.4
+ .SH Name
+ diskseek, diskseekd - disk seek daemon; simulates Messy Dos' drive cleaning effect
+ '\" t
+diff -ur --new-file --exclude-from=/home/aknaff/floppy/exclude fdutils-5.4/doc/fd.4 fdutils/doc/fd.4
+--- fdutils-5.4/doc/fd.4 Fri Jul 2 23:44:15 1999
++++ fdutils/doc/fd.4 Mon Jun 11 22:23:59 2001
+@@ -1,7 +1,7 @@
+ '\" t
+ .\"{{{}}}
+ .\"{{{ Notes
+-.\" Copyright (c) 1993 Michael Haardt (michael@cantor.informatik.rwth-aachen.de)
++.\" Copyright (c) 1993 Michael Haardt (michael@moria.de)
+ .\" and 1994,1995, 1997 Alain Knaff (alain@linux.lu)
+ .\"
+ .\" This is free documentation; you can redistribute it and/or
+diff -ur --new-file --exclude-from=/home/aknaff/floppy/exclude fdutils-5.4/doc/fdmount.1 fdutils/doc/fdmount.1
+--- fdutils-5.4/doc/fdmount.1 Fri Jun 2 22:28:27 2000
++++ fdutils/doc/fdmount.1 Mon Jun 11 22:22:46 2001
+@@ -1,4 +1,4 @@
+-.TH fdmount 1 "02jun00" fdutils-5.4
++.TH fdmount 1 "11Jun01" fdutils-5.4
+ .SH Name
+ fdmount - Floppy disk mount utility
+ '\" t
+diff -ur --new-file --exclude-from=/home/aknaff/floppy/exclude fdutils-5.4/doc/fdrawcmd.1 fdutils/doc/fdrawcmd.1
+--- fdutils-5.4/doc/fdrawcmd.1 Fri Jun 2 22:28:27 2000
++++ fdutils/doc/fdrawcmd.1 Mon Jun 11 22:22:46 2001
+@@ -1,4 +1,4 @@
+-.TH fdrawcmd 1 "02jun00" fdutils-5.4
++.TH fdrawcmd 1 "11Jun01" fdutils-5.4
+ .SH Name
+ fdrawcmd - send raw commands to the floppy disk controller
+ '\" t
+diff -ur --new-file --exclude-from=/home/aknaff/floppy/exclude fdutils-5.4/doc/floppycontrol.1 fdutils/doc/floppycontrol.1
+--- fdutils-5.4/doc/floppycontrol.1 Fri Jun 2 22:28:27 2000
++++ fdutils/doc/floppycontrol.1 Mon Jun 11 22:22:46 2001
+@@ -1,4 +1,4 @@
+-.TH floppycontrol 1 "02jun00" fdutils-5.4
++.TH floppycontrol 1 "11Jun01" fdutils-5.4
+ .SH Name
+ floppycontrol - floppy driver configuration utility
+ '\" t
+diff -ur --new-file --exclude-from=/home/aknaff/floppy/exclude fdutils-5.4/doc/floppymeter.1 fdutils/doc/floppymeter.1
+--- fdutils-5.4/doc/floppymeter.1 Fri Jun 2 22:28:27 2000
++++ fdutils/doc/floppymeter.1 Mon Jun 11 22:22:46 2001
+@@ -1,4 +1,4 @@
+-.TH floppymeter 1 "02jun00" fdutils-5.4
++.TH floppymeter 1 "11Jun01" fdutils-5.4
+ .SH Name
+ floppymeter - measure raw capacity and exact rotation speed of floppy drive
+ '\" t
+diff -ur --new-file --exclude-from=/home/aknaff/floppy/exclude fdutils-5.4/doc/format2.texi fdutils/doc/format2.texi
+--- fdutils-5.4/doc/format2.texi Fri Sep 19 21:01:19 1997
++++ fdutils/doc/format2.texi Mon Jun 11 21:59:18 2001
+@@ -157,7 +157,7 @@
+ on floppy drives for a detailed description of those formats. This can
+ be ftp'ed from the following location:
+ @example
+-ftp://cantor.informatik.rwth-aachen.de/pub/linux/floppy.ps
++http://www.moria.de/~michael/floppy/
+ @end example
+
+ Commodore 1581 disks are not yet described in this documentation. Use
+diff -ur --new-file --exclude-from=/home/aknaff/floppy/exclude fdutils-5.4/doc/getfdprm.1 fdutils/doc/getfdprm.1
+--- fdutils-5.4/doc/getfdprm.1 Fri Jun 2 22:28:27 2000
++++ fdutils/doc/getfdprm.1 Mon Jun 11 22:22:46 2001
+@@ -1,4 +1,4 @@
+-.TH getfdprm 1 "02jun00" fdutils-5.4
++.TH getfdprm 1 "11Jun01" fdutils-5.4
+ .SH Name
+ getfdprm - print the current format information
+ '\" t
+diff -ur --new-file --exclude-from=/home/aknaff/floppy/exclude fdutils-5.4/doc/makefloppies.1 fdutils/doc/makefloppies.1
+--- fdutils-5.4/doc/makefloppies.1 Fri Jun 2 22:28:27 2000
++++ fdutils/doc/makefloppies.1 Mon Jun 11 22:22:46 2001
+@@ -1,4 +1,4 @@
+-.TH makefloppies 1 "02jun00" fdutils-5.4
++.TH makefloppies 1 "11Jun01" fdutils-5.4
+ .SH Name
+ MAKEFLOPPIES - Creates the default floppy device nodes.
+ '\" t
+diff -ur --new-file --exclude-from=/home/aknaff/floppy/exclude fdutils-5.4/doc/setfdprm.1 fdutils/doc/setfdprm.1
+--- fdutils-5.4/doc/setfdprm.1 Fri Jun 2 22:28:27 2000
++++ fdutils/doc/setfdprm.1 Mon Jun 11 22:22:46 2001
+@@ -1,4 +1,4 @@
+-.TH setfdprm 1 "02jun00" fdutils-5.4
++.TH setfdprm 1 "11Jun01" fdutils-5.4
+ .SH Name
+ setfdprm - sets user-provided floppy disk parameters
+ '\" t
+diff -ur --new-file --exclude-from=/home/aknaff/floppy/exclude fdutils-5.4/doc/superformat.1 fdutils/doc/superformat.1
+--- fdutils-5.4/doc/superformat.1 Fri Jun 2 22:28:27 2000
++++ fdutils/doc/superformat.1 Mon Jun 11 22:22:46 2001
+@@ -1,4 +1,4 @@
+-.TH superformat 1 "02jun00" fdutils-5.4
++.TH superformat 1 "11Jun01" fdutils-5.4
+ .SH Name
+ superformat - format floppies
+ '\" t
+@@ -258,14 +258,19 @@
+ spins, and on how much time is needed to change the head or the track.
+ .TP
+ \&\fR\&\f(CW--absolute_skew\ \fIabsolute-skew\fR\&\f(CW\fR\
+-Set the absolute skew. (The skew value used for the first formatted
+-track)
++.IP
++Set the absolute skew. This skew value is used for the first formatted
++track. It is expressed in raw bytes.
+ .TP
+ \&\fR\&\f(CW--head_skew\ \fIhead-skew\fR\&\f(CW\fR\
+-Set the head skew. (The skew added for passing from head 0 to head 1)
++.IP
++Set the head skew. This is the skew added for passing from head 0 to
++head 1. It is expressed in raw bytes.
+ .TP
+ \&\fR\&\f(CW--track_skew\ \fItrack-skew\fR\&\f(CW\fR\
+-Set the track skew. (The skew added for seeking to the next track)
++.IP
++Set the track skew. This is the skew added for seeking to the next
++track. It is expressed in raw bytes.
+ .PP
+ Example: (absolute skew=3, head skew=1, track skew=2)
+ .PP
+@@ -287,6 +292,10 @@
+ .lp
+
+ \&\fR
++.PP
++N.B. For simplicitie's sake, this example expresses skews in units of
++sectors. In reality, superformat expects the skews to be expressed in
++raw bytes.
+ .PP
+ .SH Examples
+ In all the examples of this section, we assume that drive 0 is a 3 1/2
+diff -ur --new-file --exclude-from=/home/aknaff/floppy/exclude fdutils-5.4/doc/superformat.texi fdutils/doc/superformat.texi
+--- fdutils-5.4/doc/superformat.texi Sat May 27 18:36:51 2000
++++ fdutils/doc/superformat.texi Mon May 21 00:24:21 2001
+@@ -187,14 +187,20 @@
+
+ @table @code
+ @item --absolute_skew @var{absolute-skew}
+-Set the absolute skew. (The skew value used for the first formatted
+-track)
++
++Set the absolute skew. This skew value is used for the first formatted
++track. It is expressed in raw bytes.
+
+ @item --head_skew @var{head-skew}
+-Set the head skew. (The skew added for passing from head 0 to head 1)
++
++Set the head skew. This is the skew added for passing from head 0 to
++head 1. It is expressed in raw bytes.
+
+ @item --track_skew @var{track-skew}
+-Set the track skew. (The skew added for seeking to the next track)
++
++Set the track skew. This is the skew added for seeking to the next
++track. It is expressed in raw bytes.
++
+ @end table
+
+ Example: (absolute skew=3, head skew=1, track skew=2)
+@@ -209,6 +215,10 @@
+ track 2 head 0: 4,5,6,1,2,3 (skew=3)
+ track 2 head 1: 3,4,5,6,1,2 (skew=4)
+ @end example
++
++N.B. For simplicitie's sake, this example expresses skews in units of
++sectors. In reality, superformat expects the skews to be expressed in
++raw bytes.
+
+ @node Examples, Troubleshooting, Sector skewing options, superformat
+ @subsection Examples
+diff -ur --new-file --exclude-from=/home/aknaff/floppy/exclude fdutils-5.4/doc/xdfcopy.1 fdutils/doc/xdfcopy.1
+--- fdutils-5.4/doc/xdfcopy.1 Fri Jun 2 22:28:27 2000
++++ fdutils/doc/xdfcopy.1 Mon Jun 11 22:22:47 2001
+@@ -1,4 +1,4 @@
+-.TH xdfcopy 1 "02jun00" fdutils-5.4
++.TH xdfcopy 1 "11Jun01" fdutils-5.4
+ .SH Name
+ xdfcopy - Program to copy and format Xdf disks in Linux
+ '\" t
+diff -ur --new-file --exclude-from=/home/aknaff/floppy/exclude fdutils-5.4/src/MAKEFLOPPIES fdutils/src/MAKEFLOPPIES
+--- fdutils-5.4/src/MAKEFLOPPIES Wed Aug 21 16:51:25 1996
++++ fdutils/src/MAKEFLOPPIES Sun Feb 3 20:13:39 2002
+@@ -12,6 +12,9 @@
+ set -u
+ MAJOR=2
+ TMPDEVICE=/dev/tmpfloppy$$
++if [ ! -b /dev/fd0 ] ; then
++ mknod /dev/fd0 b $MAJOR 0
++fi
+ if floppycontrol 2>/dev/null; then
+ FLOPPYCONTROL=yes
+ else
+diff -ur --new-file --exclude-from=/home/aknaff/floppy/exclude fdutils-5.4/src/diskseekd.c fdutils/src/diskseekd.c
+--- fdutils-5.4/src/diskseekd.c Sat May 27 18:50:05 2000
++++ fdutils/src/diskseekd.c Mon May 21 00:24:21 2001
+@@ -1,4 +1,7 @@
+ #include <sys/types.h>
++#ifdef HAVE_SYS_SYSMACROS_H
++# include <sys/sysmacros.h>
++#endif
+ #include <sys/time.h>
+ #include <unistd.h>
+ #include <stdio.h>
+diff -ur --new-file --exclude-from=/home/aknaff/floppy/exclude fdutils-5.4/src/driveprm.c fdutils/src/driveprm.c
+--- fdutils-5.4/src/driveprm.c Sat May 27 18:49:58 2000
++++ fdutils/src/driveprm.c Mon May 21 00:24:21 2001
+@@ -1,3 +1,7 @@
++#include <sys/types.h>
++#ifdef HAVE_SYS_SYSMACROS_H
++# include <sys/sysmacros.h>
++#endif
+ #include <stdlib.h>
+ #include <string.h>
+ #include <stdio.h>
+diff -ur --new-file --exclude-from=/home/aknaff/floppy/exclude fdutils-5.4/src/fdmount.c fdutils/src/fdmount.c
+--- fdutils-5.4/src/fdmount.c Sat May 27 18:50:14 2000
++++ fdutils/src/fdmount.c Sun Feb 3 23:50:06 2002
+@@ -826,14 +826,9 @@
+
+ mnt=get_mounted(devname);
+ if (!mnt) {
+- if (!force) {
+- errmsg("not mounted");
+- save_unlock_mtab();
+- return -1;
+- }
+- else {
+- msg("not in /etc/mtab, trying to unmount anyway!");
+- }
++ errmsg("not mounted");
++ save_unlock_mtab();
++ return -1;
+ }
+ else {
+ mountpoint=mnt->ms.mnt_dir;
+@@ -860,7 +855,7 @@
+ }
+ #endif
+
+- e=umount(devname);
++ e=umount(mountpoint);
+ if (e) {
+ errmsg("failed to unmount: %s\n",strerror(errno));
+ goto err;
+diff -ur --new-file --exclude-from=/home/aknaff/floppy/exclude fdutils-5.4/src/floppycontrol.c fdutils/src/floppycontrol.c
+--- fdutils-5.4/src/floppycontrol.c Sun Apr 2 10:18:15 2000
++++ fdutils/src/floppycontrol.c Sat Oct 27 13:47:28 2001
+@@ -16,6 +16,11 @@
+ #include <getopt.h>
+ #include "enh_options.h"
+
++#ifndef FD_DISK_CHANGED
++#define FD_DISK_CHANGED 0
++#endif
++
++
+ int eioctl(int fd, int command,void * param, char *emsg)
+ {
+ int r;
+@@ -381,14 +386,17 @@
+ eioctl( fd, FDPOLLDRVSTAT, &drivstat,"get drive state");
+ else
+ eioctl( fd, FDGETDRVSTAT , &drivstat,"get drive state");
+- printf("%s %s %s %s %s\n",
++
++#ifndef FD_DCL_SEEN
++# define FD_DCL_SEEN 0x40
++#endif
++ printf("%s %s %s %s %s %s\n",
+ drivstat.flags & FD_VERIFY ? "verify" : "",
+ drivstat.flags & FD_DISK_NEWCHANGE ? "newchange" : "",
+ drivstat.flags & FD_NEED_TWADDLE ? "need_twaddle" : "",
+-#ifdef FD_DISK_CHANGED
+ drivstat.flags & FD_DISK_CHANGED ? "disk_changed" : "",
+-#endif
+- drivstat.flags & FD_DISK_WRITABLE ?"disk_writable" : "");
++ drivstat.flags & FD_DISK_WRITABLE ?"disk_writable" : "",
++ drivstat.flags & FD_DCL_SEEN ?"dcl_seen" : "");
+ printf("spinup= %ld\n", drivstat.spinup_date);
+ printf("select= %ld\n", drivstat.select_date);
+ printf("first_read= %ld\n", drivstat.first_read_date);
+diff -ur --new-file --exclude-from=/home/aknaff/floppy/exclude fdutils-5.4/src/floppymeter.c fdutils/src/floppymeter.c
+--- fdutils-5.4/src/floppymeter.c Sat May 27 18:49:58 2000
++++ fdutils/src/floppymeter.c Mon May 21 00:24:21 2001
+@@ -1,3 +1,7 @@
++#include <sys/types.h>
++#ifdef HAVE_SYS_SYSMACROS_H
++# include <sys/sysmacros.h>
++#endif
+ #include <unistd.h>
+ #include <stdio.h>
+ #include <string.h>
+diff -ur --new-file --exclude-from=/home/aknaff/floppy/exclude fdutils-5.4/src/measure.c fdutils/src/measure.c
+--- fdutils-5.4/src/measure.c Sat May 27 18:49:57 2000
++++ fdutils/src/measure.c Sun Feb 3 22:15:54 2002
+@@ -138,6 +138,23 @@
+ perror("format");
+ exit(1);
+ }
++
++ if((raw_cmd.reply[1] & ~0x20) |
++ (raw_cmd.reply[2] & ~0x20)) {
++ int i;
++
++ if ( raw_cmd.reply[1] & ST1_WP ){
++ fprintf(stderr,"The disk is write protected\n");
++ exit(1);
++ }
++
++ fprintf(stderr,
++ "\nFatal error while measuring raw capacity\n");
++ for(i=0; i < raw_cmd.reply_count; i++) {
++ fprintf(stderr, "%d: %02x\n", i, raw_cmd.reply[i]);
++ }
++ exit(1);
++ }
+ }
+
+
+diff -ur --new-file --exclude-from=/home/aknaff/floppy/exclude fdutils-5.4/src/mediaprm.c fdutils/src/mediaprm.c
+--- fdutils-5.4/src/mediaprm.c Wed Mar 22 22:16:53 2000
++++ fdutils/src/mediaprm.c Mon May 21 00:24:21 2001
+@@ -20,6 +20,7 @@
+ FE_TPI,
+ FE_STRETCH,
+ FE_SWAPSIDES,
++ FE_ZEROBASED,
+
+ FE_GAP,
+
+@@ -35,7 +36,8 @@
+ FE_DENSITY,
+ } field_t;
+
+-static int SIZE, SECT, VSECT, HEAD, CYL, TPI, STRETCH, SWAPSIDES, GAP, FM;
++static int SIZE, SECT, VSECT, HEAD, CYL, TPI, STRETCH, SWAPSIDES, ZEROBASED;
++static int GAP, FM;
+ static int PERP, SSIZE, _2M, DTR, SPEC1, FMT_GAP, DENSITY;
+ static int ssize;
+
+@@ -48,6 +50,7 @@
+ #define F_TPI FE_TPI,&TPI
+ #define F_STRETCH FE_STRETCH,&STRETCH
+ #define F_SWAPSIDES FE_SWAPSIDES,&SWAPSIDES
++#define F_ZEROBASED FE_ZEROBASED,&ZEROBASED
+
+ #define F_GAP FE_GAP,&GAP
+
+@@ -77,6 +80,7 @@
+ { "stretch", F_STRETCH, 0 },
+
+ { "swapsides", F_SWAPSIDES, 1},
++ { "zerobased", F_ZEROBASED, 1},
+
+ { "gap", F_GAP, 0},
+
+@@ -234,7 +238,7 @@
+ medprm->sect = VSECT / 512;
+ medprm->head = HEAD;
+ medprm->track = CYL;
+- medprm->stretch = STRETCH | (SWAPSIDES << 1);
++ medprm->stretch = STRETCH | (SWAPSIDES << 1) | (ZEROBASED << 2);
+ medprm->gap = GAP;
+ medprm->rate = (FM<<7) | (PERP<<6) | (ssize<<3) | (_2M<<2) | DTR;
+ medprm->spec1 = SPEC1;
+diff -ur --new-file --exclude-from=/home/aknaff/floppy/exclude fdutils-5.4/src/printfdprm.c fdutils/src/printfdprm.c
+--- fdutils-5.4/src/printfdprm.c Mon Jun 9 22:58:15 1997
++++ fdutils/src/printfdprm.c Mon May 21 00:24:21 2001
+@@ -141,6 +141,12 @@
+ print("swapsides",0);
+ #endif
+
++#ifdef FD_ZEROBASED
++ if(ft->stretch & FD_ZEROBASED)
++ print("zerobased",0);
++#endif
++
++
+ if(ft->rate & FD_2M)
+ print("2M",0);
+
+diff -ur --new-file --exclude-from=/home/aknaff/floppy/exclude fdutils-5.4/src/superformat.c fdutils/src/superformat.c
+--- fdutils-5.4/src/superformat.c Sat May 27 18:49:57 2000
++++ fdutils/src/superformat.c Fri Feb 22 11:55:23 2002
+@@ -26,7 +26,10 @@
+ cylinders as happen to work (as in 2m). Currently, if too many cylinders
+ are attempted it won't fail until the very end
+ */
+-
++#include <sys/types.h>
++#ifdef HAVE_SYS_SYSMACROS_H
++# include <sys/sysmacros.h>
++#endif
+ #include <unistd.h>
+ #include <stdio.h>
+ #include <string.h>
+@@ -68,6 +71,7 @@
+ char floppy_buffer[24 * 512];
+ int verbosity = 3;
+ static char noverify = 0;
++static char noformat = 0;
+ static char dosverify = 0;
+ static char verify_later = 0;
+ short stretch;
+@@ -323,7 +327,8 @@
+ raw_cmd.length = nssect * sizeof(format_map_t);
+ raw_cmd.cmd_count = 6;
+ raw_cmd.cmd[0] = FD_FORMAT & ~fm_mode;
+- raw_cmd.cmd[1] = head << 2 | ( fd->drive & 3);
++ raw_cmd.cmd[1] = (head << 2 | ( fd->drive & 3)) ^
++ (fd->swapSides ? 4 : 0);
+ raw_cmd.cmd[2] = fd->sizecode;
+ raw_cmd.cmd[3] = nssect;
+ raw_cmd.cmd[4] = fd->fmt_gap;
+@@ -355,7 +360,8 @@
+ raw_cmd.data = floppy_buffer;
+ raw_cmd.cmd_count = 9;
+ raw_cmd.cmd[0] = FD_WRITE & ~fm_mode & ~0x80;
+- raw_cmd.cmd[1] = head << 2 | ( fd->drive & 3);
++ raw_cmd.cmd[1] = (head << 2 | ( fd->drive & 3)) ^
++ (fd->swapSides ? 4 : 0);
+ raw_cmd.cmd[2] = cylinder;
+ raw_cmd.cmd[3] = head;
+ raw_cmd.cmd[4] = cur_sector;
+@@ -490,6 +496,7 @@
+
+ short retries;
+ short zeroBased=0;
++ short swapSides=0;
+ int n,rsize;
+ char *verify_buffer = NULL;
+ char dosdrive;
+@@ -510,6 +517,11 @@
+ (void *) &noverify,
+ "skip verification" },
+
++ { '\0', "print-drive-deviation", 0, EO_TYPE_BYTE, 1, 0,
++ (void *) &noformat,
++ "print deviation, do not format " },
++
++
+ { 'B', "dosverify", 0, EO_TYPE_BYTE, 1, 0,
+ (void *) &dosverify,
+ "verify disk using mbadblocks" },
+@@ -662,11 +674,6 @@
+ exit(1);
+ }
+
+- fd[0].zeroBased = zeroBased;
+- if(zeroBased)
+- noverify = 1;
+-
+-
+ /* sanity checking */
+ if (sizecode < 0 || sizecode >= MAX_SIZECODE) {
+ fprintf(stderr,"Bad sizecode %d\n", sizecode);
+@@ -779,7 +786,16 @@
+ break;
+ }
+ stretch = geometry.stretch & 1;
+-
++#ifdef FD_ZEROBASED
++ if(geometry.stretch & FD_ZEROBASED) {
++ zeroBased = 1;
++ }
++#endif
++#ifdef FD_SWAPSIDES
++ if(geometry.stretch & FD_SWAPSIDES) {
++ swapSides = 1;
++ }
++#endif
+ mask |= SET_SECTORS | SET_CYLINDERS |
+ SET_SIZECODE | SET_2M | SET_RATE;
+ } else {
+@@ -831,6 +847,15 @@
+ stretch = 0;
+ }
+ }
++
++ fd[0].zeroBased = zeroBased;
++#ifndef FD_ZEROBASED
++ if(zeroBased) {
++ noverify = 1;
++ }
++#endif
++
++ fd[0].swapSides = swapSides;
+
+ if (cylinders > fd[0].drvprm.tracks) {
+ fprintf(stderr,"too many cylinder for this drive\n");
+@@ -900,8 +925,9 @@
+ fprintf(stderr,
+ "In order to avoid this time consuming "
+ "measurement in the future,\n"
+- "add the following line to " DRIVEPRMFILE
+- ":\ndrive%d: deviation=%d\n",
++ "add the following line to " DRIVEPRMFILE ":\n");
++ fprintf(stdout,
++ "drive%d: deviation=%d\n",
+ fd[0].drive,
+ (fd[0].raw_capacity-old_capacity)*1000000/
+ old_capacity);
+@@ -914,6 +940,9 @@
+ }
+ }
+
++ if(noformat)
++ return 0;
++
+ /* FIXME. Why is this needed? */
+ fd[0].raw_capacity -= 30;
+
+@@ -971,7 +1000,11 @@
+ parameters.head = heads;
+ parameters.track = cylinders;
+ parameters.size = cylinders * heads * sectors;
+- parameters.stretch = stretch;
++ parameters.stretch = stretch
++#ifdef FD_ZEROBASED
++ | (zeroBased ? 4 : 0)
++#endif
++ | (swapSides ? 2 : 0);
+ parameters.gap = fd[0].gap;
+ if ( !use_2m)
+ fd0.rate = fd[0].rate;
+@@ -1054,7 +1087,7 @@
+ ioctl(fd[0].fd, FDFLUSH );
+ close(fd[0].fd);
+
+- if (! (mask & SET_DOSDRIVE ) && fd[0].drive < 2)
++ if (! (mask & SET_DOSDRIVE ) && fd[0].drive < 2 && !zeroBased)
+ dosdrive = fd[0].drive+'a';
+
+ if (dosdrive) {
+@@ -1085,8 +1118,9 @@
+ dosverify = 0;
+ }
+ } else {
+- fprintf(stderr,
+- "\nwarning: mformat not called because DOS drive unknown\n");
++ if(!zeroBased)
++ fprintf(stderr,
++ "\nwarning: mformat not called because DOS drive unknown\n");
+ /*exit(1);*/
+ dosverify = 0;
+ }
+diff -ur --new-file --exclude-from=/home/aknaff/floppy/exclude fdutils-5.4/src/superformat.h fdutils/src/superformat.h
+--- fdutils-5.4/src/superformat.h Sun Apr 2 10:09:28 2000
++++ fdutils/src/superformat.h Mon May 21 00:24:21 2001
+@@ -84,6 +84,7 @@
+ int rotations; /* how many time do we have to go over 0 to read
+ * the track */
+ int zeroBased; /* 1 if sector numbering starts at zero */
++ int swapSides; /* if logical side 0 is on physical 1 and vice-versa */
+ };
+
+
+diff -ur --new-file --exclude-from=/home/aknaff/floppy/exclude fdutils-5.4/src/xdfcopy.c fdutils/src/xdfcopy.c
+--- fdutils-5.4/src/xdfcopy.c Sat May 27 18:49:57 2000
++++ fdutils/src/xdfcopy.c Mon May 21 00:24:21 2001
+@@ -2,6 +2,10 @@
+ * Software patents declared unconstitutional, worldwide
+ */
+
++#include <sys/types.h>
++#ifdef HAVE_SYS_SYSMACROS_H
++# include <sys/sysmacros.h>
++#endif
+ #include <unistd.h>
+ #include <stdio.h>
+ #include <string.h>
diff --git a/source/a/floppy/fdutils.mediaprm.diff b/source/a/floppy/fdutils.mediaprm.diff
new file mode 100644
index 00000000..cf9a0a6d
--- /dev/null
+++ b/source/a/floppy/fdutils.mediaprm.diff
@@ -0,0 +1,8 @@
+--- ./src/mediaprm.orig Sat Feb 3 21:01:37 2001
++++ ./src/mediaprm Sat Feb 3 21:01:48 2001
+@@ -1,4 +1,4 @@
+-# /etc/fdprm - floppy disk parameter table
++# /etc/mediaprm - floppy disk parameter table
+
+ ########################################################################
+ # Standard linux disk formats. Names are of the form
diff --git a/source/a/floppy/floppy.SlackBuild b/source/a/floppy/floppy.SlackBuild
new file mode 100755
index 00000000..38a5cc86
--- /dev/null
+++ b/source/a/floppy/floppy.SlackBuild
@@ -0,0 +1,100 @@
+#!/bin/sh
+
+# Copyright 2008, 2009 Patrick J. Volkerding, Sebeka, Minnesota, USA
+# All rights reserved.
+#
+# Redistribution and use of this script, with or without modification, is
+# permitted provided that the following conditions are met:
+#
+# 1. Redistributions of this script must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# 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.
+
+VERSION=5.4
+MTOOLS=3.9.8
+ARCH=${ARCH:-x86_64}
+BUILD=${BUILD:-3}
+
+if [ "$ARCH" = "x86_64" ]; then
+ SLKCFLAGS="-O -fPIC"
+ LIBDIRSUFFIX="64"
+else
+ SLKCFLAGS="-O"
+ LIBDIRSUFFIX=""
+fi
+
+CWD=$(pwd)
+TMP=${TMP:-/tmp}
+PKG=$TMP/package-floppy
+
+rm -rf $PKG $TMP/fdutils-$VERSION $TMP/mtools-$MTOOLS
+mkdir -p $TMP $PKG/{etc,usr/{bin,info,man/man{1,4,5}}}
+
+cd $TMP
+tar xzvf $CWD/fdutils-$VERSION.tar.gz
+cd fdutils-$VERSION
+zcat $CWD/fdutils-5.4-20020222.diff.gz | patch -p1 --verbose --backup --suffix=.orig
+zcat $CWD/fdutils.mediaprm.diff.gz | patch -p1 --verbose --backup --suffix=.orig
+CFLAGS="$SLKCFLAGS" \
+./configure \
+ --prefix=/usr \
+ --sysconfdir=/etc \
+ $ARCH-slackware-linux
+make install prefix=$PKG/usr
+mkdir -p $PKG/usr/doc/fdutils-$VERSION
+cp -a COPYING CREDITS Changelog INSTALL doc/FAQ.html doc/README \
+ $PKG/usr/doc/fdutils-$VERSION
+chown root:root $PKG/usr/doc/fdutils-$VERSION/*
+chmod 644 $PKG/usr/doc/fdutils-$VERSION/*
+cd $TMP
+tar xzvf $CWD/mtools-$MTOOLS.tar.gz
+cd mtools-$MTOOLS
+CFLAGS="$SLKCFLAGS" \
+./configure \
+ --prefix=/usr \
+ --libdir=/usr/lib${LIBDIRSUFFIX} \
+ --sysconfdir=/etc \
+ $ARCH-slackware-linux
+#make all floppyd floppyd_installtest
+make all
+make install prefix=$PKG/usr sysconfdir=$PKG/etc bindir=$PKG/usr/bin \
+ MAN1DIR=$PKG/usr/man/man1 MAN5DIR=$PKG/usr/man/man5
+cat $CWD/mtools.conf > $PKG/etc/mtools.conf
+cat $CWD/mediaprm > $PKG/etc/mediaprm
+mkdir -p $PKG/usr/doc/mtools-$MTOOLS
+cp -a COPYING Changelog INSTALL README Release.notes TODO \
+ $PKG/usr/doc/mtools-$MTOOLS
+chown root:root $PKG/usr/doc/mtools-$MTOOLS/*
+chmod 644 $PKG/usr/doc/mtools-$MTOOLS/*
+( cd $PKG/usr/man
+ for manpagedir in $(find . -type d -name "man*") ; do
+ ( cd $manpagedir
+ for eachpage in $( find . -type l -maxdepth 1) ; do
+ ln -s $( readlink $eachpage ).gz $eachpage.gz
+ rm $eachpage
+ done
+ gzip -9 *.*
+ )
+ done
+)
+( cd $PKG/usr/info ; rm -f dir ; gzip -9 * )
+
+# These are obsolete and/or cruft:
+rm -f $PKG/usr/bin/MAKEFLOPPIES $PKG/usr/bin/lz $PKG/usr/bin/mcheck \
+ $PKG/usr/bin/mcomp $PKG/usr/bin/mxtar $PKG/usr/bin/tgz \
+ $PKG/usr/bin/uz $PKG/usr/man/man1/makefloppies.1
+mkdir -p $PKG/install
+cat $CWD/slack-desc > $PKG/install/slack-desc
+cd $PKG
+makepkg -l y -c n $TMP/floppy-$VERSION-$ARCH-$BUILD.txz
+
diff --git a/source/a/floppy/mediaprm b/source/a/floppy/mediaprm
new file mode 100644
index 00000000..03c82e3b
--- /dev/null
+++ b/source/a/floppy/mediaprm
@@ -0,0 +1,786 @@
+# /etc/mediaprm - floppy disk parameter table
+
+########################################################################
+# Standard linux disk formats. Names are of the form
+# actual media capacity/maximum drive capacity
+# (Note: although 5.25" HD drives can format disks at 1.44M, they're listed
+# as 1200 because that's the common maximum size.)
+
+# size sec/t hds trk stre gap rate spec1 fmt_gap
+
+"360/360":
+ DS DD sect=9
+
+"1200/1200":
+ DS HD sect=15
+
+"360/720":
+ SS DD sect=9
+
+"720/720":
+ DS DD sect=9
+
+"360/1200":
+ DS DD sect=9
+
+"720/1200":
+ DS QD sect=9
+
+"1440/1440":
+ DS HD sect=18
+
+"2880/2880":
+ DS ED sect=36
+
+"2880/2880":
+ DS ED sect=36
+
+"2880/2880":
+ DS ED sect=36
+
+"1440/1200":
+ DS HD sect=18
+
+"1680/1440":
+ DS HD sect=21
+
+"410/1200":
+ DS DD sect=10 cyl=41
+
+"820/1440":
+ DS DD sect=10 cyl=82
+
+"1476/1200":
+ DS HD sect=18 cyl=82
+
+"1722/1440":
+ DS HD sect=21 cyl=82
+
+"420/1200":
+ DS DD sect=10 cyl=42
+
+"830/1440":
+ DS DD sect=10 cyl=83
+
+"1494/1200":
+ DS HD sect=18 cyl=83
+
+"1743/1440":
+ DS HD sect=21 cyl=83
+
+"1743/1440":
+ DS HD sect=21 cyl=83
+
+"880/1200":
+ DS QD tracksize=11b ssize=1KB
+
+"1040/720":
+ DS QD sect=13
+
+"1120/720":
+ DS QD tracksize=7KB mss
+
+"1600/1200":
+ DS HD tracksize=10KB mss
+
+"1760/1440":
+ DS HD sect=11 ssize=1KB
+
+"1920/1440":
+ DS HD tracksize=12KB mss
+
+"3200/2880":
+ DS ED sect=5 ssize=4KB
+
+"3520/2880":
+ DS ED tracksize=22KB ssize=4KB
+
+"3840/2880":
+ DS ED sect=3 ssize=8KB
+
+"3840/2880":
+ DS ED sect=3 ssize=8KB
+
+"1840/1440":
+ DS HD tracksize=23b ssize=2KB
+
+"800/720":
+ DS DD sect=10
+
+"1600/1440":
+ DS HD sect=20
+
+########################################################################
+# CP/M formats
+#
+# the name is constructed as CODsize, where COD identifies the
+# brand of the computer having formatted the disk
+
+# Generic CP/M - SSSD 8"
+
+"GEN250":
+ SS DD sect=24 dtr=0 fm=1 cyl=77 ssize=128
+
+# ABC-80 - SSDD 48 tpi 5.25"
+
+"ABC160":
+ SS DD sect=16 ssize=256
+
+# Actrix (Access Matrix) - SSDD 48 tpi 5.25"
+
+"ACT180":
+ SS DD sect=9
+
+# Adler Textriter - SSDD 48 tpi 5.25"
+
+"ADL160":
+ SS DD sect=16 ssize=256
+
+# Advanced Digital Super 6 - SSDD 48 tpi 5.25"
+
+"ADV160":
+ SS DD sect=4 ssize=1KB
+
+# Advanced Digital Super 6 - DSDD 96 tpi 5.25"
+
+"ADV640":
+ DS QD sect=4 ssize=1KB
+
+# Altos Series 5 - DSDD 96 tpi 5.25"
+
+"ALT720":
+ DS QD sect=9
+
+# Amigo - SSDD 48 tpi 5.25"
+
+"AMI200":
+ SS DD sect=10
+
+# Ampro - SSDD 48 tpi 5.25"
+
+"AMP200":
+ SS DD sect=10
+
+# Ampro - SSDD 96 tpi 5.25"
+
+"AMP400":
+ SS QD sect=5 ssize=1KB
+
+# Amstrad PCW8256 - DSDD 96 tpi 5.25"
+
+"AMS720":
+ DS QD sect=9
+
+# Archive I - SSDD 96 tpi 5.25"
+
+"ARC400":
+ SS QD sect=5 ssize=1KB
+
+# Archive II & III - DSDD 96 tpi 5.25"
+
+"ARC800":
+ DS QD sect=5 ssize=1KB
+
+# Arisia - SSDD 48 tpi 5.25"
+
+"ARI180":
+ SS DD sect=18 ssize=256
+
+# ATR-8000 - SSDD 48 tpi 5.25"
+
+"ATR200":
+ SS DD sect=5 ssize=1KB
+
+# Beehive - DSDD 48 tpi 5.25"
+
+"BEE400":
+ DS DD sect=10
+
+# Bitelex - SSDD 48 tpi 5.25"
+
+"BIT160":
+ SS DD sect=16 ssize=256
+
+# BMC IF800 Model 20 - DSDD 48 tpi 5.25"
+
+"BMC400":
+ DS DD sect=10
+
+# Burr-Brown - DSDD 48 tpi 5.25"
+
+"BUR360":
+ DS DD sect=18 ssize=256
+
+# Cal-PC - DSDD 48 tpi 5.25"
+
+"CAL400":
+ DS DD sect=5 ssize=1KB
+
+# Cashcom 100 - DSDD 96 tpi 5.25"
+
+"CAS640":
+ DS QD sect=4 ssize=1KB
+
+# CDI-5000 - DSDD 48 tpi 5.25"
+
+"CDI400":
+ DS DD sect=5 ssize=1KB
+
+# CMC Supersystem 2 - DSDD 96 tpi 5.25"
+
+"CMC800":
+ DS QD sect=5 ssize=1KB
+
+# Coleco ADAM, 40 track - SSDD 48 tpi 5.25"
+
+"COL160":
+ SS DD sect=8
+
+# Compugraphic MCS-5 - SSDD 48 tpi 5.25"
+
+"COM160":
+ SS DD sect=16 ssize=256
+
+# Compupro (Viasyn) (1024 bytes/sector) - DSDD 96 tpi 5.25"
+
+"COM800":
+ DS QD sect=5 ssize=1KB
+
+# Cromemco CDOS - SSSD 48 tpi 5.25"
+
+"CRO80":
+ SS SD sect=16 dtr=1 fm=1 ssize=128
+
+# Cromemco CDOS - SSDD 48 tpi 5.25"
+
+"CRO200":
+ SS DD sect=10
+
+# Cromemco CP/M - SSDD 48 tpi 5.25"
+
+"CRO200":
+ SS DD sect=10
+
+# C/WP Cortex - SSDD 48 tpi 5.25"
+
+"CWP200":
+ SS DD sect=10
+
+# Cykey - DSDD 48 tpi 5.25"
+
+"CYK320":
+ DS DD sect=16 ssize=256
+
+# DEC DECMate II - SSDD 96 tpi 5.25"
+
+"DEC400":
+ SS QD sect=10
+
+# DEC Rainbow - SSDD 96 tpi 5.25"
+
+"DEC180":
+ SS DD sect=9
+
+# DEC VT-180 - SSDD 48 tpi 5.25"
+
+"DEC180":
+ SS DD sect=9
+
+# Direct 1025 - DSDD 48 tpi 5.25"
+
+"DIR320":
+ DS DD sect=16 ssize=256
+
+# Discovery - DSDD 96 tpi 5.25"
+
+"DIS640":
+ DS QD sect=8
+
+# Eagle II - SSDD 96 tpi 5.25"
+
+"EAG400":
+ SS QD sect=5 ssize=1KB
+
+# Epson QX-10 - DSDD 48 tpi 5.25"
+
+"EPS400":
+ DS DD sect=10
+
+# Epson QX-10 (256 bytes/sector) - DSDD 48 tpi 5.25"
+
+"EPS320":
+ DS DD sect=16 ssize=256
+
+# Epson PX-8 - DSDD 3.5"
+
+"EPS320":
+ DS DD sect=8
+
+# Ericsson DTC - SSDD 96 tpi 5.25"
+
+"ERI320":
+ SS QD sect=16 ssize=256
+
+# Ericsson Step One - DSDD 96 tpi 5.25"
+
+"ERI720":
+ DS QD sect=9
+
+# Florida Graphics - DSDD 96 tpi 5.25"
+
+"FLO640":
+ DS QD sect=16 ssize=256
+
+# Formula 1 - DSDD 48 tpi 5.25"
+
+"FOR360":
+ DS DD sect=18 ssize=256
+
+# Fujitsu Micro 16 - DSDD 48 tpi 5.25"
+
+"FUJ320":
+ DS DD sect=16 ssize=256
+
+# Fujitsu Micro 8 - DSDD 48 tpi 5.25"
+
+"FUJ320":
+ DS DD sect=16 ssize=256
+
+# HCL System 2 - DSDD 96 tpi 5.25"
+
+"HCL800":
+ DS QD sect=5 ssize=1KB
+
+# Heath H89, Magnolia CP/M - SSDD 48 tpi 5.25"
+
+"HEA180":
+ SS DD sect=9
+
+# Heurikon MLZ-91A - DSDD 96 tpi 5.25"
+
+"HEU640":
+ DS QD sect=16 ssize=256
+
+# IBM PC, CP/M-86 - SSDD 48 tpi 5.25"
+
+"IBM160":
+ SS DD sect=8
+
+# IMS 5000 - SSDD 48 tpi 5.25"
+
+"IMS160":
+ SS DD sect=16 ssize=256
+
+# IMS 5000 TurboDOS - DSDD 96 tpi 5.25"
+
+"IMS800":
+ DS QD sect=5 ssize=1KB
+
+# Intel iPDS 100 - DSDD 96 tpi 5.25"
+
+"INT640":
+ DS QD sect=16 ssize=256
+
+# Insight Enterprises - DSDD 48 tpi 5.25"
+
+"INS320":
+ DS DD sect=16 ssize=256
+
+# Ithaca Intersystems - SSDD 96 tpi 5.25"
+
+"ITH360":
+ SS QD sect=18 ssize=256
+
+# Jet-80 - DSDD 48 tpi 5.25"
+
+"JET400":
+ DS DD sect=5 ssize=1KB
+
+# Lexoriter - SSDD 48 tpi 5.25"
+
+"LEX160":
+ SS DD sect=16 ssize=256
+
+# LNW 2 - SSDD 48 tpi 5.25"
+
+"LNW180":
+ SS DD sect=18 ssize=256
+
+# Macsym 150 - SSDD 96 tpi 5.25"
+
+"MAC320":
+ SS QD sect=8
+
+# Magic - DSDD 48 tpi 5.25"
+
+"MAG400":
+ DS DD sect=10
+
+# MAI Basic Four - DSDD 96 tpi 5.25"
+
+"MAI640":
+ DS QD sect=16 ssize=256
+
+# Micron Quark - DSDD 48 tpi 5.25"
+
+"MIC320":
+ DS DD sect=4 ssize=1KB
+
+# Monroe 8800 Series - SSDD 96 tpi 5.25"
+
+"MON320":
+ SS QD sect=16 ssize=256
+
+# Morrow MD2 - SSDD 48 tpi 5.25"
+
+"MOR200":
+ SS DD sect=5 ssize=1KB
+
+# Morrow MD3, 5, 11, 16, 34 - DSDD 48 tpi 5.25"
+
+"MOR400":
+ DS DD sect=5 ssize=1KB
+
+# Morrow TurboDOS - DSDD 48 tpi 5.25"
+
+"MOR320":
+ DS DD sect=4 ssize=1KB
+
+# NCR FirstStep - DSDD 96 tpi 5.25"
+
+"NCR640":
+ DS QD sect=16 ssize=256
+
+# NEC PC-8001A - SSDD 48 tpi 5.25"
+
+"NEC160":
+ SS DD sect=16 ssize=256
+
+# NEC PC 8801A/8831A - DSDD 48 tpi 5.25"
+
+"NEC320":
+ DS DD sect=8
+
+# NEC PC 8500/8431A, Starlet - DSDD 3.5"
+
+"NEC320":
+ SS QD sect=16 ssize=256
+
+# Nixdorf 8810/30 - DSDD 96 tpi 5.25"
+
+"NIX800":
+ DS QD sect=10
+
+# OKI IF800 Model 20 - DSDD 48 tpi 5.25"
+
+"OKI400":
+ DS DD sect=10
+
+# Olivetti ETV300 - SSDD 48 tpi 5.25"
+
+"OLI180":
+ SS DD sect=18 ssize=256
+
+# Olivetti M20 - DSDD 48 tpi 5.25"
+
+"OLI320":
+ DS DD sect=16 ssize=256
+
+# Olivetti 250 - SSDD 3.5"
+
+"OLI320":
+ SS QD sect=16 ssize=256
+
+# Olympia EX-100 - DSDD 48 tpi 5.25"
+
+"OLY360":
+ DS DD sect=9
+
+# Olympia ETX II - SSDD 48 tpi 5.25"
+
+"OLY180":
+ SS DD sect=9
+
+# Osborne 1 - SSSD 48 tpi 5.25"
+
+"OSB100":
+ SS SD sect=10 dtr=1 fm=1 ssize=256
+
+# Osborne 1 - SSDD 48 tpi 5.25"
+
+"OSB200":
+ SS DD sect=5 ssize=1KB
+
+# Osborne Executive - SSDD 48 tpi 5.25"
+
+"OSB200":
+ SS DD sect=5 ssize=1KB
+
+# Osborne 1 + Osmosis - DSDD 96 tpi 5.25"
+
+"OSB400":
+ DS DD sect=10
+
+# Osborne Vixen - DSDD 48 tpi 5.25"
+
+"OSB400":
+ DS DD sect=5 ssize=1KB
+
+# Osborne Executive w/Z3 - DSDD 96 tpi 5.25"
+
+"OSB800":
+ DS QD sect=5 ssize=1KB
+
+# OSM Zeus 4 - DSDD 96 tpi 5.25"
+
+"OSM640":
+ DS QD sect=8
+
+# Panasonic KX-E828 - DSDD 48 tpi 5.25"
+
+"PAN320":
+ DS DD sect=16 ssize=256
+
+# Pegasus Data Logger - DSDD 48 tpi 5.25"
+
+"PEG360":
+ DS DD sect=9
+
+# Philips PC-2010 - SSDD 48 tpi 5.25"
+
+"PHI160":
+ SS DD sect=16 ssize=256
+
+# Philips PC-3000 - 3004 - SSDD 96 tpi 5.25"
+
+"PHI320":
+ SS QD sect=16 ssize=256
+
+# Pied Piper - DSDD 96 tpi 5.25"
+
+"PIE800":
+ DS QD sect=10
+
+# PMC Micromate - DSDD 48 tpi 5.25"
+
+"PMC400":
+ DS DD sect=5 ssize=1KB
+
+# Proglas 770KB - DSDD 96 tpi 5.25"
+
+"PRO800":
+ DS QD sect=10
+
+# Royal Alphatronic - DSDD 48 tpi 5.25"
+
+"ROY320":
+ DS DD sect=16 ssize=256
+
+# Sage IV - DSDD 96 tpi 5.25"
+
+"SAG640":
+ DS QD sect=8
+
+# Sanyo MBC-1000, MBC-1150 - DSDD 48 tpi 5.25"
+
+"SAN320":
+ DS DD sect=16 ssize=256
+
+# Sanyo MBC-1250 - DSDD 96 tpi 5.25"
+
+"SAN640":
+ DS QD sect=16 ssize=256
+
+# Seequa Chameleon - SSDD 48 tpi 5.25"
+
+"SEE160":
+ SS DD sect=8
+
+# Seiko - DSDD 96 tpi 5.25"
+
+"SEI640":
+ DS QD sect=16 ssize=256
+
+# Siemens PG-685 - DSDD 96 tpi 5.25"
+
+"SIE720":
+ DS QD sect=9
+
+# Siemens PG-675 DSDD 48 tpi 5.25"
+
+"SIE360":
+ DS DD sect=9
+
+# Siemens PG-635 DSDD 3.5"
+
+"SIE720":
+ DS QD sect=9
+
+# Sorbus TurboDOS - 5.25" DSHD (or 8" DSDD)
+
+"SOR1232":
+ DS HD sect=8 cyl=77 ssize=1KB
+
+# Sperry UTS 30, UTS 5000 - DSDD 96 tpi 5.25"
+
+"SPE720":
+ DS QD sect=9
+
+# Superbrain JR - SSDD 48 tpi 5.25"
+
+"SUP175":
+ SS DD sect=10 cyl=35
+
+# Superbrain 40 track - SSDD 48 tpi 5.25"
+
+"SUP200":
+ SS DD sect=10
+
+# Systel 2 - SSDD 48 tpi 5.25"
+
+"SYS180":
+ SS DD sect=9
+
+# Systel 3 - DSDD 48 tpi 5.25"
+
+"SYS360":
+ DS DD sect=9
+
+# Televideo 801, 806 - DSDD 48 tpi 5.25"
+
+"TEL360":
+ DS DD sect=18 ssize=256
+
+# Televideo 1603 - DSDD 96 tpi 5.25"
+
+"TEL720":
+ DS QD sect=9
+
+# TI Professional, CP/M-86 - SSDD 48 tpi 5.25"
+
+"TI1160":
+ SS DD sect=8
+
+# Toshiba T100, T200 - DSDD 48 tpi 5.25"
+
+"TOS320":
+ DS DD sect=16 ssize=256
+
+# TRS-80 Model 1, Omikron CP/M - SSSD 48 tpi 5.25"
+
+"TRS0":
+ SS SD sect=16 dtr=1 fm=1 cyl=0 ssize=128
+
+# TRS-80 Model 1, Color Power II - SSDD 48 tpi 5.25"
+
+"TRS180":
+ SS DD sect=18 ssize=256
+
+# TRS-80, MM CP/M - SSDD 48 tpi 5.25"
+
+"TRS200":
+ SS DD sect=10
+
+# TRS-80 Model 4, MT CP/M - SSDD 48 tpi 5.25"
+
+"TRS180":
+ SS DD sect=18 ssize=256
+
+# TRS-80 Model 4, MT CP/M - DSDD 48 tpi 5.25"
+
+"TRS360":
+ DS DD sect=18 ssize=256
+
+# TRS-80 Model 4 - SSDD 48 tpi 5.25"
+
+"TRS160":
+ SS DD sect=8
+
+# Visual 1050 - SSDD 96 tpi 5.25"
+
+"VIS400":
+ SS QD sect=10
+
+# Wangwriter - DSDD 48 tpi 5.25"
+
+"WAN320":
+ DS DD sect=16 ssize=256
+
+# Wave Mate Bullet - SSDD 48 tpi 5.25"
+
+"WAV200":
+ SS DD sect=5 ssize=1KB
+
+# Xerox 820 - SSSD 48 tpi 5.25"
+
+"XER80":
+ SS SD sect=16 dtr=1 fm=1 ssize=128
+
+# Xerox 820 II - SSDD 48 tpi 5.25"
+
+"XER160":
+ SS DD sect=16 ssize=256
+
+# Zenith Z-37 Disk - SSSD 48 tpi 5.25"
+
+"ZEN100":
+ SS SD sect=10 dtr=1 fm=1 ssize=256
+
+# Zenith Z-37 Disk - DSDD 96 tpi 5.25"
+
+"ZEN640":
+ DS QD sect=16 ssize=256
+
+# Zenith Z89, Heath H89 - DSDD 48 tpi 5.25"
+
+"ZEN320":
+ DS DD sect=16 ssize=256
+
+# Zenith Z89, Heath H89 - DSDD 96 tpi 5.25"
+
+"ZEN640":
+ DS QD sect=16 ssize=256
+
+# Zenith Z90 - SSDD 48 tpi 5.25"
+
+"ZEN160":
+ SS DD sect=16 ssize=256
+
+# Zenith Z90 - DSDD 48 tpi 5.25"
+
+"ZEN320":
+ DS DD sect=16 ssize=256
+
+# Zenith Z-100 - SSDD 48 tpi 5.25"
+
+"ZEN160":
+ SS DD sect=8
+
+# Zenith Z-100 - DSDD 48 tpi 5.25"
+
+"ZEN320":
+ DS DD sect=8
+
+
+
+########################################################################
+# Other interesting formats, please contribute ;-)
+#
+
+# Commodore 1581 (the 3 1/2 drive of the Commodore 128)
+"CBM1581":
+ DS DD sect=10 swapsides
+
+# Color computer, sides 1 and 2
+"COCO1":
+ SS DD sect=18 cyl=35 ssize=256
+
+"COCO2":
+ SS DD sect=18 cyl=35 ssize=256
+
+# TO7 (Thomson), sides 1 and 2
+"TO7-1"
+ SS DD sect=16 ssize=256
+
+"TO7-2"
+ SS DD sect=16 ssize=256 swapsides
diff --git a/source/a/floppy/mtools.conf b/source/a/floppy/mtools.conf
new file mode 100644
index 00000000..b528c01d
--- /dev/null
+++ b/source/a/floppy/mtools.conf
@@ -0,0 +1,64 @@
+# Example mtools.conf files. Uncomment the lines which correspond to
+# your architecture and comment out the "SAMPLE FILE" line below
+#SAMPLE FILE
+
+# # Linux floppy drives
+drive a: file="/dev/fd0" exclusive
+drive b: file="/dev/fd1" exclusive
+
+# # First SCSI hard disk partition
+# drive c: file="/dev/sda1"
+
+# # First IDE hard disk partition
+# drive c: file="/dev/hda1"
+
+# # dosemu floppy image
+# drive m: file="/var/lib/dosemu/diskimage"
+
+# # dosemu hdimage
+# drive n: file="/var/lib/dosemu/diskimage" offset=3840
+
+# # Atari ramdisk image
+# drive o: file="/tmp/atari_rd" offset=136
+
+# # ZIP disk for Solaris:
+# Drive X is ZIP-100 at target 5
+# drive X: file="/dev/rdsk/c0t5d0s2" partition=4 scsi=1 nodelay
+
+# # ZIP disk for SunOS:
+# # Zip drive is at target 5, which default kernel calls tape st1 !!
+# drive Y: file="/dev/rsd5c" partition=4 scsi=1 nodelay
+
+# # autoselect zip drive/floppy on HP-UX 9/10
+# drive a: file="/dev/rdsk/c201d5" exclusive partition=4
+# drive a: file="/dev/rdsk/c201d5s0" exclusive partition=4
+# drive a: file="/dev/rfloppy/c201d0s0" exclusive
+
+# A/UX target 5 on 1st scsi bus jaz or zip
+# drive X: file="/dev/rdsk/c105d0s31" partition=4
+
+
+# Some examples for BeOS.
+# floppy drive. hardcoded in devices.c, so no real need to define it here
+#drive a: file="/dev/floppy_disk" exclusive
+# ZIP drive on SCSI ID 6
+#drive z: file="/dev/scsi_disk_060" offset=16384 fat_bits=16
+
+# SCO Unix 3.2v4
+# # Floppy disk drives
+#
+# drive a: file="/dev/install" exclusive
+# drive b: file="/dev/install1" exclusive
+#
+# # SCSI hard disk partitions
+#
+# drive c: file="/dev/dsk/0sC"
+# drive d: file="/dev/dsk/0sD"
+# drive e: file="/dev/dsk/0sE"
+# drive f: file="/dev/dsk/0sF"
+# drive g: file="/dev/dsk/0sG"
+# drive h: file="/dev/dsk/0sH"
+
+# # uncomment the following line to display all file names in lower
+# # case by default
+# mtools_lower_case=1
diff --git a/source/a/floppy/slack-desc b/source/a/floppy/slack-desc
new file mode 100644
index 00000000..bb916942
--- /dev/null
+++ b/source/a/floppy/slack-desc
@@ -0,0 +1,19 @@
+# HOW TO EDIT THIS FILE:
+# The "handy ruler" below makes it easier to edit a package description. Line
+# up the first '|' above the ':' following the base package name, and the '|'
+# on the right side marks the last column you can put a character in. You must
+# make exactly 11 lines for the formatting to be correct. It's also
+# customary to leave one space after the ':'.
+
+ |-----handy-ruler------------------------------------------------------|
+floppy: floppy (floppy disk utilities)
+floppy:
+floppy: Contains fdutils-5.4, tools to test and format floppy disks; and
+floppy: mtools-3.9.8, a collection of utilities for using DOS/Windows floppy
+floppy: disks with Linux.
+floppy:
+floppy:
+floppy:
+floppy:
+floppy:
+floppy:
diff --git a/source/a/gawk/gawk.SlackBuild b/source/a/gawk/gawk.SlackBuild
new file mode 100755
index 00000000..e65e5aaf
--- /dev/null
+++ b/source/a/gawk/gawk.SlackBuild
@@ -0,0 +1,99 @@
+#!/bin/sh
+
+# Copyright 2005-2009 Patrick J. Volkerding, Sebeka, Minnesota, USA
+# All rights reserved.
+#
+# Redistribution and use of this script, with or without modification, is
+# permitted provided that the following conditions are met:
+#
+# 1. Redistributions of this script must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# 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.
+
+VERSION=3.1.6
+ARCH=${ARCH:-x86_64}
+BUILD=${BUILD:-2}
+
+CWD=$(pwd)
+TMP=${TMP:-/tmp}
+PKG=$TMP/package-gawk
+
+if [ "$ARCH" = "i386" ]; then
+ SLKCFLAGS="-O2 -march=i386 -mcpu=i686"
+elif [ "$ARCH" = "i486" ]; then
+ SLKCFLAGS="-O2 -march=i486 -mtune=i686"
+elif [ "$ARCH" = "s390" ]; then
+ SLKCFLAGS="-O2"
+elif [ "$ARCH" = "x86_64" ]; then
+ SLKCFLAGS="-O2 -fPIC"
+fi
+
+rm -rf $PKG
+mkdir -p $TMP $PKG
+
+cd $TMP
+rm -rf gawk-$VERSION
+tar xjvf $CWD/gawk-$VERSION.tar.bz2
+cd gawk-$VERSION
+
+chown -R root:root .
+CFLAGS="$SLKCFLAGS" \
+./configure \
+ --prefix=/usr \
+ --mandir=/usr/man \
+ --infodir=/usr/info \
+ $ARCH-slackware-linux
+
+make -j3 || exit 1
+make install DESTDIR=$PKG || exit 1
+
+( cd $PKG
+ find . | xargs file | grep "executable" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
+ find . | xargs file | grep "shared object" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
+)
+( cd $PKG/usr/bin
+ ln -sf gawk-$VERSION gawk
+ ln -sf pgawk-$VERSION pgawk
+)
+mkdir -p $PKG/bin
+mv $PKG/usr/bin/gawk* $PKG/bin
+mv $PKG/usr/bin/awk $PKG/bin
+( cd $PKG/usr/bin
+ ln -sf ../../bin/awk .
+ ln -sf ../../bin/gawk .
+ ln -sf ../../bin/gawk-$VERSION .
+)
+( cd $PKG/usr/info
+ rm dir
+ gzip -9 *
+)
+( cd $PKG/usr/man/man1
+ rm -f pgawk.1
+ gzip -9 *
+ ln -sf gawk.1.gz awk.1.gz
+ ln -sf gawk.1.gz pgawk.1.gz
+)
+mkdir -p $PKG/usr/doc/gawk-$VERSION
+cp -a \
+ ABOUT-NLS AUTHORS COPYING FUTURES INSTALL LIMITATIONS NEWS POSIX.STD \
+ PROBLEMS README README_d \
+ $PKG/usr/doc/gawk-$VERSION
+find $PKG/usr/doc/gawk-$VERSION -type d -exec chmod 755 {} \;
+find $PKG/usr/doc/gawk-$VERSION -type f -exec chmod 644 {} \;
+mkdir -p $PKG/install
+cat $CWD/slack-desc > $PKG/install/slack-desc
+
+# Build the package:
+cd $PKG
+makepkg -l y -c n $TMP/gawk-$VERSION-$ARCH-$BUILD.txz
+
diff --git a/source/a/gawk/slack-desc b/source/a/gawk/slack-desc
new file mode 100644
index 00000000..739f2a9e
--- /dev/null
+++ b/source/a/gawk/slack-desc
@@ -0,0 +1,19 @@
+# HOW TO EDIT THIS FILE:
+# The "handy ruler" below makes it easier to edit a package description. Line
+# up the first '|' above the ':' following the base package name, and the '|' on
+# the right side marks the last column you can put a character in. You must make
+# exactly 11 lines for the formatting to be correct. It's also customary to
+# leave one space after the ':'.
+
+ |-----handy-ruler------------------------------------------------------|
+gawk: gawk (pattern scanning and processing language)
+gawk:
+gawk: Gawk is the GNU Project's implementation of the AWK programming
+gawk: language. It conforms to the definition of the language in the POSIX
+gawk: 1003.2 Command Language And Utilities Standard. This version in turn
+gawk: is based on the description in The AWK Programming Language, by Aho,
+gawk: Kernighan, and Weinberger, with the additional features found in the
+gawk: System V Release 4 version of UNIX awk. Gawk also provides more
+gawk: recent Bell Labs awk extensions, and some GNU-specific extensions.
+gawk:
+gawk:
diff --git a/source/a/genpower/genpower.SlackBuild b/source/a/genpower/genpower.SlackBuild
new file mode 100755
index 00000000..03f15675
--- /dev/null
+++ b/source/a/genpower/genpower.SlackBuild
@@ -0,0 +1,93 @@
+#!/bin/sh
+
+# Copyright 2008, 2009 Patrick J. Volkerding, Sebeka, Minnesota, USA
+# All rights reserved.
+#
+# Redistribution and use of this script, with or without modification, is
+# permitted provided that the following conditions are met:
+#
+# 1. Redistributions of this script must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# 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.
+
+VERSION=${VERSION:-1.0.5}
+ARCH=${ARCH:-x86_64}
+BUILD=${BUILD:-2}
+
+CWD=$(pwd)
+TMP=${TMP:-/tmp}
+PKG=$TMP/package-genpower
+
+rm -rf $PKG
+mkdir -p $TMP $PKG
+
+cd $TMP
+rm -rf genpower-$VERSION
+tar xvf $CWD/genpower-$VERSION.tar.gz || exit 1
+cd genpower-$VERSION || exit 1
+
+chown -R root:root .
+find . \
+ \( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \
+ -exec chmod 755 {} \; -o \
+ \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
+ -exec chmod 644 {} \;
+
+find . -type d -name CVS -depth -exec rm -rf {} \;
+
+zcat $CWD/genpower.var.diff.gz | patch -p1 -E --verbose || exit 1
+zcat $CWD/genpower.halt.diff.gz | patch -p1 --verbose || exit 1
+
+make -j4 || make || exit 1
+mkdir -p $PKG/sbin
+cat genpowerd > $PKG/sbin/genpowerd
+cat gentest > $PKG/sbin/gentest
+cat genpowerfail > $PKG/sbin/genpowerfail
+mkdir -p $PKG/etc
+cat genpowerd.conf > $PKG/etc/genpowerd.conf.new
+chmod 755 $PKG/sbin/*
+
+find $PKG | xargs file | grep -e "executable" -e "shared object" \
+ | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
+
+mkdir -p $PKG/usr/man/man8
+cat genpowerd.8 | gzip -9c > $PKG/usr/man/man8/genpowerd.8.gz
+cat gentest.8 | gzip -9c > $PKG/usr/man/man8/gentest.8.gz
+
+mkdir -p $PKG/usr/doc/genpower-$VERSION
+cp -a \
+ COPYING Change.Log README TODO genpower.docs cables \
+ $PKG/usr/doc/genpower-$VERSION
+
+mkdir -p $PKG/install
+cat << EOF > $PKG/install/doinst.sh
+#!/bin/sh
+config() {
+ NEW="\$1"
+ OLD="\$(dirname \$NEW)/\$(basename \$NEW .new)"
+ # If there's no config file by that name, mv it over:
+ if [ ! -r \$OLD ]; then
+ mv \$NEW \$OLD
+ elif [ "\$(cat \$OLD | md5sum)" = "\$(cat \$NEW | md5sum)" ]; then # toss the redundant copy
+ rm \$NEW
+ fi
+ # Otherwise, we leave the .new copy for the admin to consider...
+}
+config etc/genpowerd.conf.new
+EOF
+cat $CWD/slack-desc > $PKG/install/slack-desc
+
+# Build the package:
+cd $PKG
+/sbin/makepkg -l y -c n $TMP/genpower-$VERSION-$ARCH-$BUILD.txz
+
diff --git a/source/a/genpower/genpower.halt.diff b/source/a/genpower/genpower.halt.diff
new file mode 100644
index 00000000..05c6a23f
--- /dev/null
+++ b/source/a/genpower/genpower.halt.diff
@@ -0,0 +1,32 @@
+--- ./genpowerfail.orig 2008-12-02 17:49:36.000000000 -0600
++++ ./genpowerfail 2008-12-02 18:22:37.000000000 -0600
+@@ -36,23 +36,23 @@
+ stats=`head -1 $statpath`
+ case "$stats" in
+ FAIL) # Power is down
+- shutdown -r +2 "THE POWER IS DOWN! SHUTTING DOWN SYSTEM! PLEASE LOG OFF NOW!" < /dev/console &
++ shutdown -h +2 "THE POWER IS DOWN! SHUTTING DOWN SYSTEM! PLEASE LOG OFF NOW!" < /dev/console &
+ ;;
+ SCRAM) # Battery is low
+- shutdown -r now "THE POWER IS DOWN! BATTERY POWER IS LOW! EMERGENCY SHUTDOWN!" < /dev/console &
++ shutdown -h now "THE POWER IS DOWN! BATTERY POWER IS LOW! EMERGENCY SHUTDOWN!" < /dev/console &
+ ;;
+ CABLE) # Possible bad cable
+- shutdown -r +1 "POSSIBLE BAD CABLE! SHUTTING DOWN SYSTEM! PLEASE LOG OFF NOW!" < /dev/console &
++ shutdown -h +1 "POSSIBLE BAD CABLE! SHUTTING DOWN SYSTEM! PLEASE LOG OFF NOW!" < /dev/console &
+ ;;
+ *) # Unknown message, assume power is down
+- shutdown -r +2 "THE POWER IS DOWN! SHUTTING DOWN SYSTEM! PLEASE LOG OFF NOW!" < /dev/console &
++ shutdown -h +2 "THE POWER IS DOWN! SHUTTING DOWN SYSTEM! PLEASE LOG OFF NOW!" < /dev/console &
+ ;;
+
+ esac
+ else
+- # genowerfail called, and upsstatus dosen't exist.
++ # genpowerfail called, and upsstatus dosen't exist.
+ # Assume user is using powerd, and shutdown.
+- shutdown -r +2 "THE POWER IS DOWN! SHUTTING DOWN SYSTEM! PLEASE LOG OFF NOW!" < /dev/console &
++ shutdown -h +2 "THE POWER IS DOWN! SHUTTING DOWN SYSTEM! PLEASE LOG OFF NOW!" < /dev/console &
+
+ fi
+ ;;
diff --git a/source/a/genpower/genpower.var.diff b/source/a/genpower/genpower.var.diff
new file mode 100644
index 00000000..fa3c9e99
--- /dev/null
+++ b/source/a/genpower/genpower.var.diff
@@ -0,0 +1,34 @@
+--- ./genpowerfail.orig Wed Apr 10 18:25:07 2002
++++ ./genpowerfail Wed Apr 10 19:14:27 2002
+@@ -6,19 +6,19 @@
+ # This script is also being run when the power comes
+ # up again (if it does in time!)
+ #
+-# Version: /etc/genpowerfail 1.0.1
++# Version: /sbin/genpowerfail 1.0.1
+ #
+ # Author: Tom Webster <webster@kaiwan.com>
+ #
+
+ # Set the path.
+-PATH=/sbin:/etc:/bin:/usr/bin
++PATH=/sbin:/bin:/usr/bin:/usr/sbin
+
+ # Set location of upsstatus file
+ statpath="/etc/upsstatus"
+
+ # Set location of file containing PID of running shutdowns
+-spidpath="/etc/shutdownpid"
++spidpath="/var/run/shutdownpid"
+
+ # See what happened.
+ case "$1" in
+@@ -63,7 +63,7 @@
+ shutdown -c "THE POWER IS BACK"
+ ;;
+ *)
+- echo "Usage: /etc/genpowerfail {start|stop}"
++ echo "Usage: /sbin/genpowerfail {start|stop}"
+ exit 1
+ ;;
+ esac
diff --git a/source/a/genpower/slack-desc b/source/a/genpower/slack-desc
new file mode 100644
index 00000000..e0f4590e
--- /dev/null
+++ b/source/a/genpower/slack-desc
@@ -0,0 +1,19 @@
+# HOW TO EDIT THIS FILE:
+# The "handy ruler" below makes it easier to edit a package description. Line
+# up the first '|' above the ':' following the base package name, and the '|' on
+# the right side marks the last column you can put a character in. You must make
+# exactly 11 lines for the formatting to be correct. It's also customary to
+# leave one space after the ':'.
+
+ |-----handy-ruler------------------------------------------------------|
+genpower: genpower (UPS monitoring daemon)
+genpower:
+genpower: The genpower daemon, genpowerd, will monitor the status of a serial
+genpower: line connected to a UPS (Uninterruptible Power Supply). If a power
+genpower: failure is detected, genpowerd will notify the system to take the
+genpower: needed steps to react to the condition of the UPS. This may include
+genpower: shutting the system down, or canceling a pending shutdown if the
+genpower: power is restored.
+genpower:
+genpower:
+genpower:
diff --git a/source/a/gettext/gettext-tools.SlackBuild b/source/a/gettext/gettext-tools.SlackBuild
new file mode 100755
index 00000000..945032c6
--- /dev/null
+++ b/source/a/gettext/gettext-tools.SlackBuild
@@ -0,0 +1,102 @@
+#!/bin/sh
+
+# Copyright 2005-2008 Patrick J. Volkerding, Sebeka, Minnesota, USA
+# All rights reserved.
+#
+# Redistribution and use of this script, with or without modification, is
+# permitted provided that the following conditions are met:
+#
+# 1. Redistributions of this script must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# 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.
+
+VERSION=0.17
+ARCH=${ARCH:-x86_64}
+BUILD=${BUILD:-3}
+
+CWD=$(pwd)
+TMP=${TMP:-/tmp}
+PKG=$TMP/package-gettext-tools
+
+if [ "$ARCH" = "i386" ]; then
+ SLKCFLAGS="-O2 -march=i386 -mcpu=i686"
+ LIBDIRSUFFIX=""
+elif [ "$ARCH" = "i486" ]; then
+ SLKCFLAGS="-O2 -march=i486 -mtune=i686"
+ LIBDIRSUFFIX=""
+elif [ "$ARCH" = "s390" ]; then
+ SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
+elif [ "$ARCH" = "x86_64" ]; then
+ SLKCFLAGS="-O2 -fPIC"
+ LIBDIRSUFFIX="64"
+fi
+
+rm -rf $PKG
+mkdir -p $TMP $PKG
+cd $TMP
+rm -rf gettext-$VERSION
+tar xjvf $CWD/gettext-$VERSION.tar.bz2 || exit 1
+cd gettext-$VERSION
+chown -R root:root .
+find . \
+ \( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \
+ -exec chmod 755 {} \; -o \
+ \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
+ -exec chmod 644 {} \;
+
+CFLAGS="$SLKCFLAGS" \
+CXXFLAGS="$SLKCFLAGS" \
+./configure \
+ --prefix=/usr \
+ --libdir=/usr/lib${LIBDIRSUFFIX} \
+ --disable-static \
+ --infodir=/usr/info \
+ --mandir=/usr/man \
+ --docdir=/usr/doc/gettext-tools-$VERSION \
+ --build=$ARCH-slackware-linux
+make -j4 || exit 1
+cd gettext-tools
+make install DESTDIR=$PKG
+
+( cd $PKG
+ find . | xargs file | grep "executable" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
+ find . | xargs file | grep "shared object" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
+)
+rm -f $PKG/usr/info/dir
+gzip -9 $PKG/usr/info/*
+gzip $PKG/usr/man/man?/*
+( cd $PKG/usr/doc
+ mv gettext gettext-tools-$VERSION
+ cd gettext-tools-$VERSION
+ # These take up a ton of space otherwise
+ tar cf examples.tar examples
+ bzip2 -9 examples.tar
+ rm -rf examples
+ # Move the HTML docs into a subdirectory:
+ mkdir html
+ mv *.html html
+ # This file isn't in the package, but it's in one you have to install,
+ # or there will be bigger problems than this dead link:
+ rm -f ABOUT-NLS
+ ln -sf /usr/share/gettext/ABOUT-NLS .
+)
+cp -a \
+ AUTHORS ../COPYING INSTALL NEWS README \
+ $PKG/usr/doc/gettext-tools-$VERSION
+mkdir -p $PKG/install
+cat $CWD/slack-desc.gettext-tools > $PKG/install/slack-desc
+
+cd $PKG
+makepkg -l y -c n $TMP/gettext-tools-$VERSION-$ARCH-$BUILD.txz
+
diff --git a/source/a/gettext/gettext.SlackBuild b/source/a/gettext/gettext.SlackBuild
new file mode 100755
index 00000000..bdc269c5
--- /dev/null
+++ b/source/a/gettext/gettext.SlackBuild
@@ -0,0 +1,98 @@
+#!/bin/sh
+
+# Copyright 2005-2009 Patrick J. Volkerding, Sebeka, Minnesota, USA
+# All rights reserved.
+#
+# Redistribution and use of this script, with or without modification, is
+# permitted provided that the following conditions are met:
+#
+# 1. Redistributions of this script must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# 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.
+
+VERSION=0.17
+ARCH=${ARCH:-x86_64}
+BUILD=${BUILD:-2}
+
+CWD=$(pwd)
+TMP=${TMP:-/tmp}
+PKG=$TMP/package-gettext
+
+if [ "$ARCH" = "i386" ]; then
+ SLKCFLAGS="-O2 -march=i386 -mcpu=i686"
+ LIBDIRSUFFIX=""
+elif [ "$ARCH" = "i486" ]; then
+ SLKCFLAGS="-O2 -march=i486 -mtune=i686"
+ LIBDIRSUFFIX=""
+elif [ "$ARCH" = "s390" ]; then
+ SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
+elif [ "$ARCH" = "x86_64" ]; then
+ SLKCFLAGS="-O2 -fPIC"
+ LIBDIRSUFFIX="64"
+fi
+
+rm -rf $PKG
+mkdir -p $TMP $PKG
+cd $TMP
+rm -rf gettext-$VERSION
+tar xjvf $CWD/gettext-$VERSION.tar.bz2 || exit 1
+cd gettext-$VERSION
+chown -R root:root .
+find . \
+ \( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \
+ -exec chmod 755 {} \; -o \
+ \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
+ -exec chmod 644 {} \;
+
+cd gettext-runtime
+CFLAGS="$SLKCFLAGS" \
+CXXFLAGS="$SLKCFLAGS" \
+./configure \
+ --prefix=/usr \
+ --libdir=/usr/lib${LIBDIRSUFFIX} \
+ --infodir=/usr/info \
+ --mandir=/usr/man \
+ --docdir=/usr/doc/gettext-$VERSION \
+ --disable-static \
+ --build=$ARCH-slackware-linux
+
+make -j4 || exit 1
+make install DESTDIR=$PKG
+( cd $PKG
+ find . | xargs file | grep "executable" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
+ find . | xargs file | grep "shared object" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
+)
+rm -f $PKG/usr/info/dir
+gzip -9 $PKG/usr/info/*
+gzip -9 $PKG/usr/man/man?/*
+( cd $PKG/usr/doc
+ mkdir gettext-$VERSION
+ mv gettext/csharpdoc gettext/javadoc1 gettext/javadoc2 libasprintf \
+ gettext-$VERSION
+ rm -rf gettext
+ cd gettext-$VERSION
+ if [ -r $PKG/usr/share/gettext/ABOUT-NLS ]; then
+ rm -f ABOUT-NLS
+ ln -sf /usr/share/gettext/ABOUT-NLS .
+ fi
+)
+cp -a \
+ AUTHORS BUGS intl/COPYING.LIB-2.0 intl/COPYING.LIB-2.1 INSTALL NEWS README \
+ $PKG/usr/doc/gettext-$VERSION
+mkdir -p $PKG/install
+cat $CWD/slack-desc > $PKG/install/slack-desc
+
+cd $PKG
+makepkg -l y -c n $TMP/gettext-$VERSION-$ARCH-$BUILD.txz
+
diff --git a/source/a/gettext/slack-desc b/source/a/gettext/slack-desc
new file mode 100644
index 00000000..b8f30f25
--- /dev/null
+++ b/source/a/gettext/slack-desc
@@ -0,0 +1,19 @@
+# HOW TO EDIT THIS FILE:
+# The "handy ruler" below makes it easier to edit a package description. Line
+# up the first '|' above the ':' following the base package name, and the '|'
+# on the right side marks the last column you can put a character in. You must
+# make exactly 11 lines for the formatting to be correct. It's also
+# customary to leave one space after the ':'.
+
+ |-----handy-ruler------------------------------------------------------|
+gettext: gettext (internationalization framework)
+gettext:
+gettext: The GNU gettext package contains "gettext" and "ngettext", programs
+gettext: that are used to internationalize the messages given by shell scripts.
+gettext:
+gettext:
+gettext:
+gettext:
+gettext:
+gettext:
+gettext:
diff --git a/source/a/gettext/slack-desc.gettext-tools b/source/a/gettext/slack-desc.gettext-tools
new file mode 100644
index 00000000..06c32c46
--- /dev/null
+++ b/source/a/gettext/slack-desc.gettext-tools
@@ -0,0 +1,19 @@
+# HOW TO EDIT THIS FILE:
+# The "handy ruler" below makes it easier to edit a package description. Line
+# up the first '|' above the ':' following the base package name, and the '|'
+# on the right side marks the last column you can put a character in. You must
+# make exactly 11 lines for the formatting to be correct. It's also
+# customary to leave one space after the ':'.
+
+ |-----handy-ruler------------------------------------------------------|
+gettext-tools: gettext-tools (internationalization framework tools)
+gettext-tools:
+gettext-tools: The GNU gettext-tools package is useful for authors and maintainers of
+gettext-tools: internationalized software, or for anyone compiling programs that
+gettext-tools: use the gettext functions. This package provides the needed tools and
+gettext-tools: library functions for the handling of messages in different languages.
+gettext-tools: Some other GNU packages use the gettext program (included in this
+gettext-tools: package) to internationalize the messages given by shell scripts.
+gettext-tools:
+gettext-tools:
+gettext-tools:
diff --git a/source/a/getty-ps/getty-ps.SlackBuild b/source/a/getty-ps/getty-ps.SlackBuild
new file mode 100755
index 00000000..76e4012d
--- /dev/null
+++ b/source/a/getty-ps/getty-ps.SlackBuild
@@ -0,0 +1,79 @@
+#!/bin/sh
+
+# Copyright 2008, 2009 Patrick J. Volkerding, Sebeka, Minnesota, USA
+# All rights reserved.
+#
+# Redistribution and use of this script, with or without modification, is
+# permitted provided that the following conditions are met:
+#
+# 1. Redistributions of this script must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# 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.
+
+
+VERSION=2.1.0b
+ARCH=${ARCH:-x86_64}
+BUILD=${BUILD:-1}
+
+CWD=$(pwd)
+TMP=${TMP:-/tmp}
+PKG=$TMP/package-getty-ps
+
+rm -rf $PKG
+mkdir -p $TMP $PKG
+
+cd $TMP
+tar xzvf $CWD/getty_ps-$VERSION.tar.gz
+cd getty_ps-$VERSION
+zcat $CWD/getty.bugfixes.diff.gz | patch -p1 --verbose || exit
+# Prevent "error: conflicting types for 'send'"
+# because send is already defined in <sys/net.h>
+sed -i -e "s/send/gettysend/g" funcs.c
+chown -R root:root .
+make clean
+rm getty uugetty
+make
+strip getty uugetty
+mkdir $PKG/sbin
+cat getty > $PKG/sbin/getty
+cat uugetty > $PKG/sbin/uugetty
+chmod 755 $PKG/sbin/*
+mkdir $PKG/etc
+cat Examples/gettydefs > $PKG/etc/gettydefs
+#cat Examples/ttytype > $PKG/etc/ttytype
+mkdir $PKG/etc/default
+cp -a Examples/default/* $PKG/etc/default
+chown root:root $PKG/etc/default/*
+mkdir -p $PKG/usr/man/man1
+cat man/getty.1 | gzip -9c > $PKG/usr/man/man1/getty.1.gz
+( cd $PKG/usr/man/man1 ; ln -sf getty.1.gz uugetty.1.gz )
+mkdir -p $PKG/usr/man/man5
+cat man/gettydefs.5 | gzip -9c > $PKG/usr/man/man5/gettydefs.5.gz
+mkdir -p $PKG/usr/doc/getty-ps-$VERSION
+cp -a \
+ ANNOUNCE ChangeLog README.* Examples *.lsm INSTALL \
+ $PKG/usr/doc/getty-ps-$VERSION
+find $PKG/usr/doc/getty-ps-$VERSION -type d -exec chmod 755 {} \;
+find $PKG/usr/doc/getty-ps-$VERSION -type f -exec chmod 644 {} \;
+mkdir -p $PKG/install
+cat $CWD/slack-desc > $PKG/install/slack-desc
+
+# Build the package:
+cd $PKG
+makepkg -l y -c n $TMP/getty-ps-$VERSION-$ARCH-$BUILD.txz
+
+# Clean up the extra stuff:
+if [ "$1" = "--cleanup" ]; then
+ rm -rf $TMP/getty_ps-$VERSION
+ rm -rf $PKG
+fi
diff --git a/source/a/getty-ps/getty.bugfixes.diff b/source/a/getty-ps/getty.bugfixes.diff
new file mode 100644
index 00000000..6a1ed29e
--- /dev/null
+++ b/source/a/getty-ps/getty.bugfixes.diff
@@ -0,0 +1,356 @@
+This patch contains the following bugfixes:
+
+* the TIMEOUT (and -t flag) has now different effect for getty and uugetty:
+ with uugetty, TIMEOUT set will now cause uugetty exit no matter whether
+ there has been any input from the user (the counting will start immediately
+ after login() has been spawned - pre- getty-2.1.0 behavior), while for
+ getty, it will make the counter start after single input has been detected
+ from the user
+ * getty.1 manpage updated accordingly
+
+* @F issue substitution now works as expected
+
+* @V / VERSION functionality documentation fix in getty.1 manpage
+
+* fixed a bunch of memleaks (if not all):
+ * Fputs() made strdup()-free (we now use static structs where possible)
+ * avoided unnecessary dual strdup() for Version in defs()
+ * freeing of "DEF **def" including its internals is now handled, as well as
+ feeing of other variables in defs() pointing to strdup()ed memory areas
+
+Jan Rafaj
+
+--- ./man/getty.1.orig 2002-09-13 09:05:03.000000000 +0200
++++ ./man/getty.1 2005-07-21 10:24:53.000000000 +0200
+@@ -307,7 +307,18 @@
+ to exit (which
+ .I init
+ should then respawn), if the login is not completed within timeout seconds
+-(after the login name is entered)
++(after the login name is entered). This option behaves differently for
++.I getty
++and
++.I uugetty.
++If
++.I getty
++is used, the counting will start after single input from the user has been
++detected, whileas with
++.I uugetty,
++the counting will start immediately after
++.IR login (1m)
++has been spawned, no matter the input from the user.
+
+ Giving
+ .B \-w
+@@ -388,9 +399,12 @@
+ If
+ .I string
+ begins with a '/' character, it is assumed to be the full pathname of a
+-file, and
++text file, and
+ .B @V
+-is set to be the contents of that file. The default is /proc/version.
++is set to be the contents of the first line in that file (line has to be
++terminated by newline character or by end of file).
++.br
++The default is /proc/version.
+ .TP
+ LOGIN=\fIname\fR
+ Sets the name of the login program to
+@@ -503,6 +517,14 @@
+ to exit if no user name is accepted before the
+ .I number
+ of seconds elapse after the login prompt is displayed.
++With
++.I getty,
++the counting will start as soon as a single character
++has been entered by the user, whileas with
++.I uugetty,
++the counting will start immediately after the login prompt
++is displayed, no matter the input from the user.
++.br
+ The default is to wait indefinitely for the user name.
+ .TP
+ CONNECT=\fIstring\fR
+@@ -865,6 +887,11 @@
+ .IR cu (1)
+ and others). This prevents two or more processes from having conficting
+ use of a tty port.
++.br
++.I Uugetty
++also differs from
++.I getty
++by handling the -t parameter and TIMEOUT option.
+ .PP
+ When
+ .I uugetty
+--- ./main.c.orig 2004-04-11 03:34:34.000000000 +0200
++++ ./main.c 2005-07-21 11:37:19.000000000 +0200
+@@ -78,6 +78,8 @@
+ void debugstart();
+ #endif /* DEBUG */
+
++DEF **def;
++
+ /* trivial globals */
+
+ char buf[MAXLINE];
+@@ -86,7 +88,7 @@
+ char tbuf[64];
+
+ #define Perror(s) { debug(D_INIT, "Line %d: %s: Error %d: %s\n", \
+- __LINE__, s, errno, sys_errlist[errno]); \
++ __LINE__, s, errno, strerror(errno)); \
+ exit(errno); \
+ }
+
+@@ -149,6 +151,50 @@
+ }
+ }
+
++/*
++ * Why a lot of programmers ignore the fact that memory area returned
++ * by strdup() and *alloc() has to be freed upon exit? :(( -JR
++ */
++void free_def(void)
++{
++ register DEF **deflist = def;
++
++ for (; *deflist != (DEF *)NULL; deflist++) {
++ free((*deflist)->name);
++ free((*deflist)->value);
++ free(*deflist);
++ }
++}
++
++void free_sysname(void)
++{
++ if (SysName)
++ free(SysName);
++ SysName = NULL;
++}
++
++void free_version(void)
++{
++ if (Version)
++ free(Version);
++ Version = NULL;
++}
++
++#ifdef UUGETTY
++void free_lock(void)
++{
++ if (lock)
++ free(lock);
++ lock = NULL;
++}
++
++void free_altlock(void)
++{
++ if (altlock)
++ free(altlock);
++ altlock = NULL;
++}
++#endif
+
+ /*
+ ** main
+@@ -320,7 +366,6 @@
+ char **args;
+ {
+ register int c;
+- DEF **def;
+ char *p;
+ char termcap[1024];
+
+@@ -416,22 +461,27 @@
+ /* now, get all that info in the defaults file */
+
+ def = defbuild(defname);
++ atexit(free_def);
+ #ifdef DEBUG
+ if ((p = defvalue(def, "DEBUG"))) (void) sscanf(p, "%o", &Debug);
+ if (Debug) debugstart();
+ #endif /* DEBUG */
+ SysName = strdup(getuname());
++ atexit(free_sysname);
+ if (p = defvalue(def, "SYSTEM")) SysName = p;
+- if (p = defvalue(def, "VERSION"))
+- Version = strdup(p);
+- if (*Version == '/')
+- { if ((fp = fopen(Version, "r")))
+- { fgets(buf, MAXLINE, fp);
+- fclose(fp);
+- buf[strlen(buf)-1] = '\0';
+- Version = strdup(buf);
++ if (p = defvalue(def, "VERSION")) {
++ if (*p == '/') {
++ if ((fp = fopen(p, "r"))) {
++ fgets(buf, MAXLINE, fp);
++ fclose(fp);
++ buf[strlen(buf)-1] = '\0';
++ Version = strdup(buf);
+ }
+- }
++ } else {
++ Version = strdup(p);
++ }
++ atexit(free_version);
++ }
+ if((p = defvalue(def, "LOGIN"))) login_pgm = p;
+ if((p = defvalue(def, "ISSUE"))) issue = p;
+ if((p = defvalue(def, "CLEAR")) && (strequal(p, "NO")))
+@@ -489,12 +539,15 @@
+ #ifdef UUGETTY
+ (void) sprintf(buf, LOCK, Device);
+ lock = strdup(buf);
++ atexit(free_lock);
+ if((p = defvalue(def, "ALTLOCK"))) {
+ (void) sprintf(buf, LOCK, p);
+ altlock = strdup(buf);
++ atexit(free_altlock);
+ } else if(! strequal(Device, InitDevice)) {
+ (void) sprintf(buf, LOCK, InitDevice);
+ altlock = strdup(buf);
++ atexit(free_altlock);
+ }
+
+ debug(D_LOCK, "lock = (%s), altlock = (%s)", lock, altlock);
+@@ -625,8 +678,8 @@
+ with the uts struct filled above.
+ */
+
+- debug(D_UTMP, "adding utmp entry: type: %d, pid: %d, line: %s,
+- id: %c%c, time: %d, user: %s, host: %s, addr: %d",
++ debug(D_UTMP, "adding utmp entry: type: %d, pid: %d, line: %s, "
++ "id: %c%c, time: %d, user: %s, host: %s, addr: %d",
+ uts.ut_type, uts.ut_pid, uts.ut_line,
+ (uts.ut_id[0] ? uts.ut_id[0] : ' '),
+ (uts.ut_id[1] ? uts.ut_id[1] : ' '),
+@@ -1077,16 +1130,20 @@
+ login_prompt:
+ (void) ioctl(STDIN, TCFLSH, 0);
+ #ifdef FIDO
+- if (emsi && (strcmp(emsi,"yes") == 0))
+- (void) Fputs("**EMSI_REQA77E\r", stdout);
++ if (emsi && (strcmp(emsi,"yes") == 0))
++ (void) Fputs("**EMSI_REQA77E\r", stdout);
+ #endif
+ (void) Fputs(gtab->login, stdout);
+-
++#ifndef UUGETTY
+ login_result=getlogname(&termio, buf, MAXLINE);
++#endif
+ if(TimeOut > 0) {
+ (void) signal(SIGALRM, timeout);
+ (void) alarm((unsigned) TimeOut);
+ }
++#ifdef UUGETTY
++ login_result=getlogname(&termio, buf, MAXLINE);
++#endif
+
+ switch(login_result) {
+ #ifdef FIDO
+@@ -1114,6 +1171,13 @@
+ #ifdef SETTERM
+ setenv("TERM", term, TRUE);
+ #endif /* SETTERM */
++ free_def();
++ free_sysname();
++ free_version();
++#ifdef UUGETTY
++ free_lock();
++ free_altlock();
++#endif
+ debug(D_RUN, "execing login");
+ (void) execl(login_pgm,
+ "login", buf, NULLPTR);
+--- ./funcs.c.orig 2002-09-25 08:43:28.000000000 +0200
++++ ./funcs.c 2005-07-20 19:01:55.000000000 +0200
+@@ -87,12 +87,11 @@
+ register char *s;
+ register FILE *stream;
+ {
+- char c, n, tbuf[20], ubuf[MAXBUF];
+- char *cbuf;
++ char c, n, tbuf[20];
+ time_t clock;
+ struct tm *lt;
+- struct utsname utsbuf;
+- struct hostent *fqdname;
++ static struct utsname utsbuf;
++ static struct hostent *fqdname;
+ FILE *fp1;
+
+ char *day_name[] = { "Sun", "Mon", "Tue", "Wed", "Thur", "Fri", "Sat" };
+@@ -119,21 +118,8 @@
+ return(EOF);
+ break;
+ case 'F': /* FQDName */
+- cbuf = strdup(SysName);
+-#if 0 /* The does a seg violation - no idea why.... */
+ fqdname = gethostbyname(SysName);
+-#endif
+-#if 0 /* So, we cheat.....! */
+- /* Which also gets a seg violation! */
+- if (fp1 = fopen("/etc/HOSTNAME", "r"))
+- { fgets(cbuf, MAXBUF, fp1);
+- fclose(fp1);
+- cbuf[strlen(cbuf)] = '\0';
+- }
+- if (fqdname != NULL)
+- cbuf = strdup(fqdname->h_name);
+-#endif
+- if (Fputs(cbuf, stream) == EOF)
++ if (fqdname && Fputs(fqdname->h_name, stream) == EOF)
+ return(EOF);
+ break;
+ case 'L': /* line */
+@@ -141,18 +127,15 @@
+ return(EOF);
+ break;
+ case 'M': /* arch of machine */
+- cbuf = strdup(utsbuf.machine);
+- if (Fputs(cbuf, stream) == EOF)
++ if (Fputs(utsbuf.machine, stream) == EOF)
+ return(EOF);
+ break;
+ case 'O': /* O/S name */
+- cbuf = strdup(utsbuf.sysname);
+- if (Fputs(cbuf, stream) == EOF)
++ if (Fputs(utsbuf.sysname, stream) == EOF)
+ return(EOF);
+ break;
+ case 'R': /* O/S rev_id */
+- cbuf = strdup(utsbuf.release);
+- if (Fputs(cbuf, stream) == EOF)
++ if (Fputs(utsbuf.release, stream) == EOF)
+ return(EOF);
+ break;
+ case 'S': /* system node name */
+@@ -166,8 +149,8 @@
+ return(EOF);
+ break;
+ case 'U': /* number of active users */
+- (void) sprintf(ubuf, "%d", Nusers);
+- if (Fputs(ubuf, stream) == EOF)
++ (void) sprintf(tbuf, "%d", Nusers);
++ if (Fputs(tbuf, stream) == EOF)
+ return(EOF);
+ break;
+ case 'V': /* version */
+@@ -175,12 +158,10 @@
+ return(EOF);
+ break;
+ case 'u': /* user count str */
+- cbuf = malloc(20);
+ (void) sprintf(tbuf, "%d User", Nusers);
+ if (Nusers > 1)
+- cbuf = strcat(tbuf,"s");
+- else cbuf=strdup(tbuf);
+- if (Fputs(cbuf, stream) == EOF)
++ strcat(tbuf, "s");
++ if (Fputs(tbuf, stream) == EOF)
+ return(EOF);
+ break;
+ case '@': /* in case '@@' was used */
diff --git a/source/a/getty-ps/getty_ps-2.1.0.lsm b/source/a/getty-ps/getty_ps-2.1.0.lsm
new file mode 100644
index 00000000..b89d9f50
--- /dev/null
+++ b/source/a/getty-ps/getty_ps-2.1.0.lsm
@@ -0,0 +1,26 @@
+Begin4
+Title: getty-ps
+Version: 2.1.0
+Entered-date: 27SEP02
+Description: A versatile getty/uugetty program designed to allow easy
+ use of a modem for incoming/outgoing data/fax/voice calls.
+ It also allows easy set-up of regular login ports. Unlike
+ agetty, it stores most of it's configuration and port
+ initialization information in up to 2 files. This usually
+ results in slightly more involved initial installation, but
+ easier maintenance than agetty. It also leaves the
+ inittab entries looking uncluttered. Supports 57600 and
+ faster speeds, and is compatible with uucp and efax-0.9[a].
+ Ringback is provided as an optional feature.
+Keywords: getty uugetty serial modem ringback efax uucp
+Author: Paul Sutcliffe, Jr.
+Maintained-by: Christine Jamison <getty-info@nwmagic.net>
+Primary-site: ftp.ibiblio.org:/pub/Linux/system/serial/getty_ps-2.1.0.tar.gz
+Alternate-site: ftp.nwmagic.net:/pub/sources/getty_ps-2.1.0.tar.gz
+Original-site: Unknown
+Platforms: Linux (tested on 1.0.x-2.4.5, Slackware 4.0 thru 8.1); should
+ compile and work on almost any Unix, after library
+ compatibility is resolved and paths are checked in tune.h;
+ compiles clean with gcc 2.7.2.3 & 2.95.3.
+Copying-policy: FRS
+End
diff --git a/source/a/getty-ps/slack-desc b/source/a/getty-ps/slack-desc
new file mode 100644
index 00000000..dda6cf7a
--- /dev/null
+++ b/source/a/getty-ps/slack-desc
@@ -0,0 +1,19 @@
+# HOW TO EDIT THIS FILE:
+# The "handy ruler" below makes it easier to edit a package description. Line
+# up the first '|' above the ':' following the base package name, and the '|'
+# on the right side marks the last column you can put a character in. You must
+# make exactly 11 lines for the formatting to be correct. It's also
+# customary to leave one space after the ':'.
+
+ |-----handy-ruler------------------------------------------------------|
+getty-ps: getty-ps (console or terminal login)
+getty-ps:
+getty-ps: /sbin/getty and /sbin/uugetty.
+getty-ps: These control the process of logging into your system, and may be used
+getty-ps: instead of 'agetty', which is the default getty included with the
+getty-ps: util-linux package. getty-ps supports a number of enhancements such as
+getty-ps: ringback support.
+getty-ps:
+getty-ps: getty-ps was originally written by Paul Sutcliffe, Jr, and is
+getty-ps: currently maintained by Christine Jamison.
+getty-ps:
diff --git a/source/a/gpm/gpm-1.20.1-consolename.patch b/source/a/gpm/gpm-1.20.1-consolename.patch
new file mode 100644
index 00000000..c5879fb4
--- /dev/null
+++ b/source/a/gpm/gpm-1.20.1-consolename.patch
@@ -0,0 +1,18 @@
+--- gpm-1.20.1/src/lib/liblow.c.orig 2004-10-13 16:34:15.181502369 -0400
++++ gpm-1.20.1/src/lib/liblow.c 2004-10-13 16:34:20.491778415 -0400
+@@ -262,13 +262,14 @@
+ gpm_report(GPM_PR_ERR,"consolename not set");
+ goto err;
+ }
++#if 0
+ /* do we really need this check ? */
+ if(strncmp(tty,consolename,strlen(consolename)-1)
+ || !isdigit(tty[strlen(consolename)-1])) {
+ gpm_report(GPM_PR_ERR,"strncmp/isdigit/consolename failed");
+ goto err;
+ }
+-
++#endif
+ conn->vc=atoi(&tty[strlen(consolename)-1]);
+ }
+
diff --git a/source/a/gpm/gpm-1.20.1-gpmopen.patch b/source/a/gpm/gpm-1.20.1-gpmopen.patch
new file mode 100644
index 00000000..f36ad939
--- /dev/null
+++ b/source/a/gpm/gpm-1.20.1-gpmopen.patch
@@ -0,0 +1,22 @@
+--- gpm-1.20.1/src/lib/liblow.c.gpmopen 2004-05-04 17:36:09.000000000 -0400
++++ gpm-1.20.1/src/lib/liblow.c 2004-05-04 17:42:51.000000000 -0400
+@@ -200,8 +200,6 @@
+ Gpm_Stst *new = NULL;
+ char* sock_name = 0;
+
+- consolename = NULL;
+-
+ #if 0
+ gpm_report(GPM_PR_DEBUG,"VC: %d",flag);
+ #endif
+@@ -260,6 +258,10 @@
+ gpm_report(GPM_PR_ERR,"checking tty name failed");
+ goto err;
+ }
++ if (consolename == NULL) {
++ gpm_report(GPM_PR_ERR,"consolename not set");
++ goto err;
++ }
+ /* do we really need this check ? */
+ if(strncmp(tty,consolename,strlen(consolename)-1)
+ || !isdigit(tty[strlen(consolename)-1])) {
diff --git a/source/a/gpm/gpm-1.20.1-idie.patch b/source/a/gpm/gpm-1.20.1-idie.patch
new file mode 100644
index 00000000..4594f078
--- /dev/null
+++ b/source/a/gpm/gpm-1.20.1-idie.patch
@@ -0,0 +1,12 @@
+--- gpm-1.20.1/src/lib/liblow.c.orig 2004-05-06 14:14:03.000000000 -0400
++++ gpm-1.20.1/src/lib/liblow.c 2004-05-06 14:18:05.000000000 -0400
+@@ -376,7 +376,9 @@
+
+ /*....................................... Error: free all memory */
+ err:
++#if 0
+ gpm_report(GPM_PR_ERR,"Oh, oh, it's an error! possibly I die! ");
++#endif
+ do {
+ new=gpm_stack->next;
+ free(gpm_stack);
diff --git a/source/a/gpm/gpm-1.20.1-input-defines.diff b/source/a/gpm/gpm-1.20.1-input-defines.diff
new file mode 100644
index 00000000..4a925a6a
--- /dev/null
+++ b/source/a/gpm/gpm-1.20.1-input-defines.diff
@@ -0,0 +1,26 @@
+--- ./src/headers/input-defines.h.orig 2006-12-11 19:56:14.000000000 -0600
++++ ./src/headers/input-defines.h 2006-12-11 19:59:30.000000000 -0600
+@@ -59,23 +59,4 @@
+ #define PSMOUSE_SYNAPTICS 7
+ #endif
+
+-#ifndef HAVE_INPUT_ID
+-struct input_id {
+- unsigned short bustype;
+- unsigned short vendor;
+- unsigned short product;
+- unsigned short version;
+-};
+-#endif
+-
+-#ifndef HAVE_INPUT_ABSINFO
+-struct input_absinfo {
+- int value;
+- int minimum;
+- int maximum;
+- int fuzz;
+- int flat;
+-};
+-#endif
+-
+ #endif
diff --git a/source/a/gpm/gpm-1.20.1-input.patch b/source/a/gpm/gpm-1.20.1-input.patch
new file mode 100644
index 00000000..152e6038
--- /dev/null
+++ b/source/a/gpm/gpm-1.20.1-input.patch
@@ -0,0 +1,16 @@
+diff -ur gpm-1.20.1.orig/src/headers/config.h.in gpm-1.20.1/src/headers/config.h.in
+--- gpm-1.20.1.orig/src/headers/config.h.in 2004-09-04 10:24:11.000000000 -0400
++++ gpm-1.20.1/src/headers/config.h.in 2004-09-04 10:26:02.000000000 -0400
+@@ -46,6 +46,12 @@
+ /* Define if you have the <linux/input.h> header file. */
+ #undef HAVE_LINUX_INPUT_H
+
++/* Definedif you have the input_id structure */
++#undef HAVE_INPUT_ID
++
++/* Definedif you have the input_absinfo structure */
++#undef HAVE_INPUT_ABSINFO
++
+ /* Define if you have the <linux/joystick.h> header file. */
+ #undef HAVE_LINUX_JOYSTICK_H
+
diff --git a/source/a/gpm/gpm-1.20.1-lib-silent.patch b/source/a/gpm/gpm-1.20.1-lib-silent.patch
new file mode 100644
index 00000000..099075b5
--- /dev/null
+++ b/source/a/gpm/gpm-1.20.1-lib-silent.patch
@@ -0,0 +1,19 @@
+--- gpm-1.20.1/src/lib/report-lib.c.lib-silent 2002-12-24 23:57:16.000000000 +0100
++++ gpm-1.20.1/src/lib/report-lib.c 2006-01-18 17:55:38.000000000 +0100
+@@ -24,8 +24,16 @@
+
+ #include "headers/message.h"
+
++static int gpm_silent() {
++ if ( getenv( "GPM_VERBOSE" ) == NULL ) return 1;
++ return 0;
++}
++
+ void gpm_report(int line, char *file, int stat, char *text, ... )
+ {
++ if ( gpm_silent() && stat != GPM_STAT_OOPS )
++ return;
++
+ char *string = NULL;
+ va_list ap;
+ va_start(ap,text);
diff --git a/source/a/gpm/gpm-1.20.1-math.patch b/source/a/gpm/gpm-1.20.1-math.patch
new file mode 100644
index 00000000..634a5fd8
--- /dev/null
+++ b/source/a/gpm/gpm-1.20.1-math.patch
@@ -0,0 +1,11 @@
+--- gpm-1.20.1/configure.in.math Tue Jun 24 10:52:44 2003
++++ gpm-1.20.1/configure.in Tue Jun 24 10:53:54 2003
+@@ -128,7 +128,7 @@
+ AC_SUBST(lispdir)
+
+ CPPFLAGS='-I$(srcdir) $(DEFS) -include headers/config.h -Wall -DSYSCONFDIR="\"$(sysconfdir)\"" -DSBINDIR="\"$(sbindir)\""'
+-LDFLAGS='-L$(srcdir)'
++LDFLAGS='-lm -L$(srcdir)'
+
+ dnl AC_DEFINE_UNQUOTED(SYSCONFDIR,"$sysconfdir")
+ dnl AC_DEFINE_UNQUOTED(SBINDIR,"$sbindir")
diff --git a/source/a/gpm/gpm-1.20.1-multilib.patch b/source/a/gpm/gpm-1.20.1-multilib.patch
new file mode 100644
index 00000000..723ee2b5
--- /dev/null
+++ b/source/a/gpm/gpm-1.20.1-multilib.patch
@@ -0,0 +1,52 @@
+--- gpm-1.20.1/doc/Makefile.in.multilib 2002-12-24 17:57:16.000000000 -0500
++++ gpm-1.20.1/doc/Makefile.in 2004-10-20 17:25:11.000000000 -0400
+@@ -97,7 +97,7 @@
+
+ # Main portion
+
+-all: $(srcdir)/gpm.info $(MANPAGES)
++all: gpm.info $(MANPAGES)
+
+ # why gpmdoc.ps and gpm.ps??
+ # there is no gpm.ps in my tree and no rule to generate gpm.ps.
+@@ -131,8 +131,8 @@
+ #i keep all my infopages compressed and i'm tired to do it by
+ #hand, so check if there are any compressed pages and do this
+ #one too
+- -ls $(infodir)/*[-.]info.gz >/dev/null 2>&1 \
+- && gzip -f $(infodir)/gpm.info
++ #-ls $(infodir)/*[-.]info.gz >/dev/null 2>&1 \
++ # && gzip -f $(infodir)/gpm.info
+ # Hmm.... shouldn't man pages be compressed too?
+ # maybe they should, but at least at my system they are not.
+
+--- gpm-1.20.1/contrib/Makefile.in.multilib 2002-12-24 17:57:16.000000000 -0500
++++ gpm-1.20.1/contrib/Makefile.in 2004-10-20 17:11:38.000000000 -0400
+@@ -9,10 +9,10 @@
+
+ include $(top_builddir)/Makefile.include
+
+-all: $(srcdir)/$(ELISP)
++all: $(filter-out %.elc,$(srcdir)/$(ELISP))
+
+ install: all
+- if [ -n "$(ELISP)" ]; then for i in `echo $(ELISP)`; do \
++ if [ -n "$(filter-out %.elc,$(ELISP))" ]; then for i in `echo $(filter-out %.elc,$(ELISP))`; do \
+ $(INSTALL_DATA) $(srcdir)/$$i $(lispdir)/`basename $$i` ;\
+ done; fi
+
+@@ -20,7 +20,7 @@
+ $(EMACS) -batch -l $(srcdir)/emacs/exec.el -exec '(byte-compile-file "$<")'
+
+ uninstall:
+- if [ -n "$(ELISP)" ]; then for i in `echo $(ELISP)`; do \
++ if [ -n "$(filter-out %.elc,$(ELISP))" ]; then for i in `echo $(filter-out %.elc,$(ELISP))`; do \
+ rm -f $(lispdir)/$$i ;\
+ done; fi
+
+@@ -28,4 +28,4 @@
+ $(CP) -r $(srcdir) $(top_builddir)/gpm-$(release)/
+
+ clean distclean:
+- $(RM) -f $(srcdir)/emacs/*.elc
++ $(RM) $(srcdir)/emacs/*.elc
diff --git a/source/a/gpm/gpm-1.20.1-no-console-error.patch b/source/a/gpm/gpm-1.20.1-no-console-error.patch
new file mode 100644
index 00000000..20c177b4
--- /dev/null
+++ b/source/a/gpm/gpm-1.20.1-no-console-error.patch
@@ -0,0 +1,15 @@
+--- gpm-1.20.1/src/console.c.no-console-error 2006-01-18 17:06:15.000000000 +0100
++++ gpm-1.20.1/src/console.c 2006-01-18 17:08:19.000000000 +0100
+@@ -249,8 +249,10 @@
+ /* Failed, try OLD console */
+ else if (stat(GPM_OLD_CONSOLE, &buf) == 0)
+ console.device = GPM_OLD_CONSOLE;
+- else
+- gpm_report(GPM_PR_OOPS, "Can't determine console device");
++ else { // XXX handle this gracefully?
++ fprintf( stderr, "no console device found" );
++ exit( 1 );
++ }
+
+ return console.device;
+ }
diff --git a/source/a/gpm/gpm-1.20.1-nodebug.patch b/source/a/gpm/gpm-1.20.1-nodebug.patch
new file mode 100644
index 00000000..945b576c
--- /dev/null
+++ b/source/a/gpm/gpm-1.20.1-nodebug.patch
@@ -0,0 +1,12 @@
+--- gpm-1.20.1/src/lib/liblow.c.orig 2004-03-31 15:06:45.000000000 -0500
++++ gpm-1.20.1/src/lib/liblow.c 2004-03-31 15:09:32.000000000 -0500
+@@ -202,7 +202,9 @@
+
+ consolename = NULL;
+
++#if 0
+ gpm_report(GPM_PR_DEBUG,"VC: %d",flag);
++#endif
+
+ /*....................................... First of all, check xterm */
+
diff --git a/source/a/gpm/gpm-1.20.1-subscript.patch b/source/a/gpm/gpm-1.20.1-subscript.patch
new file mode 100644
index 00000000..bf4ca75b
--- /dev/null
+++ b/source/a/gpm/gpm-1.20.1-subscript.patch
@@ -0,0 +1,11 @@
+--- gpm-1.20.1/src/mice.c.lr 2004-02-15 09:19:48.000000000 +0100
++++ gpm-1.20.1/src/mice.c 2004-02-15 09:22:18.000000000 +0100
+@@ -2112,7 +2112,7 @@
+ for (i=0; i<4; i++)
+ if (gunze_calib[i] & ~1023) calibok = 0;
+ if (gunze_calib[0] == gunze_calib[2]) calibok = 0;
+- if (gunze_calib[1] == gunze_calib[4]) calibok = 0;
++ if (gunze_calib[1] == gunze_calib[3]) calibok = 0;
+ fclose(f);
+ }
+ if (!calibok) {
diff --git a/source/a/gpm/gpm-1.20.1-weak-wgetch.patch b/source/a/gpm/gpm-1.20.1-weak-wgetch.patch
new file mode 100644
index 00000000..81e6a2b5
--- /dev/null
+++ b/source/a/gpm/gpm-1.20.1-weak-wgetch.patch
@@ -0,0 +1,38 @@
+--- gpm-1.20.1/src/lib/libcurses.c.weak-wgetch 2002-12-24 17:57:16.000000000 -0500
++++ gpm-1.20.1/src/lib/libcurses.c 2004-03-22 15:51:24.000000000 -0500
+@@ -41,7 +41,12 @@
+ #endif /* HAVE_NCURSES_CURSES_H */
+ #endif /* HAVE_NCURSES_H */
+
+-#define GET(win) ((win) ? wgetch(win) : getch())
++/* If win != NULL, it must have been created by ncurses anyway.
++ Avoid circular library dependencies. */
++#pragma weak wgetch
++#pragma weak stdscr
++
++#define GET(win) ((win && wgetch) ? wgetch(win) : getch())
+
+ int Gpm_Wgetch(WINDOW *win)
+ {
+--- gpm-1.20.1/configure.in.weak-wgetch 2004-03-22 15:49:51.000000000 -0500
++++ gpm-1.20.1/configure.in 2004-03-22 15:51:24.000000000 -0500
+@@ -115,7 +115,7 @@
+ AC_CHECK_LIB($i, wgetch,,,$TERMLIBS)
+ else :; fi
+ done
+- SHARED_LIBS="$LIBS $TERMLIBS -lc"
++ SHARED_LIBS="-lc"
+ LIBS=$SAVELIBS ;;
+ esac
+
+--- gpm-1.20.1/configure.weak-wgetch 2004-03-22 15:49:55.000000000 -0500
++++ gpm-1.20.1/configure 2004-03-22 15:51:24.000000000 -0500
+@@ -4295,7 +4295,7 @@
+
+ else :; fi
+ done
+- SHARED_LIBS="$LIBS $TERMLIBS -lc"
++ SHARED_LIBS="-lc"
+ LIBS=$SAVELIBS ;;
+ esac
+
diff --git a/source/a/gpm/gpm-1.20.1.send-noise-to-syslogs.diff b/source/a/gpm/gpm-1.20.1.send-noise-to-syslogs.diff
new file mode 100644
index 00000000..111e7843
--- /dev/null
+++ b/source/a/gpm/gpm-1.20.1.send-noise-to-syslogs.diff
@@ -0,0 +1,86 @@
+diff -u -r gpm-1.20.1.orig/src/report.c gpm-1.20.1/src/report.c
+--- gpm-1.20.1.orig/src/report.c 2006-08-20 14:34:30.000000000 -0500
++++ gpm-1.20.1/src/report.c 2006-08-20 14:44:54.000000000 -0500
+@@ -48,15 +48,15 @@
+ *
+ * Startup Mode:
+ * debug : - (ignore)
+- * info : syslog/stdout
+- * warn/err : syslog/stderr
++ * info : syslog
++ * warn/err : syslog
+ * oops : syslog/stderr [exit]
+ *
+ * Running Mode: (daemon)
+ * debug : - (ignore)
+ * info : syslog
+- * warn : syslog+system console
+- * err : syslog+system console+current console
++ * warn : syslog
++ * err : syslog
+ * oops : syslog/stderr [_exit]
+ *
+ * Debug Mode :
+@@ -85,9 +85,6 @@
+ syslog(LOG_INFO | LOG_USER, GPM_STRING_INFO);
+ vsyslog(LOG_INFO | LOG_USER, text, ap);
+ #endif
+- fprintf(stderr,GPM_STRING_INFO);
+- vfprintf(stderr,text,ap);
+- fprintf(stderr,"\n");
+ break;
+
+ case GPM_STAT_WARN:
+@@ -95,9 +92,6 @@
+ syslog(LOG_DAEMON | LOG_WARNING, GPM_STRING_WARN);
+ vsyslog(LOG_DAEMON | LOG_WARNING, text, ap);
+ #endif
+- fprintf(stderr,GPM_STRING_WARN);
+- vfprintf(stderr,text,ap);
+- fprintf(stderr,"\n");
+ break;
+
+ case GPM_STAT_ERR:
+@@ -105,9 +99,6 @@
+ syslog(LOG_DAEMON | LOG_ERR, GPM_STRING_ERR);
+ vsyslog(LOG_DAEMON | LOG_ERR, text, ap);
+ #endif
+- fprintf(stderr,GPM_STRING_ERR);
+- vfprintf(stderr,text,ap);
+- fprintf(stderr,"\n");
+ break;
+
+ case GPM_STAT_OOPS:
+@@ -139,12 +130,6 @@
+ syslog(LOG_DAEMON | LOG_WARNING, GPM_STRING_WARN);
+ vsyslog(LOG_DAEMON | LOG_WARNING, text, ap);
+ #endif
+- if ((f = fopen(GPM_SYS_CONSOLE, "a")) != NULL) {
+- fprintf(f, GPM_STRING_WARN);
+- vfprintf(f, text, ap);
+- fprintf(f, "\n");
+- fclose(f);
+- }
+ break;
+
+ case GPM_STAT_ERR:
+@@ -152,19 +137,6 @@
+ syslog(LOG_DAEMON | LOG_ERR, GPM_STRING_ERR);
+ vsyslog(LOG_DAEMON | LOG_ERR, text, ap);
+ #endif
+- if ((f = fopen(GPM_SYS_CONSOLE, "a")) != NULL) {
+- fprintf(f, GPM_STRING_ERR);
+- vfprintf(f, text, ap);
+- fprintf(f, "\n");
+- fclose(f);
+- }
+-
+- if ((f = fopen(console.device, "a")) != NULL) {
+- fprintf(f, GPM_STRING_ERR);
+- vfprintf(f, text, ap);
+- fprintf(f, "\n");
+- fclose(f);
+- }
+ break;
+
+ case GPM_STAT_OOPS:
diff --git a/source/a/gpm/gpm-evdev-cumulative.patch b/source/a/gpm/gpm-evdev-cumulative.patch
new file mode 100644
index 00000000..2fd86d10
--- /dev/null
+++ b/source/a/gpm/gpm-evdev-cumulative.patch
@@ -0,0 +1,7023 @@
+diff -urN gpm-1.20.1/configure.in gpm/configure.in
+--- gpm-1.20.1/configure.in 2002-12-24 17:57:16.000000000 -0500
++++ gpm/configure.in 2003-10-02 01:22:42.000000000 -0500
+@@ -61,6 +61,13 @@
+
+ AC_CHECK_HEADERS(syslog.h linux/input.h linux/joystick.h ncurses.h ncurses/curses.h curses.h)
+
++EVDEV_SRCS=
++if test ${ac_cv_header_linux_input_h} = yes ; then
++ EVDEV_SRCS=evdev.c ;
++ AC_CHECK_TYPE(struct input_absinfo,AC_DEFINE_UNQUOTED(HAVE_INPUT_ABSINFO, 1, [define if struct input_absinfo defined in linux/input.h]),,[#include <linux/input.h>])
++ AC_CHECK_TYPE(struct input_id,AC_DEFINE_UNQUOTED(HAVE_INPUT_ID, 1, [define if struct input_id defined in linux/input.h]),,[#include <linux/input.h>])
++fi
++
+ AC_ARG_WITH(curses,
+ [ --without-curses disable curses support even if curses found])
+
+@@ -124,6 +131,7 @@
+ AC_SUBST(PICFLAGS)
+ AC_SUBST(SOLDFLAGS)
+ AC_SUBST(CURSES_OBJS)
++AC_SUBST(EVDEV_SRCS)
+ AC_SUBST(SHARED_LIBS)
+ AC_SUBST(lispdir)
+
+diff -urN gpm-1.20.1/src/client.c gpm/src/client.c
+--- gpm-1.20.1/src/client.c 1969-12-31 19:00:00.000000000 -0500
++++ gpm/src/client.c 2003-10-02 01:22:42.000000000 -0500
+@@ -0,0 +1,319 @@
++/*
++ * client.c - GPM client handling (server side)
++ *
++ * Copyright (C) 1993 Andreq Haylett <ajh@gec-mrc.co.uk>
++ * Copyright (C) 1994-1999 Alessandro Rubini <rubini@linux.it>
++ * Copyright (C) 1998 Ian Zimmerman <itz@rahul.net>
++ * Copyright (c) 2001,2002 Nico Schottelius <nico@schottelius.org>
++ * Copyright (C) 2003 Dmitry Torokhov <dtor@mail.ru>
++ *
++ * 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-1307, USA.
++ ********/
++
++#include <stdio.h>
++#include <stdlib.h>
++#include <string.h> /* strerror(); ?!? */
++#include <errno.h>
++#include <unistd.h> /* select(); */
++#include <signal.h> /* SIGPIPE */
++#include <time.h> /* time() */
++#include <sys/fcntl.h> /* O_RDONLY */
++#include <sys/stat.h> /* mkdir() */
++#include <sys/time.h> /* timeval */
++#include <sys/types.h> /* socket() */
++#include <sys/socket.h> /* socket() */
++#include <sys/un.h> /* struct sockaddr_un */
++
++#include "headers/gpmInt.h"
++#include "headers/message.h"
++#include "headers/console.h"
++#include "headers/selection.h"
++#include "headers/client.h"
++
++/* who the f*** runs gpm without glibc? doesn't have dietlibc __socklent_t? */
++#if !defined(__GLIBC__)
++ typedef unsigned int __socklen_t;
++#endif /* __GLIBC__ */
++
++#ifndef max
++#define max(a,b) ((a)>(b) ? (a) : (b))
++#endif
++
++extern int errno;
++
++struct client_info *cinfo[MAX_VC + 1];
++
++/*-------------------------------------------------------------------*
++ * This was inline, and incurred in a compiler bug (2.7.0)
++ *-------------------------------------------------------------------*/
++static int get_data(int fd, Gpm_Connect *data)
++{
++ static int len;
++
++#ifdef GPM_USE_MAGIC
++ while ((len = read(whence, &check, sizeof(int))) == 4 &&
++ check != GPM_MAGIC)
++ gpm_report(GPM_PR_INFO, GPM_MESS_NO_MAGIC);
++
++ if (len == 0) return 0;
++
++ if (check != GPM_MAGIC) {
++ gpm_report(GPM_PR_INFO, GPM_MESS_NOTHING_MORE);
++ return -1;
++ }
++#endif
++
++ len = read(fd, data, sizeof(Gpm_Connect));
++
++ return len ? (len == sizeof(Gpm_Connect) ? 1 : -1) : 0;
++}
++
++/*-------------------------------------------------------------------*/
++int listen_for_clients(void)
++{
++ struct sockaddr_un ctladdr;
++ int fd, len;
++
++ unlink(GPM_NODE_CTL);
++
++ if ((fd = socket(AF_UNIX, SOCK_STREAM, 0)) == -1)
++ gpm_report(GPM_PR_OOPS, GPM_MESS_SOCKET_PROB);
++
++ memset(&ctladdr, 0, sizeof(ctladdr));
++ ctladdr.sun_family = AF_UNIX;
++ strcpy(ctladdr.sun_path, GPM_NODE_CTL);
++ len = sizeof(ctladdr.sun_family) + strlen(GPM_NODE_CTL);
++
++ if (bind(fd, (struct sockaddr *)&ctladdr, len) == -1)
++ gpm_report(GPM_PR_OOPS, GPM_MESS_BIND_PROB, ctladdr.sun_path);
++
++ /* needs to be 0777, so all users can _try_ to access gpm */
++ chmod(GPM_NODE_CTL, 0777);
++ listen(fd, 5); /* Queue up calls */
++
++ return fd;
++}
++
++/*-------------------------------------------------------------------*/
++struct client_info *accept_client_connection(int fd)
++{
++ struct client_info *info;
++ Gpm_Connect *request;
++ int newfd;
++#if !defined(__GLIBC__)
++ int len;
++#else /* __GLIBC__ */
++ size_t len; /* isn't that generally defined in C ??? -- nico */
++#endif /* __GLIBC__ */
++ struct sockaddr_un addr; /* reuse this each time */
++#ifndef SO_PEERCRED
++ struct stat statbuf;
++ time_t staletime;
++#endif
++ uid_t uid;
++
++ /*....................................... Accept */
++ memset(&addr, 0, sizeof(addr));
++ addr.sun_family = AF_UNIX;
++
++ len = sizeof(addr);
++ if ((newfd = accept(fd, (struct sockaddr *)&addr, &len)) < 0) {
++ gpm_report(GPM_PR_ERR, GPM_MESS_ACCEPT_FAILED, strerror(errno));
++ return NULL;
++ }
++
++ gpm_report(GPM_PR_INFO, GPM_MESS_CONECT_AT, newfd);
++
++ if (!(info = malloc(sizeof(struct client_info))))
++ gpm_report(GPM_PR_OOPS, GPM_MESS_NO_MEM);
++
++ request = &info->data;
++ if (get_data(newfd, request) == -1)
++ goto err;
++
++ if (request->vc > MAX_VC) {
++ gpm_report(GPM_PR_WARN,GPM_MESS_REQUEST_ON, request->vc, MAX_VC);
++ goto err;
++ }
++
++#ifndef SO_PEERCRED
++ if (stat(addr.sun_path, &statbuf) == -1 || !S_ISSOCK(statbuf.st_mode)) {
++ gpm_report(GPM_PR_ERR,GPM_MESS_ADDRES_NSOCKET,addr.sun_path);
++ goto err;
++ }
++
++ unlink(addr.sun_path); /* delete socket */
++
++ staletime = time(0) - 30;
++ if (statbuf.st_atime < staletime ||
++ statbuf.st_ctime < staletime ||
++ statbuf.st_mtime < staletime) {
++ gpm_report(GPM_PR_ERR, GPM_MESS_SOCKET_OLD);
++ goto err;
++ }
++
++ uid = statbuf.st_uid; /* owner of socket */
++#else
++ {
++ struct ucred sucred;
++ socklen_t credlen = sizeof(struct ucred);
++
++ if (getsockopt(newfd, SOL_SOCKET, SO_PEERCRED, &sucred, &credlen) == -1) {
++ gpm_report(GPM_PR_ERR,GPM_MESS_GETSOCKOPT, strerror(errno));
++ goto err;
++ }
++ uid = sucred.uid;
++ gpm_report(GPM_PR_DEBUG,GPM_MESS_PEER_SCK_UID, uid);
++ }
++#endif
++
++ if (uid != 0 && !is_console_owner(request->vc, uid)) {
++ gpm_report(GPM_PR_WARN, GPM_MESS_FAILED_CONNECT, uid, request->vc);
++ goto err;
++ }
++
++ /* register the connection information in the right place */
++ info->next = cinfo[request->vc];
++ info->fd = newfd;
++ cinfo[request->vc] = info;
++ gpm_report(GPM_PR_DEBUG, GPM_MESS_LONG_STATUS,
++ request->pid, request->vc, request->eventMask, request->defaultMask,
++ request->minMod, request->maxMod);
++
++ return info;
++
++err:
++ free(info);
++ close(newfd);
++
++ return NULL;
++}
++
++/*-------------------------------------------------------------------*/
++void remove_client(struct client_info *ci, int vc)
++{
++ struct client_info *p, *prev = NULL;
++
++ for (p = cinfo[vc]; p; prev = p, p = p->next) {
++ if (p == ci) {
++ if (!prev) /* it is on top of the stack */
++ cinfo[vc] = p->next;
++ else
++ prev->next = p->next;
++ break;
++ }
++ }
++ if (p) free(p);
++}
++
++/*-------------------------------------------------------------------*/
++void notify_clients_resize(void)
++{
++ struct client_info *ci;
++ int i;
++
++ for (i = 0; i < MAX_VC + 1; i++)
++ for (ci = cinfo[i]; ci; ci = ci->next)
++ kill(ci->data.pid, SIGWINCH);
++}
++
++/*-------------------------------------------------------------------*/
++/* returns 0 if the event has not been processed, and 1 if it has */
++int do_client(struct client_info *cinfo, Gpm_Event *event)
++{
++ Gpm_Connect *info = &cinfo->data;
++ /* value to return if event is not used */
++ int res = !(info->defaultMask & event->type);
++
++ /* instead of returning 0, scan the stack of clients */
++ if ((info->minMod & event->modifiers) < info->minMod)
++ goto try_next;
++ if ((info->maxMod & event->modifiers) < event->modifiers)
++ goto try_next;
++
++ /* if not managed, use default mask */
++ if (!(info->eventMask & GPM_BARE_EVENTS(event->type))) {
++ if (res) return res;
++ else goto try_next;
++ }
++
++ /* WARNING */ /* This can generate a SIGPIPE... I'd better catch it */
++ MAGIC_P((write(cinfo->fd, &magic, sizeof(int))));
++ write(cinfo->fd, event, sizeof(Gpm_Event));
++
++ return info->defaultMask & GPM_HARD ? res : 1; /* HARD forces pass-on */
++
++ try_next:
++ if (cinfo->next != 0)
++ return do_client(cinfo->next, event); /* try the next */
++
++ return 0; /* no next, not used */
++}
++
++/*-------------------------------------------------------------------*/
++/* returns 0 if client disconnects, -1 - error, 1 -successs */
++int process_client_request(struct client_info *ci, int vc,
++ int x, int y, int buttons, int clicks,
++ int three_button_mouse)
++{
++ int rc;
++ Gpm_Connect conn;
++ static Gpm_Event event;
++
++ gpm_report(GPM_PR_INFO, GPM_MESS_CON_REQUEST, ci->fd, vc);
++ if (vc > MAX_VC) return -1;
++
++ /* itz 10-22-96 this shouldn't happen now */
++ if (vc == -1) gpm_report(GPM_PR_OOPS, GPM_MESS_UNKNOWN_FD);
++
++ rc = get_data(ci->fd, &conn);
++
++ if (rc == 0) { /* no data */
++ gpm_report(GPM_PR_INFO, GPM_MESS_CLOSE);
++ close(ci->fd);
++ return 0;
++ }
++
++ if (rc == -1) return -1; /* too few bytes */
++
++ if (conn.pid != 0) {
++ ci->data = conn;
++ return 1;
++ }
++
++ /* Aha, request for information (so-called snapshot) */
++ switch (conn.vc) {
++ case GPM_REQ_SNAPSHOT:
++ event.vc = get_console_state(&event.modifiers);
++ event.x = x; event.y = y;
++ event.buttons = buttons;
++ event.clicks = clicks;
++ event.dx = console.max_x; event.dy = console.max_y;
++ /* fall through */
++
++ case GPM_REQ_BUTTONS:
++ event.type = (three_button_mouse == 1 ? 3 : 2); /* buttons */
++ write(ci->fd, &event, sizeof(Gpm_Event));
++ break;
++
++ case GPM_REQ_NOPASTE:
++ selection_disable_paste();
++ gpm_report(GPM_PR_INFO, GPM_MESS_DISABLE_PASTE, vc);
++ break;
++ }
++
++ return 1;
++}
++
+diff -urN gpm-1.20.1/src/console.c gpm/src/console.c
+--- gpm-1.20.1/src/console.c 1969-12-31 19:00:00.000000000 -0500
++++ gpm/src/console.c 2003-10-02 01:22:42.000000000 -0500
+@@ -0,0 +1,257 @@
++/*
++ * console.c - GPM console and selection/paste handling
++ *
++ * Copyright (C) 1993 Andreq Haylett <ajh@gec-mrc.co.uk>
++ * Copyright (C) 1994-1999 Alessandro Rubini <rubini@linux.it>
++ * Copyright (C) 1998 Ian Zimmerman <itz@rahul.net>
++ * Copyright (c) 2001,2002 Nico Schottelius <nico@schottelius.org>
++ * Copyright (c) 2003 Dmitry Torokhov <dtor@mail.ru>
++ *
++ * 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-1307, USA.
++ ********/
++
++#include <stdio.h>
++#include <stdlib.h>
++#include <string.h> /* strerror(); ?!? */
++#include <errno.h>
++#include <unistd.h> /* select(); */
++#include <time.h> /* time() */
++#include <sys/fcntl.h> /* O_RDONLY */
++#include <sys/stat.h> /* mkdir() */
++#include <asm/types.h> /* __u32 */
++
++#include <linux/vt.h> /* VT_GETSTATE */
++#include <sys/kd.h> /* KDGETMODE */
++#include <termios.h> /* winsize */
++
++#include "headers/gpmInt.h"
++#include "headers/console.h"
++#include "headers/message.h"
++
++#ifndef HAVE___U32
++# ifndef _I386_TYPES_H /* /usr/include/asm/types.h */
++typedef unsigned int __u32;
++# endif
++#endif
++
++struct gpm_console console = { 0, DEF_LUT, 0, 0 };
++
++/*-------------------------------------------------------------------*/
++static int count_digits(int num)
++{
++ int digits = 1;
++
++ while ((num /= 10))
++ digits++;
++
++ return digits;
++}
++
++/*-------------------------------------------------------------------*/
++char *compose_vc_name(int vc)
++{
++ char *tty;
++
++ tty = malloc(strlen(console.device) + count_digits(vc) + sizeof(char));
++ if (tty) {
++ /* console is /dev/vc/0 or /dev/tty0 and we trimming the ending 0 */
++ strncpy(tty, console.device, strlen(console.device) - 1);
++ sprintf(&tty[strlen(console.device) - 1], "%d", vc);
++ }
++
++ return tty;
++}
++
++/*-------------------------------------------------------------------*/
++int open_console(int mode)
++{
++ int fd;
++
++ if ((fd = open(console.device, mode)) < 0)
++ gpm_report(GPM_PR_OOPS, GPM_MESS_OPEN_CON);
++
++ return fd;
++}
++
++/*-------------------------------------------------------------------*/
++int is_text_console(void)
++{
++ int fd;
++ int kd_mode;
++
++ fd = open_console(O_RDONLY);
++ if (ioctl(fd, KDGETMODE, &kd_mode)<0)
++ gpm_report(GPM_PR_OOPS, GPM_MESS_IOCTL_KDGETMODE);
++ close(fd);
++
++ return kd_mode == KD_TEXT;
++}
++
++/*-------------------------------------------------------------------*/
++void wait_text_console(void)
++{
++ do {
++ sleep(2);
++ } while (!is_text_console());
++}
++
++/*-------------------------------------------------------------------*/
++void refresh_console_size(void)
++{
++ struct winsize win;
++ int fd = open_console(O_RDONLY);
++
++ ioctl(fd, TIOCGWINSZ, &win);
++ close(fd);
++
++ if (!win.ws_col || !win.ws_row) {
++ gpm_report(GPM_PR_DEBUG, GPM_MESS_ZERO_SCREEN_DIM);
++ console.max_x = 80; console.max_y = 25;
++ } else {
++ console.max_x = win.ws_col; console.max_y = win.ws_row;
++ }
++ gpm_report(GPM_PR_DEBUG, GPM_MESS_SCREEN_SIZE, console.max_x, console.max_y);
++}
++
++/*-------------------------------------------------------------------*/
++int get_console_state(unsigned char *shift_state)
++{
++ struct vt_stat stat;
++ int fd;
++
++ fd = open_console(O_RDONLY);
++
++ *shift_state = 6; /* code for the ioctl */
++ if (ioctl(fd, TIOCLINUX, shift_state) < 0)
++ gpm_report(GPM_PR_OOPS, GPM_MESS_GET_SHIFT_STATE);
++
++ if (ioctl(fd, VT_GETSTATE, &stat) < 0)
++ gpm_report(GPM_PR_OOPS, GPM_MESS_GET_CONSOLE_STAT);
++
++ close(fd);
++
++ return stat.v_active;
++}
++
++/*-------------------------------------------------------------------*/
++int is_console_owner(int vc, uid_t uid)
++{
++ struct stat statbuf;
++ char *tty;
++ int rc;
++
++ if ((tty = compose_vc_name(vc)) == NULL)
++ gpm_report(GPM_PR_OOPS,GPM_MESS_NO_MEM);
++
++ if ((rc = stat(tty, &statbuf)) == -1)
++ gpm_report(GPM_PR_ERR, GPM_MESS_STAT_FAILS, tty);
++
++ free(tty);
++
++ return rc != -1 && uid == statbuf.st_uid;
++}
++
++/*-------------------------------------------------------------------*/
++/* octal digit */
++static int isodigit(const unsigned char c)
++{
++ return ((c & ~7) == '0');
++}
++
++/*-------------------------------------------------------------------*/
++/* routine to convert digits from octal notation (Andries Brouwer) */
++static int getsym(const unsigned char *p0, unsigned char *res)
++{
++ const unsigned char *p = p0;
++ char c;
++
++ c = *p++;
++ if (c == '\\' && *p) {
++ c = *p++;
++ if (isodigit(c)) {
++ c -= '0';
++ if (isodigit(*p)) c = 8*c + (*p++ - '0');
++ if (isodigit(*p)) c = 8*c + (*p++ - '0');
++ }
++ }
++ *res = c;
++ return (p - p0);
++}
++
++/*-------------------------------------------------------------------*/
++/* description missing! FIXME */
++void console_load_lut(void)
++{
++ extern int errno;
++ int i, c, fd;
++ unsigned char this, next;
++ static __u32 long_array[9] = {
++ 0x05050505, /* ugly, but preserves alignment */
++ 0x00000000, /* control chars */
++ 0x00000000, /* digits */
++ 0x00000000, /* uppercase and '_' */
++ 0x00000000, /* lowercase */
++ 0x00000000, /* Latin-1 control */
++ 0x00000000, /* Latin-1 misc */
++ 0x00000000, /* Latin-1 uppercase */
++ 0x00000000 /* Latin-1 lowercase */
++ };
++
++#define inwordLut (long_array+1)
++
++ for (i = 0; console.charset[i]; ) {
++ i += getsym(console.charset + i, &this);
++ if (console.charset[i] == '-' && console.charset[i + 1] != '\0')
++ i += getsym(console.charset + i + 1, &next) + 1;
++ else
++ next = this;
++ for (c = this; c <= next; c++)
++ inwordLut[c >> 5] |= 1 << (c & 0x1F);
++ }
++
++ fd = open_console(O_WRONLY);
++
++ if (ioctl(fd, TIOCLINUX, &long_array) < 0) { /* fd <0 is checked */
++ if (errno == EPERM && getuid())
++ gpm_report(GPM_PR_WARN, GPM_MESS_ROOT); /* why do we still continue?*/
++ else if (errno == EINVAL)
++ gpm_report(GPM_PR_OOPS, GPM_MESS_CSELECT);
++ }
++ close(fd);
++}
++
++/*-------------------------------------------------------------------*/
++/* Returns the name of the console (/dev/tty0 or /dev/vc/0) */
++/* Also fills console.device */
++char *get_console_name()
++{
++ struct stat buf;
++
++ /* first try the devfs device, because in the next time this will be
++ * the preferred one. If that fails, take the old console */
++
++ /* Check for open new console */
++ if (stat(GPM_DEVFS_CONSOLE, &buf) == 0)
++ console.device = GPM_DEVFS_CONSOLE;
++
++ /* Failed, try OLD console */
++ else if (stat(GPM_OLD_CONSOLE, &buf) == 0)
++ console.device = GPM_OLD_CONSOLE;
++ else
++ gpm_report(GPM_PR_OOPS, "Can't determine console device");
++
++ return console.device;
++}
++
+diff -urN gpm-1.20.1/src/evdev.c gpm/src/evdev.c
+--- gpm-1.20.1/src/evdev.c 1969-12-31 19:00:00.000000000 -0500
++++ gpm/src/evdev.c 2003-10-02 01:22:42.000000000 -0500
+@@ -0,0 +1,851 @@
++/*
++ * evdev.c - support for event input devices in linux 2.4 & 2.6
++ *
++ * Copyright (C) 2003 Dmitry Torokhov <dtor@mail.ru>
++ * Based on XFree86 driver by Stefan Gmeiner & Peter Osterlund
++ *
++ * 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-1307, USA.
++ ********/
++
++
++#include <stdio.h>
++#include <stdlib.h>
++#include <unistd.h>
++#include <string.h>
++#include <time.h>
++#include <sys/select.h>
++#include <sys/time.h>
++
++#include <linux/input.h>
++#include "headers/input-defines.h" /* misisng bits in case <linux/input.h> is old */
++
++#include "headers/gpm.h"
++#include "headers/gpmInt.h"
++#include "headers/console.h"
++#include "headers/message.h"
++#include "headers/optparser.h"
++
++enum evdev_type {
++ EVDEV_UNKNOWN,
++ EVDEV_RELATIVE,
++ EVDEV_ABSOLUTE,
++ EVDEV_TOUCHPAD,
++ EVDEV_SYNAPTICS
++};
++
++enum touch_type {
++ TOUCH_NONE,
++ TOUCH_FINGERS,
++ TOUCH_PALM
++};
++
++enum gesture_type {
++ GESTURE_NONE,
++ GESTURE_TAP_PENDING,
++ GESTURE_TAP,
++ GESTURE_DRAG_PENDING,
++ GESTURE_DRAG,
++ GESTURE_DOUBLE_TAP
++};
++
++enum edge_type {
++ BOTTOM_EDGE = 1,
++ TOP_EDGE = 2,
++ LEFT_EDGE = 4,
++ RIGHT_EDGE = 8,
++ LEFT_BOTTOM_EDGE = BOTTOM_EDGE | LEFT_EDGE,
++ RIGHT_BOTTOM_EDGE = BOTTOM_EDGE | RIGHT_EDGE,
++ RIGHT_TOP_EDGE = TOP_EDGE | RIGHT_EDGE,
++ LEFT_TOP_EDGE = TOP_EDGE | LEFT_EDGE
++};
++
++struct event_data {
++ int dx, dy;
++ int wdx, wdy;
++ int abs_x, abs_y;
++ int buttons;
++ int touch; /* dumb touchpad report touch events, smart ones - pressure */
++ int pressure;
++ int w;
++ int finger_count;
++ int synced;
++};
++
++struct touch_data {
++ int touching;
++ int x, y;
++ int finger_count;
++ int buttons;
++ int clicks;
++ struct timeval start;
++ enum gesture_type gesture;
++};
++
++struct event_device {
++ enum evdev_type type;
++ int dont_sync;
++
++ struct event_data pkt;
++ int pkt_count;
++
++ int prev_x[4], prev_y[4];
++ int prev_pressure, avg_w;
++ struct touch_data touch;
++
++ int left_edge, right_edge;
++ int top_edge, bottom_edge;
++ int touch_high, touch_low;
++ int tap_time, tap_move;
++ int y_inverted;
++
++ enum touch_type (*detect_touch)(struct event_device *evdev);
++ void (*update_finger_count)(struct event_device *evdev);
++};
++
++struct evdev_capabilities {
++ unsigned char evbits[EV_MAX/8 + 1];
++ unsigned char keybits[KEY_MAX/8 + 1];
++ unsigned char absbits[ABS_MAX/8 + 1];
++ unsigned char mscbits[MSC_MAX/8 + 1];
++};
++
++#ifndef max
++#define max(a,b) ((a)>(b) ? (a) : (b))
++#endif
++
++#define fx(i) (evdev->prev_x[(evdev->pkt_count - (i)) & 03])
++#define fy(i) (evdev->prev_y[(evdev->pkt_count - (i)) & 03])
++
++#define toggle_btn(btn, val) do { if (val) data->buttons |= (btn);\
++ else data->buttons &= ~(btn);\
++ } while (0)
++#define GET_TIME(tv) (gettimeofday(&tv, (struct timezone *)NULL))
++#define DIF_TIME(t1,t2) ((t2.tv_sec - t1.tv_sec) * 1000 + (t2.tv_usec - t1.tv_usec) / 1000)
++
++#define test_bit(bit, array) (array[bit / 8] & (1 << (bit % 8)))
++
++/* ------------- evdev protocol handling routines ---------------------*/
++
++static void parse_input_event(struct input_event *event, struct event_data *data)
++{
++ switch (event->type) {
++ case EV_REL:
++ switch (event->code) {
++ case REL_X:
++ data->dx = (signed char)event->value;
++ break;
++ case REL_Y:
++ data->dy = (signed char)event->value;
++ break;
++ case REL_WHEEL:
++ data->wdy += event->value;
++ break;
++ case REL_HWHEEL:
++ data->wdx += event->value;
++ break;
++ }
++ break;
++
++ case EV_ABS:
++ switch (event->code) {
++ case ABS_X:
++ data->abs_x = event->value;
++ break;
++
++ case ABS_Y:
++ data->abs_y = event->value;
++ break;
++
++ case ABS_PRESSURE:
++ data->pressure = event->value;
++ break;
++
++ case ABS_TOOL_WIDTH:
++ data->w = event->value;
++ break;
++ }
++ break;
++
++ case EV_MSC:
++ switch (event->code) {
++ case MSC_GESTURE:
++ data->w = event->value;
++ break;
++ }
++ break;
++
++
++ case EV_KEY:
++ switch(event->code) {
++ case BTN_0:
++ case BTN_LEFT:
++ toggle_btn(GPM_B_LEFT, event->value);
++ break;
++
++ case BTN_2:
++ case BTN_STYLUS2:
++ case BTN_SIDE:
++ case BTN_MIDDLE:
++ toggle_btn(GPM_B_MIDDLE, event->value);
++ break;
++
++ case BTN_STYLUS:
++ case BTN_1:
++ case BTN_RIGHT:
++ toggle_btn(GPM_B_RIGHT, event->value);
++ break;
++
++ case BTN_TOUCH:
++ data->touch = event->value ? 1 : 0;
++ break;
++
++ case BTN_TOOL_FINGER:
++ if (event->value) data->finger_count = 1;
++ break;
++
++ case BTN_TOOL_DOUBLETAP:
++ if (event->value) data->finger_count = 2;
++ break;
++
++ case BTN_TOOL_TRIPLETAP:
++ if (event->value) data->finger_count = 3;
++ break;
++
++ }
++ break;
++
++ case EV_SYNC:
++ switch(event->code) {
++ case SYN_REPORT:
++ data->synced = 1;
++ break;
++ }
++ break;
++ }
++}
++
++static void tp_figure_deltas(struct event_device *evdev, struct Gpm_Event *state)
++{
++ struct event_data *pkt = &evdev->pkt;
++
++ state->dx = state->dy = 0;
++ if (evdev->touch.touching) {
++ fx(0) = pkt->abs_x;
++ fy(0) = pkt->abs_y;
++ if (evdev->pkt_count >= 2 &&
++ evdev->touch.gesture != GESTURE_DRAG_PENDING) {
++ state->dx = ((fx(0) - fx(1)) / 2 + (fx(1) - fx(2)) / 2) / 8; //SYN_REL_DECEL_FACTOR;
++ state->dy = ((fy(0) - fy(1)) / 2 + (fy(1) - fy(2)) / 2) / 8; //SYN_REL_DECEL_FACTOR;
++ }
++ evdev->pkt_count++;
++ } else {
++ evdev->pkt_count = 0;
++ }
++}
++
++static enum touch_type dumb_tp_detect_touch(struct event_device *evdev)
++{
++ return evdev->pkt.touch ? TOUCH_FINGERS : TOUCH_NONE;
++}
++
++static enum touch_type smart_tp_detect_touch(struct event_device *evdev)
++{
++ if (evdev->touch.touching)
++ return evdev->pkt.pressure > evdev->touch_low ? TOUCH_FINGERS : TOUCH_NONE;
++ else
++ return evdev->pkt.pressure > evdev->touch_high ? TOUCH_FINGERS : TOUCH_NONE;
++}
++
++static enum touch_type syn_detect_touch(struct event_device *evdev)
++{
++ struct event_data *pkt = &evdev->pkt;
++ enum touch_type type = TOUCH_NONE;
++
++ if (pkt->pressure > 200 || pkt->w > 10)
++ return TOUCH_PALM;
++
++ if (pkt->abs_x == 0)
++ evdev->avg_w = 0;
++ else
++ evdev->avg_w = (pkt->w - evdev->avg_w + 1) / 2;
++
++ if (evdev->touch.touching) {
++ type = pkt->pressure > evdev->touch_low ? TOUCH_FINGERS : TOUCH_NONE;
++ } else if (pkt->pressure > evdev->touch_high) {
++ int safe_w = max(pkt->w, evdev->avg_w);
++
++ if (pkt->finger_count > 1)
++ type = TOUCH_FINGERS;
++ else if (pkt->w < 2)
++ type = TOUCH_FINGERS; /* more than one finger -> not a palm */
++ else if (safe_w < 6 && evdev->prev_pressure < evdev->touch_high)
++ type = TOUCH_FINGERS; /* thin finger, distinct touch -> not a palm */
++ else if (safe_w < 7 && evdev->prev_pressure < evdev->touch_high / 2)
++ type = TOUCH_FINGERS; /* thin finger, distinct touch -> not a palm */
++ else if (pkt->pressure > evdev->prev_pressure + 1)
++ type = TOUCH_NONE; /* pressure not stable, may be a palm */
++ else if (pkt->pressure < evdev->prev_pressure - 5)
++ type = TOUCH_NONE; /* pressure not stable, may be a palm */
++ else
++ type = TOUCH_FINGERS;
++ }
++
++ evdev->prev_pressure = pkt->pressure;
++ return type;
++}
++
++static enum edge_type tp_detect_edges(struct event_device *evdev, int x, int y)
++{
++ enum edge_type edge = 0;
++
++ if (x > evdev->right_edge)
++ edge |= RIGHT_EDGE;
++ else if (x < evdev->left_edge)
++ edge |= LEFT_EDGE;
++
++ if (y < evdev->top_edge)
++ edge |= TOP_EDGE;
++ else if (y > evdev->bottom_edge)
++ edge |= BOTTOM_EDGE;
++
++ return edge;
++}
++
++static int tp_touch_expired(struct event_device *evdev)
++{
++ struct timeval now;
++
++ GET_TIME(now);
++ return DIF_TIME(evdev->touch.start, now) > evdev->tap_time;
++}
++
++static int tp_detect_tap(struct event_device *evdev)
++{
++ return !tp_touch_expired(evdev) &&
++ (evdev->touch.finger_count > 1 ||
++ (abs(evdev->pkt.abs_x - evdev->touch.x) < evdev->tap_move &&
++ abs(evdev->pkt.abs_y - evdev->touch.y) < evdev->tap_move));
++}
++
++static int tp_tap_to_buttons(struct event_device *evdev)
++{
++ enum edge_type edge;
++ if (evdev->touch.finger_count < 2) {
++ edge = tp_detect_edges(evdev, evdev->pkt.abs_x, evdev->pkt.abs_y);
++ switch (edge) {
++ case RIGHT_TOP_EDGE:
++ return GPM_B_MIDDLE;
++ break;
++ case RIGHT_BOTTOM_EDGE:
++ return GPM_B_RIGHT;
++ break;
++ default:
++ return GPM_B_LEFT;
++ break;
++ }
++ } else {
++ switch (evdev->touch.finger_count) {
++ case 2:
++ return GPM_B_MIDDLE;
++ case 3:
++ return GPM_B_RIGHT;
++ default:
++ return GPM_B_LEFT;
++ }
++ }
++}
++
++static void tp_detect_gesture(struct event_device *evdev, int timed_out, enum touch_type touch_type)
++{
++ struct touch_data *touch = &evdev->touch;
++ int was_touching = touch->touching;
++
++ touch->touching = touch_type == TOUCH_FINGERS;
++
++ if (touch->touching) {
++ if (!was_touching) {
++ GET_TIME(touch->start);
++ touch->finger_count = 0;
++ if (touch->gesture == GESTURE_TAP_PENDING) {
++ touch->gesture = GESTURE_DRAG_PENDING;
++ } else {
++ touch->x = evdev->pkt.abs_x;
++ touch->y = evdev->pkt.abs_y;
++ touch->buttons = 0;
++ }
++ } else if (touch->gesture == GESTURE_DRAG_PENDING && tp_touch_expired(evdev)) {
++ touch->gesture = GESTURE_DRAG;
++ }
++ } else {
++ if (was_touching) {
++ if (tp_detect_tap(evdev)) {
++ if (touch->gesture == GESTURE_DRAG_PENDING) {
++ touch->gesture = GESTURE_DOUBLE_TAP;
++ touch->clicks = 4;
++ } else {
++ if ((touch->buttons = tp_tap_to_buttons(evdev)) == GPM_B_LEFT) {
++ touch->gesture = GESTURE_TAP_PENDING;
++ } else {
++ touch->gesture = GESTURE_TAP;
++ touch->clicks = 2;
++ }
++ }
++ } else {
++ touch->gesture = GESTURE_NONE;
++ }
++ } else {
++ if (touch->gesture == GESTURE_TAP_PENDING && tp_touch_expired(evdev)) {
++ touch->gesture = GESTURE_TAP;
++ touch->clicks = 2;
++ }
++ }
++ }
++}
++
++static int tp_process_gesture(struct event_device *evdev, struct Gpm_Event *state)
++{
++ int next_timeout = -1;
++
++ switch(evdev->touch.gesture) {
++ case GESTURE_DOUBLE_TAP:
++ case GESTURE_TAP:
++ if (--evdev->touch.clicks == 0)
++ evdev->touch.gesture = GESTURE_NONE;
++ else
++ next_timeout = 0;
++
++ if (evdev->touch.clicks % 2)
++ state->buttons |= evdev->touch.buttons;
++ else
++ state->buttons &= ~evdev->touch.buttons;
++ break;
++
++ case GESTURE_DRAG:
++ state->buttons |= evdev->touch.buttons;
++ break;
++
++ case GESTURE_DRAG_PENDING:
++ case GESTURE_TAP_PENDING:
++ next_timeout = evdev->tap_time;
++ break;
++
++ default:
++ break;
++ }
++ return next_timeout;
++}
++
++static void tp_update_finger_count(struct event_device *evdev)
++{
++ evdev->touch.finger_count = max(evdev->pkt.finger_count, evdev->touch.finger_count);
++}
++
++static void syn_update_finger_count(struct event_device *evdev)
++{
++ if (evdev->pkt.w == 1)
++ evdev->touch.finger_count = 3;
++ else if (evdev->pkt.w == 0 && evdev->touch.finger_count != 3)
++ evdev->touch.finger_count = 2;
++ else
++ evdev->touch.finger_count = 1;
++}
++
++static int compose_gpm_event(struct event_device *evdev, int timed_out, Gpm_Event *state)
++{
++ struct event_data *pkt = &evdev->pkt;
++ enum touch_type touch_type;
++ int next_timeout = -1;
++
++ if (!timed_out) {
++ state->buttons = pkt->buttons;
++ state->wdx = pkt->wdx; state->wdy = pkt->wdy;
++ }
++
++ switch (evdev->type) {
++ case EVDEV_RELATIVE:
++ if (!timed_out) {
++ state->dx = pkt->dx; state->dy = pkt->dy;
++ if (evdev->pkt.touch)
++ state->buttons |= GPM_B_LEFT;
++ else
++ state->buttons &= ~GPM_B_LEFT;
++ }
++ break;
++
++ case EVDEV_ABSOLUTE:
++ if (!timed_out) {
++ if (pkt->abs_x < evdev->left_edge)
++ pkt->abs_x = evdev->left_edge;
++ else if (pkt->abs_x > evdev->right_edge)
++ pkt->abs_x = evdev->right_edge;
++
++ if (pkt->abs_y > evdev->bottom_edge)
++ pkt->abs_y = evdev->bottom_edge;
++ else if (pkt->abs_y < evdev->top_edge)
++ pkt->abs_y = evdev->top_edge;
++
++ state->x = (pkt->abs_x - evdev->left_edge) *
++ console.max_x / (evdev->right_edge - evdev->left_edge);
++ state->y = (pkt->abs_y - evdev->top_edge) *
++ console.max_y / (evdev->bottom_edge - evdev->top_edge);
++
++ if (evdev->y_inverted) state->y = console.max_y - state->y;
++
++ if (evdev->pkt.touch)
++ state->buttons |= GPM_B_LEFT;
++ else
++ state->buttons &= ~GPM_B_LEFT;
++ }
++ break;
++
++ case EVDEV_TOUCHPAD:
++ case EVDEV_SYNAPTICS:
++ touch_type = timed_out ? TOUCH_NONE : evdev->detect_touch(evdev);
++
++ if (touch_type != TOUCH_PALM) {
++ tp_detect_gesture(evdev, timed_out, touch_type);
++
++ if (evdev->touch.touching && !tp_touch_expired(evdev))
++ evdev->update_finger_count(evdev);
++
++ if (evdev->touch.finger_count < 2)
++ tp_figure_deltas(evdev, state);
++
++ next_timeout = tp_process_gesture(evdev, state);
++ }
++ break;
++
++ default:
++ /* should not happen */
++ gpm_report(GPM_PR_OOPS, "Bad evdev type %d", evdev->type);
++ break;
++ }
++
++ if (evdev->y_inverted) state->dy = -state->dy;
++
++ return next_timeout;
++}
++
++int M_evdev(struct micedev *dev, struct miceopt *opts,
++ unsigned char *data, struct Gpm_Event *state)
++{
++ struct event_device *evdev = dev->private;
++ struct input_event *event = (struct input_event *)data;
++ int timed_out = data == NULL;
++
++ if (!timed_out)
++ parse_input_event(event, &evdev->pkt);
++
++ if (timed_out || evdev->pkt.synced || evdev->dont_sync) {
++ dev->timeout = compose_gpm_event(evdev, timed_out, state);
++ evdev->pkt.dx = evdev->pkt.dy = 0;
++ evdev->pkt.wdx = evdev->pkt.wdy = 0;
++ evdev->pkt.finger_count = 0;
++ evdev->pkt.synced = 0;
++ return 0;
++ }
++
++ dev->timeout = -1;
++ return -1;
++}
++
++/* ------------- evdev initialization routines ---------------------*/
++
++static int evdev_get_id(int fd, struct input_id *id)
++{
++ if (ioctl(fd, EVIOCGID, id) < 0) {
++ gpm_report(GPM_PR_ERR, "evdev: cannot query device identification");
++ return -1;
++ }
++ return 0;
++}
++
++static int evdev_get_capabilities(int fd, struct evdev_capabilities *caps)
++{
++ memset(caps, 0, sizeof(*caps));
++
++ if (ioctl(fd, EVIOCGBIT(0, EV_MAX), caps->evbits) < 0) {
++ gpm_report(GPM_PR_ERR, "evdev: cannot query device capabilities");
++ return -1;
++ }
++
++ if (test_bit(EV_ABS, caps->evbits) &&
++ ioctl(fd, EVIOCGBIT(EV_ABS, sizeof(caps->absbits)), caps->absbits) < 0) {
++ gpm_report(GPM_PR_ERR, "evdev: cannot query ABS device capabilities");
++ return -1;
++ }
++
++ if (test_bit(EV_KEY, caps->evbits) &&
++ ioctl(fd, EVIOCGBIT(EV_KEY, sizeof(caps->keybits)), caps->keybits) < 0) {
++ gpm_report(GPM_PR_ERR, "evdev: cannot query KEY device capabilities");
++ return -1;
++ }
++
++ if (test_bit(EV_MSC, caps->evbits) &&
++ ioctl(fd, EVIOCGBIT(EV_MSC, sizeof(caps->mscbits)), caps->mscbits) < 0) {
++ /* don't complain as 2.4 kernels didnt have it
++ gpm_report(GPM_PR_ERR, "evdev: cannot query MSC device capabilities");
++ return -1;
++ */
++ }
++ return 0;
++}
++
++static int evdev_query_axis(int fd, int axis, int *axis_min, int *axis_max)
++{
++ struct input_absinfo axis_info;
++
++ if (ioctl(fd, EVIOCGABS(axis), &axis_info) == -1) {
++ gpm_report(GPM_PR_ERR, "evdev: could not query axis data");
++ return -1;
++ }
++
++ *axis_min = axis_info.minimum;
++ *axis_max = axis_info.maximum;
++ return 0;
++}
++
++static int evdev_get_limits(int fd, struct event_device *evdev,
++ struct evdev_capabilities *caps)
++{
++ if (test_bit(ABS_X, caps->absbits) &&
++ evdev_query_axis(fd, ABS_X, &evdev->left_edge, &evdev->right_edge) < 0)
++ return -1;
++
++ if (test_bit(ABS_Y, caps->absbits) &&
++ evdev_query_axis(fd, ABS_Y, &evdev->top_edge, &evdev->bottom_edge) < 0)
++ return -1;
++
++ return 0;
++}
++
++static int is_synaptics(struct input_id *id)
++{
++ return id->bustype == BUS_I8042 && id->vendor == 0x0002 && id->product == PSMOUSE_SYNAPTICS;
++}
++
++static enum evdev_type evdev_guess_type(struct input_id *id, struct evdev_capabilities *caps)
++{
++ if (test_bit(EV_ABS, caps->evbits)) {
++ if (is_synaptics(id))
++ return EVDEV_SYNAPTICS;
++
++ if (test_bit(BTN_TOUCH, caps->keybits) && caps->keybits[BTN_MOUSE / 8])
++ return EVDEV_TOUCHPAD;
++
++ return EVDEV_ABSOLUTE;
++ }
++
++ if (!test_bit(EV_REL, caps->evbits)) {
++ gpm_report(GPM_PR_ERR,
++ "evdev: device does not report neither absolute nor relative coordinates");
++ return EVDEV_UNKNOWN;
++ }
++
++ return EVDEV_RELATIVE;
++}
++
++static enum evdev_type evdev_str_to_type(const char *type)
++{
++ if (!strcmp(type, "relative")) {
++ return EVDEV_RELATIVE;
++ } else if (!strcmp(type, "absolute")) {
++ return EVDEV_ABSOLUTE;
++ } else if (!strcmp(type, "touchpad")) {
++ return EVDEV_TOUCHPAD;
++ } else if (!strcmp(type, "synaptics")) {
++ return EVDEV_SYNAPTICS;
++ } else {
++ gpm_report(GPM_PR_ERR, "evdev: unknown type '%s'", type);
++ return EVDEV_UNKNOWN;
++ }
++}
++
++static void warn_if_present(struct option_helper *optinfo, const char *name, const char *type)
++{
++ if (is_option_present(optinfo, name))
++ gpm_report(GPM_PR_WARN,
++ "evdev: option '%s' is not valud for type '%s', ignored",
++ name, type);
++}
++
++// -o type=(auto|synaptics|touchpad|relative|absolute),y_inverse,
++// left=1234,right=1234,top=1234,bottom=1234,
++// touch_high=30,touch_low=25,tap_time=30,tap_move=100
++static int evdev_apply_options(struct event_device *evdev, char *optstring)
++{
++ char *type = "auto";
++ struct option_helper optinfo[] = {
++ { "type", OPT_STRING, u: { sptr: &type } },
++ { "y_inverted", OPT_BOOL, u: { iptr: &evdev->y_inverted }, value: 1 },
++ { "left", OPT_INT, u: { iptr: &evdev->left_edge } },
++ { "right", OPT_INT, u: { iptr: &evdev->right_edge } },
++ { "top", OPT_INT, u: { iptr: &evdev->top_edge } },
++ { "bottom", OPT_INT, u: { iptr: &evdev->bottom_edge } },
++ { "touch_high", OPT_INT, u: { iptr: &evdev->touch_high } },
++ { "touch_low", OPT_INT, u: { iptr: &evdev->touch_low } },
++ { "tap_time", OPT_INT, u: { iptr: &evdev->tap_time } },
++ { "tap_move", OPT_INT, u: { iptr: &evdev->tap_move } },
++ { "", OPT_END }
++ };
++
++ if (parse_options("evdev", optstring, ',', optinfo) < 0)
++ return -1;
++
++ if (strcmp(type, "auto"))
++ evdev->type = evdev_str_to_type(type);
++
++ switch (evdev->type) {
++ case EVDEV_RELATIVE:
++ warn_if_present(optinfo, "left", type);
++ warn_if_present(optinfo, "right", type);
++ warn_if_present(optinfo, "top", type);
++ warn_if_present(optinfo, "bottom", type);
++ warn_if_present(optinfo, "tap_move", type);
++ warn_if_present(optinfo, "tap_time", type);
++ warn_if_present(optinfo, "touch_high", type);
++ warn_if_present(optinfo, "touch_low", type);
++ break;
++
++ case EVDEV_ABSOLUTE:
++ warn_if_present(optinfo, "tap_move", type);
++ warn_if_present(optinfo, "tap_time", type);
++ warn_if_present(optinfo, "touch_high", type);
++ warn_if_present(optinfo, "touch_low", type);
++ break;
++
++ case EVDEV_TOUCHPAD:
++ break;
++
++ case EVDEV_SYNAPTICS:
++ warn_if_present(optinfo, "y_inverted", type);
++ break;
++
++ default:
++ return -1;
++ }
++ return 0;
++}
++
++int I_evdev(struct micedev *dev, struct miceopt *opts, Gpm_Type *type)
++{
++ struct input_id id;
++ struct evdev_capabilities caps;
++ struct event_device *evdev;
++
++ if (!dev->private) { /* called first time, not re-init */
++ if (!(dev->private = evdev = malloc(sizeof(*evdev))))
++ gpm_report(GPM_PR_OOPS, "Can't allocate memory for event device");
++
++ memset(evdev, 0, sizeof(*evdev));
++
++ if (evdev_get_id(dev->fd, &id))
++ goto init_fail;
++
++ if (evdev_get_capabilities(dev->fd, &caps))
++ goto init_fail;
++
++ evdev->type = evdev_guess_type(&id, &caps);
++
++ /* load default values - suitable for my synaptics ;P */
++ evdev->left_edge = 1900;
++ evdev->right_edge = 5300;
++ evdev->top_edge = 2000;
++ evdev->bottom_edge = 3900;
++ evdev->tap_time = 180;
++ evdev->tap_move = 220;
++ evdev->touch_high = 30;
++ evdev->touch_low = 25;
++
++ if (evdev->type == EVDEV_ABSOLUTE && evdev_get_limits(dev->fd, evdev, &caps) < 0)
++ goto init_fail;
++
++ if (evdev_apply_options(evdev, opts->text) < 0)
++ goto init_fail;
++
++ if (!test_bit(EV_SYNC, caps.evbits)) {
++ evdev->dont_sync = 1;
++ if (evdev->type == EVDEV_TOUCHPAD || evdev->type == EVDEV_SYNAPTICS) {
++ gpm_report(GPM_PR_ERR,
++ "evdev: The running kernel lacks EV_SYNC support which is required for touchpad/synaptics mode");
++ goto init_fail;
++ }
++ }
++
++ switch (evdev->type) {
++ case EVDEV_RELATIVE:
++ gpm_report(GPM_PR_INFO, "evdev: selected Relative mode");
++ if (!test_bit(EV_REL, caps.evbits))
++ gpm_report(GPM_PR_WARN, "evdev: selected relative mode but device does not report any relative events");
++ break;
++
++ case EVDEV_ABSOLUTE:
++ gpm_report(GPM_PR_INFO, "evdev: selected Absolute mode");
++ if (evdev->right_edge <= evdev->left_edge) {
++ gpm_report(GPM_PR_ERR, "evdev: right edge value should be gerater than left");
++ goto init_fail;
++ }
++ if (evdev->bottom_edge <= evdev->top_edge) {
++ gpm_report(GPM_PR_ERR, "evdev: bottom edge value should be gerater than top");
++ goto init_fail;
++ }
++ if (!test_bit(EV_ABS, caps.evbits))
++ gpm_report(GPM_PR_WARN, "evdev: selected absolute mode but device does not report any absolute events");
++ opts->absolute = 1;
++ break;
++
++ case EVDEV_TOUCHPAD:
++ gpm_report(GPM_PR_INFO, "evdev: selected Touchpad mode");
++ if (!test_bit(EV_ABS, caps.evbits))
++ gpm_report(GPM_PR_WARN, "evdev: selected touchpad mode but device does not report any absolute events");
++ if (test_bit(ABS_PRESSURE, caps.absbits))
++ evdev->detect_touch = smart_tp_detect_touch;
++ else if (test_bit(BTN_TOUCH, caps.keybits))
++ evdev->detect_touch = dumb_tp_detect_touch;
++ else
++ gpm_report(GPM_PR_WARN, "evdev: selected touchpad mode but device does not report pressure not touch events");
++ evdev->update_finger_count = tp_update_finger_count;
++ break;
++
++ case EVDEV_SYNAPTICS:
++ gpm_report(GPM_PR_INFO, "evdev: selected Synaptics mode");
++ if (!is_synaptics(&id))
++ gpm_report(GPM_PR_WARN, "evdev: idevice isn't identified as Synaptics");
++ if (!test_bit(EV_ABS, caps.evbits))
++ gpm_report(GPM_PR_WARN, "evdev: selected synaptics mode but device does not report any absolute events");
++ if (!test_bit(ABS_PRESSURE, caps.absbits))
++ gpm_report(GPM_PR_WARN, "evdev: selected synaptics mode but device does not report pressure");
++ if (test_bit(EV_MSC, caps.evbits) && test_bit(MSC_GESTURE, caps.mscbits)) {
++ /* this is compatibility mode with pre 2.6-test6 kernels */
++ evdev->update_finger_count = syn_update_finger_count;
++ evdev->y_inverted = 1;
++ } else {
++ evdev->update_finger_count = tp_update_finger_count;
++ }
++ evdev->detect_touch = syn_detect_touch;
++ break;
++
++ default:
++ break;
++ }
++ }
++
++ return 0;
++
++init_fail:
++ free(dev->private);
++ return -1;
++}
++
+diff -urN gpm-1.20.1/src/gpm.c gpm/src/gpm.c
+--- gpm-1.20.1/src/gpm.c 2002-12-24 17:57:16.000000000 -0500
++++ gpm/src/gpm.c 2003-10-02 01:22:42.000000000 -0500
+@@ -24,1108 +24,607 @@
+ #include <stdio.h>
+ #include <stdlib.h>
+ #include <string.h> /* strerror(); ?!? */
++#include <limits.h>
+ #include <errno.h>
+ #include <unistd.h> /* select(); */
+ #include <signal.h> /* SIGPIPE */
+ #include <time.h> /* time() */
+-#include <sys/param.h>
+ #include <sys/fcntl.h> /* O_RDONLY */
+ #include <sys/wait.h> /* wait() */
+-#include <sys/stat.h> /* mkdir() */
+ #include <sys/time.h> /* timeval */
+-#include <sys/types.h> /* socket() */
+-#include <sys/socket.h> /* socket() */
+-#include <sys/un.h> /* struct sockaddr_un */
+-
+-#include <linux/vt.h> /* VT_GETSTATE */
+-#include <sys/kd.h> /* KDGETMODE */
+-#include <termios.h> /* winsize */
+
+ #include "headers/gpmInt.h"
+ #include "headers/message.h"
+-
+-/* who the f*** runs gpm without glibc? doesn't have dietlibc __socklent_t? */
+-#if !defined(__GLIBC__)
+- typedef unsigned int __socklen_t;
+-#endif /* __GLIBC__ */
++#include "headers/console.h"
++#include "headers/selection.h"
++#include "headers/client.h"
+
+ #ifndef max
+ #define max(a,b) ((a)>(b) ? (a) : (b))
+ #endif
+
+-extern int errno;
+-
+-static void gpm_killed(int);
+-
+-/*
+- * all the values duplicated for dual-mouse operation are
+- * now in this structure (see gpmInt.h)
+- * mouse_table[0] is single mouse, mouse_table[1] and mouse_table[2]
+- * are copied data from mouse_table[0] for dual mouse operation.
+- */
+-
+-struct mouse_features mouse_table[3] = {
+- {
+- DEF_TYPE, DEF_DEV, DEF_SEQUENCE,
+- DEF_BAUD, DEF_SAMPLE, DEF_DELTA, DEF_ACCEL, DEF_SCALE, 0 /* scaley */,
+- DEF_TIME, DEF_CLUSTER, DEF_THREE, DEF_GLIDEPOINT_TAP,
+- (char *)NULL /* extra */,
+- (Gpm_Type *)NULL,
+- -1
+- }
+-};
+-struct mouse_features *which_mouse;
+-
+-/* These are only the 'global' options */
+-
+-char *opt_lut=DEF_LUT;
+-int opt_test=DEF_TEST;
+-int opt_ptrdrag=DEF_PTRDRAG;
+-int opt_double=0;
+-int opt_aged = 0;
+-char *opt_special=NULL; /* special commands, like reboot or such */
+-int opt_rawrep=0;
+-Gpm_Type *repeated_type=0;
+-
+-static int opt_resize=0; /* not really an option */
+-struct winsize win;
+-int maxx, maxy;
+-int fifofd=-1;
+-
+-int eventFlag=0;
+-Gpm_Cinfo *cinfo[MAX_VC+1];
+-fd_set selSet, readySet, connSet;
+-
+-time_t last_selection_time;
+-time_t opt_age_limit = 0;
+-
+-/* BRAINDEAD..ok not really, but got to leave anyway... FIXME */
+-/* argc and argv for mice initialization */
+-static int mouse_argc[3]; /* 0 for default (unused) and two mice */
+-static char **mouse_argv[3]; /* 0 for default (unused) and two mice */
+-
+-/*===================================================================*/
+-/*
+- * first, all the stuff that used to be in gpn.c (i.e., not main-loop)
+- */
+-/*-------------------------------------------------------------------*/
++#ifndef min
++#define min(a,b) ((a)<(b) ? (a) : (b))
++#endif
+
+-/* build_argv is used for mouse initialization routines */
+-static char **build_argv(char *argv0, char *str, int *argcptr, char sep)
+-{
+- int argc = 1;
+- char **argv;
+- char *s;
+-
+- /* argv0 is never NULL, but the extra string may well be */
+- if (str)
+- for (s=str; sep && (s = strchr(s, sep)); argc++) s++;
+-
+- argv = calloc(argc+2, sizeof(char **));
+- if (!argv) gpm_report(GPM_PR_OOPS,GPM_MESS_ALLOC_FAILED);
+- argv[0] = argv0;
+-
+- if (!str) {
+- *argcptr = argc; /* 1 */
+- return argv;
+- }
+- /* else, add arguments */
+- s = argv[1] = strdup(str);
+- argc = 2; /* first to fill */
+-
+- /* ok, now split: the first one is in place, and s is the whole string */
+- for ( ; sep && (s = strchr(s, sep)) ; argc++) {
+- *s = '\0';
+- s++;
+- argv[argc] = s;
+- }
+- *argcptr = argc;
+- return argv;
+-}
++#define NULL_SET ((fd_set *)NULL)
++#define GET_TIME(tv) (gettimeofday(&tv, (struct timezone *)NULL))
++#define DIF_TIME(t1,t2) ((t2.tv_sec - t1.tv_sec)*1000 + (t2.tv_usec - t1.tv_usec)/1000)
+
+-/*-------------------------------------------------------------------*/
+-/* The old console option is removed. We are taking stderr now
+- * In the next update there should also be support for syslog
+- ********************************************************************/
+
+-static inline int open_console(const int mode)
+-{
+- int fd;
++enum mouse_rslt { MOUSE_NO_DATA, MOUSE_DATA_OK, MOUSE_MORE_DATA };
+
+- if ((fd=open(option.consolename, mode)) < 0)
+- gpm_report(GPM_PR_OOPS,GPM_MESS_OPEN_CON);
+- return fd;
+-}
++extern int errno;
+
+-/*-------------------------------------------------------------------*/
+-static inline int wait_text(int *fdptr)
+-{
+- int fd;
+- int kd_mode;
++char *opt_special=NULL; /* special commands, like reboot or such */
++struct repeater repeater;
+
+- close(*fdptr);
+- do
+- {
+- sleep(2);
+- fd = open_console(O_RDONLY);
+- if (ioctl(fd, KDGETMODE, &kd_mode)<0)
+- gpm_report(GPM_PR_OOPS,GPM_MESS_IOCTL_KDGETMODE);
+- close(fd);
+- }
+- while (kd_mode != KD_TEXT) ;
+-
+- /* reopen, reinit (the function is only used if we have one mouse device) */
+- if ((*fdptr=open(opt_dev,O_RDWR))<0)
+- gpm_report(GPM_PR_OOPS,GPM_MESS_OPEN,opt_dev);
+- if (m_type->init)
+- m_type=(m_type->init)(*fdptr, m_type->flags, m_type, mouse_argc[1],
+- mouse_argv[1]);
+- return (1);
+-}
++static int console_resized; /* not really an option */
+
+ /*-------------------------------------------------------------------*/
+-static inline void selection_copy(int x1, int y1, int x2, int y2, int mode)
++static void gpm_killed(int signo)
+ {
+-/*
+- * The approach in "selection" causes a bus error when run under SunOS 4.1
+- * due to alignment problems...
+- */
+- unsigned char buf[6*sizeof(short)];
+- unsigned short *arg = (unsigned short *)buf + 1;
+- int fd;
+-
+- buf[sizeof(short)-1] = 2; /* set selection */
+-
+- arg[0]=(unsigned short)x1;
+- arg[1]=(unsigned short)y1;
+- arg[2]=(unsigned short)x2;
+- arg[3]=(unsigned short)y2;
+- arg[4]=(unsigned short)mode;
+-
+- if ((fd=open_console(O_WRONLY))<0)
+- gpm_report(GPM_PR_OOPS,GPM_MESS_OPEN_CON);
+- /* FIXME: should be replaced with string constant (headers/message.h) */
+- gpm_report(GPM_PR_DEBUG,"ctl %i, mode %i",(int)*buf, arg[4]);
+- if (ioctl(fd, TIOCLINUX, buf+sizeof(short)-1) < 0)
+- gpm_report(GPM_PR_OOPS,GPM_MESS_IOCTL_TIOCLINUX);
+- close(fd);
+-
+- if (mode < 3) {
+- opt_aged = 0;
+- last_selection_time = time(0);
++ if (signo == SIGWINCH) {
++ gpm_report(GPM_PR_WARN, GPM_MESS_RESIZING, option.progname, getpid());
++ console_resized = 1;
++ } else {
++ if (signo == SIGUSR1)
++ gpm_report(GPM_PR_WARN, GPM_MESS_KILLED_BY, option.progname, getpid(), option.progname);
++ exit(0);
+ }
+ }
+
+-
+-/*-------------------------------------------------------------------*/
+-/* comment missing; FIXME */
+-/*-------------------------------------------------------------------*/
+-static inline void selection_paste(void)
+-{
+- char c=3;
+- int fd;
+-
+- if (!opt_aged && (0 != opt_age_limit) &&
+- (last_selection_time + opt_age_limit < time(0))) {
+- opt_aged = 1;
+- }
+-
+- if (opt_aged) {
+- gpm_report(GPM_PR_DEBUG,GPM_MESS_SKIP_PASTE);
+- return;
+- }
+-
+- fd=open_console(O_WRONLY);
+- if(ioctl(fd, TIOCLINUX, &c) < 0)
+- gpm_report(GPM_PR_OOPS,GPM_MESS_IOCTL_TIOCLINUX);
+- close(fd);
+-}
+-
+-/*-------------------------------------------------------------------*/
+-static inline int do_selection(Gpm_Event *event) /* returns 0, always */
+-{
+- static int x1=1, y1=1, x2, y2;
+-#define UNPOINTER() 0
+-
+- x2=event->x; y2=event->y;
+- switch(GPM_BARE_EVENTS(event->type)) {
+- case GPM_MOVE:
+- if (x2<1) x2++; else if (x2>maxx) x2--;
+- if (y2<1) y2++; else if (y2>maxy) y2--;
+- selection_copy(x2,y2,x2,y2,3); /* just highlight pointer */
+- return 0;
+-
+- case GPM_DRAG:
+- if (event->buttons==GPM_B_LEFT) {
+- if (event->margin) /* fix margins */
+- switch(event->margin) {
+- case GPM_TOP: x2=1; y2++; break;
+- case GPM_BOT: x2=maxx; y2--; break;
+- case GPM_RGT: x2--; break;
+- case GPM_LFT: y2<=y1 ? x2++ : (x2=maxx, y2--); break;
+- }
+- selection_copy(x1,y1,x2,y2,event->clicks);
+- if (event->clicks>=opt_ptrdrag && !event->margin) /* pointer */
+- selection_copy(x2,y2,x2,y2,3);
+- } /* if */
+- return 0;
+-
+- case GPM_DOWN:
+- switch (event->buttons) {
+- case GPM_B_LEFT:
+- x1=x2; y1=y2;
+- selection_copy(x1,y1,x2,y2,event->clicks); /* start selection */
+- return 0;
+-
+- case GPM_B_MIDDLE:
+- selection_paste();
+- return 0;
+-
+- case GPM_B_RIGHT:
+- if (opt_three==1)
+- selection_copy(x1,y1,x2,y2,event->clicks);
+- else
+- selection_paste();
+- return 0;
+- }
+- } /* switch above */
+- return 0;
+-}
+-
+-/*-------------------------------------------------------------------*/
+-/* returns 0 if the event has not been processed, and 1 if it has */
+-static inline int do_client(Gpm_Cinfo *cinfo, Gpm_Event *event)
+-{
+- Gpm_Connect info=cinfo->data;
+- int fd=cinfo->fd;
+- /* value to return if event is not used */
+- int res = !(info.defaultMask & event->type);
+-
+- /* instead of returning 0, scan the stack of clients */
+- if ((info.minMod & event->modifiers) < info.minMod)
+- goto scan;
+- if ((info.maxMod & event->modifiers) < event->modifiers)
+- goto scan;
+-
+- /* if not managed, use default mask */
+- if (!(info.eventMask & GPM_BARE_EVENTS(event->type))) {
+- if (res) return res;
+- else goto scan;
+- }
+-
+- /* WARNING */ /* This can generate a SIGPIPE... I'd better catch it */
+- MAGIC_P((write(fd,&magic, sizeof(int))));
+- write(fd,event, sizeof(Gpm_Event));
+-
+- return info.defaultMask & GPM_HARD ? res : 1; /* HARD forces pass-on */
+-
+- scan:
+- if (cinfo->next != 0)
+- return do_client (cinfo->next, event); /* try the next */
+- return 0; /* no next, not used */
+-}
+-
+ /*-------------------------------------------------------------------
+ * fetch the actual device data from the mouse device, dependent on
+ * what Gpm_Type is being passed.
+ *-------------------------------------------------------------------*/
+-static inline char *getMouseData(int fd, Gpm_Type *type, int kd_mode)
++static char *getMouseData(int fd, Gpm_Type *type, int text_mode)
+ {
+ static unsigned char data[32]; /* quite a big margin :) */
+- char *edata=data+type->packetlen;
+- int howmany=type->howmany;
+- int i,j;
++ unsigned char *pdata;
++ int len, togo;
+
+-/*....................................... read and identify one byte */
+-
+- if (read(fd, data, howmany)!=howmany) {
+- if (opt_test) exit(0);
++ /*....................................... read and identify one byte */
++ if (read(fd, data, type->howmany) != type->howmany) {
+ gpm_report(GPM_PR_ERR,GPM_MESS_READ_FIRST, strerror(errno));
+ return NULL;
+ }
+
+- if (kd_mode!=KD_TEXT && fifofd != -1 && opt_rawrep)
+- write(fifofd, data, howmany);
++ if (!text_mode && repeater.fd != -1 && repeater.raw)
++ write(repeater.fd, data, type->howmany);
+
+- if ((data[0]&(m_type->proto)[0]) != (m_type->proto)[1]) {
+- if (m_type->getextra == 1) {
+- data[1]=GPM_EXTRA_MAGIC_1; data[2]=GPM_EXTRA_MAGIC_2;
+- gpm_report(GPM_PR_DEBUG,GPM_EXTRA_DATA,data[0]);
++ if ((data[0] & type->proto[0]) != type->proto[1]) {
++ if (type->getextra == 1) {
++ data[1] = GPM_EXTRA_MAGIC_1; data[2] = GPM_EXTRA_MAGIC_2;
++ gpm_report(GPM_PR_DEBUG, GPM_EXTRA_DATA, data[0]);
+ return data;
+ }
+- gpm_report(GPM_PR_DEBUG,GPM_MESS_PROT_ERR);
++ gpm_report(GPM_PR_DEBUG, GPM_MESS_PROT_ERR);
+ return NULL;
+ }
+
+-/*....................................... read the rest */
++ /*....................................... read the rest */
+
+ /*
+ * well, this seems to work almost right with ps2 mice. However, I've never
+ * tried ps2 with the original selection package, which called usleep()
+ */
+-
+- if((i=m_type->packetlen-howmany)) /* still to get */
++ if ((togo = type->packetlen - type->howmany)) { /* still to get */
++ pdata = &data[type->howmany];
+ do {
+- j = read(fd,edata-i,i); /* edata is pointer just after data */
+- if (kd_mode!=KD_TEXT && fifofd != -1 && opt_rawrep && j > 0)
+- write(fifofd, edata-i, j);
+- i -= j;
+- } while (i && j);
+-
+- if (i) {
+- gpm_report(GPM_PR_ERR,GPM_MESS_READ_REST, strerror(errno));
++ if ((len = read(fd, pdata, togo)) == 0)
++ break;
++ if (!text_mode && repeater.fd != -1 && repeater.raw && len > 0)
++ write(repeater.fd, pdata, len);
++ pdata += len;
++ togo -= len;
++ } while (togo);
++ }
++
++ if (togo) {
++ gpm_report(GPM_PR_ERR, GPM_MESS_READ_REST, strerror(errno));
+ return NULL;
+ }
+
+- if ((data[1]&(m_type->proto)[2]) != (m_type->proto)[3]) {
+- gpm_report(GPM_PR_INFO,GPM_MESS_SKIP_DATA);
++ if ((data[1] & type->proto[2]) != type->proto[3]) {
++ gpm_report(GPM_PR_INFO, GPM_MESS_SKIP_DATA);
+ return NULL;
+ }
+- gpm_report(GPM_PR_DEBUG,GPM_MESS_DATA_4,data[0],data[1],data[2],data[3]);
++ gpm_report(GPM_PR_DEBUG, GPM_MESS_DATA_4, data[0], data[1], data[2], data[3]);
+ return data;
+ }
+
+-
+-static int statusX,statusY,statusB; /* to return info */
+-static int statusC=0; /* clicks */
+-void get_console_size(Gpm_Event *ePtr);
+-
+-/*-------------------------------------------------------------------
+- * call getMouseData to get hardware device data, call mouse device's fun()
+- * to retrieve the hardware independent event data, then optionally repeat
+- * the data via repeat_fun() to the repeater device
+- *-------------------------------------------------------------------*/
+-static inline int processMouse(int fd, Gpm_Event *event, Gpm_Type *type,
+- int kd_mode)
++/*-------------------------------------------------------------------*/
++void handle_console_resize(Gpm_Event *event)
+ {
+- char *data;
+- static int fine_dx, fine_dy;
+- static int i, j, m;
+- static Gpm_Event nEvent;
+- static struct vt_stat stat;
+- static struct timeval tv1={0,0}, tv2; /* tv1==0: first click is single */
+- static struct timeval timeout={0,0};
+- fd_set fdSet;
+- static int newB=0, oldB=0, oldT=0; /* old buttons and Type to chain events */
+- /* static int buttonlock, buttonlockflag; */
+-
+-#define GET_TIME(tv) (gettimeofday(&tv, (struct timezone *)NULL))
+-#define DIF_TIME(t1,t2) ((t2.tv_sec -t1.tv_sec) *1000+ \
+- (t2.tv_usec-t1.tv_usec)/1000)
+-
+-
+- oldT=event->type;
+-
+- if (eventFlag) {
+- eventFlag=0;
+-
+- if (m_type->absolute) { /* a pen or other absolute device */
+- event->x=nEvent.x;
+- event->y=nEvent.y;
+- }
+- event->dx=nEvent.dx;
+- event->dy=nEvent.dy;
+- event->buttons=nEvent.buttons;
+- } else {
+- event->dx=event->dy=0;
+- event->wdx=event->wdy=0;
+- nEvent.modifiers = 0; /* some mice set them */
+- FD_ZERO(&fdSet); FD_SET(fd,&fdSet); i=0;
+-
+- do { /* cluster loop */
+- if(((data=getMouseData(fd,m_type,kd_mode))==NULL)
+- || ((*(m_type->fun))(&nEvent,data)==-1) ) {
+- if (!i) return 0;
+- else break;
+- }
+-
+- event->modifiers = nEvent.modifiers; /* propagate modifiers */
+-
+- /* propagate buttons */
+- nEvent.buttons = (opt_sequence[nEvent.buttons&7]&7) |
+- (nEvent.buttons & ~7); /* change the order */
+- oldB=newB; newB=nEvent.buttons;
+- if (!i) event->buttons=nEvent.buttons;
+-
+- if (oldB!=newB) {
+- eventFlag = (i!=0)*(which_mouse-mouse_table); /* 1 or 2 */
+- break;
+- }
+-
+- /* propagate movement */
+- if (!(m_type->absolute)) { /* mouse */
+- if (abs(nEvent.dx)+abs(nEvent.dy) > opt_delta)
+- nEvent.dx*=opt_accel, nEvent.dy*=opt_accel;
+-
+- /* increment the reported dx,dy */
+- event->dx+=nEvent.dx;
+- event->dy+=nEvent.dy;
+- } else { /* a pen */
+- /* get dx,dy to check if there has been movement */
+- event->dx = (nEvent.x) - (event->x);
+- event->dy = (nEvent.y) - (event->y);
+- }
+-
+- /* propagate wheel */
+- event->wdx += nEvent.wdx;
+- event->wdy += nEvent.wdy;
+-
+- select(fd+1,&fdSet,(fd_set *)NULL,(fd_set *)NULL,&timeout/* zero */);
+-
+- } while (i++ <opt_cluster && nEvent.buttons==oldB && FD_ISSET(fd,&fdSet));
+-
+- } /* if(eventFlag) */
+-
+-/*....................................... update the button number */
++ int old_x, old_y;
++ struct micetab *mouse;
+
+- if ((event->buttons&GPM_B_MIDDLE) && !opt_three) opt_three++;
++ old_x = console.max_x; old_y = console.max_y;
++ refresh_console_size();
++ if (!old_x) { /* first invocation, place the pointer in the middle */
++ event->x = console.max_x / 2;
++ event->y = console.max_y / 2;
++ } else { /* keep the pointer in the same position where it was */
++ event->x = event->x * console.max_x / old_x;
++ event->y = event->y * console.max_y / old_y;
++ }
+
+-/*....................................... we're a repeater, aren't we? */
++ for (mouse = micelist; mouse; mouse = mouse->next) {
++ /*
++ * the following operation is based on the observation that 80x50
++ * has square cells. (An author-centric observation ;-)
++ */
++ mouse->options.scaley = mouse->options.scalex * 50 * console.max_x / 80 / console.max_y;
++ gpm_report(GPM_PR_DEBUG, GPM_MESS_X_Y_VAL,
++ mouse->options.scalex, mouse->options.scaley);
++ }
++}
+
+- if (kd_mode!=KD_TEXT) {
+- if (fifofd != -1 && ! opt_rawrep) {
+- if (m_type->absolute) { /* hof Wed Feb 3 21:43:28 MET 1999 */
+- /* prepare the values from a absolute device for repeater mode */
+- static struct timeval rept1,rept2;
+- gettimeofday(&rept2, (struct timezone *)NULL);
+- if (((rept2.tv_sec -rept1.tv_sec)
+- *1000+(rept2.tv_usec-rept1.tv_usec)/1000)>250) {
+- event->dx=0;
+- event->dy=0;
+- }
+- rept1=rept2;
+-
+- event->dy=event->dy*((win.ws_col/win.ws_row)+1);
+- event->x=nEvent.x;
+- event->y=nEvent.y;
+- }
+- repeated_type->repeat_fun(event, fifofd); /* itz Jan 11 1999 */
++static void handle_repeater(int absolute_dev, Gpm_Event *new_event, Gpm_Event *event)
++{
++ static struct timeval last;
++ struct timeval now;
++
++ if (absolute_dev) {
++ /* prepare the values from a absolute device for repeater mode */
++ GET_TIME(now);
++ if (((now.tv_sec - last.tv_sec) * 1000 +
++ (now.tv_usec - last.tv_usec) / 1000) > 250) {
++ event->dx = 0;
++ event->dy = 0;
+ }
+- return 0; /* no events nor information for clients */
+- } /* first if of these three */
+-
+-/*....................................... no, we arent a repeater, go on */
++ last = now;
+
+- /* use fine delta values now, if delta is the information */
+- if (!(m_type)->absolute) {
+- fine_dx+=event->dx; fine_dy+=event->dy;
+- event->dx=fine_dx/opt_scale; event->dy=fine_dy/opt_scaley;
+- fine_dx %= opt_scale; fine_dy %= opt_scaley;
++ event->dy = event->dy * ((console.max_x / console.max_y) + 1);
++ event->x = new_event->x;
++ event->y = new_event->y;
+ }
++ repeater.type->repeat_fun(event, repeater.fd);
++}
+
+- /* up and down, up and down, ... who does a do..while(0) loop ???
+- and then makes a break into it... argh ! */
+-
+- if (!event->dx && !event->dy && (event->buttons==oldB))
+- do { /* so to break */
+- static long awaketime;
+- /*
+- * Ret information also if never happens, but enough time has elapsed.
+- * Note: return 1 will segfault due to missing event->vc; FIXME!
+- */
+- if (time(NULL)<=awaketime) return 0;
+- awaketime=time(NULL)+1;
+- break;
+- } while (0);
+-
+-/*....................................... fill missing fields */
+-
+- event->x+=event->dx, event->y+=event->dy;
+- statusB=event->buttons;
+-
+- i=open_console(O_RDONLY);
+- /* modifiers */
+- j = event->modifiers; /* save them */
+- event->modifiers=6; /* code for the ioctl */
+- if (ioctl(i,TIOCLINUX,&(event->modifiers))<0)
+- gpm_report(GPM_PR_OOPS,GPM_MESS_GET_SHIFT_STATE);
+- event->modifiers |= j; /* add mouse-specific bits */
+-
+- /* status */
+- j = stat.v_active;
+- if (ioctl(i,VT_GETSTATE,&stat)<0) gpm_report(GPM_PR_OOPS,GPM_MESS_GET_CONSOLE_STAT);
+-
+- /*
+- * if we changed console, request the current console size,
+- * as different consoles can be of different size
+- */
+- if (stat.v_active != j)
+- get_console_size(event);
+- close(i);
+-
+- event->vc = stat.v_active;
+-
+- if (oldB==event->buttons)
+- event->type = (event->buttons ? GPM_DRAG : GPM_MOVE);
+- else
+- event->type = (event->buttons > oldB ? GPM_DOWN : GPM_UP);
+-
++static void calculate_clicks(Gpm_Event *event, int click_tmo)
++{
++ static struct timeval release;
++ struct timeval now;
++
+ switch(event->type) { /* now provide the cooked bits */
+ case GPM_DOWN:
+- GET_TIME(tv2);
+- if (tv1.tv_sec && (DIF_TIME(tv1,tv2)<opt_time)) /* check first click */
+- statusC++, statusC%=3; /* 0, 1 or 2 */
++ GET_TIME(now);
++ if (release.tv_sec && (DIF_TIME(release, now) < click_tmo)) /* check first click */
++ event->clicks++, event->clicks %= 3; /* 0, 1 or 2 */
+ else
+- statusC=0;
+- event->type|=(GPM_SINGLE<<statusC);
++ event->clicks = 0;
++ event->type |= GPM_SINGLE << event->clicks;
+ break;
+
+ case GPM_UP:
+- GET_TIME(tv1);
+- event->buttons^=oldB; /* for button-up, tell which one */
+- event->type|= (oldT&GPM_MFLAG);
+- event->type|=(GPM_SINGLE<<statusC);
++ GET_TIME(release);
++ event->type |= GPM_SINGLE << event->clicks;
+ break;
+
+ case GPM_DRAG:
+- event->type |= GPM_MFLAG;
+- event->type|=(GPM_SINGLE<<statusC);
++ event->type |= GPM_SINGLE << event->clicks;
+ break;
+
+ case GPM_MOVE:
+- statusC=0;
++ event->clicks = 0;
++
+ default:
+ break;
+ }
+- event->clicks=statusC;
++}
++
++static void snap_to_screen_limits(Gpm_Event *event)
++{
++ int extent;
+
+-/* UGLY - FIXME! */
+-/* The current policy is to force the following behaviour:
+- * - At buttons up, must fit inside the screen, though flags are set.
+- * - At button down, allow going outside by one single step
+- */
++ /* The current policy is to force the following behaviour:
++ * - At buttons up, must fit inside the screen, though flags are set.
++ * - At button down, allow going outside by one single step
++ * DTOR: Midnight Commander seems to want the opposite...
++ */
+
++ extent = (event->type & (GPM_DRAG|GPM_UP)) ? 1 : 0;
+
+ /* selection used 1-based coordinates, so do I */
+-
+ /*
+ * 1.05: only one margin is current. Y takes priority over X.
+- * The i variable is how much margin is allowed. "m" is which one is there.
+ */
+
+- m = 0;
+- i = ((event->type&(GPM_DRAG|GPM_UP))!=0); /* i is boolean */
+-
+- if (event->y>win.ws_row) {event->y=win.ws_row+1-!i; i=0; m = GPM_BOT;}
+- else if (event->y<=0) {event->y=1-i; i=0; m = GPM_TOP;}
+-
+- if (event->x>win.ws_col) {event->x=win.ws_col+1-!i; if (!m) m = GPM_RGT;}
+- else if (event->x<=0) {event->x=1-i; if (!m) m = GPM_LFT;}
++ event->margin = 0;
+
+- event->margin=m;
++ if (event->y > console.max_y) {
++ event->y = console.max_y + extent;
++ extent = 0;
++ event->margin = GPM_BOT;
++ } else if (event->y <= 0) {
++ event->y = 1 - extent;
++ extent = 0;
++ event->margin = GPM_TOP;
++ }
+
+- gpm_report(GPM_PR_DEBUG,"M: %3i %3i (%3i %3i) - butt=%i vc=%i cl=%i",
+- event->dx,event->dy,
+- event->x,event->y,
+- event->buttons, event->vc,
+- event->clicks);
++ if (event->x > console.max_x) {
++ event->x = console.max_x + extent;
++ if (!event->margin) event->margin = GPM_RGT;
++ } else if (event->x <= 0) {
++ event->x = 1 - extent;
++ if (!event->margin) event->margin = GPM_LFT;
++ }
++}
+
+- /* update the global state */
+- statusX=event->x; statusY=event->y;
++static int more_data_waiting(int fd)
++{
++ static struct timeval timeout = {0, 0};
++ fd_set fdSet;
+
+- if (opt_special && event->type & GPM_DOWN)
+- return processSpecial(event);
++ FD_ZERO(&fdSet);
++ FD_SET(fd, &fdSet);
++ select(fd + 1, &fdSet, NULL_SET, NULL_SET, &timeout/* zero */);
+
+- return 1;
++ return FD_ISSET(fd, &fdSet);
+ }
+
+-/*-------------------------------------------------------------------*
+- * This was inline, and incurred in a compiler bug (2.7.0)
+- *-------------------------------------------------------------------*/
+-static int get_data(Gpm_Connect *where, int whence)
++static int multiplex_buttons(struct micetab *mouse, int new_buttons)
+ {
+- static int i;
++ static int left_btn_clicks, mid_btn_clicks, right_btn_clicks;
++ int mask;
++ int muxed_buttons = 0;
++
++ new_buttons =
++ (mouse->options.sequence[new_buttons & 7] & 7) | (new_buttons & ~7);
++ mask = new_buttons ^ mouse->buttons;
++ mouse->buttons = new_buttons;
+
+-#ifdef GPM_USE_MAGIC
+- while ((i=read(whence,&check,sizeof(int)))==4 && check!=GPM_MAGIC)
+- gpm_report(GPM_PR_INFO,GPM_MESS_NO_MAGIC);
+-
+- if (!i) return 0;
+- if (check!=GPM_MAGIC) {
+- gpm_report(GPM_PR_INFO,GPM_MESS_NOTHING_MORE);
+- return -1;
++ if (mask & GPM_B_LEFT) {
++ if (new_buttons & GPM_B_LEFT) left_btn_clicks++;
++ else left_btn_clicks--;
+ }
+-#endif
++ if (left_btn_clicks) muxed_buttons |= GPM_B_LEFT;
+
+- if ((i=read(whence, where, sizeof(Gpm_Connect)))!=sizeof(Gpm_Connect)) {
+- return i ? -1 : 0;
++ if (mask & GPM_B_MIDDLE) {
++ if (new_buttons & GPM_B_MIDDLE) mid_btn_clicks++;
++ else mid_btn_clicks--;
+ }
++ if (mid_btn_clicks) muxed_buttons |= GPM_B_MIDDLE;
+
+- return 1;
+-}
++ if (mask & GPM_B_RIGHT) {
++ if (new_buttons & GPM_B_RIGHT) right_btn_clicks++;
++ else right_btn_clicks--;
++ }
++ if (right_btn_clicks) muxed_buttons |= GPM_B_RIGHT;
+
+-static void disable_paste(int vc)
+-{
+- opt_aged++;
+- gpm_report(GPM_PR_INFO,GPM_MESS_DISABLE_PASTE,vc);
++ return muxed_buttons;
+ }
+
+-/*-------------------------------------------------------------------*/
+- /* returns -1 if closing connection */
+-static inline int processRequest(Gpm_Cinfo *ci, int vc)
++/*-------------------------------------------------------------------
++ * call getMouseData to get hardware device data, call mouse device's fun()
++ * to retrieve the hardware independent event data, then optionally repeat
++ * the data via repeat_fun() to the repeater device
++ *-------------------------------------------------------------------*/
++static enum mouse_rslt processMouse(struct micetab *mouse, int timeout, int attempt,
++ Gpm_Event *event, int text_mode)
+ {
++ static int last_active;
++ static int fine_dx, fine_dy;
++ static int oldB;
++
++ static Gpm_Event nEvent;
++ struct Gpm_Type *type = mouse->type;
++ struct miceopt *opt = &mouse->options;
++ enum mouse_rslt rslt = MOUSE_DATA_OK;
++ unsigned char shift_state;
++ char *data = NULL;
+ int i;
+- Gpm_Cinfo *cinfoPtr, *next;
+- Gpm_Connect conn;
+- static Gpm_Event event;
+- static struct vt_stat stat;
+-
+- gpm_report(GPM_PR_INFO,GPM_MESS_CON_REQUEST, ci->fd, vc);
+- if (vc>MAX_VC) return -1;
+-
+- /* itz 10-22-96 this shouldn't happen now */
+- if (vc==-1) gpm_report(GPM_PR_OOPS,GPM_MESS_UNKNOWN_FD);
+-
+- i=get_data(&conn,ci->fd);
+-
+- if (!i) { /* no data */
+- gpm_report(GPM_PR_INFO,GPM_MESS_CLOSE);
+- close(ci->fd);
+- FD_CLR(ci->fd,&connSet);
+- FD_CLR(ci->fd,&readySet);
+- if (cinfo[vc]->fd == ci->fd) { /* it was on top of the stack */
+- cinfoPtr = cinfo[vc];
+- cinfo[vc]=cinfo[vc]->next; /* pop the stack */
+- free(cinfoPtr);
+- return -1;
+- }
+- /* somewhere inside the stack, have to walk it */
+- cinfoPtr = cinfo[vc];
+- while (cinfoPtr && cinfoPtr->next) {
+- if (cinfoPtr->next->fd == ci->fd) {
+- next = cinfoPtr->next;
+- cinfoPtr->next = next->next;
+- free (next);
++
++ if (attempt > 1) { /* continue interrupted cluster loop */
++ if (opt->absolute) {
++ event->x = nEvent.x;
++ event->y = nEvent.y;
++ }
++ event->dx = nEvent.dx;
++ event->dy = nEvent.dy;
++ event->buttons = nEvent.buttons;
++ } else {
++ event->dx = event->dy = 0;
++ event->wdx = event->wdy = 0;
++ nEvent.modifiers = 0; /* some mice set them */
++ i = 0;
++
++ do { /* cluster loop */
++ if (!timeout && (data = getMouseData(mouse->dev.fd, type, text_mode)) != NULL) {
++ GET_TIME(mouse->timestamp);
++ }
++
++ /* in case of timeout data passed to typr->fun() is NULL */
++ if ((!timeout && data == NULL) ||
++ type->fun(&mouse->dev, &mouse->options, data, &nEvent) == -1) {
++ if (!i) return MOUSE_NO_DATA;
++ else break;
++ }
++
++ event->modifiers = nEvent.modifiers; /* propagate modifiers */
++
++ /* propagate buttons */
++ nEvent.buttons = multiplex_buttons(mouse, nEvent.buttons);
++
++ if (!i) event->buttons = nEvent.buttons;
++
++ if (oldB != nEvent.buttons) {
++ rslt = MOUSE_MORE_DATA;
+ break;
+ }
+- cinfoPtr = cinfoPtr->next;
+- }
+- return -1;
+- } /* not data */
+-
+- if (i == -1) return -1; /* too few bytes */
+
+- if (conn.pid!=0) {
+- ci->data = conn;
+- return 0;
+- }
+-
+- /* Aha, request for information (so-called snapshot) */
+- switch(conn.vc) {
+- case GPM_REQ_SNAPSHOT:
+- i=open_console(O_RDONLY);
+- ioctl(i,VT_GETSTATE,&stat);
+- event.modifiers=6; /* code for the ioctl */
+- if (ioctl(i,TIOCLINUX,&(event.modifiers))<0)
+- gpm_report(GPM_PR_OOPS,GPM_MESS_GET_SHIFT_STATE);
+- close(i);
+- event.vc = stat.v_active;
+- event.x=statusX; event.y=statusY;
+- event.dx=maxx; event.dy=maxy;
+- event.buttons= statusB;
+- event.clicks=statusC;
+- /* fall through */
+- /* missing break or do you want this ??? */
+-
+- case GPM_REQ_BUTTONS:
+- event.type= (opt_three==1 ? 3 : 2); /* buttons */
+- write(ci->fd,&event,sizeof(Gpm_Event));
+- break;
++ /* propagate movement */
++ if (!opt->absolute) { /* mouse */
++ if (abs(nEvent.dx) + abs(nEvent.dy) > opt->delta)
++ nEvent.dx *= opt->accel, nEvent.dy *= opt->accel;
+
+- case GPM_REQ_NOPASTE:
+- disable_paste(vc);
+- break;
++ /* increment the reported dx,dy */
++ event->dx += nEvent.dx;
++ event->dy += nEvent.dy;
++ } else { /* a pen */
++ /* get dx,dy to check if there has been movement */
++ event->dx = nEvent.x - event->x;
++ event->dy = nEvent.y - event->y;
++ }
++
++ /* propagate wheel */
++ event->wdx += nEvent.wdx;
++ event->wdy += nEvent.wdy;
++
++ } while (i++ < opt->cluster && more_data_waiting(mouse->dev.fd));
++ } /* if(eventFlag) */
++
++ /*....................................... update the button number */
++
++ if ((event->buttons & GPM_B_MIDDLE) && !opt->three_button) opt->three_button++;
++
++ /*....................................... we're a repeater, aren't we? */
++
++ if (!text_mode) {
++ if (repeater.fd != -1 && !repeater.raw)
++ handle_repeater(opt->absolute, &nEvent, event);
++ oldB = nEvent.buttons;
++ return MOUSE_NO_DATA; /* no events nor information for clients */
+ }
+
+- return 0;
+-}
++/*....................................... no, we arent a repeater, go on */
+
+-/*-------------------------------------------------------------------*/
+-static inline int processConn(int fd) /* returns newfd or -1 */
+-{
+- Gpm_Cinfo *info;
+- Gpm_Connect *request;
+- Gpm_Cinfo *next;
+- int vc, newfd;
+-#if !defined(__GLIBC__)
+- int len;
+-#else /* __GLIBC__ */
+- size_t len; /* isn't that generally defined in C ??? -- nico */
+-#endif /* __GLIBC__ */
+- struct sockaddr_un addr; /* reuse this each time */
+- struct stat statbuf;
+- uid_t uid;
+- char *tty = NULL;
+-
+-/*....................................... Accept */
+-
+- bzero((char *)&addr,sizeof(addr));
+- addr.sun_family=AF_UNIX;
+-
+- len=sizeof(addr);
+- if ((newfd=accept(fd,(struct sockaddr *)&addr, &len))<0) {
+- gpm_report(GPM_PR_ERR,GPM_MESS_ACCEPT_FAILED,strerror(errno));
+- return -1;
+- }
+-
+- gpm_report(GPM_PR_INFO,GPM_MESS_CONECT_AT,newfd);
+-
+- info=malloc(sizeof(Gpm_Cinfo));
+- if (!info) gpm_report(GPM_PR_OOPS,GPM_MESS_NO_MEM);
+- request=&(info->data);
+-
+- if(get_data(request,newfd)==-1) {
+- free(info);
+- close(newfd);
+- return -1;
+- }
+-
+- if ((vc=request->vc)>MAX_VC) {
+- gpm_report(GPM_PR_WARN,GPM_MESS_REQUEST_ON, vc, MAX_VC);
+- free(info);
+- close(newfd);
+- return -1;
+- }
+-
+-#ifndef SO_PEERCRED
+- if (stat (addr.sun_path, &statbuf) == -1 || !S_ISSOCK(statbuf.st_mode)) {
+- gpm_report(GPM_PR_ERR,GPM_MESS_ADDRES_NSOCKET,addr.sun_path);
+- free(info); /* itz 10-12-95 verify client's right */
+- close(newfd);
+- return -1; /* to read requested tty */
++ /* use fine delta values now, if delta is the information */
++ if (!opt->absolute) {
++ fine_dx += event->dx;
++ fine_dy += event->dy;
++ event->dx = fine_dx / opt->scalex;
++ event->dy = fine_dy / opt->scaley;
++ fine_dx %= opt->scalex;
++ fine_dy %= opt->scaley;
+ }
+-
+- unlink(addr.sun_path); /* delete socket */
+
+- staletime = time(0) - 30;
+- if (statbuf.st_atime < staletime
+- || statbuf.st_ctime < staletime
+- || statbuf.st_mtime < staletime) {
+- gpm_report(GPM_PR_ERR,GPM_MESS_SOCKET_OLD);
+- free (info);
+- close(newfd);
+- return -1; /* socket is ancient */
++ /* up and down, up and down, ... who does a do..while(0) loop ???
++ and then makes a break into it... argh ! */
++
++ if (!event->dx && !event->dy && event->buttons == oldB) {
++ static time_t awaketime;
++ /*
++ * Ret information also if never happens, but enough time has elapsed.
++ * Note: return 1 will segfault due to missing event->vc; FIXME!
++ */
++ if (time(NULL) <= awaketime) return MOUSE_NO_DATA;
++ awaketime = time(NULL) + 1;
+ }
+
+- uid = statbuf.st_uid; /* owner of socket */
+-#else
+- {
+- struct ucred sucred;
+- socklen_t credlen = sizeof(struct ucred);
+-
+- if(getsockopt(newfd, SOL_SOCKET, SO_PEERCRED, &sucred, &credlen) == -1) {
+- gpm_report(GPM_PR_ERR,GPM_MESS_GETSOCKOPT, strerror(errno));
+- free(info);
+- close(newfd);
+- return -1;
+- }
+- uid = sucred.uid;
+- gpm_report(GPM_PR_DEBUG,GPM_MESS_PEER_SCK_UID, uid);
+- }
+-#endif
+- if (uid != 0) {
+- if(( tty =
+- malloc(strlen(option.consolename)+Gpm_cnt_digits(vc) + sizeof(char))) == NULL)
+- gpm_report(GPM_PR_OOPS,GPM_MESS_NO_MEM);
+-
+- strncpy(tty,option.consolename,strlen(option.consolename)-1);
+- sprintf(&tty[strlen(option.consolename)-1],"%d",vc);
++ /*....................................... fill missing fields */
++ event->x += event->dx; event->y += event->dy;
+
+- if(stat(tty, &statbuf) == -1) {
+- gpm_report(GPM_PR_ERR,GPM_MESS_STAT_FAILS,tty);
+- free(info);
+- free(tty);
+- close(newfd);
+- return -1;
+- }
+- if (uid != statbuf.st_uid) {
+- gpm_report(GPM_PR_WARN,GPM_MESS_FAILED_CONNECT, uid, tty); /*SUSPECT!*/
+- free(info);
+- free(tty);
+- close(newfd);
+- return -1;
++ event->vc = get_console_state(&shift_state);
++ if (event->vc != last_active) {
++ handle_console_resize(event);
++ last_active = event->vc;
++ }
++ event->modifiers |= shift_state;
++
++ if (oldB == event->buttons)
++ event->type = (event->buttons ? (GPM_DRAG | GPM_MFLAG) : GPM_MOVE);
++ else {
++ if (event->buttons > oldB)
++ event->type = GPM_DOWN;
++ else {
++ event->type &= GPM_MFLAG;
++ event->type |= GPM_UP;
++ event->buttons ^= oldB; /* for button-up, tell which one */
+ }
+- free(tty); /* at least here it's not needed anymore */
+ }
++ calculate_clicks(event, opt->time);
++ snap_to_screen_limits(event);
++
++ gpm_report(GPM_PR_DEBUG,"M: %3i %3i (%3i %3i) - butt=%i vc=%i cl=%i",
++ event->dx, event->dy, event->x, event->y,
++ event->buttons, event->vc, event->clicks);
+
+- /* register the connection information in the right place */
+- info->next=next=cinfo[vc];
+- info->fd=newfd;
+- cinfo[vc]=info;
+- gpm_report(GPM_PR_DEBUG,GPM_MESS_LONG_STATUS,
+- request->pid, request->vc, request->eventMask, request->defaultMask,
+- request->minMod, request->maxMod);
+-
+- /* if the client gets motions, give it the current position */
+- if(request->eventMask & GPM_MOVE) {
+- Gpm_Event event={0,0,vc,0,0,statusX,statusY,GPM_MOVE,0,0};
+- do_client(info, &event);
+- }
++ oldB = nEvent.buttons;
+
+- return newfd;
++ if (opt_special && (event->type & GPM_DOWN) && !processSpecial(event))
++ rslt = MOUSE_NO_DATA;
++
++ return rslt;
+ }
+
+-/*-------------------------------------------------------------------*/
+-void get_console_size(Gpm_Event *ePtr)
++static int wait_for_data(fd_set *connSet, int maxfd, fd_set *selSet)
+ {
+- int i, prevmaxx, prevmaxy;
+- struct mouse_features *which_mouse; /* local */
++ struct micetab *mouse;
++ struct timeval now, timeout = { 0, 0 };
++ int mouse_tmo, tmo = INT_MAX;
+
+- /* before asking the new console size, save the previous values */
+- prevmaxx = maxx; prevmaxy = maxy;
++ GET_TIME(now);
+
+- i=open_console(O_RDONLY);
+- ioctl(i, TIOCGWINSZ, &win);
+- close(i);
+- if (!win.ws_col || !win.ws_row) {
+- gpm_report(GPM_PR_DEBUG,GPM_MESS_ZERO_SCREEN_DIM);
+- win.ws_col=80; win.ws_row=25;
+- }
+- maxx=win.ws_col; maxy=win.ws_row;
+- gpm_report(GPM_PR_DEBUG,GPM_MESS_SCREEN_SIZE,maxx,maxy);
+-
+- if (!prevmaxx) { /* first invocation, place the pointer in the middle */
+- statusX = ePtr->x = maxx/2;
+- statusY = ePtr->y = maxy/2;
+- } else { /* keep the pointer in the same position where it was */
+- statusX = ePtr->x = ePtr->x * maxx / prevmaxx;
+- statusY = ePtr->y = ePtr->y * maxy / prevmaxy;
+- }
+-
+- for (i=1; i <= 1+opt_double; i++) {
+- which_mouse=mouse_table+i; /* used to access options */
+- /*
+- * the following operation is based on the observation that 80x50
+- * has square cells. (An author-centric observation ;-)
+- */
+- opt_scaley=opt_scale*50*maxx/80/maxy;
+- gpm_report(GPM_PR_DEBUG,GPM_MESS_X_Y_VAL,opt_scale,opt_scaley);
++ *selSet = *connSet;
++ for (mouse = micelist; mouse; mouse = mouse->next) {
++ FD_SET(mouse->dev.fd, selSet);
++ maxfd = max(maxfd, mouse->dev.fd);
++ if (mouse->dev.timeout >= 0) {
++ mouse_tmo = mouse->dev.timeout - DIF_TIME(mouse->timestamp, now);
++ tmo = min(tmo, mouse_tmo);
++ }
+ }
++
++ if (tmo == INT_MAX)
++ timeout.tv_sec = SELECT_TIME;
++ else if (tmo > 0) {
++ timeout.tv_sec = tmo / 1000;
++ timeout.tv_usec = (tmo % 1000) * 1000;
++ }
++
++ return select(maxfd + 1, selSet, NULL_SET, NULL_SET, &timeout);
+ }
+
+-/*-------------------------------------------------------------------*/
+-static void gpm_killed(int signo)
+-{
+- if(signo==SIGWINCH) {
+- gpm_report(GPM_PR_WARN,GPM_MESS_RESIZING, option.progname, getpid());
+- opt_resize++;
+- return;
+- }
+- if (signo==SIGUSR1)
+- gpm_report(GPM_PR_WARN,GPM_MESS_KILLED_BY,option.progname, getpid(),option.progname);
+- exit(0);
+-}
++
+
+ /*-------------------------------------------------------------------*/
+ int old_main()
+ {
+- int ctlfd, newfd;
+- struct sockaddr_un ctladdr;
+- int i, len, kd_mode, fd;
+- struct timeval timeout;
+- int maxfd=-1;
+- int pending;
++ int ctlfd;
++ int i, text_mode;
++ struct timeval now;
++ int maxfd = -1;
++ int pending, attempt;
++ int timed_out;
+ Gpm_Event event;
++ struct micetab *mouse;
++ struct client_info *ci;
++ fd_set selSet, connSet;
++ enum mouse_rslt rslt;
+
+- for (i = 1; i <= 1+opt_double; i++) {
+- which_mouse=mouse_table+i; /* used to access options */
+-
+- if (!opt_dev) gpm_report(GPM_PR_OOPS,GPM_MESS_NEED_MDEV);
+-
+- if(!strcmp(opt_dev,"-")) fd=0; /* use stdin */
+- else if( (fd=open(opt_dev,O_RDWR | O_NDELAY)) < 0)
+- gpm_report(GPM_PR_OOPS,GPM_MESS_OPEN,opt_dev);
+-
+- /* and then reset the flag */
+- fcntl(fd,F_SETFL,fcntl(fd,F_GETFL) & ~O_NDELAY);
+-
+- /* create argc and argv for this device */
+- mouse_argv[i] = build_argv(opt_type, opt_options, &mouse_argc[i], ',');
+-
+- /* init the device, and use the return value as new mouse type */
+- if (m_type->init)
+- m_type=(m_type->init)(fd, m_type->flags, m_type, mouse_argc[i],
+- mouse_argv[i]);
+- if (!m_type) gpm_report(GPM_PR_OOPS,GPM_MESS_MOUSE_INIT);
+-
+- which_mouse->fd=fd;
+- maxfd=max(fd, maxfd);
+- }
+-
+-/*....................................... catch interesting signals */
+-
++ /*....................................... catch interesting signals */
+ signal(SIGTERM, gpm_killed);
+ signal(SIGINT, gpm_killed);
+ signal(SIGUSR1, gpm_killed); /* usr1 is used by a new gpm killing the old */
+ signal(SIGWINCH,gpm_killed); /* winch can be sent if console is resized */
++ signal(SIGPIPE, SIG_IGN); /* WARN */
+
+-/*....................................... create your nodes */
+-
+- /* control node */
+-
+- if((ctlfd=socket(AF_UNIX,SOCK_STREAM,0))==-1) gpm_report(GPM_PR_OOPS,GPM_MESS_SOCKET_PROB);
+- bzero((char *)&ctladdr,sizeof(ctladdr));
+- ctladdr.sun_family=AF_UNIX;
+- strcpy(ctladdr.sun_path,GPM_NODE_CTL);
+- unlink(GPM_NODE_CTL);
+-
+- len=sizeof(ctladdr.sun_family)+strlen(GPM_NODE_CTL);
+- if(bind(ctlfd,(struct sockaddr *)(&ctladdr),len) == -1)
+- gpm_report(GPM_PR_OOPS,GPM_MESS_BIND_PROB,ctladdr.sun_path);
+- maxfd=max(maxfd,ctlfd);
+-
+- /* needs to be 0777, so all users can _try_ to access gpm */
+- chmod(GPM_NODE_CTL,0777);
+-
+- get_console_size(&event); /* get screen dimensions */
+-
+-/*....................................... wait for mouse and connections */
+-
+- listen(ctlfd, 5); /* Queue up calls */
+-
+-#define NULL_SET ((fd_set *)NULL)
+-#define resetTimeout() (timeout.tv_sec=SELECT_TIME,timeout.tv_usec=0)
++ init_mice();
++ handle_console_resize(&event); /* get screen dimensions */
++ ctlfd = listen_for_clients();
+
++ /*....................................... wait for mouse and connections */
+ FD_ZERO(&connSet);
+- FD_SET(ctlfd,&connSet);
+-
+- if (opt_double) FD_SET(mouse_table[2].fd,&connSet);
+-
+- readySet=connSet;
+- FD_SET(mouse_table[1].fd,&readySet);
+-
+- signal(SIGPIPE,SIG_IGN); /* WARN */
+-
+-/*--------------------------------------- main loop begins here */
++ FD_SET(ctlfd, &connSet);
++ maxfd = max(maxfd, ctlfd);
++
++ /*--------------------------------------- main loop begins here */
+
+- while(1) {
+- selSet=readySet;
+- resetTimeout();
+- if (opt_test) timeout.tv_sec=0;
++ while (1) {
+
+- if (eventFlag) { /* an event left over by clustering */
+- pending=1;
+- FD_ZERO(&selSet);
+- FD_SET(mouse_table[eventFlag].fd,&selSet);
+- }
+- else
+- while((pending=select(maxfd+1,&selSet,NULL_SET,NULL_SET,&timeout))==0){
+- selSet=readySet;
+- resetTimeout();
+- } /* go on */
+-
+- if(opt_resize) { /* did the console resize? */
+- get_console_size(&event);
+- opt_resize--;
+- signal(SIGWINCH,gpm_killed); /* reinstall handler */
+-
+- /* and notify clients */
+- for(i=0; i<MAX_VC+1; i++) {
+- Gpm_Cinfo *ci;
+- for (ci = cinfo[i]; ci; ci = ci->next) kill(ci->data.pid,SIGWINCH);
+- }
++ pending = wait_for_data(&connSet, maxfd, &selSet);
++
++ if (console_resized) { /* did the console resize? */
++ handle_console_resize(&event);
++ console_resized = 0;
++ signal(SIGWINCH, gpm_killed); /* reinstall handler */
++ notify_clients_resize();
+ }
+
+ if (pending < 0) {
+- if (errno==EBADF) gpm_report(GPM_PR_OOPS,GPM_MESS_SELECT_PROB);
+- gpm_report(GPM_PR_ERR,GPM_MESS_SELECT_STRING,strerror(errno));
+- selSet=readySet;
+- resetTimeout();
++ if (errno == EBADF) gpm_report(GPM_PR_OOPS,GPM_MESS_SELECT_PROB);
++ gpm_report(GPM_PR_ERR, GPM_MESS_SELECT_STRING, strerror(errno));
+ continue;
+ }
+
+- gpm_report(GPM_PR_DEBUG,GPM_MESS_SELECT_TIMES,pending);
++ gpm_report(GPM_PR_DEBUG, GPM_MESS_SELECT_TIMES, pending);
+
+-/*....................................... manage graphic mode */
++ /*....................................... manage graphic mode */
+
+- /*
+- * Be sure to be in text mode. This used to be before select,
+- * but actually it only matters if you have events.
+- */
+- {
+- int fd = open_console(O_RDONLY);
+- if (ioctl(fd, KDGETMODE, &kd_mode) < 0)
+- gpm_report(GPM_PR_OOPS,GPM_MESS_IOCTL_KDGETMODE);
+- close(fd);
+- if(kd_mode != KD_TEXT && !option.repeater) {
+- wait_text(&mouse_table[1].fd);
+- maxfd=max(maxfd,mouse_table[1].fd);
+- readySet=connSet;
+- FD_SET(mouse_table[1].fd,&readySet);
++ /*
++ * Be sure to be in text mode. This used to be before select,
++ * but actually it only matters if you have events.
++ */
++ text_mode = is_text_console();
++ if (!text_mode && !repeater.type && !repeater.raw) {
++ /* if we don;t have repeater then there is only one mouse so
++ * we can safely use micelist
++ */
++ close(micelist->dev.fd);
++ wait_text_console();
++ /* reopen, reinit (the function is only used if we have one mouse device) */
++ if ((micelist->dev.fd = open(micelist->device, O_RDWR)) < 0)
++ gpm_report(GPM_PR_OOPS, GPM_MESS_OPEN, micelist->device);
++ if (micelist->type->init)
++ micelist->type->init(&micelist->dev, &micelist->options, micelist->type);
+ continue; /* reselect */
+ }
+- }
+
+-/*....................................... got mouse, process event */
+-/*
+- * Well, actually, run a loop to maintain inlining of functions without
+- * lenghtening the file. This is not too clean a code, but it works....
+- */
+-
+- for (i=1; i <= 1+opt_double; i++) {
+- which_mouse=mouse_table+i; /* used to access options */
+- if (FD_ISSET(which_mouse->fd,&selSet)) {
+- FD_CLR(which_mouse->fd,&selSet); pending--;
+- if (processMouse(which_mouse->fd, &event, m_type, kd_mode))
+- /* pass it to the client, if any
+- * or to the default handler, if any
+- * or to the selection handler
+- */ /* FIXME -- check event.vc */
+- /* can't we please rewrite the following a bit nicer?*/
+- (cinfo[event.vc] && do_client(cinfo[event.vc], &event))
+- || (cinfo[0] && do_client(cinfo[0], &event))
+- || do_selection(&event);
++ /*....................................... got mouse, process event */
++ /*
++ * Well, actually, run a loop to maintain inlining of functions without
++ * lenghtening the file. This is not too clean a code, but it works....
++ */
++ GET_TIME(now);
++ for (mouse = micelist; mouse; mouse = mouse->next) {
++ timed_out = mouse->dev.timeout >= 0 &&
++ DIF_TIME(mouse->timestamp, now) >= mouse->dev.timeout;
++ if (timed_out || FD_ISSET(mouse->dev.fd, &selSet)) {
++ if (FD_ISSET(mouse->dev.fd, &selSet)) {
++ FD_CLR(mouse->dev.fd, &selSet);
++ pending--;
+ }
++ attempt = 0;
++ do {
++ rslt = processMouse(mouse, timed_out, ++attempt, &event, text_mode);
++ if (rslt != MOUSE_NO_DATA) {
++ /* pass it to the client or to the default handler,
++ * or to the selection handler
++ */
++ if (event.vc > MAX_VC) event.vc = 0;
++ if (event.vc == 0 || !cinfo[event.vc] || !do_client(cinfo[event.vc], &event))
++ if (!cinfo[0] || !do_client(cinfo[0], &event))
++ do_selection(&event, mouse->options.three_button);
++ }
++ } while (rslt == MOUSE_MORE_DATA);
++ }
+ }
+
+ /*..................... got connection, process it */
+-
+- if (pending && FD_ISSET(ctlfd,&selSet)) {
+- FD_CLR(ctlfd,&selSet); pending--;
+- newfd=processConn(ctlfd);
+- if (newfd>=0) {
+- FD_SET(newfd,&connSet);
+- FD_SET(newfd,&readySet);
+- maxfd=max(maxfd,newfd);
++ if (pending && FD_ISSET(ctlfd, &selSet)) {
++ FD_CLR(ctlfd, &selSet);
++ pending--;
++ if ((ci = accept_client_connection(ctlfd))) {
++ if (ci->data.eventMask & GPM_MOVE) {
++ Gpm_Event e = { 0, 0, ci->data.vc, 0, 0,
++ event.x, event.y, GPM_MOVE, 0, 0 };
++ do_client(ci, &e);
++ }
++ FD_SET(ci->fd, &connSet);
++ maxfd = max(maxfd, ci->fd);
+ }
+ }
+
+ /*........................ got request */
+-
+- /* itz 10-22-96 check _all_ clients, not just those on top! */
+- for (i=0; pending && (i<=MAX_VC); i++) {
+- Gpm_Cinfo* ci;
++ /* itz 10-22-96 check _all_ clients, not just those on top! */
++ for (i = 0; pending && i <= MAX_VC; i++) {
+ for (ci = cinfo[i]; pending && ci; ci = ci->next) {
+- if (FD_ISSET(ci->fd,&selSet)) {
+- FD_CLR(ci->fd,&selSet); pending--;
+- /* itz Sat Sep 12 21:10:22 PDT 1998 */
+- /* this code is clearly incorrect; the next highest
+- descriptor after the one we're closing is not necessarily
+- being used. Fortunately, it doesn't hurt simply to leave this
+- out. */
+-
+-#ifdef NOTDEF
+- if ((processRequest(ci,i)==-1) && maxfd==ci->fd) maxfd--;
+-#else
+- (void)processRequest(ci,i);
+-#endif
++ if (FD_ISSET(ci->fd, &selSet)) {
++ FD_CLR(ci->fd, &selSet);
++ pending--;
++ if (!process_client_request(ci, i, event.x, event.y, event.clicks,
++ event.buttons, micelist->options.three_button)) {
++ FD_CLR(ci->fd, &connSet);
++ remove_client(ci, i);
++ }
+ }
+ }
+ }
+
+ /*.................. look for a spare fd */
+-
+ /* itz 10-22-96 this shouldn't happen now! */
+- for (i=0; pending && i<=maxfd; i++) {
+- if (FD_ISSET(i,&selSet)) {
+- FD_CLR(i,&selSet);
++ for (i = 0; pending && i <= maxfd; i++) {
++ if (FD_ISSET(i, &selSet)) {
++ FD_CLR(i, &selSet);
+ pending--;
+- gpm_report(GPM_PR_WARN,GPM_MESS_STRANGE_DATA,i);
++ gpm_report(GPM_PR_WARN, GPM_MESS_STRANGE_DATA,i);
+ }
+ }
+
+ /*................... all done. */
+-
+- if(pending) gpm_report(GPM_PR_OOPS,GPM_MESS_SELECT_PROB);
++ if (pending) gpm_report(GPM_PR_OOPS, GPM_MESS_SELECT_PROB);
+ } /* while(1) */
+ }
+diff -urN gpm-1.20.1/src/gpn.c gpm/src/gpn.c
+--- gpm-1.20.1/src/gpn.c 2002-12-24 17:57:16.000000000 -0500
++++ gpm/src/gpn.c 2003-10-02 01:22:42.000000000 -0500
+@@ -28,201 +28,104 @@
+ #include <stdlib.h>
+ #include <string.h> /* strerror(); ?!? memcpy() */
+ #include <ctype.h> /* isdigit */
+-#include <signal.h>
+-#include <stdarg.h> /* Log uses it */
+-#include <errno.h>
+ #include <unistd.h> /* getopt(),symlink() */
+-#include <sys/stat.h> /* mkdir() */
+-#include <sys/param.h>
+-#include <sys/time.h> /* timeval */
+-#include <sys/wait.h> /* wait() */
+-#include <sys/types.h> /* socket() */
+-#include <sys/socket.h> /* socket() */
+-#include <sys/un.h> /* struct sockaddr_un */
+-#include <asm/types.h> /* __u32 */
+-
+-#ifdef SIGTSTP /* true if BSD system */
+-#include <sys/file.h>
+-#include <sys/ioctl.h>
+-#endif
+-
+-#ifndef HAVE___U32
+-# ifndef _I386_TYPES_H /* /usr/include/asm/types.h */
+-typedef unsigned int __u32;
+-# endif
+-#endif
+
+ #include "headers/message.h"
+ #include "headers/gpmInt.h"
+ #include "headers/gpm.h"
++#include "headers/console.h"
++#include "headers/selection.h"
+
+-extern int errno;
+-
+-/*===================================================================*/
+-/* octal digit */
+-static int isodigit(const unsigned char c)
++/* usage: display for usage informations */
++int usage(char *whofailed)
+ {
+- return ((c & ~7) == '0');
++ if (whofailed) {
++ gpm_report(GPM_PR_ERR, GPM_MESS_SPEC_ERR, whofailed, option.progname);
++ return 1;
++ }
++ printf(GPM_MESS_USAGE, option.progname, DEF_ACCEL, DEF_BAUD, DEF_SEQUENCE,
++ DEF_DELTA, DEF_TIME, DEF_LUT, DEF_SCALE, DEF_SAMPLE, DEF_TYPE);
++ return 1;
+ }
+
+-/* routine to convert digits from octal notation (Andries Brouwer) */
+-static int getsym(const unsigned char *p0, unsigned char *res)
++/*****************************************************************************
++ * the function returns a valid type pointer or NULL if not found
++ *****************************************************************************/
++static struct Gpm_Type *find_mouse_by_name(char *name)
+ {
+- const unsigned char *p = p0;
+- char c;
++ Gpm_Type *type;
++ char *s;
++ int len = strlen(name);
+
+- c = *p++;
+- if (c == '\\' && *p) {
+- c = *p++;
+- if (isodigit(c)) {
+- c -= '0';
+- if (isodigit(*p)) c = 8*c + (*p++ - '0');
+- if (isodigit(*p)) c = 8*c + (*p++ - '0');
++ for (type = mice; type->fun; type++) {
++ if (!strcasecmp(name, type->name)) break;
++ /* otherwise, look in the synonym list */
++ for (s = type->synonyms; s; s = strchr(s, ' ')) {
++ while (*s && isspace(*s)) s++; /* skip spaces */
++ if (!strncasecmp(name, s, len) && !isprint(*(s + len))) break;/*found*/
+ }
++ if (s) break; /* found a synonym */
+ }
+- *res = c;
+- return (p - p0);
++ return type->fun ? type : NULL;
+ }
+
+-/* description missing! FIXME */
+-int loadlut(char *charset)
++static void init_button_sequence(struct miceopt *opt, char *arg)
+ {
+- int i, c, fd;
+- unsigned char this, next;
+- static __u32 long_array[9]={
+- 0x05050505, /* ugly, but preserves alignment */
+- 0x00000000, /* control chars */
+- 0x00000000, /* digits */
+- 0x00000000, /* uppercase and '_' */
+- 0x00000000, /* lowercase */
+- 0x00000000, /* Latin-1 control */
+- 0x00000000, /* Latin-1 misc */
+- 0x00000000, /* Latin-1 uppercase */
+- 0x00000000 /* Latin-1 lowercase */
++ int i;
++ static struct {
++ char *in;
++ char *out;
++ } seq[] = {
++ {"123", "01234567"},
++ {"132", "02134657"},
++ {"213", "01452367"}, /* warning: these must be readable as integers... */
++ {"231", "02461357"},
++ {"312", "04152637"},
++ {"321", "04261537"},
++ {NULL, NULL}
+ };
+
++ if (strlen(arg) != 3 || atoi(arg) < 100)
++ exit(usage("sequence"));
+
+-#define inwordLut (long_array+1)
+-
+- for (i=0; charset[i]; ) {
+- i += getsym(charset+i, &this);
+- if (charset[i] == '-' && charset[i + 1] != '\0')
+- i += getsym(charset+i+1, &next) + 1;
+- else
+- next = this;
+- for (c = this; c <= next; c++)
+- inwordLut[c>>5] |= 1 << (c&0x1F);
+- }
+-
+- if ((fd=open(option.consolename, O_WRONLY)) < 0) {
+- /* try /dev/console, if /dev/tty0 failed -- is that really senseful ??? */
+- free(option.consolename); /* allocated by main */
+- if((option.consolename=malloc(strlen(GPM_SYS_CONSOLE)+1)) == NULL)
+- gpm_report(GPM_PR_OOPS,GPM_MESS_NO_MEM);
+- strcpy(option.consolename,GPM_SYS_CONSOLE);
+-
+- if ((fd=open(option.consolename, O_WRONLY)) < 0) gpm_report(GPM_PR_OOPS,GPM_MESS_OPEN_CON);
+- }
+- if (ioctl(fd, TIOCLINUX, &long_array) < 0) { /* fd <0 is checked */
+- if (errno==EPERM && getuid())
+- gpm_report(GPM_PR_WARN,GPM_MESS_ROOT); /* why do we still continue?*/
+- else if (errno==EINVAL)
+- gpm_report(GPM_PR_OOPS,GPM_MESS_CSELECT);
+- }
+- close(fd);
+-
+- return 0;
++ for (i = 0; seq[i].in && strcmp(seq[i].in, arg); i++);
++ if (!seq[i].in)
++ exit(usage("button sequence"));
++ opt->sequence = strdup(seq[i].out); /* I can rewrite on it */
+ }
+
+-/* usage: display for usage informations */
+-int usage(char *whofailed)
++static void validate_mouse(struct micetab *mouse, int mouse_no)
+ {
+- if (whofailed) {
+- gpm_report(GPM_PR_ERR,GPM_MESS_SPEC_ERR,whofailed,option.progname);
+- return 1;
+- }
+- printf(GPM_MESS_USAGE,option.progname, DEF_ACCEL, DEF_BAUD, DEF_SEQUENCE,
+- DEF_DELTA, DEF_TIME, DEF_LUT,DEF_SCALE, DEF_SAMPLE, DEF_TYPE);
+- return 1;
+-}
+-
+-/* itz Sat Sep 12 10:55:51 PDT 1998 Added this as replacement for the
+- unwanted functionality in check_uniqueness. */
+-
+-void check_kill(void)
+-{
+- int old_pid;
+- FILE* fp = fopen(GPM_NODE_PID, "r");
+-
+- /* if we cannot find the old pid file, leave */
+- if (fp == NULL) gpm_report(GPM_PR_OOPS,GPM_MESS_OPEN, GPM_NODE_PID);
+-
+- /* else read the pid */
+- if (fscanf(fp,"%d",&old_pid) != 1)
+- gpm_report(GPM_PR_OOPS,GPM_MESS_READ_PROB,GPM_NODE_PID);
+- fclose(fp);
+-
+- gpm_report(GPM_PR_DEBUG,GPM_MESS_KILLING,old_pid);
+-
+- /* first check if we run */
+- if (kill(old_pid,0) == -1) {
+- gpm_report(GPM_PR_INFO,GPM_MESS_STALE_PID, GPM_NODE_PID);
+- unlink(GPM_NODE_PID);
++ if (!mouse->device) {
++ if (!mouse->type && mouse_no > 1)
++ gpm_report(GPM_PR_OOPS,
++ "No device/protocol specified for mouse #%d, probably extra -M option?", mouse_no);
++ else
++ gpm_report(GPM_PR_OOPS, "No device specified for mouse #%d", mouse_no);
+ }
+- /* then kill us (not directly, but the other instance ... ) */
+- if (kill(old_pid,SIGTERM) == -1)
+- gpm_report(GPM_PR_OOPS,GPM_MESS_CANT_KILL, old_pid);
+
+- gpm_report(GPM_PR_INFO,GPM_MESS_KILLED,old_pid);
+- exit(0);
+-}
++ if (!mouse->type)
++ mouse->type = find_mouse_by_name(DEF_TYPE);
+
+-/* itz Sat Sep 12 10:30:05 PDT 1998 this function used to mix two
+- completely different things; opening a socket to a running daemon
+- and checking that a running daemon existed. Ugly. */
+-/* rewritten mostly on 20th of February 2002 - nico */
+-void check_uniqueness(void)
+-{
+- FILE *fp = 0;
+- int old_pid = -1;
++ mouse->options.absolute = mouse->type->absolute;
+
+- if((fp = fopen(GPM_NODE_PID, "r")) != NULL) {
+- fscanf(fp, "%d", &old_pid);
+- if (kill(old_pid,0) == -1) {
+- gpm_report(GPM_PR_INFO,GPM_MESS_STALE_PID, GPM_NODE_PID);
+- unlink(GPM_NODE_PID);
+- } else /* we are really running, exit asap! */
+- gpm_report(GPM_PR_OOPS,GPM_MESS_ALREADY_RUN, old_pid);
+- }
+- /* now try to sign ourself */
+- if ((fp = fopen(GPM_NODE_PID,"w")) != NULL) {
+- fprintf(fp,"%d\n",getpid());
+- fclose(fp);
+- } else {
+- gpm_report(GPM_PR_OOPS,GPM_MESS_NOTWRITE,GPM_NODE_PID);
+- }
++ if (!mouse->options.sequence)
++ init_button_sequence(&mouse->options, DEF_SEQUENCE);
+ }
+
+-/*****************************************************************************
+- * the function returns a valid type pointer or NULL if not found
+- *****************************************************************************/
+-struct Gpm_Type *find_mouse_by_name(char *name)
++static void validate_repeater(char *type)
+ {
+- Gpm_Type *type;
+- char *s;
+- int len = strlen(name);
+-
+- for (type=mice; type->fun; type++) {
+- if (!strcasecmp(name, type->name)) break;
+- /* otherwise, look in the synonym list */
+- for (s = type->synonyms; s; s = strchr(s, ' ')) {
+- while (*s && isspace(*s)) s++; /* skip spaces */
+- if(!strncasecmp(name, s, len) && !isprint(*(s + len))) break;/*found*/
+- }
+- if(s) break; /* found a synonym */
++ if (strcmp(type, "raw") == 0)
++ repeater.raw = 1;
++ else {
++ repeater.raw = 0;
++
++ if (!(repeater.type = find_mouse_by_name(type)))
++ exit(M_listTypes()); /* not found */
++
++ if (!repeater.type->repeat_fun) /* unsupported translation */
++ gpm_report(GPM_PR_OOPS, GPM_MESS_NO_REPEAT, type);
+ }
+- if (!type->fun) return NULL;
+- return type;
+ }
+
+ /*****************************************************************************
+@@ -230,60 +133,86 @@
+ * Can't believe it, today cmdline() really does what the name tries to say
+ *****************************************************************************/
+ void cmdline(int argc, char **argv)
+-{
+- extern struct options option;
++{
++ struct micetab *mouse;
++ struct miceopt *opt;
+ char options[]="a:A::b:B:d:Dg:hi:kl:m:Mo:pr:R::s:S:t:TuvV::23";
+- int opt;
++ int opt_char, tmp;
++ int mouse_no = 1;
++
++ mouse = add_mouse();
++ opt = &mouse->options;
+
+- /* initialize for the dual mouse */
+- mouse_table[2]=mouse_table[1]=mouse_table[0]; /* copy defaults */
+- which_mouse=mouse_table+1; /* use the first */
+-
+- while ((opt = getopt(argc, argv, options)) != -1) {
+- switch (opt) {
+- case 'a': opt_accel = atoi(optarg); break;
+- case 'A': opt_aged++;
+- if (optarg)
+- opt_age_limit = atoi(optarg); break;
+- case 'b': opt_baud = atoi(optarg); break;
+- case 'B': opt_sequence = optarg; break;
+- case 'd': opt_delta = atoi(optarg); break;
+- case 'D': option.run_status = GPM_RUN_DEBUG; break;
+- case 'g': opt_glidepoint_tap=atoi(optarg); break;
+- case 'h': exit(usage(NULL));
+- case 'i': opt_time=atoi(optarg); break;
+- case 'k': check_kill(); break;
+- case 'l': opt_lut = optarg; break;
+- case 'm': add_mouse(GPM_ADD_DEVICE,optarg);
+- opt_dev = optarg; break; /* GO AWAY!*/
+- case 'M': opt_double++; option.repeater++;
+- if (option.repeater_type == 0)
+- option.repeater_type = "msc";
+- which_mouse=mouse_table+2; break;
+- case 'o': add_mouse(GPM_ADD_OPTIONS,optarg);
+- gpm_report(GPM_PR_DEBUG,"options: %s",optarg);
+- opt_options = optarg; break; /* GO AWAY */
+- case 'p': opt_ptrdrag = 0; break;
+- case 'r':
+- /* being called responsiveness, I must take the inverse */
+- opt_scale=atoi(optarg);
+- if(!opt_scale || opt_scale > 100) opt_scale=100; /* the maximum */
+- else opt_scale=100/opt_scale; break;
+- case 'R':
+- option.repeater++;
+- if (optarg) option.repeater_type = optarg;
+- else option.repeater_type = "msc"; break;
+- case 's': opt_sample = atoi(optarg); break;
+- case 'S': if (optarg) opt_special = optarg;
+- else opt_special=""; break;
+- case 't': add_mouse(GPM_ADD_TYPE,optarg);
+- opt_type = optarg; break; /* GO AWAY */
+- case 'u': option.autodetect = 1; break;
+- case 'T': opt_test++; break;
+- case 'v': printf(GPM_MESS_VERSION "\n"); exit(0);
+- case '2': opt_three = -1; break;
+- case '3': opt_three = 1; break;
+- default: exit(usage("commandline"));
++ while ((opt_char = getopt(argc, argv, options)) != -1) {
++ switch (opt_char) {
++ case 'a': if ((opt->accel = atoi(optarg)) < 1)
++ exit(usage("acceleration"));
++ break;
++ case 'A': sel_opts.aged = 1;
++ if (optarg)
++ sel_opts.age_limit = atoi(optarg);
++ break;
++ case 'b': opt->baud = atoi(optarg);
++ break;
++ case 'B': init_button_sequence(opt, optarg);
++ break;
++ case 'd': if ((opt->delta = atoi(optarg)) < 2)
++ exit(usage("delta"));
++ break;
++ case 'D': option.run_status = GPM_RUN_DEBUG;
++ break;
++ case 'g': if (atoi(optarg) > 3)
++ exit(usage("glidepoint tap button"));
++ opt->glidepoint_tap = GPM_B_LEFT >> (atoi(optarg) - 1);
++ break;
++ case 'h': exit(usage(NULL));
++ case 'i': opt->time = atoi(optarg);
++ break;
++ case 'k': kill_gpm();
++ break;
++ case 'l': console.charset = optarg;
++ break;
++ case 'm': mouse->device = optarg;
++ break;
++ case 'M': validate_mouse(mouse, mouse_no);
++ mouse = add_mouse();
++ opt = &mouse->options;
++ mouse_no++;
++ if (!repeater.type && !repeater.raw)
++ repeater.type = find_mouse_by_name(DEF_REP_TYPE);
++ break;
++ case 'o': gpm_report(GPM_PR_DEBUG,"options: %s", optarg);
++ opt->text = optarg;
++ break;
++ case 'p': sel_opts.ptrdrag = 0;
++ break;
++ case 'r': /* being called responsiveness, I must take the inverse */
++ tmp = atoi(optarg);
++ if (!tmp || tmp > 100) tmp = 1;
++ opt->scalex = 100 / tmp;
++ break;
++ case 'R': validate_repeater((optarg) ? optarg : DEF_REP_TYPE);
++ break;
++ case 's': opt->sample = atoi(optarg);
++ break;
++ case 'S': if (optarg) opt_special = optarg;
++ else opt_special="";
++ break;
++ case 't': mouse->type = find_mouse_by_name(optarg);
++ if (!mouse->type)
++ exit(M_listTypes());
++ break;
++ case 'u': option.autodetect = 1;
++ break;
++ case 'v': printf(GPM_MESS_VERSION "\n");
++ exit(0);
++ case '2': opt->three_button = -1;
++ break;
++ case '3': opt->three_button = 1;
++ break;
++ default: exit(usage("commandline"));
+ }
+ }
++
++ validate_mouse(micelist, mouse_no);
+ }
+diff -urN gpm-1.20.1/src/headers/client.h gpm/src/headers/client.h
+--- gpm-1.20.1/src/headers/client.h 1969-12-31 19:00:00.000000000 -0500
++++ gpm/src/headers/client.h 2003-10-02 01:22:42.000000000 -0500
+@@ -0,0 +1,57 @@
++/* -*-mode:C;tab-width:3-*-
++ * client.h - GPM client handling (server side)
++ *
++ * Copyright (C) 2003 Dmitry Torokhov <dtor@mail.ru>
++ *
++ * 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-1307, USA.
++ ********/
++
++#ifndef __GPM_CLIENT_H
++#define __GPM_CLIENT_H_
++
++#ifdef HAVE_LINUX_TTY_H
++#include <linux/tty.h>
++#endif
++
++#include "headers/gpm.h"
++
++/* FIXME: still needed ?? */
++/* How many virtual consoles are managed? */
++#ifndef MAX_NR_CONSOLES
++# define MAX_NR_CONSOLES 64 /* this is always sure */
++#endif
++
++#define MAX_VC MAX_NR_CONSOLES /* doesn't work before 1.3.77 */
++
++struct client_info {
++ Gpm_Connect data;
++ int fd;
++ struct client_info *next;
++};
++
++struct Gpm_Event;
++
++extern struct client_info *cinfo[MAX_VC + 1];
++
++int listen_for_clients(void);
++struct client_info *accept_client_connection(int fd);
++void remove_client(struct client_info *ci, int vc);
++void notify_clients_resize(void);
++int do_client(struct client_info *cinfo, struct Gpm_Event *event);
++int process_client_request(struct client_info *ci, int vc,
++ int x, int y, int buttons, int clicks,
++ int three_button_mouse);
++
++#endif /* __GPM_CLIENT_H_ */
+diff -urN gpm-1.20.1/src/headers/console.h gpm/src/headers/console.h
+--- gpm-1.20.1/src/headers/console.h 1969-12-31 19:00:00.000000000 -0500
++++ gpm/src/headers/console.h 2003-10-02 01:22:42.000000000 -0500
+@@ -0,0 +1,42 @@
++/* -*-mode:C;tab-width:3-*-
++ * console.h - GPM console and selection/paste handling
++ *
++ * Copyright (C) 2003 Dmitry Torokhov <dtor@mail.ru>
++ *
++ * 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-1307, USA.
++ ********/
++
++#ifndef __GPM_CONSOLE_H_
++#define __GPM_CONSOLE_H_
++
++struct gpm_console {
++ char *device;
++ char *charset;
++ int max_x, max_y;
++};
++
++extern struct gpm_console console;
++
++int open_console(int mode);
++char *get_console_name();
++char *compose_vc_name(int vc);
++int is_text_console(void);
++void wait_text_console(void);
++void refresh_console_size(void);
++int is_console_owner(int vc, uid_t uid);
++int get_console_state(unsigned char *shift_state);
++void console_load_lut(void);
++
++#endif /* __GPM_CONSOLE_H_ */
+diff -urN gpm-1.20.1/src/headers/gpmInt.h gpm/src/headers/gpmInt.h
+--- gpm-1.20.1/src/headers/gpmInt.h 2002-12-24 17:57:16.000000000 -0500
++++ gpm/src/headers/gpmInt.h 2003-10-02 01:22:42.000000000 -0500
+@@ -23,8 +23,7 @@
+ #ifndef _GPMINT_INCLUDED
+ #define _GPMINT_INCLUDED
+
+-#include <sys/types.h> /* time_t */ /* for whom ???? FIXME */
+-
++#include <sys/time.h> /* timeval */
+ #include "gpm.h"
+
+ #if !defined(__GNUC__)
+@@ -35,23 +34,12 @@
+ /* timeout for the select() syscall */
+ #define SELECT_TIME 86400 /* one day */
+
+-#ifdef HAVE_LINUX_TTY_H
+-#include <linux/tty.h>
+-#endif
+-
+-/* FIXME: still needed ?? */
+-/* How many virtual consoles are managed? */
+-#ifndef MAX_NR_CONSOLES
+-# define MAX_NR_CONSOLES 64 /* this is always sure */
+-#endif
+-
+-#define MAX_VC MAX_NR_CONSOLES /* doesn't work before 1.3.77 */
+-
+ /* How many buttons may the mouse have? */
+ /* #define MAX_BUTTONS 3 ===> not used, it is hardwired :-( */
+
+ /* all the default values */
+ #define DEF_TYPE "ms"
++#define DEF_REP_TYPE "msc"
+ #define DEF_DEV NULL /* use the type-related one */
+ #define DEF_LUT "-a-zA-Z0-9_./\300-\326\330-\366\370-\377"
+ #define DEF_SEQUENCE "123" /* how buttons are reordered */
+@@ -62,12 +50,10 @@
+ #define DEF_SCALE 10
+ #define DEF_TIME 250 /* time interval (ms) for multiple clicks */
+ #define DEF_THREE 0 /* have three buttons? */
+-#define DEF_KERNEL 0 /* no kernel module, by default */
+
+ /* 10 on old computers (<=386), 0 on current machines */
+ #define DEF_CLUSTER 0 /* maximum number of clustered events */
+
+-#define DEF_TEST 0
+ #define DEF_PTRDRAG 1 /* double or triple click */
+ #define DEF_GLIDEPOINT_TAP 0 /* tapping emulates no buttons by default */
+
+@@ -84,11 +70,6 @@
+ #define GPM_DEVFS_CONSOLE "/dev/vc/0"
+ #define GPM_OLD_CONSOLE "/dev/tty0"
+
+-/* for adding a mouse; add_mouse */
+-#define GPM_ADD_DEVICE 0
+-#define GPM_ADD_TYPE 1
+-#define GPM_ADD_OPTIONS 2
+-
+ /*** mouse commands ***/
+
+ #define GPM_AUX_SEND_ID 0xF2
+@@ -117,126 +98,95 @@
+
+ /*....................................... Structures */
+
++struct micedev {
++ int fd;
++ int timeout; /* the protocol driver wants to be called
++ after X msec even if there is no new data
++ arrived (-1 to disable/default) */
++ void *private; /* private data maintained by protocol driver */
++};
++
++struct miceopt {
++ char *sequence;
++ int baud;
++ int sample;
++ int delta;
++ int accel;
++ int scalex, scaley;
++ int time;
++ int cluster;
++ int three_button;
++ int glidepoint_tap;
++ int absolute; /* device reports absolute coordinates - initially copied
++ from Gpm_Type; allows same protocol (type) control devices
++ in absolute and relative mode */
++ char *text; /* extra textual options supplied via '-o text' */
++};
++
+ /*
+ * and this is the entry in the mouse-type table
+ */
+ typedef struct Gpm_Type {
+- char *name;
+- char *desc; /* a descriptive line */
+- char *synonyms; /* extra names (the XFree name etc) as a list */
+- int (*fun)(Gpm_Event *state, unsigned char *data);
+- struct Gpm_Type *(*init)(int fd, unsigned short flags,
+- struct Gpm_Type *type, int argc, char **argv);
+- unsigned short flags;
+- unsigned char proto[4];
+- int packetlen;
+- int howmany; /* how many bytes to read at a time */
+- int getextra; /* does it get an extra byte? (only mouseman) */
+- int absolute; /* flag indicating absolute pointing device */
++ char *name;
++ char *desc; /* a descriptive line */
++ char *synonyms; /* extra names (the XFree name etc) as a list */
++ int (*fun)(struct micedev *dev, struct miceopt *opt, unsigned char *data, Gpm_Event *state);
++ int (*init)(struct micedev *dev, struct miceopt *opt, struct Gpm_Type *type);
++ unsigned short flags;
++ unsigned char proto[4];
++ int packetlen;
++ int howmany; /* how many bytes to read at a time */
++ int getextra; /* does it get an extra byte? (only mouseman) */
++ int absolute; /* flag indicating absolute pointing device */
+
+- int (*repeat_fun)(Gpm_Event *state, int fd); /* repeat this event into fd */
++ int (*repeat_fun)(Gpm_Event *state, int fd); /* repeat this event into fd */
+ /* itz Mon Jan 11 23:27:54 PST 1999 */
+ } Gpm_Type;
+
+ #define GPM_EXTRA_MAGIC_1 0xAA
+ #define GPM_EXTRA_MAGIC_2 0x55
+
+-typedef struct Gpm_Cinfo {
+- Gpm_Connect data;
+- int fd;
+- struct Gpm_Cinfo *next;
+-} Gpm_Cinfo;
+-
+-
+-/*....................................... Global variables */
+-
+-/* this structure is used to hide the dual-mouse stuff */
+-
+-struct mouse_features {
+- char *opt_type, *opt_dev, *opt_sequence;
+- int opt_baud,opt_sample,opt_delta, opt_accel, opt_scale, opt_scaley;
+- int opt_time, opt_cluster, opt_three, opt_glidepoint_tap;
+- char *opt_options; /* extra textual configuration */
+- Gpm_Type *m_type;
+- int fd;
+-};
+-
+-extern struct mouse_features mouse_table[3], *which_mouse; /*the current one*/
+-
+-// looks unused; delete
+-//typedef struct Opt_struct_type {int a,B,d,i,p,r,V,A;} Opt_struct_type;
+-
+-/* this is not very clean, actually, but it works fine */
+-#define opt_type (which_mouse->opt_type)
+-#define opt_dev (which_mouse->opt_dev)
+-#define opt_sequence (which_mouse->opt_sequence)
+-#define opt_baud (which_mouse->opt_baud)
+-#define opt_sample (which_mouse->opt_sample)
+-#define opt_delta (which_mouse->opt_delta)
+-#define opt_accel (which_mouse->opt_accel)
+-#define opt_scale (which_mouse->opt_scale)
+-#define opt_scaley (which_mouse->opt_scaley)
+-#define opt_time (which_mouse->opt_time)
+-#define opt_cluster (which_mouse->opt_cluster)
+-#define opt_three (which_mouse->opt_three)
+-#define opt_glidepoint_tap (which_mouse->opt_glidepoint_tap)
+-#define opt_options (which_mouse->opt_options)
+-
+-#define m_type (which_mouse->m_type)
+-
+-/* the other variables */
+-
+-extern char *opt_lut;
+-extern int opt_test, opt_ptrdrag;
+-extern int opt_kill;
+-extern int opt_kernel, opt_explicittype;
+-extern int opt_aged;
+-extern time_t opt_age_limit;
+ extern char *opt_special;
+-extern int opt_rawrep;
+-extern int fifofd;
+-extern int opt_double;
+-
+-extern Gpm_Type *repeated_type;
+ extern Gpm_Type mice[]; /* where the hell are the descriptions...*/
+-extern struct winsize win;
+-extern int maxx, maxy;
+-extern Gpm_Cinfo *cinfo[MAX_VC+1];
+
+ /* new variables <CLEAN> */
+
+ /* structure prototypes */
++struct repeater {
++ int fd;
++ int raw;
++ Gpm_Type *type;
++};
+
+ /* contains all mice */
+ struct micetab {
+ struct micetab *next;
+- char *device;
+- char *protocol;
+- char *options;
++ struct micedev dev;
++ struct miceopt options;
++ Gpm_Type *type;
++ char *device;
++ int buttons; /* mouse's button state from last read */
++ struct timeval timestamp; /* last time mouse data arrived */
+ };
+
+ struct options {
+ int autodetect; /* -u [aUtodetect..'A' is not available] */
+- int no_mice; /* number of mice */
+- int repeater; /* repeat data */
+- char *repeater_type; /* repeat data as which mouse type */
+ int run_status; /* startup/daemon/debug */
+ char *progname; /* hopefully gpm ;) */
+- struct micetab *micelist; /* mice and their options */
+- char *consolename; /* /dev/tty0 || /dev/vc/0 */
+ };
+
+ /* global variables */
+ struct options option; /* one should be enough for us */
++extern struct repeater repeater; /* again, only one */
++extern struct micetab *micelist;
+
+ /* new variables </CLEAN> */
+
+-
+ /*....................................... Prototypes */
+ /* server_tools.c */
+-void add_mouse (int type, char *value);
+-int init_mice (struct micetab *micelist);
+-int reset_mice(struct micetab *micelist);
++struct micetab *add_mouse(void);
++void init_mice(void);
++void cleanup_mice(void);
+
+ /* startup.c */
+ void startup(int argc, char **argv);
+@@ -246,17 +196,15 @@
+
+ /* gpn.c */
+ void cmdline(int argc, char **argv);
+-int giveInfo(int request, int fd);
+-int loadlut(char *charset);
+-int usage(char *whofailed);
+-struct Gpm_Type *find_mouse_by_name(char *name);
++int giveInfo(int request, int fd);
++int usage(char *whofailed);
+ void check_uniqueness(void);
+-void check_kill(void);
+-
++void kill_gpm(void);
+
+ /* mice.c */
+ extern int M_listTypes(void);
+- /* special.c */
++
++ /* special.c */
+ int processSpecial(Gpm_Event *event);
+ int twiddler_key(unsigned long message);
+ int twiddler_key_init(void);
+diff -urN gpm-1.20.1/src/headers/input-defines.h gpm/src/headers/input-defines.h
+--- gpm-1.20.1/src/headers/input-defines.h 1969-12-31 19:00:00.000000000 -0500
++++ gpm/src/headers/input-defines.h 2003-10-02 01:22:42.000000000 -0500
+@@ -0,0 +1,81 @@
++/*
++ * input-defines.h - complements <linux/input.h> adding missing bits
++ *
++ * Copyright (C) 2003 Dmitry Torokhov <dtor@mail.ru>
++ *
++ * 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-1307, USA.
++ ********/
++#ifndef __GPM_INPUT_DEFINES_H
++#define __GPM_INPUT_DEFINES_H
++
++#include <linux/input.h>
++#include "headers/config.h"
++
++#ifndef ABS_TOOL_WIDTH
++#define ABS_TOOL_WIDTH 0x1c
++#endif
++
++#ifndef BTN_TOOL_FINGER
++#define BTN_TOOL_FINGER 0x145
++#endif
++
++#ifndef BTN_TOUCH
++#define BTN_TOUCH 0x14a
++#endif
++
++#ifndef BTN_TOOL_DOUBLETAP
++#define BTN_TOOL_DOUBLETAP 0x14d
++#endif
++
++#ifndef BTN_TOOL_TRIPLETAP
++#define BTN_TOOL_TRIPLETAP 0x14e
++#endif
++
++#ifndef MSC_GESTURE
++#define MSC_GESTURE 2
++#endif
++
++#ifndef EV_SYNC
++#define EV_SYNC 0
++#endif
++
++#ifndef SYN_REPORT
++#define SYN_REPORT 0
++#endif
++
++#ifndef PSMOUSE_SYNAPTICS
++#define PSMOUSE_SYNAPTICS 7
++#endif
++
++#ifndef HAVE_INPUT_ID
++struct input_id {
++ unsigned short bustype;
++ unsigned short vendor;
++ unsigned short product;
++ unsigned short version;
++};
++#endif
++
++#ifndef HAVE_INPUT_ABSINFO
++struct input_absinfo {
++ int value;
++ int minimum;
++ int maximum;
++ int fuzz;
++ int flat;
++};
++#endif
++
++#endif
+diff -urN gpm-1.20.1/src/headers/message.h gpm/src/headers/message.h
+--- gpm-1.20.1/src/headers/message.h 2002-12-24 17:57:16.000000000 -0500
++++ gpm/src/headers/message.h 2003-10-02 01:22:42.000000000 -0500
+@@ -96,7 +96,6 @@
+ " -S [commands] enable special commands (see man page)\n" \
+ " -t mouse-type sets mouse type (default '%s')\n" \
+ " Use a non-existent type (e.g. \"help\") to get a list\n" \
+- " -T test: read mouse, no clients\n" \
+ " -v print version and exit\n" \
+ " -V verbosity increase number of logged messages\n\n\n" \
+ " Examples:\n\n" \
+@@ -168,7 +167,8 @@
+ #define GPM_MESS_SELECT_TIMES "selected %i times"
+
+ #define GPM_MESS_OPTION_NO_ARG "%s: Option \"%s\" takes no argument: ignoring \"%s\""
+-#define GPM_MESS_INVALID_ARG "%s: Invalid arg. \"%s\" to \"%s\""
++#define GPM_MESS_INVALID_ARG "%s: Invalid argument \"%s\" for option \"%s\""
++#define GPM_MESS_MISSING_ARG "%s: Option \"%s\" requires an argument"
+ #define GPM_MESS_CONT_WITH_ERR "%s: Continuing despite errors in option parsing"
+ #define GPM_MESS_TOO_MANY_OPTS "%s: Too many options for \"-t %s\""
+
+@@ -196,7 +196,7 @@
+
+ /* warnings */
+ #define GPM_MESS_REQUEST_ON "Request on vc %i > %i"
+-#define GPM_MESS_FAILED_CONNECT "Failed gpm connect attempt by uid %d for vc %s"
++#define GPM_MESS_FAILED_CONNECT "Failed gpm connect attempt by uid %d for vc %d"
+ #define GPM_MESS_ZERO_SCREEN_DIM "zero screen dimension, assuming 80x25"
+ #define GPM_MESS_STRANGE_DATA "Data on strange file descriptor %d"
+ #define GPM_MESS_RESIZING "%s pid %i is resizing :-)"
+diff -urN gpm-1.20.1/src/headers/optparser.h gpm/src/headers/optparser.h
+--- gpm-1.20.1/src/headers/optparser.h 1969-12-31 19:00:00.000000000 -0500
++++ gpm/src/headers/optparser.h 2003-10-02 01:22:42.000000000 -0500
+@@ -0,0 +1,50 @@
++/*
++ * optparser.h - GPM mouse options parser
++ *
++ * Copyright (C) 1993 Andrew Haylett <ajh@gec-mrc.co.uk>
++ * Copyright (C) 1994-2000 Alessandro Rubini <rubini@linux.it>
++ * Copyright (C) 1998,1999 Ian Zimmerman <itz@rahul.net>
++ * Copyright (C) 2001,2002 Nico Schottelius <nicos@pcsystems.de>
++ * Copyright (C) 2003 Dmitry Torokhov <dtor@mail.ru>
++ *
++ * 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-1307, USA.
++ ********/
++#ifndef __GPM_OPTPARSER_H_
++#define __GPM_OPTPARSER_H_
++
++enum option_type {
++ OPT_BOOL = 1,
++ OPT_INT, /* "%i" */
++ OPT_DEC, /* "%d" */
++ OPT_STRING,
++ /* other types must be added */
++ OPT_END = 0
++};
++
++struct option_helper {
++ char *name;
++ enum option_type type;
++ union u {
++ int *iptr; /* used for int and bool arguments */
++ char **sptr; /* used for string arguments, by strdup()ing the value */
++ } u;
++ int value; /* used for boolean arguments */
++ int present;
++};
++
++int parse_options(const char *who, const char *opt, char sep, struct option_helper *info);
++int check_no_options(const char *proto, const char *opts, char sep);
++int is_option_present(struct option_helper *info, const char *name);
++#endif
+diff -urN gpm-1.20.1/src/headers/selection.h gpm/src/headers/selection.h
+--- gpm-1.20.1/src/headers/selection.h 1969-12-31 19:00:00.000000000 -0500
++++ gpm/src/headers/selection.h 2003-10-02 01:22:42.000000000 -0500
+@@ -0,0 +1,37 @@
++/*
++ * console.h - GPM selection/paste handling
++ *
++ * Copyright (C) 2003 Dmitry Torokhov <dtor@mail.ru>
++ *
++ * 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-1307, USA.
++ ********/
++
++#ifndef __GPM_SELECTION_H_
++#define __GPM_SELECTION_H_
++
++struct sel_options {
++ int aged;
++ int age_limit;
++ int ptrdrag;
++};
++
++struct Gpm_Event;
++
++extern struct sel_options sel_opts; /* only one exists */
++
++void do_selection(struct Gpm_Event *event, int three_button_mode);
++void selection_disable_paste(void);
++
++#endif /* __GPM_CONSOLE_H_ */
+diff -urN gpm-1.20.1/src/headers/synaptics.h gpm/src/headers/synaptics.h
+--- gpm-1.20.1/src/headers/synaptics.h 2002-12-24 17:57:16.000000000 -0500
++++ gpm/src/headers/synaptics.h 2003-10-02 01:22:42.000000000 -0500
+@@ -62,7 +62,7 @@
+ **
+ ** Process the touchpad 6/7/8 byte data.
+ */
+-void syn_process_serial_data (Gpm_Event *state,
++void syn_process_serial_data (int fd, Gpm_Event *state,
+ unsigned char *data);
+
+
+@@ -72,7 +72,7 @@
+ **
+ ** Process the touchpad 6 byte data.
+ */
+-void syn_process_ps2_data (Gpm_Event *state,
++void syn_process_ps2_data (int fd, Gpm_Event *state,
+ unsigned char *data);
+
+
+diff -urN gpm-1.20.1/src/lib/liblow.c gpm/src/lib/liblow.c
+--- gpm-1.20.1/src/lib/liblow.c 2002-12-24 17:57:16.000000000 -0500
++++ gpm/src/lib/liblow.c 2003-10-02 01:22:42.000000000 -0500
+@@ -80,6 +80,8 @@
+ int gpm_consolefd=-1; /* used to invoke ioctl() */
+ int gpm_morekeys=0;
+
++static char *consolename;
++
+ int gpm_convert_event(unsigned char *mdata, Gpm_Event *ePtr);
+
+ /*----------------------------------------------------------------------------*
+@@ -192,14 +194,13 @@
+ char *tty = NULL;
+ char *term = NULL;
+ int i;
+- extern struct options option;
+ static int checked_con = 0;
+ struct sockaddr_un addr;
+ struct winsize win;
+ Gpm_Stst *new = NULL;
+ char* sock_name = 0;
+
+- option.consolename = NULL;
++ consolename = NULL;
+
+ gpm_report(GPM_PR_DEBUG,"VC: %d",flag);
+
+@@ -216,7 +217,7 @@
+
+ /* check whether we know what name the console is: what's with the lib??? */
+ if(checked_con == 0) {
+- option.consolename = Gpm_get_console();
++ consolename = Gpm_get_console();
+ checked_con++;
+ }
+
+@@ -245,10 +246,10 @@
+ conn->vc=0; /* default handler */
+ if (flag > 0) { /* forced vc number */
+ conn->vc=flag;
+- if((tty = malloc(strlen(option.consolename)+Gpm_cnt_digits(flag))) == NULL)
++ if((tty = malloc(strlen(consolename)+Gpm_cnt_digits(flag))) == NULL)
+ gpm_report(GPM_PR_OOPS,GPM_MESS_NO_MEM);
+- memcpy(tty,option.consolename,strlen(option.consolename)-1);
+- sprintf(&tty[strlen(option.consolename)-1],"%i",flag);
++ memcpy(tty,consolename,strlen(consolename)-1);
++ sprintf(&tty[strlen(consolename)-1],"%i",flag);
+ } else { /* use your current vc */
+ if (isatty(0)) tty = ttyname(0); /* stdin */
+ if (!tty && isatty(1)) tty = ttyname(1); /* stdout */
+@@ -258,13 +259,13 @@
+ goto err;
+ }
+ /* do we really need this check ? */
+- if(strncmp(tty,option.consolename,strlen(option.consolename)-1)
+- || !isdigit(tty[strlen(option.consolename)-1])) {
+- gpm_report(GPM_PR_ERR,"strncmp/isdigit/option.consolename failed");
++ if(strncmp(tty,consolename,strlen(consolename)-1)
++ || !isdigit(tty[strlen(consolename)-1])) {
++ gpm_report(GPM_PR_ERR,"strncmp/isdigit/consolename failed");
+ goto err;
+ }
+
+- conn->vc=atoi(&tty[strlen(option.consolename)-1]);
++ conn->vc=atoi(&tty[strlen(consolename)-1]);
+ }
+
+ if (gpm_consolefd == -1)
+@@ -272,6 +273,8 @@
+ gpm_report(GPM_PR_ERR,GPM_MESS_DOUBLE_S,tty,strerror(errno));
+ goto err;
+ }
++
++ if (flag > 0) free(tty);
+ }
+
+ new->info=*conn;
+diff -urN gpm-1.20.1/src/lib/tools.c gpm/src/lib/tools.c
+--- gpm-1.20.1/src/lib/tools.c 1969-12-31 19:00:00.000000000 -0500
++++ gpm/src/lib/tools.c 2003-10-02 01:22:42.000000000 -0500
+@@ -0,0 +1,93 @@
++/*
++ * tools.c - tools which are needed by client and server
++ *
++ * Copyright (c) 2001 Nico Schottelius <nico@schottelius.org>
++ *
++ * 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-1307, USA.
++ ********/
++
++#include <stdio.h> /* NULL */
++#include <string.h>
++#include <stdlib.h>
++#include <sys/types.h> /* these three are */
++#include <sys/stat.h> /* needed for */
++#include <unistd.h> /* stat() */
++
++#include "headers/gpmInt.h" /* only used for some defines */
++#include "headers/message.h"
++
++/*****************************************************************************
++ * check, whether devfs is used or not.
++ * See /usr/src/linux/Documentation/filesystems/devfs/ for details.
++ * Returns: the name of the console (/dev/tty0 or /dev/vc/0)
++ *****************************************************************************/
++char *Gpm_get_console( void )
++{
++
++ char *back = NULL, *tmp = NULL;
++ struct stat buf;
++
++ /* first try the devfs device, because in the next time this will be
++ * the preferred one. If that fails, take the old console */
++
++ /* Check for open new console */
++ if (stat(GPM_DEVFS_CONSOLE,&buf) == 0)
++ tmp = GPM_DEVFS_CONSOLE;
++
++ /* Failed, try OLD console */
++ else if(stat(GPM_OLD_CONSOLE,&buf) == 0)
++ tmp = GPM_OLD_CONSOLE;
++
++ if(tmp != NULL)
++ if((back = malloc(strlen(tmp) + sizeof(char)) ) != NULL)
++ strcpy(back,tmp);
++
++ return(back);
++}
++
++/* what's the english name for potenz ? */
++int Gpm_x_high_y(int base, int pot_y)
++{
++ int val = 1;
++
++ if(pot_y == 0) val = 1;
++ else if(pot_y < 0) val = 0; /* ugly hack ;) */
++ else while(pot_y > 0) {
++ val = val * base;
++ pot_y--;
++ }
++ return val;
++}
++
++/* return characters needed to display int */
++int Gpm_cnt_digits(int number)
++{
++ /* 0-9 = 1 10^0 <-> (10^1)-1
++ * 10 - 99 = 2 10^1 <-> (10^2)-1
++ * 100 - 999 = 3 10^2 <-> (10^3)-1
++ * 1000 - 9999 = 4 ... */
++
++ int ret = 0, num = 0;
++
++ /* non negative, please */
++ if(number < 0) number *= -1;
++ else if(number == 0) ret = 1;
++ else while(number > num) {
++ ret++;
++ num = (Gpm_x_high_y(10,ret) - 1);
++ }
++
++ return(ret);
++}
+diff -urN gpm-1.20.1/src/Makefile.in gpm/src/Makefile.in
+--- gpm-1.20.1/src/Makefile.in 2002-12-24 17:57:16.000000000 -0500
++++ gpm/src/Makefile.in 2003-10-02 01:22:42.000000000 -0500
+@@ -12,15 +12,16 @@
+ include $(top_builddir)/Makefile.include
+
+ # Main portion: regular build rules
++MICESRC = mice.c twiddler.c synaptics.c @EVDEV_SRCS@
+
+-GSRC = main.c gpm.c gpn.c mice.c special.c twiddler.c synaptics.c \
+- startup.c server_tools.c
++GSRC = main.c gpm.c gpn.c special.c startup.c server_tools.c console.c \
++ selection.c client.c optparser.c $(MICESRC)
+
+-GOBJ = $(GSRC:.c=.o) report.o tools.o
++GOBJ = $(GSRC:.c=.o) report.o
+
+-LSRC = lib/liblow.c lib/libhigh.c lib/libxtra.c lib/report-lib.c
++LSRC = lib/liblow.c lib/libhigh.c lib/libxtra.c lib/report-lib.c lib/tools.c
+
+-LOBJ = $(LSRC:.c=.o) tools.o @CURSES_OBJS@
++LOBJ = $(LSRC:.c=.o) @CURSES_OBJS@
+
+ PICS = $(LOBJ:.o=.lo)
+
+@@ -143,7 +144,7 @@
+ $(CC) -I. @CPPFLAGS@ $(CPPFLAGS) @CFLAGS@ $(CFLAGS) -c -o $@.o $<
+ $(CC) @LDFLAGS@ $(LDFLAGS) -o $@ $@.o @LIBS@ $(LIBS) lib/libgpm.a
+
+-prog/mouse-test: mice.o twiddler.o synaptics.o
++prog/mouse-test: $(MICESRC:.c=.o) console.o optparser.o
+
+ $(PROG): lib/libgpm.so lib/@SHLIB@ lib/libgpm.a
+
+diff -urN gpm-1.20.1/src/mice.c gpm/src/mice.c
+--- gpm-1.20.1/src/mice.c 2002-12-24 17:57:16.000000000 -0500
++++ gpm/src/mice.c 2003-10-02 01:22:42.000000000 -0500
+@@ -46,15 +46,11 @@
+ #include <string.h>
+ #include <stdlib.h>
+ #include <termios.h>
+-#include <fcntl.h>
+-#include <termios.h>
+ #include <errno.h>
+ #include <unistd.h>
+ #include <ctype.h>
+
+-#include <sys/types.h>
+ #include <sys/stat.h> /* stat() */
+-#include <sys/time.h> /* select() */
+
+ #include <linux/kdev_t.h> /* MAJOR */
+ #include <linux/keyboard.h>
+@@ -72,135 +68,40 @@
+
+
+ #include "headers/gpmInt.h"
++#include "headers/console.h"
+ #include "headers/twiddler.h"
+ #include "headers/synaptics.h"
+ #include "headers/message.h"
+-
+-/*========================================================================*/
+-/* Parsing argv: helper dats struct function (should they get elsewhere?) */
+-/*========================================================================*/
+-
+-enum argv_type {
+- ARGV_BOOL = 1,
+- ARGV_INT, /* "%i" */
+- ARGV_DEC, /* "%d" */
+- ARGV_STRING,
+- /* other types must be added */
+- ARGV_END = 0
+-};
+-
+-typedef struct argv_helper {
+- char *name;
+- enum argv_type type;
+- union u {
+- int *iptr; /* used for int and bool arguments */
+- char **sptr; /* used for string arguments, by strdup()ing the value */
+- } u;
+- int value; /* used for boolean arguments */
+-} argv_helper;
+-
+-static int parse_argv(argv_helper *info, int argc, char **argv)
+-{
+- int i, j = 0, errors = 0;
+- long l;
+- argv_helper *p;
+- char *s, *t;
+- int base = 0; /* for strtol */
+-
+-
+- for (i=1; i<argc; i++) {
+- for (p = info; p->type != ARGV_END; p++) {
+- j = strlen(p->name);
+- if (strncmp(p->name, argv[i], j))
+- continue;
+- if (isalnum(argv[i][j]))
+- continue;
+- break;
+- }
+- if (p->type == ARGV_END) { /* not found */
+- fprintf(stderr, "%s: Uknown option \"%s\" for pointer \"%s\"\n",
+- option.progname, argv[i], argv[0]);
+- errors++;
+- continue;
+- }
+- /* Found. Look for trailing stuff, if any */
+- s = argv[i]+j;
+- while (*s && isspace(*s)) s++; /* skip spaces */
+- if (*s == '=') s++; /* skip equal */
+- while (*s && isspace(*s)) s++; /* skip other spaces */
+-
+- /* Now parse what s is */
+- switch(p->type) {
+- case ARGV_BOOL:
+- if (*s) {
+- gpm_report(GPM_PR_ERR,GPM_MESS_OPTION_NO_ARG,option.progname,p->name,s);
+- errors++;
+- }
+- *(p->u.iptr) = p->value;
+- break;
+-
+- case ARGV_DEC:
+- base = 10; /* and fall through */
+- case ARGV_INT:
+- l = strtol(s, &t, base);
+- if (*t) {
+- gpm_report(GPM_PR_ERR,GPM_MESS_INVALID_ARG, option.progname, s, p->name);
+- errors++;
+- break;
+- }
+- *(p->u.iptr) = (int)l;
+- break;
+-
+- case ARGV_STRING:
+- *(p->u.sptr) = strdup(s);
+- break;
+-
+- case ARGV_END: /* let's please "-Wall" */
+- break;
+- }
+- } /* for i in argc */
+- if (errors) gpm_report(GPM_PR_ERR,GPM_MESS_CONT_WITH_ERR, option.progname);
+- return errors;
+-}
+-
+-/*========================================================================*/
+-/* Provide a common error engine by parsing with an empty option-set */
+-/*========================================================================*/
+-static volatile int check_no_argv(int argc, char **argv)
+-{
+- static argv_helper optioninfo[] = {
+- {"", ARGV_END}
+- };
+- return parse_argv(optioninfo, argc, argv);
+-}
++#include "headers/optparser.h"
+
+ /*========================================================================*/
+ /* Parse the "old" -o options */
+ /*========================================================================*/
+-static int option_modem_lines(int fd, int argc, char **argv)
++static int option_modem_lines(int fd, char *proto, char *opts)
+ {
+- static unsigned int err, lines, reallines;
++ static unsigned int lines, reallines;
++ static struct option_helper optioninfo[] = {
++ {"dtr", OPT_BOOL, u: {iptr: &lines}, value: TIOCM_DTR},
++ {"rts", OPT_BOOL, u: {iptr: &lines}, value: TIOCM_RTS},
++ {"both", OPT_BOOL, u: {iptr: &lines}, value: TIOCM_DTR | TIOCM_RTS},
++ {"", OPT_END}
++ };
+
+- static argv_helper optioninfo[] = {
+- {"dtr", ARGV_BOOL, u: {iptr: &lines}, value: TIOCM_DTR},
+- {"rts", ARGV_BOOL, u: {iptr: &lines}, value: TIOCM_RTS},
+- {"both", ARGV_BOOL, u: {iptr: &lines}, value: TIOCM_DTR | TIOCM_RTS},
+- {"", ARGV_END}
+- };
++ int rslt = parse_options(proto, opts, ',', optioninfo);
+
+- if (argc<2) return 0;
+- if (argc > 2) {
+- gpm_report(GPM_PR_ERR,GPM_MESS_TOO_MANY_OPTS,option.progname, argv[0]);
++ if (rslt < 0) {
++ errno = EINVAL;
++ return -1;
++ } else if (rslt > 1) {
++ gpm_report(GPM_PR_ERR, GPM_MESS_TOO_MANY_OPTS, option.progname, proto);
+ errno = EINVAL; /* used by gpm_oops(), if the caller reports failure */
+ return -1;
++ } else if (rslt == 1) {
++ /* ok, move the lines */
++ ioctl(fd, TIOCMGET, &reallines);
++ reallines &= ~lines;
++ ioctl(fd, TIOCMSET, &reallines);
+ }
+- err = parse_argv(optioninfo, argc, argv);
+- if(err) return 0; /* a message has been printed, but go on as good */
+-
+- /* ok, move the lines */
+- ioctl(fd, TIOCMGET, &reallines);
+- reallines &= ~lines;
+- ioctl(fd, TIOCMSET, &reallines);
+ return 0;
+ }
+
+@@ -233,28 +134,12 @@
+ /*========================================================================*/
+
+ #ifdef HAVE_LINUX_INPUT_H
+-static int M_evdev (Gpm_Event * state, unsigned char *data)
+-{
+- struct input_event thisevent;
+- (void) memcpy (&thisevent, data, sizeof (struct input_event));
+- if (thisevent.type == EV_REL) {
+- if (thisevent.code == REL_X)
+- state->dx = (signed char) thisevent.value;
+- else if (thisevent.code == REL_Y)
+- state->dy = (signed char) thisevent.value;
+- } else if (thisevent.type == EV_KEY) {
+- switch(thisevent.code) {
+- case BTN_LEFT: state->buttons ^= GPM_B_LEFT; break;
+- case BTN_MIDDLE: state->buttons ^= GPM_B_MIDDLE; break;
+- case BTN_RIGHT: state->buttons ^= GPM_B_RIGHT; break;
+- case BTN_SIDE: state->buttons ^= GPM_B_MIDDLE; break;
+- }
+- }
+- return 0;
+-}
++/* defined in evdev.c */
++extern int M_evdev(struct micedev *dev, struct miceopt *opt, unsigned char *data, Gpm_Event *state);
++extern int I_evdev(struct micedev *dev, struct miceopt *opt, Gpm_Type *type);
+ #endif /* HAVE_LINUX_INPUT_H */
+
+-static int M_ms(Gpm_Event *state, unsigned char *data)
++static int M_ms(struct micedev *dev, struct miceopt *opt, unsigned char *data, Gpm_Event *state)
+ {
+ /*
+ * some devices report a change of middle-button state by
+@@ -273,7 +158,7 @@
+ return 0;
+ }
+
+-static int M_ms_plus(Gpm_Event *state, unsigned char *data)
++static int M_ms_plus(struct micedev *dev, struct miceopt *opt, unsigned char *data, Gpm_Event *state)
+ {
+ static unsigned char prev=0;
+
+@@ -293,7 +178,7 @@
+ return 0;
+ }
+
+-static int M_ms_plus_lr(Gpm_Event *state, unsigned char *data)
++static int M_ms_plus_lr(struct micedev *dev, struct miceopt *opt, unsigned char *data, Gpm_Event *state)
+ {
+ /*
+ * Same as M_ms_plus but with an addition by Edmund GRIMLEY EVANS
+@@ -329,19 +214,19 @@
+ int SUMMA_BORDER=100;
+ int summamaxx,summamaxy;
+ char summaid=-1;
+-static int M_summa(Gpm_Event *state, unsigned char *data)
++static int M_summa(struct micedev *dev, struct miceopt *opt, unsigned char *data, Gpm_Event *state)
+ {
+ int x, y;
+
+ x = ((data[2]<<7) | data[1])-SUMMA_BORDER;
+ if (x<0) x=0;
+ if (x>summamaxx) x=summamaxx;
+- state->x = (x * win.ws_col / summamaxx);
++ state->x = (x * console.max_x / summamaxx);
+ realposx = (x * 16383 / summamaxx);
+
+ y = ((data[4]<<7) | data[3])-SUMMA_BORDER;
+ if (y<0) y=0; if (y>summamaxy) y=summamaxy;
+- state->y = 1 + y * (win.ws_row-1)/summamaxy;
++ state->y = 1 + y * (console.max_y-1)/summamaxy;
+ realposy = y * 16383 / summamaxy;
+
+ state->buttons=
+@@ -396,7 +281,7 @@
+
+
+ /* 'Genitizer' (kw@dtek.chalmers.se 11/12/97) */
+-static int M_geni(Gpm_Event *state, unsigned char *data)
++static int M_geni(struct micedev *dev, struct miceopt *opt, unsigned char *data, Gpm_Event *state)
+ {
+ /* this is a little confusing. If we use the stylus, we
+ * have three buttons (tip, lower, upper), and if
+@@ -419,7 +304,7 @@
+
+
+ /* m$ 'Intellimouse' (steveb 20/7/97) */
+-static int M_ms3(Gpm_Event *state, unsigned char *data)
++static int M_ms3(struct micedev *dev, struct miceopt *opt, unsigned char *data, Gpm_Event *state)
+ {
+ state->wdx = state->wdy = 0;
+ state->buttons= ((data[0] & 0x20) >> 3) /* left */
+@@ -470,7 +355,7 @@
+ }
+
+ /* M_brw is a variant of m$ 'Intellimouse' the middle button is different */
+-static int M_brw(Gpm_Event *state, unsigned char *data)
++static int M_brw(struct micedev *dev, struct miceopt *opt, unsigned char *data, Gpm_Event *state)
+ {
+ state->buttons= ((data[0] & 0x20) >> 3) /* left */
+ | ((data[3] & 0x20) >> 4) /* middle */
+@@ -491,7 +376,7 @@
+ return 0;
+ }
+
+-static int M_bare(Gpm_Event *state, unsigned char *data)
++static int M_bare(struct micedev *dev, struct miceopt *opt, unsigned char *data, Gpm_Event *state)
+ {
+ /* a bare ms protocol */
+ state->buttons= ((data[0] & 0x20) >> 3) | ((data[0] & 0x10) >> 4);
+@@ -500,7 +385,7 @@
+ return 0;
+ }
+
+-static int M_sun(Gpm_Event *state, unsigned char *data)
++static int M_sun(struct micedev *dev, struct miceopt *opt, unsigned char *data, Gpm_Event *state)
+ {
+ state->buttons= (~data[0]) & 0x07;
+ state->dx= (signed char)(data[1]);
+@@ -508,7 +393,7 @@
+ return 0;
+ }
+
+-static int M_msc(Gpm_Event *state, unsigned char *data)
++static int M_msc(struct micedev *dev, struct miceopt *opt, unsigned char *data, Gpm_Event *state)
+ {
+ state->buttons= (~data[0]) & 0x07;
+ state->dx= (signed char)(data[1]) + (signed char)(data[3]);
+@@ -558,7 +443,7 @@
+
+ }
+
+-static int M_logimsc(Gpm_Event *state, unsigned char *data) /* same as msc */
++static int M_logimsc(struct micedev *dev, struct miceopt *opt, unsigned char *data, Gpm_Event *state)
+ {
+ state->buttons= (~data[0]) & 0x07;
+ state->dx= (signed char)(data[1]) + (signed char)(data[3]);
+@@ -566,7 +451,7 @@
+ return 0;
+ }
+
+-static int M_mm(Gpm_Event *state, unsigned char *data)
++static int M_mm(struct micedev *dev, struct miceopt *opt, unsigned char *data, Gpm_Event *state)
+ {
+ state->buttons= data[0] & 0x07;
+ state->dx= (data[0] & 0x10) ? data[1] : - data[1];
+@@ -574,7 +459,7 @@
+ return 0;
+ }
+
+-static int M_logi(Gpm_Event *state, unsigned char *data) /* equal to mm */
++static int M_logi(struct micedev *dev, struct miceopt *opt, unsigned char *data, Gpm_Event *state)
+ {
+ state->buttons= data[0] & 0x07;
+ state->dx= (data[0] & 0x10) ? data[1] : - data[1];
+@@ -582,7 +467,7 @@
+ return 0;
+ }
+
+-static int M_bm(Gpm_Event *state, unsigned char *data) /* equal to sun */
++static int M_bm(struct micedev *dev, struct miceopt *opt, unsigned char *data, Gpm_Event *state)
+ {
+ state->buttons= (~data[0]) & 0x07;
+ state->dx= (signed char)data[1];
+@@ -590,7 +475,7 @@
+ return 0;
+ }
+
+-static int M_ps2(Gpm_Event *state, unsigned char *data)
++static int M_ps2(struct micedev *dev, struct miceopt *opt, unsigned char *data, Gpm_Event *state)
+ {
+ static int tap_active=0; /* there exist glidepoint ps2 mice */
+
+@@ -599,8 +484,8 @@
+ !!(data[0]&2) * GPM_B_RIGHT +
+ !!(data[0]&4) * GPM_B_MIDDLE;
+
+- if (data[0]==0 && opt_glidepoint_tap) /* by default this is false */
+- state->buttons = tap_active = opt_glidepoint_tap;
++ if (data[0]==0 && opt->glidepoint_tap) /* by default this is false */
++ state->buttons = tap_active = opt->glidepoint_tap;
+ else if (tap_active) {
+ if (data[0]==8)
+ state->buttons = tap_active = 0;
+@@ -623,10 +508,11 @@
+ state->dy= -((data[0] & 0x20) ? data[2]-256 : data[2]);
+ else
+ state->dy = 0;
++
+ return 0;
+ }
+
+-static int M_imps2(Gpm_Event *state, unsigned char *data)
++static int M_imps2(struct micedev *dev, struct miceopt *opt, unsigned char *data, Gpm_Event *state)
+ {
+
+ static int tap_active=0; /* there exist glidepoint ps2 mice */
+@@ -636,8 +522,8 @@
+ state->buttons= ((data[0] & 1) << 2) /* left */
+ | ((data[0] & 6) >> 1); /* middle and right */
+
+- if (data[0]==0 && opt_glidepoint_tap) // by default this is false
+- state->buttons = tap_active = opt_glidepoint_tap;
++ if (data[0]==0 && opt->glidepoint_tap) // by default this is false
++ state->buttons = tap_active = opt->glidepoint_tap;
+ else if (tap_active) {
+ if (data[0]==8)
+ state->buttons = tap_active = 0;
+@@ -667,7 +553,7 @@
+
+ }
+
+-static int M_netmouse(Gpm_Event *state, unsigned char *data)
++static int M_netmouse(struct micedev *dev, struct miceopt *opt, unsigned char *data, Gpm_Event *state)
+ {
+ /* Avoid these beasts if you can. They connect to normal PS/2 port,
+ * but their protocol is one byte longer... So if you have notebook
+@@ -706,47 +592,45 @@
+ }
+
+ /* standard ps2 */
+-static Gpm_Type *I_ps2(int fd, unsigned short flags,
+- struct Gpm_Type *type, int argc, char **argv)
++int I_ps2(struct micedev *dev, struct miceopt *opt, struct Gpm_Type *type)
+ {
+ static unsigned char s[] = { 246, 230, 244, 243, 100, 232, 3, };
+- write (fd, s, sizeof (s));
++ write(dev->fd, s, sizeof (s));
+ usleep (30000);
+- tcflush (fd, TCIFLUSH);
+- return type;
++ tcflush (dev->fd, TCIFLUSH);
++ return 0;
+ }
+
+-static Gpm_Type *I_netmouse(int fd, unsigned short flags,
+- struct Gpm_Type *type, int argc, char **argv)
++static int I_netmouse(struct micedev *dev, struct miceopt *opt, struct Gpm_Type *type)
+ {
+ unsigned char magic[6] = { 0xe8, 0x03, 0xe6, 0xe6, 0xe6, 0xe9 };
+ int i;
+
+- if (check_no_argv(argc, argv)) return NULL;
++ if (!check_no_options(type->name, opt->text, ',')) return -1;
+ for (i=0; i<6; i++) {
+ unsigned char c = 0;
+- write( fd, magic+i, 1 );
+- read( fd, &c, 1 );
++ write(dev->fd, magic+i, 1 );
++ read(dev->fd, &c, 1 );
+ if (c != 0xfa) {
+ gpm_report(GPM_PR_ERR,GPM_MESS_NETM_NO_ACK,c);
+- return NULL;
++ return -1;
+ }
+ }
+ {
+ unsigned char rep[3] = { 0, 0, 0 };
+- read( fd, rep, 1 );
+- read( fd, rep+1, 1 );
+- read( fd, rep+2, 1 );
++ read( dev->fd, rep, 1 );
++ read( dev->fd, rep+1, 1 );
++ read( dev->fd, rep+2, 1 );
+ if (rep[0] || (rep[1] != 0x33) || (rep[2] != 0x55)) {
+ gpm_report(GPM_PR_ERR,GPM_MESS_NETM_INV_MAGIC, rep[0], rep[1], rep[2]);
+- return NULL;
++ return -1;
+ }
+ }
+- return type;
++ return 0;
+ }
+
+ #define GPM_B_BOTH (GPM_B_LEFT|GPM_B_RIGHT)
+-static int M_mman(Gpm_Event *state, unsigned char *data)
++static int M_mman(struct micedev *dev, struct miceopt *opt, unsigned char *data, Gpm_Event *state)
+ {
+ /*
+ * the damned MouseMan has 3/4 bytes packets. The extra byte
+@@ -784,7 +668,7 @@
+ mytype->getextra=1;
+ } else {
+ if (b & 0x2) prev |= GPM_B_MIDDLE;
+- if (b & 0x1) prev |= opt_glidepoint_tap;
++ if (b & 0x1) prev |= opt->glidepoint_tap;
+ }
+ }
+ state->buttons=prev;
+@@ -828,7 +712,7 @@
+
+ #define IsA(m) ((WacomModell==(-1))? 0:!strcmp(#m,wcmodell[WacomModell].name))
+
+-static int M_wacom(Gpm_Event *state, unsigned char *data)
++static int M_wacom(struct micedev *dev, struct miceopt *opt, unsigned char *data, Gpm_Event *state)
+ {
+ static int ox=-1, oy;
+ int x, y;
+@@ -878,8 +762,8 @@
+ if (WacomAbsoluteWanted) { /* Absolute Mode */
+ if (x>wmaxx) x=wmaxx; if (x<0) x=0;
+ if (y>wmaxy) y=wmaxy; if (y<0) y=0;
+- state->x = (x * win.ws_col / wmaxx);
+- state->y = (y * win.ws_row / wmaxy);
++ state->x = (x * console.max_x / wmaxx);
++ state->y = (y * console.max_y / wmaxy);
+
+ realposx = (x / wmaxx); /* this two lines come from the summa driver. */
+ realposy = (y / wmaxy); /* they seem to be buggy (always give zero). */
+@@ -889,8 +773,8 @@
+ if( abs(x-ox)>(wmaxx/wcmodell[WacomModell].treshold)
+ || abs(y-oy)>(wmaxy/wcmodell[WacomModell].treshold) ) ox=x; oy=y;
+
+- state->dx= (x-ox) / (wmaxx / win.ws_col / wcmodell[WacomModell].treshold);
+- state->dy= (y-oy) / (wmaxy / win.ws_row / wcmodell[WacomModell].treshold);
++ state->dx= (x-ox) / (wmaxx / console.max_x / wcmodell[WacomModell].treshold);
++ state->dy= (y-oy) / (wmaxy / console.max_y / wcmodell[WacomModell].treshold);
+ }
+
+ ox=x; oy=y;
+@@ -918,7 +802,7 @@
+ #define CAL_Y_MAX 0xF40
+ #define CAL_Y_SIZE (CAL_Y_MAX - CAL_Y_MIN)
+
+-static int M_calus(Gpm_Event *state, unsigned char *data)
++static int M_calus(struct micedev *dev, struct miceopt *opt, unsigned char *data, Gpm_Event *state)
+ {
+ int x, y;
+
+@@ -932,12 +816,12 @@
+ state->dx = 0; state->dy = 0;
+
+ state->x = x < CAL_X_MIN ? 0
+- : x > CAL_X_MAX ? win.ws_col+1
+- : (long)(x-CAL_X_MIN) * (long)(win.ws_col-1) / CAL_X_SIZE+2;
++ : x > CAL_X_MAX ? console.max_x+1
++ : (long)(x-CAL_X_MIN) * (long)(console.max_x-1) / CAL_X_SIZE+2;
+
+- state->y = y < CAL_Y_MIN ? win.ws_row + 1
++ state->y = y < CAL_Y_MIN ? console.max_y + 1
+ : y > CAL_Y_MAX ? 0
+- : (long)(CAL_Y_MAX-y) * (long)win.ws_row / CAL_Y_SIZE + 1;
++ : (long)(CAL_Y_MAX-y) * (long)console.max_y / CAL_Y_SIZE + 1;
+
+ realposx = x < CAL_X_MIN ? 0
+ : x > CAL_X_MAX ? 16384
+@@ -950,7 +834,7 @@
+ return 0;
+ }
+
+-static int M_calus_rel(Gpm_Event *state, unsigned char *data)
++static int M_calus_rel(struct micedev *dev, struct miceopt *opt, unsigned char *data, Gpm_Event *state)
+ {
+ static int ox=-1, oy;
+ int x, y;
+@@ -984,7 +868,7 @@
+ #define NCR_DELTA_X (NCR_RIGHT_X - NCR_LEFT_X)
+ #define NCR_DELTA_Y (NCR_TOP_Y - NCR_BOTTOM_Y)
+
+-static int M_ncr(Gpm_Event *state, unsigned char *data)
++static int M_ncr(struct micedev *dev, struct miceopt *opt, unsigned char *data, Gpm_Event *state)
+ {
+ int x,y;
+
+@@ -1002,14 +886,14 @@
+ state->x = x < NCR_LEFT_X
+ ? 0
+ : x > NCR_RIGHT_X
+- ? win.ws_col+1
+- : (long)(x-NCR_LEFT_X) * (long)(win.ws_col-1) / NCR_DELTA_X+2;
++ ? console.max_x+1
++ : (long)(x-NCR_LEFT_X) * (long)(console.max_x-1) / NCR_DELTA_X+2;
+
+ state->y = y < NCR_BOTTOM_Y
+- ? win.ws_row + 1
++ ? console.max_y + 1
+ : y > NCR_TOP_Y
+ ? 0
+- : (long)(NCR_TOP_Y-y) * (long)win.ws_row / NCR_DELTA_Y + 1;
++ : (long)(NCR_TOP_Y-y) * (long)console.max_y / NCR_DELTA_Y + 1;
+
+ realposx = x < NCR_LEFT_X
+ ? 0
+@@ -1026,7 +910,7 @@
+ return 0;
+ }
+
+-static int M_twid(Gpm_Event *state, unsigned char *data)
++static int M_twid(struct micedev *dev, struct miceopt *opt, unsigned char *data, Gpm_Event *state)
+ {
+ unsigned long message=0UL; int i,h,v;
+ static int lasth, lastv, lastkey, key, lock=0, autorepeat=0;
+@@ -1144,7 +1028,7 @@
+ #ifdef HAVE_LINUX_JOYSTICK_H
+ /* Joystick mouse emulation (David Given) */
+
+-static int M_js(Gpm_Event *state, unsigned char *data)
++static int M_js(struct micedev *dev, struct miceopt *opt, unsigned char *data, Gpm_Event *state)
+ {
+ struct JS_DATA_TYPE *jdata = (void*)data;
+ static int centerx = 0;
+@@ -1193,21 +1077,21 @@
+ #endif /* have joystick.h */
+
+ /* Synaptics TouchPad mouse emulation (Henry Davies) */
+-static int M_synaptics_serial(Gpm_Event *state, unsigned char *data)
++static int M_synaptics_serial(struct micedev *dev, struct miceopt *opt, unsigned char *data, Gpm_Event *state)
+ {
+- syn_process_serial_data (state, data);
++ syn_process_serial_data(dev->fd, state, data);
+ return 0;
+ }
+
+
+ /* Synaptics TouchPad mouse emulation (Henry Davies) */
+-static int M_synaptics_ps2(Gpm_Event *state, unsigned char *data)
++static int M_synaptics_ps2(struct micedev *dev, struct miceopt *opt, unsigned char *data, Gpm_Event *state)
+ {
+- syn_process_ps2_data(state, data);
++ syn_process_ps2_data(dev->fd, state, data);
+ return 0;
+ }
+
+-static int M_mtouch(Gpm_Event *state, unsigned char *data)
++static int M_mtouch(struct micedev *dev, struct miceopt *opt, unsigned char *data, Gpm_Event *state)
+ {
+ /*
+ * This is a simple decoder for the MicroTouch touch screen
+@@ -1219,8 +1103,8 @@
+ static int upx, upy; /* keep track of last finger-up place */
+ static struct timeval uptv, tv; /* time of last up, and down events */
+
+- #define REAL_TO_XCELL(x) (x * win.ws_col / 0x3FFF)
+- #define REAL_TO_YCELL(y) (y * win.ws_row / 0x3FFF)
++ #define REAL_TO_XCELL(x) (x * console.max_x / 0x3FFF)
++ #define REAL_TO_YCELL(y) (y * console.max_y / 0x3FFF)
+
+ #define GET_TIME(tv) (gettimeofday(&tv, (struct timezone *)NULL))
+ #define DIF_TIME(t1,t2) ((t2.tv_sec -t1.tv_sec) *1000+ \
+@@ -1245,7 +1129,7 @@
+
+ if (avgx < 0) { /* press event */
+ GET_TIME(tv);
+- if (DIF_TIME(uptv, tv) < opt_time) {
++ if (DIF_TIME(uptv, tv) < opt->time) {
+ /* count as button press placed at finger-up pixel */
+ state->buttons = GPM_B_LEFT;
+ realposx = avgx = upx; state->x = REAL_TO_XCELL(realposx);
+@@ -1287,7 +1171,7 @@
+ static int gunze_calib[4]; /* x0,y0 x1,y1 (measured at 1/8 and 7/8) */
+ static int gunze_debounce = 100; /* milliseconds: ignore shorter taps */
+
+-static int M_gunze(Gpm_Event *state, unsigned char *data)
++static int M_gunze(struct micedev *dev, struct miceopt *opt, unsigned char *data, Gpm_Event *state)
+ {
+ /*
+ * This generates button-1 events, by now.
+@@ -1300,8 +1184,8 @@
+ static struct timeval uptv, tv; /* time of last up, and down events */
+ int timediff;
+
+- #define REAL_TO_XCELL(x) (x * win.ws_col / 0x3FFF)
+- #define REAL_TO_YCELL(y) (y * win.ws_row / 0x3FFF)
++ #define REAL_TO_XCELL(x) (x * console.max_x / 0x3FFF)
++ #define REAL_TO_YCELL(y) (y * console.max_y / 0x3FFF)
+
+ #define GET_TIME(tv) (gettimeofday(&tv, (struct timezone *)NULL))
+ #define DIF_TIME(t1,t2) ((t2.tv_sec -t1.tv_sec) *1000+ \
+@@ -1350,7 +1234,7 @@
+ GET_TIME(tv);
+ timediff = DIF_TIME(uptv, tv);
+ released = 0;
+- if (timediff > gunze_debounce && timediff < opt_time) {
++ if (timediff > gunze_debounce && timediff < opt->time) {
+ /* count as button press placed at finger-up pixel */
+ dragging = 1;
+ state->buttons = GPM_B_LEFT;
+@@ -1399,7 +1283,7 @@
+ /* corresponding correction of the protocol identification */
+ /* mask) 2001/07/12 by Maciej W. Rozycki (macro@ds2.pg.gda.pl) */
+
+-static int M_vsxxx_aa(Gpm_Event *state, unsigned char *data)
++static int M_vsxxx_aa(struct micedev *dev, struct miceopt *opt, unsigned char *data, Gpm_Event *state)
+ {
+
+ /* The mouse protocol is as follows:
+@@ -1449,16 +1333,16 @@
+ /* Genius Wizardpad tablet -- Matt Kimball (mkimball@xmission.com) */
+ static int wizardpad_width = -1;
+ static int wizardpad_height = -1;
+-static int M_wp(Gpm_Event *state, unsigned char *data)
++static int M_wp(struct micedev *dev, struct miceopt *opt, unsigned char *data, Gpm_Event *state)
+ {
+ int x, y, pressure;
+
+ x = ((data[4] & 0x1f) << 12) | ((data[3] & 0x3f) << 6) | (data[2] & 0x3f);
+- state->x = x * win.ws_col / (wizardpad_width * 40);
++ state->x = x * console.max_x / (wizardpad_width * 40);
+ realposx = x * 16383 / (wizardpad_width * 40);
+
+ y = ((data[7] & 0x1f) << 12) | ((data[6] & 0x3f) << 6) | (data[5] & 0x3f);
+- state->y = win.ws_row - y * win.ws_row / (wizardpad_height * 40) - 1;
++ state->y = console.max_y - y * console.max_y / (wizardpad_height * 40) - 1;
+ realposy = 16383 - y * 16383 / (wizardpad_height * 40) - 1;
+
+ pressure = ((data[9] & 0x0f) << 4) | (data[8] & 0x0f);
+@@ -1475,11 +1359,9 @@
+ /*========================================================================*/
+ /* Then, mice should be initialized */
+
+-static Gpm_Type* I_empty(int fd, unsigned short flags,
+- struct Gpm_Type *type, int argc, char **argv)
++static int I_empty(struct micedev *dev, struct miceopt *opt, struct Gpm_Type *type)
+ {
+- if (check_no_argv(argc, argv)) return NULL;
+- return type;
++ return check_no_options(type->name, opt->text, ',') ? 0 : -1;
+ }
+
+ static int setspeed(int fd,int old,int new,int needtowrite,unsigned short flags)
+@@ -1536,28 +1418,27 @@
+ {125,"Q"},
+ {1E9,"N"}, };
+
+-static Gpm_Type* I_serial(int fd, unsigned short flags,
+- struct Gpm_Type *type, int argc, char **argv)
++static int I_serial(struct micedev *dev, struct miceopt *opt, struct Gpm_Type *type)
+ {
+ int i; unsigned char c;
+ fd_set set; struct timeval timeout={0,0}; /* used when not debugging */
+
+ /* accept "-o dtr", "-o rts" and "-o both" */
+- if (option_modem_lines(fd, argc, argv)) return NULL;
++ if (option_modem_lines(dev->fd, type->name, opt->text)) return -1;
+
+ #ifndef DEBUG
+ /* flush any pending input (thanks, Miguel) */
+ FD_ZERO(&set);
+ for(i=0; /* always */ ; i++) {
+- FD_SET(fd,&set);
+- switch(select(fd+1,&set,(fd_set *)NULL,(fd_set *)NULL,&timeout/*zero*/)){
+- case 1: if (read(fd,&c,1)==0) break;
++ FD_SET(dev->fd,&set);
++ switch(select(dev->fd+1,&set,(fd_set *)NULL,(fd_set *)NULL,&timeout/*zero*/)){
++ case 1: if (read(dev->fd,&c,1)==0) break;
+ case -1: continue;
+ }
+ break;
+ }
+
+- if (type->fun==M_logimsc) write(fd, "QU", 2 );
++ if (type->fun==M_logimsc) write(dev->fd, "QU", 2 );
+
+ #if 0 /* Did this ever work? -- I don't know, but should we not remove it,
+ * if it doesn't work ??? -- Nico */
+@@ -1570,7 +1451,7 @@
+
+ /* Non mman: change from any available speed to the chosen one */
+ for (i=9600; i>=1200; i/=2)
+- setspeed(fd, i, opt_baud, (type->fun != M_mman) /* write */, flags);
++ setspeed(dev->fd, i, opt->baud, (type->fun != M_mman) /* write */, type->flags);
+
+ /*
+ * reset the MouseMan/TrackMan to use the 3/4 byte protocol
+@@ -1578,51 +1459,50 @@
+ * Changed after 1.14; why not having "I_mman" now?
+ */
+ if (type->fun==M_mman) {
+- setspeed(fd, 1200, 1200, 0, flags); /* no write */
+- write(fd, "*X", 2);
+- setspeed(fd, 1200, opt_baud, 0, flags); /* no write */
+- return type;
++ setspeed(dev->fd, 1200, 1200, 0, type->flags); /* no write */
++ write(dev->fd, "*X", 2);
++ setspeed(dev->fd, 1200, opt->baud, 0, type->flags); /* no write */
++ return 0;
+ }
+
+ if(type->fun==M_geni) {
+ gpm_report(GPM_PR_INFO,GPM_MESS_INIT_GENI);
+- setspeed(fd, 1200, 9600, 1, flags); /* write */
+- write(fd, ":" ,1);
+- write(fd, "E" ,1); /* setup tablet. relative mode, resolution... */
+- write(fd, "@" ,1); /* setup tablet. relative mode, resolution... */
++ setspeed(dev->fd, 1200, 9600, 1, type->flags); /* write */
++ write(dev->fd, ":" ,1);
++ write(dev->fd, "E" ,1); /* setup tablet. relative mode, resolution... */
++ write(dev->fd, "@" ,1); /* setup tablet. relative mode, resolution... */
+ }
+
+ if (type->fun==M_synaptics_serial) {
+ int packet_length;
+
+- setspeed (fd, 1200, 1200, 1, flags);
+- packet_length = syn_serial_init (fd);
+- setspeed (fd, 1200, 9600, 1, flags);
++ setspeed (dev->fd, 1200, 1200, 1, type->flags);
++ packet_length = syn_serial_init (dev->fd);
++ setspeed (dev->fd, 1200, 9600, 1, type->flags);
+
+ type->packetlen = packet_length;
+ type->howmany = packet_length;
+ }
+
+ if (type->fun==M_vsxxx_aa) {
+- setspeed (fd, 4800, 4800, 0, flags); /* no write */
+- write(fd, "R", 1); /* initialize a mouse; without getting an "R" */
++ setspeed (dev->fd, 4800, 4800, 0, type->flags); /* no write */
++ write(dev->fd, "R", 1); /* initialize a mouse; without getting an "R" */
+ /* a mouse does not send a bytestream */
+ }
+
+- return type;
++ return 0;
+ }
+
+-static Gpm_Type* I_logi(int fd, unsigned short flags,
+- struct Gpm_Type *type, int argc, char **argv)
++static int I_logi(struct micedev *dev, struct miceopt *opt, struct Gpm_Type *type)
+ {
+ int i;
+ struct stat buf;
+ int busmouse;
+
+- if (check_no_argv(argc, argv)) return NULL;
++ if (!check_no_options(type->name, opt->text, ',')) return -1;
+
+ /* is this a serial- or a bus- mouse? */
+- if(fstat(fd,&buf)==-1) gpm_report(GPM_PR_OOPS,GPM_MESS_FSTAT);
++ if(fstat(dev->fd,&buf)==-1) gpm_report(GPM_PR_OOPS,GPM_MESS_FSTAT);
+ i=MAJOR(buf.st_rdev);
+
+ /* I don't know why this is herein, but I remove it. I don't think a
+@@ -1635,21 +1515,20 @@
+ type->howmany = busmouse ? 3 : 1;
+
+ /* change from any available speed to the chosen one */
+- for (i=9600; i>=1200; i/=2) setspeed(fd, i, opt_baud, 1 /* write */, flags);
++ for (i=9600; i>=1200; i/=2) setspeed(dev->fd, i, opt->baud, 1 /* write */, type->flags);
+
+ /* this stuff is peculiar of logitech mice, also for the serial ones */
+- write(fd, "S", 1);
+- setspeed(fd, opt_baud, opt_baud, 1 /* write */,
++ write(dev->fd, "S", 1);
++ setspeed(dev->fd, opt->baud, opt->baud, 1 /* write */,
+ CS8 |PARENB |PARODD |CREAD |CLOCAL |HUPCL);
+
+ /* configure the sample rate */
+- for (i=0;opt_sample<=sampletab[i].sample;i++) ;
+- write(fd,sampletab[i].code,1);
+- return type;
++ for (i=0;opt->sample<=sampletab[i].sample;i++) ;
++ write(dev->fd,sampletab[i].code,1);
++ return 0;
+ }
+
+-static Gpm_Type *I_wacom(int fd, unsigned short flags,
+- struct Gpm_Type *type, int argc, char **argv)
++static int I_wacom(struct micedev *dev, struct miceopt *opt, struct Gpm_Type *type)
+ {
+ /* wacom graphire tablet */
+ #define UD_RESETBAUD "\r$" /* reset baud rate to default (wacom V) */
+@@ -1664,19 +1543,19 @@
+ {
+ /* Init Wacom communication; this is modified from xf86Wacom.so module */
+ /* Set speed to 19200 */
+- setspeed (fd, 1200, 19200, 0, B19200|CS8|CREAD|CLOCAL|HUPCL);
++ setspeed (dev->fd, 1200, 19200, 0, B19200|CS8|CREAD|CLOCAL|HUPCL);
+ /* Send Reset Baudrate Command */
+- write(fd, UD_RESETBAUD, strlen(UD_RESETBAUD));
++ write(dev->fd, UD_RESETBAUD, strlen(UD_RESETBAUD));
+ usleep(250000);
+ /* Send Reset Command */
+- write(fd, UD_RESET, strlen(UD_RESET));
++ write(dev->fd, UD_RESET, strlen(UD_RESET));
+ usleep(75000);
+ /* Set speed to 9600bps */
+- setspeed (fd, 1200, 9600, 0, B9600|CS8|CREAD|CLOCAL|HUPCL);
++ setspeed (dev->fd, 1200, 9600, 0, B9600|CS8|CREAD|CLOCAL|HUPCL);
+ /* Send Reset Command */
+- write(fd, UD_RESET, strlen(UD_RESET));
++ write(dev->fd, UD_RESET, strlen(UD_RESET));
+ usleep(250000);
+- write(fd, UD_STOP, strlen(UD_STOP));
++ write(dev->fd, UD_STOP, strlen(UD_STOP));
+ usleep(100000);
+ }
+
+@@ -1690,7 +1569,7 @@
+ struct timeval timeout;
+ fd_set readfds;
+ int err;
+- FD_ZERO(&readfds); FD_SET(fd, &readfds);
++ FD_ZERO(&readfds); FD_SET(dev->fd, &readfds);
+ timeout.tv_sec = 0; timeout.tv_usec = 200000;
+ err = select(FD_SETSIZE, &readfds, NULL, NULL, &timeout);
+ return((err>0)?1:err);
+@@ -1706,11 +1585,11 @@
+ * Get Data to buffer until full or timeout.
+ * Give back 0 for timeout and !0 for buffer full
+ */
+- if (cmd) write(fd,cmd,strlen(cmd));
++ if (cmd) write(dev->fd,cmd,strlen(cmd));
+ memset(buffer,0,sizeof(buffer)); p=buffer;
+ err=wait_wacom();
+ while (err != -1 && err && (p-buffer)<(sizeof(buffer)-1)) {
+- p+= read(fd,p,(sizeof(buffer)-1)-(p-buffer));
++ p+= read(dev->fd,p,(sizeof(buffer)-1)-(p-buffer));
+ err=wait_wacom();
+ }
+ /* return 1 for buffer full */
+@@ -1728,13 +1607,14 @@
+ */
+
+ /* accept boolean options absolute and relative */
+- static argv_helper optioninfo[] = {
+- {"absolute", ARGV_BOOL, u: {iptr: &WacomAbsoluteWanted}, value: !0},
+- {"relative", ARGV_BOOL, u: {iptr: &WacomAbsoluteWanted}, value: 0},
+- {"", ARGV_END}
++ static struct option_helper optioninfo[] = {
++ {"absolute", OPT_BOOL, u: {iptr: &WacomAbsoluteWanted}, value: !0},
++ {"relative", OPT_BOOL, u: {iptr: &WacomAbsoluteWanted}, value: 0},
++ {"", OPT_END}
+ };
+- parse_argv(optioninfo, argc, argv);
+- type->absolute = WacomAbsoluteWanted;
++
++ parse_options(type->name, opt->text, ',', optioninfo);
++ opt->absolute = WacomAbsoluteWanted;
+ reset_wacom();
+
+ /* "Flush" input queque */
+@@ -1756,7 +1636,7 @@
+ }
+ if(WacomModell >= (sizeof(wcmodell) / sizeof(struct WC_MODELL)))
+ WacomModell=-1;
+- gpm_report(GPM_PR_INFO,GPM_MESS_WACOM_MOD, type->absolute? 'A':'R',
++ gpm_report(GPM_PR_INFO,GPM_MESS_WACOM_MOD, opt->absolute? 'A':'R',
+ (WacomModell==(-1))? "Unknown" : wcmodell[WacomModell].name,
+ buffer+2);
+
+@@ -1767,24 +1647,23 @@
+ wmaxx = (wmaxx-wcmodell[WacomModell].border);
+ wmaxy = (wmaxy-wcmodell[WacomModell].border);
+ }
+- write(fd,UD_SENDCOORDS,4);
++ write(dev->fd,UD_SENDCOORDS,4);
+
+- return type;
++ return 0;
+ }
+
+-static Gpm_Type *I_pnp(int fd, unsigned short flags,
+- struct Gpm_Type *type, int argc, char **argv)
++static int I_pnp(struct micedev *dev, struct miceopt *opt, struct Gpm_Type *type)
+ {
+ struct termios tty;
+
+ /* accept "-o dtr", "-o rts" and "-o both" */
+- if (option_modem_lines(fd, argc, argv)) return NULL;
++ if (option_modem_lines(dev->fd, type->name, opt->text)) return -1;
+
+ /*
+ * Just put the device to 1200 baud. Thanks to Francois Chastrette
+ * for his great help and debugging with his own pnp device.
+ */
+- tcgetattr(fd, &tty);
++ tcgetattr(dev->fd, &tty);
+
+ tty.c_iflag = IGNBRK | IGNPAR;
+ tty.c_oflag = 0;
+@@ -1792,15 +1671,15 @@
+ tty.c_line = 0;
+ tty.c_cc[VTIME] = 0;
+ tty.c_cc[VMIN] = 1;
+- tty.c_cflag = flags | B1200;
+- tcsetattr(fd, TCSAFLUSH, &tty); /* set parameters */
++ tty.c_cflag = type->flags | B1200;
++ tcsetattr(dev->fd, TCSAFLUSH, &tty); /* set parameters */
+
+ /*
+ * Don't read the silly initialization string. I don't want to see
+ * the vendor name: it is only propaganda, with no information.
+ */
+
+- return type;
++ return 0;
+ }
+
+ /*
+@@ -1848,8 +1727,7 @@
+
+ /* intellimouse, ps2 version: Ben Pfaff and Colin Plumb */
+ /* Autodetect: Steve Bennett */
+-static Gpm_Type *I_imps2(int fd, unsigned short flags, struct Gpm_Type *type,
+- int argc, char **argv)
++static int I_imps2(struct micedev *dev, struct miceopt *opt, struct Gpm_Type *type)
+ {
+ int id;
+ static unsigned char basic_init[] = { GPM_AUX_ENABLE_DEV, GPM_AUX_SET_SAMPLE, 100 };
+@@ -1857,36 +1735,36 @@
+ static unsigned char ps2_init[] = { GPM_AUX_SET_SCALE11, GPM_AUX_ENABLE_DEV, GPM_AUX_SET_SAMPLE, 100, GPM_AUX_SET_RES, 3, };
+
+ /* Do a basic init in case the mouse is confused */
+- write_to_mouse(fd, basic_init, sizeof (basic_init));
++ write_to_mouse(dev->fd, basic_init, sizeof (basic_init));
+
+ /* Now try again and make sure we have a PS/2 mouse */
+- if (write_to_mouse(fd, basic_init, sizeof (basic_init)) != 0) {
++ if (write_to_mouse(dev->fd, basic_init, sizeof (basic_init)) != 0) {
+ gpm_report(GPM_PR_ERR,GPM_MESS_IMPS2_INIT);
+- return(NULL);
++ return -1;
+ }
+
+ /* Try to switch to 3 button mode */
+- if (write_to_mouse(fd, imps2_init, sizeof (imps2_init)) != 0) {
++ if (write_to_mouse(dev->fd, imps2_init, sizeof (imps2_init)) != 0) {
+ gpm_report(GPM_PR_ERR,GPM_MESS_IMPS2_FAILED);
+- return(NULL);
++ return -1;
+ }
+
+ /* Read the mouse id */
+- id = read_mouse_id(fd);
++ id = read_mouse_id(dev->fd);
+ if (id == GPM_AUX_ID_ERROR) {
+ gpm_report(GPM_PR_ERR,GPM_MESS_IMPS2_MID_FAIL);
+ id = GPM_AUX_ID_PS2;
+ }
+
+ /* And do the real initialisation */
+- if (write_to_mouse(fd, ps2_init, sizeof (ps2_init)) != 0) {
++ if (write_to_mouse(dev->fd, ps2_init, sizeof (ps2_init)) != 0) {
+ gpm_report(GPM_PR_ERR,GPM_MESS_IMPS2_SETUP_FAIL);
+ }
+
+ if (id == GPM_AUX_ID_IMPS2) {
+ /* Really an intellipoint, so initialise 3 button mode (4 byte packets) */
+ gpm_report(GPM_PR_INFO,GPM_MESS_IMPS2_AUTO);
+- return type;
++ return 0;
+ }
+ if (id != GPM_AUX_ID_PS2) {
+ gpm_report(GPM_PR_ERR,GPM_MESS_IMPS2_BAD_ID, id);
+@@ -1894,69 +1772,64 @@
+ else gpm_report(GPM_PR_INFO,GPM_MESS_IMPS2_PS2);
+
+ for (type=mice; type->fun; type++)
+- if (strcmp(type->name, "ps2") == 0) return(type);
++ if (strcmp(type->name, "ps2") == 0) return 0;
+
+ /* ps2 was not found!!! */
+- return(NULL);
++ return -1;
+ }
+
+ /*
+ * This works with Dexxa Optical Mouse, but because in X same initstring
+ * is named ExplorerPS/2 so I named it in the same way.
+ */
+-static Gpm_Type *I_exps2(int fd, unsigned short flags,
+- struct Gpm_Type *type, int argc, char **argv)
++static int I_exps2(struct micedev *dev, struct miceopt *opt, struct Gpm_Type *type)
+ {
+ static unsigned char s1[] = { 243, 200, 243, 200, 243, 80, };
+
+- if (check_no_argv(argc, argv)) return NULL;
++ if (!check_no_options(type->name, opt->text, ',')) return -1;
+
+- write (fd, s1, sizeof (s1));
++ write (dev->fd, s1, sizeof (s1));
+ usleep (30000);
+- tcflush (fd, TCIFLUSH);
+- return type;
++ tcflush (dev->fd, TCIFLUSH);
++ return 0;
+ }
+
+-static Gpm_Type *I_twid(int fd, unsigned short flags,
+- struct Gpm_Type *type, int argc, char **argv)
++static int I_twid(struct micedev *dev, struct miceopt *opt, struct Gpm_Type *type)
+ {
+
+- if (check_no_argv(argc, argv)) return NULL;
++ if (!check_no_options(type->name, opt->text, ',')) return -1;
+
+- if (twiddler_key_init() != 0) return NULL;
++ if (twiddler_key_init() != 0) return -1;
+ /*
+ * the twiddler is a serial mouse: just drop dtr
+ * and run at 2400 (unless specified differently)
+ */
+- if(opt_baud==DEF_BAUD) opt_baud = 2400;
+- argv[1] = "dtr"; /* argv[1] is guaranteed to be NULL (this is dirty) */
+- return I_serial(fd, flags, type, argc, argv);
++ if (opt->baud == DEF_BAUD) opt->baud = 2400;
++ opt->text = "dtr";
++ return I_serial(dev, opt, type);
+ }
+
+-static Gpm_Type *I_calus(int fd, unsigned short flags,
+- struct Gpm_Type *type, int argc, char **argv)
++static int I_calus(struct micedev *dev, struct miceopt *opt, struct Gpm_Type *type)
+ {
+- if (check_no_argv(argc, argv)) return NULL;
++ if (!check_no_options(type->name, opt->text, ',')) return -1;
+
+- if (opt_baud == 1200) opt_baud=9600; /* default to 9600 */
+- return I_serial(fd, flags, type, argc, argv);
++ if (opt->baud == 1200) opt->baud = 9600; /* default to 9600 */
++ return I_serial(dev, opt, type);
+ }
+
+ /* synaptics touchpad, ps2 version: Henry Davies */
+-static Gpm_Type *I_synps2(int fd, unsigned short flags,
+- struct Gpm_Type *type, int argc, char **argv)
++static int I_synps2(struct micedev *dev, struct miceopt *opt, struct Gpm_Type *type)
+ {
+- syn_ps2_init (fd);
+- return type;
++ syn_ps2_init (dev->fd);
++ return 0;
+ }
+
+
+-static Gpm_Type *I_summa(int fd, unsigned short flags,
+- struct Gpm_Type *type, int argc, char **argv)
++static int I_summa(struct micedev *dev, struct miceopt *opt, struct Gpm_Type *type)
+ {
+ void resetsumma()
+ {
+- write(fd,0,1); /* Reset */
++ write(dev->fd,0,1); /* Reset */
+ usleep(400000); /* wait */
+ }
+ int waitsumma()
+@@ -1964,7 +1837,7 @@
+ struct timeval timeout;
+ fd_set readfds;
+ int err;
+- FD_ZERO(&readfds); FD_SET(fd, &readfds);
++ FD_ZERO(&readfds); FD_SET(dev->fd, &readfds);
+ timeout.tv_sec = 0; timeout.tv_usec = 200000;
+ err = select(FD_SETSIZE, &readfds, NULL, NULL, &timeout);
+ return(err);
+@@ -1987,34 +1860,34 @@
+ char GEN_MODELL=0x7f;
+
+ /* Set speed to 9600bps */
+- setspeed (fd, 1200, 9600, 1, B9600|CS8|CREAD|CLOCAL|HUPCL|PARENB|PARODD);
++ setspeed (dev->fd, 1200, 9600, 1, B9600|CS8|CREAD|CLOCAL|HUPCL|PARENB|PARODD);
+ resetsumma();
+
+- write(fd, SS_PROMPT_MODE, strlen(SS_PROMPT_MODE));
++ write(dev->fd, SS_PROMPT_MODE, strlen(SS_PROMPT_MODE));
+
+ if (strstr(type->name,"acecad")!=NULL) summaid=11;
+
+ if (summaid<0) { /* Summagraphics test */
+ /* read the Summa Firm-ID */
+- write(fd, SS_FIRMID, strlen(SS_FIRMID));
++ write(dev->fd, SS_FIRMID, strlen(SS_FIRMID));
+ err=waitsumma();
+ if (!((err == -1) || (!err))) {
+ summaid=10; /* Original Summagraphics */
+- read(fd, buffer, 255); /* Read Firm-ID */
++ read(dev->fd, buffer, 255); /* Read Firm-ID */
+ }
+ }
+
+ if (summaid<0) { /* Genius-test */
+ resetsumma();
+- write(fd,GEN_MMSERIES,1);
+- write(fd,&GEN_MODELL,1); /* Read modell */
++ write(dev->fd,GEN_MMSERIES,1);
++ write(dev->fd,&GEN_MODELL,1); /* Read modell */
+ err=waitsumma();
+ if (!((err == -1) || (!err))) { /* read Genius-ID */
+ err=waitsumma();
+ if (!((err == -1) || (!err))) {
+ err=waitsumma();
+ if (!((err == -1) || (!err))) {
+- read(fd,&config,1);
++ read(dev->fd,&config,1);
+ summaid=(config[0] & 224) >> 5; /* genius tablet-id (0-7)*/
+ }
+ }
+@@ -2024,30 +1897,29 @@
+ /* unknown tablet ?*/
+ if ((summaid<0) || (summaid==11)) {
+ resetsumma();
+- write(fd, SS_BINARY_FMT SS_PROMPT_MODE, 3);
++ write(dev->fd, SS_BINARY_FMT SS_PROMPT_MODE, 3);
+ }
+
+ /* read tablet size */
+ err=waitsumma();
+- if (!((err == -1) || (!err))) read(fd,buffer,sizeof(buffer));
+- write(fd,SS_READCONFIG,1);
+- read(fd,&config,5);
++ if (!((err == -1) || (!err))) read(dev->fd,buffer,sizeof(buffer));
++ write(dev->fd,SS_READCONFIG,1);
++ read(dev->fd,&config,5);
+ summamaxx=(config[2]<<7 | config[1])-(SUMMA_BORDER*2);
+ summamaxy=(config[4]<<7 | config[3])-(SUMMA_BORDER*2);
+
+- write(fd,SS_ABSOLUTE SS_STREAM_MODE SS_UPPER_ORIGIN,3);
+- if (summaid<0) write(fd,SS_500LPI SS_TABID0 SS_BINARY_FMT,4);
++ write(dev->fd,SS_ABSOLUTE SS_STREAM_MODE SS_UPPER_ORIGIN,3);
++ if (summaid<0) write(dev->fd,SS_500LPI SS_TABID0 SS_BINARY_FMT,4);
+
+- return type;
++ return 0;
+ }
+
+-static Gpm_Type *I_mtouch(int fd, unsigned short flags,
+- struct Gpm_Type *type, int argc, char **argv)
++static int I_mtouch(struct micedev *dev, struct miceopt *opt, struct Gpm_Type *type)
+ {
+ struct termios tty;
+
+ /* Set speed to 9600bps (copied from I_summa, above :) */
+- tcgetattr(fd, &tty);
++ tcgetattr(dev->fd, &tty);
+ tty.c_iflag = IGNBRK | IGNPAR;
+ tty.c_oflag = 0;
+ tty.c_lflag = 0;
+@@ -2055,18 +1927,17 @@
+ tty.c_cc[VTIME] = 0;
+ tty.c_cc[VMIN] = 1;
+ tty.c_cflag = B9600|CS8|CREAD|CLOCAL|HUPCL;
+- tcsetattr(fd, TCSAFLUSH, &tty);
++ tcsetattr(dev->fd, TCSAFLUSH, &tty);
+
+
+ /* Turn it to "format tablet" and "mode stream" */
+- write(fd,"\001MS\r\n\001FT\r\n",10);
++ write(dev->fd,"\001MS\r\n\001FT\r\n",10);
+
+- return type;
++ return 0;
+ }
+
+ /* simple initialization for the gunze touchscreen */
+-static Gpm_Type *I_gunze(int fd, unsigned short flags,
+- struct Gpm_Type *type, int argc, char **argv)
++static int I_gunze(struct micedev *dev, struct miceopt *opt, struct Gpm_Type *type)
+ {
+ struct termios tty;
+ FILE *f;
+@@ -2075,29 +1946,29 @@
+
+ #define GUNZE_CALIBRATION_FILE SYSCONFDIR "/gpm-calibration"
+ /* accept a few options */
+- static argv_helper optioninfo[] = {
+- {"smooth", ARGV_INT, u: {iptr: &gunze_avg}},
+- {"debounce", ARGV_INT, u: {iptr: &gunze_debounce}},
++ static struct option_helper optioninfo[] = {
++ {"smooth", OPT_INT, u: {iptr: &gunze_avg}},
++ {"debounce", OPT_INT, u: {iptr: &gunze_debounce}},
+ /* FIXME: add corner tapping */
+- {"", ARGV_END}
++ {"", OPT_END}
+ };
+- parse_argv(optioninfo, argc, argv);
++ parse_options(type->name, opt->text, ',', optioninfo);
+
+ /* check that the baud rate is valid */
+- if (opt_baud == DEF_BAUD) opt_baud = 19200; /* force 19200 as default */
+- if (opt_baud != 9600 && opt_baud != 19200) {
+- gpm_report(GPM_PR_ERR,GPM_MESS_GUNZE_WRONG_BAUD,option.progname, argv[0]);
+- opt_baud = 19200;
++ if (opt->baud == DEF_BAUD) opt->baud = 19200; /* force 19200 as default */
++ if (opt->baud != 9600 && opt->baud != 19200) {
++ gpm_report(GPM_PR_ERR, GPM_MESS_GUNZE_WRONG_BAUD, option.progname, type->name);
++ opt->baud = 19200;
+ }
+- tcgetattr(fd, &tty);
++ tcgetattr(dev->fd, &tty);
+ tty.c_iflag = IGNBRK | IGNPAR;
+ tty.c_oflag = 0;
+ tty.c_lflag = 0;
+ tty.c_line = 0;
+ tty.c_cc[VTIME] = 0;
+ tty.c_cc[VMIN] = 1;
+- tty.c_cflag = (opt_baud == 9600 ? B9600 : B19200) |CS8|CREAD|CLOCAL|HUPCL;
+- tcsetattr(fd, TCSAFLUSH, &tty);
++ tty.c_cflag = (opt->baud == 9600 ? B9600 : B19200) |CS8|CREAD|CLOCAL|HUPCL;
++ tcsetattr(dev->fd, TCSAFLUSH, &tty);
+
+ /* FIXME: try to find some information about the device */
+
+@@ -2120,19 +1991,18 @@
+ gunze_calib[0] = gunze_calib[1] = 128; /* 1/8 */
+ gunze_calib[2] = gunze_calib[3] = 896; /* 7/8 */
+ }
+- return type;
++ return 0;
+ }
+
+ /* Genius Wizardpad tablet -- Matt Kimball (mkimball@xmission.com) */
+-static Gpm_Type *I_wp(int fd, unsigned short flags,
+- struct Gpm_Type *type, int argc, char **argv)
++static int I_wp(struct micedev *dev, struct miceopt *opt, struct Gpm_Type *type)
+ {
+ struct termios tty;
+ char tablet_info[256];
+ int count, pos, size;
+
+ /* Set speed to 9600bps (copied from I_summa, above :) */
+- tcgetattr(fd, &tty);
++ tcgetattr(dev->fd, &tty);
+ tty.c_iflag = IGNBRK | IGNPAR;
+ tty.c_oflag = 0;
+ tty.c_lflag = 0;
+@@ -2140,22 +2010,22 @@
+ tty.c_cc[VTIME] = 0;
+ tty.c_cc[VMIN] = 1;
+ tty.c_cflag = B9600|CS8|CREAD|CLOCAL|HUPCL;
+- tcsetattr(fd, TCSAFLUSH, &tty);
++ tcsetattr(dev->fd, TCSAFLUSH, &tty);
+
+ /* Reset the tablet (':') and put it in remote mode ('S') so that
+ it isn't sending anything to us. */
+- write(fd, ":S", 2);
+- tcsetattr(fd, TCSAFLUSH, &tty);
++ write(dev->fd, ":S", 2);
++ tcsetattr(dev->fd, TCSAFLUSH, &tty);
+
+ /* Query the model of the tablet */
+- write(fd, "T", 1);
++ write(dev->fd, "T", 1);
+ sleep(1);
+- count = read(fd, tablet_info, 255);
++ count = read(dev->fd, tablet_info, 255);
+
+ /* The tablet information should start with "KW" followed by the rest of
+ the model number. If it isn't there, it probably isn't a WizardPad. */
+- if(count < 2) return NULL;
+- if(tablet_info[0] != 'K' || tablet_info[1] != 'W') return NULL;
++ if(count < 2) return -1;
++ if(tablet_info[0] != 'K' || tablet_info[1] != 'W') return -1;
+
+ /* Now, we want the width and height of the tablet. They should be
+ of the form "X###" and "Y###" where ### is the number of units of
+@@ -2177,9 +2047,9 @@
+ }
+
+ /* Set the tablet to stream mode with 180 updates per sec. ('O') */
+- write(fd, "O", 1);
++ write(dev->fd, "O", 1);
+
+- return type;
++ return 0;
+ }
+
+ /*========================================================================*/
+@@ -2241,7 +2111,7 @@
+ {0x80, 0x80, 0x80, 0x00}, 6, 6, 0, 0, 0},
+ #ifdef HAVE_LINUX_INPUT_H
+ {"evdev", "Linux Event Device",
+- "", M_evdev, I_empty, STD_FLG,
++ "", M_evdev, I_evdev, STD_FLG,
+ {0x00, 0x00, 0x00, 0x00} , 16, 16, 0, 0, NULL},
+ #endif /* HAVE_LINUX_INPUT_H */
+ {"exps2", "IntelliMouse Explorer (ps2) - 3 buttons, wheel unused",
+diff -urN gpm-1.20.1/src/optparser.c gpm/src/optparser.c
+--- gpm-1.20.1/src/optparser.c 1969-12-31 19:00:00.000000000 -0500
++++ gpm/src/optparser.c 2003-10-02 01:22:42.000000000 -0500
+@@ -0,0 +1,155 @@
++/*
++ * optparser.c - GPM mouse options parser
++ *
++ * Copyright (C) 1993 Andrew Haylett <ajh@gec-mrc.co.uk>
++ * Copyright (C) 1994-2000 Alessandro Rubini <rubini@linux.it>
++ * Copyright (C) 1998,1999 Ian Zimmerman <itz@rahul.net>
++ * Copyright (C) 2001,2002 Nico Schottelius <nicos@pcsystems.de>
++ * Copyright (C) 2003 Dmitry Torokhov <dtor@mail.ru>
++ *
++ * 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-1307, USA.
++ ********/
++
++#include <stdio.h>
++#include <string.h>
++#include <stdlib.h>
++#include <ctype.h>
++
++#include "headers/gpmInt.h"
++#include "headers/message.h"
++#include "headers/optparser.h"
++
++int parse_options(const char *proto, const char *opts, char sep, struct option_helper *info)
++{
++ int len, n, n_opts = 0, errors = 0;
++ long l;
++ struct option_helper *p;
++ char *s, *t, *str;
++ int base; /* for strtol */
++
++ for (p = info; p->type != OPT_END; p++)
++ p->present = 0;
++
++ if (!opts)
++ return 0;
++
++ if (!(str = strdup(opts)))
++ gpm_report(GPM_PR_OOPS, GPM_MESS_ALLOC_FAILED);
++
++ /* split input string */
++ for (s = str, n = 1; sep && (s = strchr(s, sep)); s++, n++)
++ *s = '\0';
++
++ for (s = str; n; s += strlen(s) + 1, n--) {
++ if (strlen(s) == 0)
++ continue;
++
++ for (p = info; p->type != OPT_END; p++) {
++ len = strlen(p->name);
++ if (!strncmp(p->name, s, len) && !isalnum(s[len]))
++ break;
++ }
++ if (p->type == OPT_END) { /* not found */
++ gpm_report(GPM_PR_ERR, "%s: Uknown option \"%s\" for protocol \"%s\"\n",
++ option.progname, s, proto);
++ errors++;
++ continue;
++ }
++ if (p->present) {
++ gpm_report(GPM_PR_ERR, "%s: option \"%s\" has already been seen, ignored (\"%s\")\n",
++ option.progname, s, proto);
++ continue;
++ }
++ p->present = 1;
++ n_opts++;
++ /* Found. Look for trailing stuff, if any */
++ s += len;
++ while (*s && isspace(*s)) s++; /* skip spaces */
++ if (*s == '=') s++; /* skip equal */
++ while (*s && isspace(*s)) s++; /* skip other spaces */
++
++ /* Now parse what s is */
++ base = 0;
++ switch(p->type) {
++ case OPT_BOOL:
++ if (*s) {
++ gpm_report(GPM_PR_ERR, GPM_MESS_OPTION_NO_ARG, option.progname, p->name, s);
++ errors++;
++ }
++ *(p->u.iptr) = p->value;
++ break;
++
++ case OPT_DEC:
++ base = 10; /* and fall through */
++
++ case OPT_INT:
++ if (*s == '\0') {
++ gpm_report(GPM_PR_ERR, GPM_MESS_MISSING_ARG, option.progname, p->name);
++ } else {
++ l = strtol(s, &t, base);
++ if (*t) {
++ gpm_report(GPM_PR_ERR, GPM_MESS_INVALID_ARG, option.progname, s, p->name);
++ errors++;
++ break;
++ }
++ *(p->u.iptr) = (int)l;
++ }
++ break;
++
++ case OPT_STRING:
++ if (*s == '\0')
++ gpm_report(GPM_PR_ERR, GPM_MESS_MISSING_ARG, option.progname, p->name);
++ else
++ *(p->u.sptr) = strdup(s);
++ break;
++
++ case OPT_END: /* let's please "-Wall" */
++ break;
++ }
++ } /* for i in argc */
++
++ free(str);
++
++ if (errors) {
++ gpm_report(GPM_PR_ERR,GPM_MESS_CONT_WITH_ERR, option.progname);
++ return -errors;
++ }
++ return n_opts;
++}
++
++int check_no_options(const char *proto, const char *opts, char sep)
++{
++ static struct option_helper info[] = {
++ { "", OPT_END }
++ };
++
++ return parse_options(proto, opts, sep, info) == 0;
++}
++
++int is_option_present(struct option_helper *info, const char *name)
++{
++ struct option_helper *p;
++ int len;
++
++ for (p = info; p->type != OPT_END; p++) {
++ len = strlen(p->name);
++ if (!strncmp(p->name, name, len) && !isalnum(name[len]))
++ return p->present;
++ }
++
++ gpm_report(GPM_PR_ERR, "%s: Uknown option \"%s\"\n", option.progname, name);
++ return 0;
++}
++
+diff -urN gpm-1.20.1/src/prog/mouse-test.c gpm/src/prog/mouse-test.c
+--- gpm-1.20.1/src/prog/mouse-test.c 2002-12-24 17:57:16.000000000 -0500
++++ gpm/src/prog/mouse-test.c 2003-10-02 01:22:42.000000000 -0500
+@@ -50,22 +50,9 @@
+ #define max(a,b) ((a)>(b)?(a):(b))
+ #endif
+
+-
+-/* this material is needed to pass options to mice.c */
+-struct mouse_features mymouse = {
+- DEF_TYPE, DEF_DEV, DEF_SEQUENCE,
+- DEF_BAUD, DEF_SAMPLE, DEF_DELTA, DEF_ACCEL, DEF_SCALE, DEF_SCALE /*scaley*/,
+- DEF_TIME, DEF_CLUSTER, DEF_THREE, DEF_GLIDEPOINT_TAP,
+- (char *)NULL /* extra */,
+- (Gpm_Type *)NULL,
+- -1 /* fd */
+-};
+-
+ /* and this is a workaroud */
+ struct winsize win;
+
+-struct mouse_features *which_mouse=&mymouse;
+-
+ char *progname;
+ char *consolename;
+ int devcount=0;
+@@ -78,9 +65,9 @@
+
+ struct device {
+ char *name;
+- int fd;
++ struct micedev mdev;
+ struct device *next;
+-};
++} *devlist;
+
+ static int message(void)
+ {
+@@ -148,47 +135,48 @@
+ /*-----------------------------------------------------------------------------
+ Place the description here.
+ -----------------------------------------------------------------------------*/
+-struct device **gpm_makedev(struct device **current, char *name)
++void gpm_makedev(char *name)
+ {
+- int fd; int modes;
++ struct device *dev;
++ int fd;
++ int modes;
++
+ if ((fd=open(name,O_RDWR|O_NONBLOCK))==-1) {
+ perror(name);
+- return current;
+- }
+- modes = fcntl(fd, F_GETFL);
+- if (0 > fcntl(fd, F_SETFL, modes & ~O_NONBLOCK)) {
+- close(fd);
+- perror(name);
+- return current;
++ } else {
++ modes = fcntl(fd, F_GETFL);
++ if (0 > fcntl(fd, F_SETFL, modes & ~O_NONBLOCK)) {
++ close(fd);
++ perror(name);
++ } else {
++ dev = malloc(sizeof(struct device));
++ if (!dev) gpm_report(GPM_PR_OOPS,"malloc()");
++ dev->name=strdup(name);
++ if (!dev->name) gpm_report(GPM_PR_OOPS,"malloc()");
++ dev->mdev.fd=fd;
++ dev->mdev.private = NULL;
++ dev->next=devlist;
++ devlist = dev;
++ devcount++;
++ }
+ }
+-
+- *current=malloc(sizeof(struct device));
+- if (!*current) gpm_report(GPM_PR_OOPS,"malloc()");
+- (*current)->name=strdup(name);
+- if (!(*current)->name) gpm_report(GPM_PR_OOPS,"malloc()");
+- (*current)->fd=fd;
+- (*current)->next=NULL;
+- devcount++;
+- return &((*current)->next);
+ }
+
+-Gpm_Type *(*I_serial)(int fd, unsigned short flags, struct Gpm_Type *type,
+- int argc, char **argv);
++int (*I_serial)(struct micedev *dev, struct miceopt *opt, struct Gpm_Type *type);
+
+
+ /*-----------------------------------------------------------------------------
+ Place the description here.
+ -----------------------------------------------------------------------------*/
+-int mousereopen(int oldfd, char *name, Gpm_Type *type)
++int mousereopen(struct micedev *dev, char *name, Gpm_Type *type, struct miceopt *opts)
+ {
+- int fd;
+ if (!type) type=mice+1; /* ms */
+- close(oldfd);
++ close(dev->fd);
+ usleep(100000);
+- fd=open(name,O_RDWR);
+- if (fd < 0) gpm_report(GPM_PR_OOPS,name);
+- (*I_serial)(fd,type->flags,type,1,&type->name); /* ms initialization */
+- return fd;
++ dev->fd=open(name,O_RDWR);
++ if (dev->fd < 0) gpm_report(GPM_PR_OOPS,name);
++ I_serial(dev, opts, type); /* ms initialization */
++ return dev->fd;
+ }
+
+ int noneofthem(void)
+@@ -281,10 +269,9 @@
+ {
+ struct item *list=NULL;
+ struct item **nextitem;
+- struct device *devlist=NULL;
+- struct device **nextdev;
++ struct device *nextdev;
+ Gpm_Type *cursor;
+- int i, mousefd;
++ int i;
+ char *mousename;
+ #define BUFLEN 512
+ char buf[BUFLEN];
+@@ -294,6 +281,9 @@
+ int trial, readamount,packetsize,got;
+ int baudtab[4]={1200,9600,4800,2400};
+ #define BAUD(i) (baudtab[(i)%4])
++ struct miceopt opt = {0};
++ struct micedev mdev = {0};
++
+ consolename = Gpm_get_console();
+
+ if (!isatty(fileno(stdin))) {
+@@ -306,8 +296,8 @@
+
+ /* init the list of possible devices */
+
+- for (nextdev=&devlist, i=1; i<argc; i++)
+- nextdev=gpm_makedev(nextdev,argv[i]);
++ for (i=1; i<argc; i++)
++ gpm_makedev(argv[i]);
+
+ if (argc==1) { /* no cmdline, get all devices */
+ FILE *f;
+@@ -320,7 +310,7 @@
+ if (!f) gpm_report(GPM_PR_OOPS,"popen()");
+ while (fgets(s,64,f)) {
+ s[strlen(s)-1]='\0'; /* trim '\n' */
+- nextdev=gpm_makedev(nextdev,s);
++ gpm_makedev(s);
+ }
+ pclose(f);
+ }
+@@ -345,19 +335,18 @@
+
+ /* BUG */ /* Logitech initialization is not performed */
+
+- opt_baud=BAUD(trial);
+- printf("\r\nTrying with %i baud\r\n",opt_baud);
++ opt.baud=BAUD(trial);
++ printf("\r\nTrying with %i baud\r\n",opt.baud);
+ trial++;
+
+ FD_ZERO(&devSet); FD_ZERO(&gotSet);
+ FD_SET(fileno(stdin),&devSet); maxfd=fileno(stdin);
+ printf("\r\n The possible device nodes are:\r\n");
+- for (nextdev=&devlist; *nextdev; nextdev=&((*nextdev)->next)) {
+- printf("\t%s\r\n", (*nextdev)->name);
+- FD_SET((*nextdev)->fd,&devSet);
+- maxfd=max((*nextdev)->fd,maxfd);
+- (*I_serial)((*nextdev)->fd,(mice+1)->flags,mice+1,
+- 1, &(mice+1)->name); /* try ms mode */
++ for (nextdev=devlist; nextdev; nextdev=nextdev->next) {
++ printf("\t%s\r\n", nextdev->name);
++ FD_SET(nextdev->mdev.fd, &devSet);
++ maxfd=max(nextdev->mdev.fd,maxfd);
++ I_serial(&nextdev->mdev, &opt, mice+1); /* try ms mode */
+ }
+
+ savSet=devSet;
+@@ -379,43 +368,43 @@
+ getchar();
+ break;
+ }
+- for (nextdev=&devlist; *nextdev; nextdev=&((*nextdev)->next))
+- if (FD_ISSET((*nextdev)->fd,&devSet)) {
++ for (nextdev=devlist; nextdev; nextdev=nextdev->next)
++ if (FD_ISSET(nextdev->mdev.fd,&devSet)) {
+ gotthem++;
+- FD_CLR((*nextdev)->fd,&savSet);
+- FD_SET((*nextdev)->fd,&gotSet);
++ FD_CLR(nextdev->mdev.fd,&savSet);
++ FD_SET(nextdev->mdev.fd,&gotSet);
+ }
+ }
+- if (gotthem) for (nextdev=&devlist; *nextdev; /* nothing */ ) {
+- cur=*nextdev;
+- if (!FD_ISSET(cur->fd,&gotSet)) {
++ if (gotthem) for (nextdev=devlist; nextdev; /* nothing */ ) {
++ cur=nextdev;
++ if (!FD_ISSET(cur->mdev.fd,&gotSet)) {
+ printf("removing \"%s\" from the list\r\n",cur->name);
+- *nextdev=cur->next;
+- close(cur->fd);
++ nextdev=cur->next;
++ close(cur->mdev.fd);
+ free(cur->name);
+ free(cur);
+ devcount--;
+ } else {
+- read(cur->fd,buf,80); /* flush */
+- nextdev=&(cur->next); /* follow list */
++ read(cur->mdev.fd,buf,80); /* flush */
++ nextdev=cur->next; /* follow list */
+ }
+ }
+
+ } /* devcount>1 */
+
+- mousefd=devlist->fd;
++ mdev=devlist->mdev;
+ mousename=devlist->name;
+ free(devlist);
+ printf("\r\nOk, so your mouse device is \"%s\"\r\n",mousename);
+
+ /* now close and reopen it, complete with initialization */
+- opt_baud=BAUD(0);
+- mousefd=mousereopen(mousefd,mousename,NULL);
+-
++ opt.baud=BAUD(0);
++ mousereopen(&mdev, mousename, NULL,&opt);
++
+ FD_ZERO(&checkSet);
+- FD_SET(mousefd,&checkSet);
++ FD_SET(mdev.fd,&checkSet);
+ FD_SET(fileno(stdin),&checkSet);
+- maxfd=max(mousefd,fileno(stdin));
++ maxfd=max(mdev.fd, fileno(stdin));
+
+ /*====================================== Identify mouse type */
+
+@@ -440,7 +429,7 @@
+ printf("\r\nNow please press and release your left mouse button,\r\n"
+ "one time only\r\n\r\n");
+
+- i=read(mousefd,buf,1);
++ i=read(mdev.fd, buf, 1);
+ if (i==-1 && errno==EINVAL)
+ readamount=3;
+ else
+@@ -466,7 +455,7 @@
+ else
+ nextitem=&(cur->next);
+ }
+- read(mousefd,buf,BUFLEN); /* flush */
++ read(mdev.fd, buf, BUFLEN); /* flush */
+
+ /*====================================== Packet size - second step */
+
+@@ -484,12 +473,12 @@
+ while (packetsize==1) {
+ int success3=0,success5=0;
+
+- opt_baud=BAUD(trial);
+- printf("\tBaud rate is %i\r\n",opt_baud);
+- mousefd=mousereopen(mousefd,mousename,NULL);
++ opt.baud=BAUD(trial);
++ printf("\tBaud rate is %i\r\n",opt.baud);
++ mousereopen(&mdev, mousename,NULL, &opt);
+
+ printf("\r\n==> Detecting the packet size\r\n");
+- got=eventlist(mousefd,buf,BUFLEN,GPM_B_LEFT,readamount);
++ got=eventlist(mdev.fd,buf,BUFLEN,GPM_B_LEFT,readamount);
+
+ /* try three -- look at repeating arrays of 6 bytes */
+ for (i=0;i<got-12;i++)
+@@ -512,8 +501,7 @@
+ trial++;
+ }
+
+-/*====================================== Use that info to discard protocols */
+-
++/*====================================== Use that info to discard protocols */
+ for (nextitem=&list; *nextitem; /* nothing */) {
+ struct item *cur=*nextitem;
+ int packetheads=0;
+@@ -530,7 +518,7 @@
+ if ( ((buf[i] &(cur->this->proto)[0]) == (cur->this->proto)[1])
+ && ((buf[i+1]&(cur->this->proto)[2]) == (cur->this->proto)[3]) ) {
+ packetheads++;
+- if ((*(cur->this->fun))(&event,buf+i)==-1) {
++ if ((*(cur->this->fun))(&mdev, &opt, buf+i, &event)==-1) {
+ packetheads--;
+ continue;
+ }
+@@ -594,7 +582,7 @@
+ * First trial: remove the "-t ms" extension if spurious buttons come in
+ */
+
+- got=eventlist(mousefd,buf,BUFLEN,0,readamount);
++ got=eventlist(mdev.fd,buf,BUFLEN,0,readamount);
+ pending=0;
+ for (nextitem=&list; *nextitem; /* nothing */) {
+ struct item *cur=*nextitem;
+@@ -604,7 +592,7 @@
+ for (i=0;i<got;i++) {
+ if ( ((buf[i] &(cur->this->proto)[0]) == (cur->this->proto)[1])
+ && ((buf[i+1]&(cur->this->proto)[2]) == (cur->this->proto)[3]) ) {
+- if ((*(cur->this->fun))(&event,buf+i)==-1) continue;
++ if ((*(cur->this->fun))(&mdev, &opt, buf+i, &event)==-1) continue;
+ i+=packetsize-1;
+ if (event.buttons) pending--;
+ }
+@@ -624,8 +612,8 @@
+ */
+
+ printf("\r\n==> Looking for '-t mman'and enhanced ms\r\n");
+- mousefd=mousereopen(mousefd,mousename, mice /* mman */);
+- got=eventlist(mousefd,buf,BUFLEN,GPM_B_MIDDLE,readamount);
++ mousereopen(&mdev, mousename, mice /* mman */, &opt);
++ got=eventlist(mdev.fd, buf, BUFLEN, GPM_B_MIDDLE, readamount);
+
+ /* if it uses the 4-byte protocol, find it in a rude way */
+ for (pending=0,i=0;i<got-16;i++)
+@@ -646,7 +634,7 @@
+ for (i=0;i<got;i++) {
+ if ( ((buf[i] &(cur->this->proto)[0]) == (cur->this->proto)[1])
+ && ((buf[i+1]&(cur->this->proto)[2]) == (cur->this->proto)[3]) ) {
+- if ((*(cur->this->fun))(&event,buf+i)==-1) continue;
++ if ((*(cur->this->fun))(&mdev,&opt,buf+i,&event)==-1) continue;
+ i+=packetsize-1;
+ if (event.buttons && event.buttons!=GPM_B_MIDDLE) pending--;
+ if (event.buttons==GPM_B_MIDDLE) pending++;
+@@ -677,16 +665,16 @@
+ char *Xtognames[3]={"'ClearDTR' and 'ClearRTS'","'ClearDTR'","'ClearRTS'"};
+ int alllines,lines, index;
+
+- ioctl(mousefd, TIOCMGET, &alllines);
++ ioctl(mdev.fd, TIOCMGET, &alllines);
+
+ printf("\r\nSome mice change protocol to three-buttons-aware if some\r\n"
+ "\r\ncontrol lines are toggled after opening\r\n");
+ for (index=0;index<3;index++) {
+- mousereopen(mousefd,mousename,NULL);
++ mousereopen(&mdev, mousename, NULL, &opt);
+ lines = alllines & ~toggle[index];
+- ioctl(mousefd, TIOCMSET, &lines);
++ ioctl(mdev.fd, TIOCMSET, &lines);
+ printf("\r\n==> Trying with '-o %s'\r\n",tognames[index]);
+- got=eventlist(mousefd,buf,BUFLEN,GPM_B_MIDDLE,readamount);
++ got=eventlist(mdev.fd, buf, BUFLEN, GPM_B_MIDDLE, readamount);
+
+ /* if it uses the 5-byte protocol, find it in a rude way */
+ for (pending=0,i=0;i<got-20;i++)
+@@ -717,7 +705,7 @@
+
+ getchar();
+
+- got=eventlist(mousefd,buf,BUFLEN,GPM_B_MIDDLE,readamount);
++ got=eventlist(mdev.fd,buf,BUFLEN,GPM_B_MIDDLE,readamount);
+
+ /* if it uses the 5-byte protocol, find it in a rude way */
+ for (pending=0,i=0;i<got-20;i++)
+diff -urN gpm-1.20.1/src/report.c gpm/src/report.c
+--- gpm-1.20.1/src/report.c 2002-12-24 17:57:16.000000000 -0500
++++ gpm/src/report.c 2003-10-02 01:22:42.000000000 -0500
+@@ -31,6 +31,7 @@
+
+ #include "headers/gpmInt.h"
+ #include "headers/message.h"
++#include "headers/console.h"
+
+ /*
+ * gpm_report
+@@ -70,7 +71,7 @@
+
+ void gpm_report(int line, char *file, int stat, char *text, ... )
+ {
+- FILE *console = NULL;
++ FILE *f = NULL;
+ va_list ap;
+
+ va_start(ap,text);
+@@ -138,11 +139,11 @@
+ syslog(LOG_DAEMON | LOG_WARNING, GPM_STRING_WARN);
+ vsyslog(LOG_DAEMON | LOG_WARNING, text, ap);
+ #endif
+- if((console = fopen(GPM_SYS_CONSOLE,"a")) != NULL) {
+- fprintf(console,GPM_STRING_WARN);
+- vfprintf(console,text,ap);
+- fprintf(console,"\n");
+- fclose(console);
++ if ((f = fopen(GPM_SYS_CONSOLE, "a")) != NULL) {
++ fprintf(f, GPM_STRING_WARN);
++ vfprintf(f, text, ap);
++ fprintf(f, "\n");
++ fclose(f);
+ }
+ break;
+
+@@ -151,18 +152,18 @@
+ syslog(LOG_DAEMON | LOG_ERR, GPM_STRING_ERR);
+ vsyslog(LOG_DAEMON | LOG_ERR, text, ap);
+ #endif
+- if((console = fopen(GPM_SYS_CONSOLE,"a")) != NULL) {
+- fprintf(console,GPM_STRING_ERR);
+- vfprintf(console,text,ap);
+- fprintf(console,"\n");
+- fclose(console);
++ if ((f = fopen(GPM_SYS_CONSOLE, "a")) != NULL) {
++ fprintf(f, GPM_STRING_ERR);
++ vfprintf(f, text, ap);
++ fprintf(f, "\n");
++ fclose(f);
+ }
+
+- if((console = fopen(option.consolename,"a")) != NULL) {
+- fprintf(console,GPM_STRING_ERR);
+- vfprintf(console,text,ap);
+- fprintf(console,"\n");
+- fclose(console);
++ if ((f = fopen(console.device, "a")) != NULL) {
++ fprintf(f, GPM_STRING_ERR);
++ vfprintf(f, text, ap);
++ fprintf(f, "\n");
++ fclose(f);
+ }
+ break;
+
+@@ -184,24 +185,24 @@
+ case GPM_RUN_DEBUG:
+ switch(stat) {
+ case GPM_STAT_INFO:
+- console = stdout;
+- fprintf(console,GPM_STRING_INFO); break;
++ f = stdout;
++ fprintf(f, GPM_STRING_INFO); break;
+ case GPM_STAT_WARN:
+- console = stderr;
+- fprintf(console,GPM_STRING_WARN); break;
++ f = stderr;
++ fprintf(f, GPM_STRING_WARN); break;
+ case GPM_STAT_ERR:
+- console = stderr;
+- fprintf(console,GPM_STRING_ERR); break;
++ f = stderr;
++ fprintf(f, GPM_STRING_ERR); break;
+ case GPM_STAT_DEBUG:
+- console = stderr;
+- fprintf(console,GPM_STRING_DEBUG); break;
++ f = stderr;
++ fprintf(f, GPM_STRING_DEBUG); break;
+ case GPM_STAT_OOPS:
+- console = stderr;
+- fprintf(console,GPM_STRING_OOPS); break;
++ f = stderr;
++ fprintf(f, GPM_STRING_OOPS); break;
+ }
+
+- vfprintf(console,text,ap);
+- fprintf(console,"\n");
++ vfprintf(f, text, ap);
++ fprintf(f, "\n");
+
+ if(stat == GPM_STAT_OOPS) exit(1);
+
+diff -urN gpm-1.20.1/src/selection.c gpm/src/selection.c
+--- gpm-1.20.1/src/selection.c 1969-12-31 19:00:00.000000000 -0500
++++ gpm/src/selection.c 2003-10-02 01:22:42.000000000 -0500
+@@ -0,0 +1,156 @@
++/*
++ * console.c - GPM console and selection/paste handling
++ *
++ * Copyright (C) 1993 Andreq Haylett <ajh@gec-mrc.co.uk>
++ * Copyright (C) 1994-1999 Alessandro Rubini <rubini@linux.it>
++ * Copyright (C) 1998 Ian Zimmerman <itz@rahul.net>
++ * Copyright (c) 2001,2002 Nico Schottelius <nico@schottelius.org>
++ * Copyright (c) 2003 Dmitry Torokhov <dtor@mail.ru>
++ *
++ * 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-1307, USA.
++ ********/
++
++#include <stdio.h>
++#include <stdlib.h>
++#include <string.h> /* strerror(); ?!? */
++#include <errno.h>
++#include <unistd.h> /* select(); */
++#include <time.h> /* time() */
++#include <sys/fcntl.h> /* O_RDONLY */
++#include <sys/stat.h> /* mkdir() */
++#include <asm/types.h> /* __u32 */
++
++#include <linux/vt.h> /* VT_GETSTATE */
++#include <sys/kd.h> /* KDGETMODE */
++#include <termios.h> /* winsize */
++
++#include "headers/gpmInt.h"
++#include "headers/message.h"
++#include "headers/console.h"
++#include "headers/selection.h"
++
++struct sel_options sel_opts = { 0, 0, DEF_PTRDRAG };
++static time_t last_selection_time;
++
++/*-------------------------------------------------------------------*/
++static void selection_copy(int x1, int y1, int x2, int y2, int mode)
++{
++/*
++ * The approach in "selection" causes a bus error when run under SunOS 4.1
++ * due to alignment problems...
++ */
++ unsigned char buf[6 * sizeof(short)];
++ unsigned short *arg = (unsigned short *)buf + 1;
++ int fd;
++
++ buf[sizeof(short) - 1] = 2; /* set selection */
++
++ arg[0] = (unsigned short)x1;
++ arg[1] = (unsigned short)y1;
++ arg[2] = (unsigned short)x2;
++ arg[3] = (unsigned short)y2;
++ arg[4] = (unsigned short)mode;
++
++ if ((fd = open_console(O_WRONLY)) < 0)
++ gpm_report(GPM_PR_OOPS, GPM_MESS_OPEN_CON);
++
++ gpm_report(GPM_PR_DEBUG, "ctl %i, mode %i", (int)*buf, arg[4]);
++ if (ioctl(fd, TIOCLINUX, buf + sizeof(short) - 1) < 0)
++ gpm_report(GPM_PR_OOPS,GPM_MESS_IOCTL_TIOCLINUX);
++ close(fd);
++
++ if (mode < 3) {
++ sel_opts.aged = 0;
++ last_selection_time = time(0);
++ }
++}
++
++/*-------------------------------------------------------------------*/
++static void selection_paste(void)
++{
++ char c = 3;
++ int fd;
++
++ if (!sel_opts.aged &&
++ sel_opts.age_limit != 0 &&
++ last_selection_time + sel_opts.age_limit < time(0)) {
++ sel_opts.aged = 1;
++ }
++
++ if (sel_opts.aged) {
++ gpm_report(GPM_PR_DEBUG, GPM_MESS_SKIP_PASTE);
++ } else {
++ fd = open_console(O_WRONLY);
++ if (ioctl(fd, TIOCLINUX, &c) < 0)
++ gpm_report(GPM_PR_OOPS, GPM_MESS_IOCTL_TIOCLINUX);
++ close(fd);
++ }
++}
++
++/*-------------------------------------------------------------------*/
++void do_selection(Gpm_Event *event, int three_button_mode)
++{
++ static int x1 = 1, y1 = 1;
++ int x2, y2;
++
++ x2 = event->x; y2 = event->y;
++ switch(GPM_BARE_EVENTS(event->type)) {
++ case GPM_MOVE:
++ if (x2 < 1) x2++; else if (x2 > console.max_x) x2--;
++ if (y2 < 1) y2++; else if (y2 > console.max_y) y2--;
++ selection_copy(x2, y2, x2, y2, 3); /* just highlight pointer */
++ break;
++
++ case GPM_DRAG:
++ if (event->buttons == GPM_B_LEFT) {
++ switch(event->margin) { /* fix margins */
++ case GPM_TOP: x2 = 1; y2++; break;
++ case GPM_BOT: x2 = console.max_x; y2--; break;
++ case GPM_RGT: x2--; break;
++ case GPM_LFT: y2 <= y1 ? x2++ : (x2 = console.max_x, y2--); break;
++ default: break;
++ }
++ selection_copy(x1, y1, x2, y2, event->clicks);
++ if (event->clicks >= sel_opts.ptrdrag && !event->margin) /* pointer */
++ selection_copy(x2, y2, x2, y2, 3);
++ } /* if */
++ break;
++
++ case GPM_DOWN:
++ switch (event->buttons) {
++ case GPM_B_LEFT:
++ x1 = x2; y1 = y2;
++ selection_copy(x1, y1, x2, y2, event->clicks); /* start selection */
++ break;
++
++ case GPM_B_MIDDLE:
++ selection_paste();
++ break;
++
++ case GPM_B_RIGHT:
++ if (three_button_mode == 1)
++ selection_copy(x1, y1, x2, y2, event->clicks);
++ else
++ selection_paste();
++ break;
++ }
++ } /* switch above */
++}
++
++/*-------------------------------------------------------------------*/
++void selection_disable_paste(void)
++{
++ sel_opts.aged = 1;
++}
+diff -urN gpm-1.20.1/src/server_tools.c gpm/src/server_tools.c
+--- gpm-1.20.1/src/server_tools.c 2002-12-24 17:57:16.000000000 -0500
++++ gpm/src/server_tools.c 2003-10-02 01:22:42.000000000 -0500
+@@ -21,151 +21,80 @@
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
+ ********/
+
++#include <string.h>
++#include <stdlib.h> /* malloc() */
++#include <sys/fcntl.h>
++
+ #include "headers/gpmInt.h"
+ #include "headers/message.h"
+
+-#include <stdlib.h> /* malloc() */
++struct micetab *micelist;
+
+-/* DESCR: add this to the list of mice. initialization follows later */
+-/* RETURN: - */
++/* DESCR: allocate a new mouse and to the list of mice. initialization follows later */
++/* RETURN: new mouse structure */
+ /* COMMENT: does error handling and exiting itself */
+-void add_mouse(int type, char *value)
++struct micetab *add_mouse(void)
+ {
+- struct micetab *tmp = option.micelist;
++ struct micetab *mouse;
+
+- /* PREAMBLE for all work: */
+- /* -m /dev/misc/psaux -t ps2 [ -o options ] */
++ gpm_report(GPM_PR_DEBUG, "adding mouse device");
++ if (!(mouse = malloc(sizeof(struct micetab))))
++ gpm_report(GPM_PR_OOPS, GPM_MESS_NO_MEM);
++
++ memset(mouse, 0, sizeof(struct micetab));
++
++ mouse->dev.timeout = -1;
++
++ mouse->options.sequence = NULL;
++ mouse->options.sample = DEF_SAMPLE;
++ mouse->options.delta = DEF_DELTA;
++ mouse->options.accel = DEF_ACCEL;
++ mouse->options.scalex = DEF_SCALE;
++ mouse->options.scaley = DEF_SCALE;
++ mouse->options.time = DEF_TIME;
++ mouse->options.cluster = DEF_CLUSTER;
++ mouse->options.three_button = DEF_THREE;
++ mouse->options.glidepoint_tap = DEF_GLIDEPOINT_TAP;
++ mouse->options.text = NULL;
+
+- switch(type) {
++ mouse->next = micelist;
++ micelist = mouse;
+
+- /*---------------------------------------------------------------------*/
+- /********************** -m mousedevice *********************************/
+- /*---------------------------------------------------------------------*/
+-
+- case GPM_ADD_DEVICE:
+-
+- /* first invocation */
+- if(option.micelist == NULL) {
+- gpm_report(GPM_PR_DEBUG,"adding mouse device: %s",value);
+- option.micelist = (struct micetab *) malloc(sizeof(struct micetab));
+- if(!option.micelist) gpm_report(GPM_PR_OOPS,GPM_MESS_NO_MEM);
+- option.micelist->next = NULL;
+- option.micelist->device = value;
+- option.micelist->protocol = NULL;
+- option.micelist->options = NULL;
+- return;
+- }
+-
+- /* find actual mouse */
+- while(tmp->device != NULL && tmp->protocol != NULL && tmp->next !=NULL)
+- tmp = tmp->next;
+-
+- gpm_report(GPM_PR_DEBUG,"finished searching");
+-
+- /* found end of micelist, add new mouse */
+- if(tmp->next == NULL && tmp->protocol != NULL) {
+- gpm_report(GPM_PR_DEBUG,"next mouse making");
+- tmp->next = (struct micetab *) malloc(sizeof(struct micetab));
+- if(!tmp) gpm_report(GPM_PR_OOPS,GPM_MESS_NO_MEM);
+- tmp->next = NULL;
+- tmp->device = value;
+- tmp->protocol = NULL;
+- tmp->options = NULL;
+- return;
+- } else gpm_report(GPM_PR_OOPS,GPM_MESS_FIRST_DEV);
+-
+- //} else if(tmp->device != NULL && tmp->protocol == NULL)
+- // gpm_report(GPM_PR_OOPS,GPM_MESS_FIRST_DEV); /* -m -m */
+-
+-
+- break;
+-
+- /*---------------------------------------------------------------------*/
+- /************************* -t type / protocol **************************/
+- /*---------------------------------------------------------------------*/
+-
+- case GPM_ADD_TYPE:
+- if(option.micelist == NULL) gpm_report(GPM_PR_OOPS,GPM_MESS_FIRST_DEV);
+-
+- /* skip to next mouse, where either device or protocol is missing */
+- while(tmp->device != NULL && tmp->protocol != NULL && tmp->next !=NULL)
+- tmp = tmp->next;
+-
+- /* check whether device (-m) is there, if so, write protocol */
+- if(tmp->device == NULL) gpm_report(GPM_PR_OOPS,GPM_MESS_FIRST_DEV);
+- else {
+- gpm_report(GPM_PR_DEBUG,"adding mouse type: %s",value);
+- tmp->protocol = value;
+- option.no_mice++; /* finally we got our mouse */
+- }
+-
+- break;
+-
+- /*---------------------------------------------------------------------*/
+- /*************************** -o options ********************************/
+- /*---------------------------------------------------------------------*/
+-
+- case GPM_ADD_OPTIONS:
+- if(option.micelist == NULL) gpm_report(GPM_PR_OOPS,GPM_MESS_FIRST_DEV);
+-
+- /* look for the last mouse */
+- tmp = option.micelist;
+- while(tmp->next != NULL) tmp = tmp->next;
+-
+- /* if -m or -t are missing exit */
+- if(tmp->device == NULL || tmp->protocol == NULL)
+- gpm_report(GPM_PR_OOPS,GPM_MESS_FIRST_DEV);
+- else {
+- gpm_report(GPM_PR_DEBUG,"adding mouse options: %s",value);
+- tmp->options = value;
+- }
+- break;
+- }
++ return mouse;
+ }
+
+-/* DESCR: mice initialization. currently print mice. */
+-/* RETURN: 0 - failed to init one or more devices
+- 1 - init was fine */
++/* DESCR: mice initialization. calls appropriate init functions. */
+ /* COMMENT: does error handling and exiting itself */
+-int init_mice(struct micetab *micelist)
++void init_mice(void)
+ {
+- struct micetab *tmp = micelist;
++ struct micetab *mouse;
++
++ for (mouse = micelist; mouse; mouse = mouse->next) {
++ if (!strcmp(mouse->device, "-"))
++ mouse->dev.fd = 0; /* use stdin */
++ else if ((mouse->dev.fd = open(mouse->device, O_RDWR | O_NDELAY)) < 0)
++ gpm_report(GPM_PR_OOPS, GPM_MESS_OPEN, mouse->device);
+
+- while(tmp != NULL) { /* there are still mice to init */
+- gpm_report(GPM_PR_DEBUG,"initialize %s with proto %s",tmp->device,tmp->protocol);
+- if(tmp->options != NULL) {
+- gpm_report(GPM_PR_DEBUG,"and options %s",tmp->options);
+- }
+- tmp = tmp->next;
++ /* and then reset the flag */
++ fcntl(mouse->dev.fd, F_SETFL, fcntl(mouse->dev.fd, F_GETFL) & ~O_NDELAY);
++
++ /* init the device, and use the return value as new mouse type */
++ if (mouse->type->init)
++ if (mouse->type->init(&mouse->dev, &mouse->options, mouse->type))
++ gpm_report(GPM_PR_OOPS, GPM_MESS_MOUSE_INIT);
+ }
+-
+- gpm_report(GPM_PR_DEBUG,"finished initialization");
+- return 1;
+ }
+
+ /* DESCR: when leaving, we should reset mice to their normal state */
+-/* RETURN: 0 - failed to reset one or more devices
+- 1 - reset was fine */
+ /* COMMENT: does error handling and exiting itself */
+-int reset_mice(struct micetab *micelist)
++void cleanup_mice(void)
+ {
+- struct micetab *tmp = micelist;
+- struct micetab *end = tmp;
+-
+- while(tmp != NULL) { /* FIXME! I never get NULL, as free()d before */
+- end = tmp;
+- while(tmp->next != NULL) { /* set end to the last mouse */
+- end = tmp;
+- tmp = tmp->next;
+- }
+-
+- gpm_report(GPM_PR_DEBUG,"reset: %s with proto %s",end->device,end->protocol);
+- if(tmp->options != NULL) {
+- gpm_report(GPM_PR_DEBUG,"and options %s",end->options);
+- }
+- free(end); /* be clean() */
+- tmp = micelist; /* reset to the first mice again */
++ struct micetab *tmp;
++
++ while ((tmp = micelist)) {
++ if (micelist->dev.private)
++ free(micelist->dev.private);
++ micelist = micelist->next;
++ free(tmp);
+ }
+-
+- return 1;
+ }
+diff -urN gpm-1.20.1/src/special.c gpm/src/special.c
+--- gpm-1.20.1/src/special.c 2002-12-24 17:57:16.000000000 -0500
++++ gpm/src/special.c 2003-10-02 01:22:42.000000000 -0500
+@@ -37,6 +37,7 @@
+ #include <sys/param.h>
+
+ #include "headers/gpmInt.h"
++#include "headers/console.h"
+
+ /*
+ * This function is only called at button press, to avoid unnecessary
+@@ -78,7 +79,7 @@
+ return 1;
+
+ /* devfs change */
+- consolef=fopen(option.consolename,"w");
++ consolef = fopen(console.device, "w");
+ if (!consolef) consolef=stderr;
+ if (event->type & GPM_TRIPLE) /* just triggered: make noise and return */
+ {
+@@ -153,7 +154,7 @@
+ case 0: /* child */
+ close(0); close(1); close(2);
+ open(GPM_NULL_DEV,O_RDONLY); /* stdin */
+- open(option.consolename,O_WRONLY); /* stdout */
++ open(console.device, O_WRONLY); /* stdout */
+ dup(1); /* stderr */
+ for (i=3;i<OPEN_MAX; i++) close(i);
+ execl("/bin/sh","sh","-c",command,(char *)NULL);
+diff -urN gpm-1.20.1/src/startup.c gpm/src/startup.c
+--- gpm-1.20.1/src/startup.c 2002-12-24 17:57:16.000000000 -0500
++++ gpm/src/startup.c 2003-10-02 01:22:42.000000000 -0500
+@@ -26,6 +26,7 @@
+ #include <string.h> /* strlen() */
+ #include <errno.h> /* errno */
+ #include <unistd.h> /* unlink,geteuid */
++#include <signal.h>
+ #include <sys/types.h> /* geteuid, mknod */
+ #include <sys/stat.h> /* mknod */
+ #include <fcntl.h> /* mknod */
+@@ -34,11 +35,13 @@
+
+ #include "headers/gpmInt.h"
+ #include "headers/message.h"
++#include "headers/console.h"
++#include "headers/selection.h"
+
+ /* what todo atexit */
+ static void gpm_exited(void)
+ {
+- gpm_report(GPM_PR_DEBUG,GPM_MESS_REMOVE_FILES, GPM_NODE_PID, GPM_NODE_CTL);
++ gpm_report(GPM_PR_DEBUG, GPM_MESS_REMOVE_FILES, GPM_NODE_PID, GPM_NODE_CTL);
+ unlink(GPM_NODE_PID);
+ unlink(GPM_NODE_CTL);
+ }
+@@ -48,34 +51,12 @@
+ extern struct options option;
+ extern int errno;
+
+- int i,opt;
+-
+- static struct {
+- char *in;
+- char *out;
+- } seq[] = {
+- {"123","01234567"},
+- {"132","02134657"},
+- {"213","01452367"}, /* warning: these must be readable as integers... */
+- {"231","02461357"},
+- {"312","04152637"},
+- {"321","04261537"},
+- {NULL,NULL}
+- };
+-
+ /* basic settings */
+ option.run_status = GPM_RUN_STARTUP; /* 10,9,8,... let's go */
+ option.autodetect = 0; /* no mouse autodection */
+ option.progname = argv[0]; /* who we are */
+- option.consolename = Gpm_get_console(); /* get consolename */
+-
+- /* basic2: are not necessary for oops()ing, if not root */
+- option.no_mice = 0; /* counts -m + -t */
+- option.micelist = NULL; /* no mice found yet */
+- option.repeater = 0; /* repeat data */
+- option.repeater_type = NULL; /* type of */
+-
+
++ get_console_name();
+ cmdline(argc, argv); /* parse command line */
+
+ if (geteuid() != 0) gpm_report(GPM_PR_OOPS,GPM_MESS_ROOT); /* root or exit */
+@@ -87,54 +68,18 @@
+ /****************** OLD CODE from gpn.c ***********************/
+
+ openlog(option.progname, LOG_PID,
+- option.run_status != GPM_RUN_DEBUG ? LOG_DAEMON : LOG_USER);
+- loadlut(opt_lut);
+-
+- if (option.repeater) {
+- if(mkfifo(GPM_NODE_FIFO,0666) && errno!=EEXIST)
+- gpm_report(GPM_PR_OOPS,GPM_MESS_CREATE_FIFO,GPM_NODE_FIFO);
+- if((fifofd=open(GPM_NODE_FIFO, O_RDWR|O_NONBLOCK)) < 0)
+- gpm_report(GPM_PR_OOPS, GPM_MESS_OPEN, GPM_NODE_FIFO);
+- }
+-
+- /* duplicate initialization */
+- for (i=1; i <= 1+opt_double; i++) {
+- which_mouse=mouse_table+i; /* used to access options */
+- if (opt_accel < 1) exit(usage("acceleration"));
+- if (opt_delta < 2) exit(usage("delta"));
+- if (strlen(opt_sequence) != 3 || atoi(opt_sequence)<100)
+- exit(usage("sequence"));
+- if (opt_glidepoint_tap > 3) exit(usage("glidepoint tap button"));
+- if (opt_glidepoint_tap)
+- opt_glidepoint_tap=GPM_B_LEFT >> (opt_glidepoint_tap-1);
+-
+- /* choose the sequence */
+- for (opt=0; seq[opt].in && strcmp(seq[opt].in,opt_sequence); opt++) ;
+- if(!seq[opt].in) exit(usage("button sequence"));
+- opt_sequence=strdup(seq[opt].out); /* I can rewrite on it */
+-
+- /* look for the mouse type */
+- m_type = find_mouse_by_name(opt_type);
+- if (!m_type) /* not found */
+- exit(M_listTypes());
+- }
++ option.run_status != GPM_RUN_DEBUG ? LOG_DAEMON : LOG_USER);
+
+- /* Check repeater status */
+- if (option.repeater) {
+- if (strcmp(option.repeater_type,"raw") == 0)
+- opt_rawrep = 1;
+- else {
+- /* look for the type */
+- repeated_type = find_mouse_by_name(option.repeater_type);
++ console_load_lut();
+
+- if(!repeated_type) exit(M_listTypes()); /* not found */
+-
+- if (!(repeated_type->repeat_fun)) /* unsupported translation */
+- gpm_report(GPM_PR_OOPS,GPM_MESS_NO_REPEAT,option.repeater_type);
+- }
++ if (repeater.raw || repeater.type) {
++ if (mkfifo(GPM_NODE_FIFO, 0666) && errno != EEXIST)
++ gpm_report(GPM_PR_OOPS, GPM_MESS_CREATE_FIFO, GPM_NODE_FIFO);
++ if ((repeater.fd = open(GPM_NODE_FIFO, O_RDWR|O_NONBLOCK)) < 0)
++ gpm_report(GPM_PR_OOPS, GPM_MESS_OPEN, GPM_NODE_FIFO);
+ }
+
+- if(option.run_status == GPM_RUN_STARTUP ) { /* else is debugging */
++ if(option.run_status == GPM_RUN_STARTUP) { /* else is debugging */
+ /* goto background and become a session leader (Stefan Giessler) */
+ switch(fork()) {
+ case -1: gpm_report(GPM_PR_OOPS,GPM_MESS_FORK_FAILED); /* error */
+@@ -152,13 +97,63 @@
+ /* is changing to root needed, because of relative paths ? or can we just
+ * remove and ignore it ?? FIXME */
+ if (chdir("/") < 0) gpm_report(GPM_PR_OOPS,GPM_MESS_CHDIR_FAILED);
+-
+
+- //return mouse_table[1].fd; /* the second is handled in the main() */
++ atexit(gpm_exited); /* call gpm_exited at the end */
++}
+
+- /****************** OLD CODE from gpn.c END ***********************/
++/* itz Sat Sep 12 10:30:05 PDT 1998 this function used to mix two
++ completely different things; opening a socket to a running daemon
++ and checking that a running daemon existed. Ugly. */
++/* rewritten mostly on 20th of February 2002 - nico */
++void check_uniqueness(void)
++{
++ FILE *fp = 0;
++ int old_pid = -1;
+
+- init_mice(option.micelist); /* reads option.micelist */
+- atexit(gpm_exited); /* call gpm_exited at the end */
++ if ((fp = fopen(GPM_NODE_PID, "r")) != NULL) {
++ fscanf(fp, "%d", &old_pid);
++ if (kill(old_pid, 0) == -1) {
++ gpm_report(GPM_PR_INFO,GPM_MESS_STALE_PID, GPM_NODE_PID);
++ unlink(GPM_NODE_PID);
++ } else /* we are really running, exit asap! */
++ gpm_report(GPM_PR_OOPS, GPM_MESS_ALREADY_RUN, old_pid);
++ }
++ /* now try to sign ourself */
++ if ((fp = fopen(GPM_NODE_PID,"w")) != NULL) {
++ fprintf(fp,"%d\n",getpid());
++ fclose(fp);
++ } else {
++ gpm_report(GPM_PR_OOPS,GPM_MESS_NOTWRITE,GPM_NODE_PID);
++ }
++}
+
++/* itz Sat Sep 12 10:55:51 PDT 1998 Added this as replacement for the
++ unwanted functionality in check_uniqueness. */
++void kill_gpm(void)
++{
++ int old_pid;
++ FILE* fp = fopen(GPM_NODE_PID, "r");
++
++ /* if we cannot find the old pid file, leave */
++ if (fp == NULL) gpm_report(GPM_PR_OOPS,GPM_MESS_OPEN, GPM_NODE_PID);
++
++ /* else read the pid */
++ if (fscanf(fp, "%d", &old_pid) != 1)
++ gpm_report(GPM_PR_OOPS, GPM_MESS_READ_PROB, GPM_NODE_PID);
++ fclose(fp);
++
++ gpm_report(GPM_PR_DEBUG, GPM_MESS_KILLING, old_pid);
++
++ /* first check if we run */
++ if (kill(old_pid,0) == -1) {
++ gpm_report(GPM_PR_INFO, GPM_MESS_STALE_PID, GPM_NODE_PID);
++ unlink(GPM_NODE_PID);
++ }
++ /* then kill us (not directly, but the other instance ... ) */
++ if (kill(old_pid, SIGTERM) == -1)
++ gpm_report(GPM_PR_OOPS, GPM_MESS_CANT_KILL, old_pid);
++
++ gpm_report(GPM_PR_INFO, GPM_MESS_KILLED, old_pid);
++ exit(0);
+ }
++
+diff -urN gpm-1.20.1/src/synaptics.c gpm/src/synaptics.c
+--- gpm-1.20.1/src/synaptics.c 2002-12-24 17:57:16.000000000 -0500
++++ gpm/src/synaptics.c 2003-10-02 01:22:42.000000000 -0500
+@@ -865,7 +865,7 @@
+ static int scrolling_speed_timer = 0;
+ static int scrolling_amount_left = 0; /* Tells how much to scroll up or down */
+
+-
++static int mouse_fd;
+
+
+
+@@ -882,6 +882,7 @@
+ ** which makes reading the debug data harder, only dump the report if it is different
+ ** than the previously dumped.
+ */
++#if DEBUG_REPORTS
+ static void tp_dump_report_data (report_type report,
+ int edges,
+ Gpm_Event* state)
+@@ -934,7 +935,7 @@
+ (multi_finger_pressure>4500 && multi_finger_xy>50000? 'f':' '));
+
+ }
+-
++#endif
+
+ /* syn_dump_info
+ **
+@@ -1158,8 +1159,8 @@
+ status = GPM_B_NOT_SET;
+ break;
+ case Reset_Touchpad_Action:
+- syn_ps2_reset(which_mouse->fd);
+- syn_ps2_absolute_mode(which_mouse->fd);
++ syn_ps2_reset(mouse_fd);
++ syn_ps2_absolute_mode(mouse_fd);
+ status = GPM_B_NOT_SET;
+ break;
+ case Toggle_Four_Way_Button_Action:
+@@ -2950,10 +2951,8 @@
+ data [0],data [1],data [2],data [3],data [4],data [5]);
+
+ if (reset_on_error_enabled) {
+- /* Hack to get the fd: which_mouse is the current mouse,
+- and as the synaptic code is called, it is the current mouse. */
+- syn_ps2_reset(which_mouse->fd);
+- syn_ps2_absolute_mode(which_mouse->fd);
++ syn_ps2_reset(mouse_fd);
++ syn_ps2_absolute_mode(mouse_fd);
+ }
+
+ report->left = 0;
+@@ -3108,7 +3107,7 @@
+ **
+ ** Process the touchpad 6 byte report.
+ */
+-void syn_process_serial_data (Gpm_Event *state,
++void syn_process_serial_data (int fd, Gpm_Event *state,
+ unsigned char *data)
+ {
+ /* initialize the state */
+@@ -3116,6 +3115,8 @@
+ state->dx = 0;
+ state->dy = 0;
+
++ mouse_fd = fd; /* cheat */
++
+ syn_serial_translate_data (data, &cur_report);
+ if (wmode_enabled){
+ syn_process_wmode_report(&cur_report);
+@@ -3196,7 +3197,7 @@
+ **
+ ** Process the touchpad 6 byte report.
+ */
+-void syn_process_ps2_data (Gpm_Event *state,
++void syn_process_ps2_data (int fd, Gpm_Event *state,
+ unsigned char *data)
+ {
+ /* gpm_report(GPM_PR_DEBUG,"Data %02x %02x %02x %02x %02x %02x",data[0],data[1],data[2],data[3],data[4],data[5]); */
+@@ -3206,6 +3207,7 @@
+ state->dx = 0;
+ state->dy = 0;
+
++ mouse_fd = fd; /* cheat */
+
+ if (wmode_enabled) {
+ syn_ps2_translate_wmode_data (data, &cur_report);
+diff -urN gpm-1.20.1/src/tools.c gpm/src/tools.c
+--- gpm-1.20.1/src/tools.c 2002-12-24 17:57:16.000000000 -0500
++++ gpm/src/tools.c 1969-12-31 19:00:00.000000000 -0500
+@@ -1,93 +0,0 @@
+-/*
+- * tools.c - tools which are needed by client and server
+- *
+- * Copyright (c) 2001 Nico Schottelius <nico@schottelius.org>
+- *
+- * 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-1307, USA.
+- ********/
+-
+-#include <stdio.h> /* NULL */
+-#include <string.h>
+-#include <stdlib.h>
+-#include <sys/types.h> /* these three are */
+-#include <sys/stat.h> /* needed for */
+-#include <unistd.h> /* stat() */
+-
+-#include "headers/gpmInt.h" /* only used for some defines */
+-#include "headers/message.h"
+-
+-/*****************************************************************************
+- * check, whether devfs is used or not.
+- * See /usr/src/linux/Documentation/filesystems/devfs/ for details.
+- * Returns: the name of the console (/dev/tty0 or /dev/vc/0)
+- *****************************************************************************/
+-char *Gpm_get_console( void )
+-{
+-
+- char *back = NULL, *tmp = NULL;
+- struct stat buf;
+-
+- /* first try the devfs device, because in the next time this will be
+- * the preferred one. If that fails, take the old console */
+-
+- /* Check for open new console */
+- if (stat(GPM_DEVFS_CONSOLE,&buf) == 0)
+- tmp = GPM_DEVFS_CONSOLE;
+-
+- /* Failed, try OLD console */
+- else if(stat(GPM_OLD_CONSOLE,&buf) == 0)
+- tmp = GPM_OLD_CONSOLE;
+-
+- if(tmp != NULL)
+- if((back = malloc(strlen(tmp) + sizeof(char)) ) != NULL)
+- strcpy(back,tmp);
+-
+- return(back);
+-}
+-
+-/* what's the english name for potenz ? */
+-int Gpm_x_high_y(int base, int pot_y)
+-{
+- int val = 1;
+-
+- if(pot_y == 0) val = 1;
+- else if(pot_y < 0) val = 0; /* ugly hack ;) */
+- else while(pot_y > 0) {
+- val = val * base;
+- pot_y--;
+- }
+- return val;
+-}
+-
+-/* return characters needed to display int */
+-int Gpm_cnt_digits(int number)
+-{
+- /* 0-9 = 1 10^0 <-> (10^1)-1
+- * 10 - 99 = 2 10^1 <-> (10^2)-1
+- * 100 - 999 = 3 10^2 <-> (10^3)-1
+- * 1000 - 9999 = 4 ... */
+-
+- int ret = 0, num = 0;
+-
+- /* non negative, please */
+- if(number < 0) number *= -1;
+- else if(number == 0) ret = 1;
+- else while(number > num) {
+- ret++;
+- num = (Gpm_x_high_y(10,ret) - 1);
+- }
+-
+- return(ret);
+-}
+diff -urN gpm-1.20.1/src/twiddler.c gpm/src/twiddler.c
+--- gpm-1.20.1/src/twiddler.c 2002-12-24 17:57:16.000000000 -0500
++++ gpm/src/twiddler.c 2003-10-02 01:22:42.000000000 -0500
+@@ -54,6 +54,7 @@
+ #include "headers/gpm.h"
+ #include "headers/gpmInt.h"
+ #include "headers/message.h"
++#include "headers/console.h"
+ #include "headers/twiddler.h"
+
+
+@@ -134,17 +135,6 @@
+ int (*fun)(char *string);
+ };
+
+-
+-/* The same silly function as in gpm.c */
+-static inline int open_console(const int mode)
+-{
+- int fd;
+- extern struct options option;
+- if ((fd=open(option.consolename, mode)) < 0) gpm_report(GPM_PR_OOPS,GPM_MESS_OPEN,option.consolename);
+- return fd;
+-}
+-
+-
+ /*===================================================================*/
+ /* This part deals with pushing keys */
+
+@@ -175,7 +165,7 @@
+ int twiddler_exec(char *s)
+ {
+ int pid;
+- extern struct options option;
++
+ switch(pid=fork()) {
+ case -1: return -1;
+ case 0:
+@@ -184,7 +174,7 @@
+ close(2); /* very rude! */
+
+ open(GPM_NULL_DEV,O_RDONLY);
+- open(option.consolename,O_WRONLY);
++ open(console.device, O_WRONLY);
+ dup(1);
+ execl("/bin/sh", "sh", "-c", s, NULL);
+ exit(1); /* shouldn't happen */
diff --git a/source/a/gpm/gpm.SlackBuild b/source/a/gpm/gpm.SlackBuild
new file mode 100755
index 00000000..b0352fe8
--- /dev/null
+++ b/source/a/gpm/gpm.SlackBuild
@@ -0,0 +1,149 @@
+#!/bin/sh
+
+# Copyright 2008, 2009 Patrick J. Volkerding, Sebeka, Minnesota, USA
+# All rights reserved.
+#
+# Redistribution and use of this script, with or without modification, is
+# permitted provided that the following conditions are met:
+#
+# 1. Redistributions of this script must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# 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.
+
+# by: volkerdi@slackware.com
+
+VERSION=1.20.1
+ARCH=${ARCH:-x86_64}
+BUILD=${BUILD:-5}
+
+CWD=$(pwd)
+TMP=${TMP:-/tmp}
+PKG=$TMP/package-gpm
+
+if [ "$ARCH" = "i486" ]; then
+ SLKCFLAGS="-O2 -march=i486 -mtune=i686"
+ LIBDIRSUFFIX=""
+elif [ "$ARCH" = "s390" ]; then
+ SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
+elif [ "$ARCH" = "x86_64" ]; then
+ SLKCFLAGS="-O2 -fPIC"
+ LIBDIRSUFFIX="64"
+fi
+
+rm -rf $PKG
+mkdir -p $TMP $PKG
+
+cd $TMP
+rm -rf gpm-$VERSION
+tar xjvf $CWD/gpm-$VERSION.tar.bz2
+cd gpm-$VERSION
+sed -i -e "s/OPEN_MAX/NR_OPEN/" $(grep -lr OPEN_MAX *)
+chown -R root:root .
+find . \
+ \( -perm 700 -o -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \
+ -exec chmod 755 {} \; -o \
+ \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
+ -exec chmod 644 {} \;
+
+zcat $CWD/gpm-evdev-cumulative.patch.gz | patch -p1 --verbose || exit 1
+zcat $CWD/gpm.evdevmakefile.patch.gz | patch -p1 --verbose || exit 1
+zcat $CWD/gpm-1.20.1-math.patch.gz | patch -p1 --verbose || exit 1
+zcat $CWD/gpm-1.20.1-weak-wgetch.patch.gz | patch -p1 --verbose || exit 1
+zcat $CWD/gpm-1.20.1-nodebug.patch.gz | patch -p1 --verbose || exit 1
+zcat $CWD/gpm-1.20.1-gpmopen.patch.gz | patch -p1 --verbose || exit 1
+zcat $CWD/gpm-1.20.1-idie.patch.gz | patch -p1 --verbose || exit 1
+zcat $CWD/gpm-1.20.1-subscript.patch.gz | patch -p1 --verbose || exit 1
+zcat $CWD/gpm-1.20.1-input.patch.gz | patch -p1 --verbose || exit 1
+zcat $CWD/gpm-1.20.1-consolename.patch.gz | patch -p1 --verbose || exit 1
+zcat $CWD/gpm-1.20.1-multilib.patch.gz | patch -p1 --verbose || exit 1
+zcat $CWD/gpm-1.20.1-no-console-error.patch.gz | patch -p1 --verbose || exit 1
+zcat $CWD/gpm-1.20.1-lib-silent.patch.gz | patch -p1 --verbose || exit 1
+zcat $CWD/gpm-1.20.1.send-noise-to-syslogs.diff.gz | patch -p1 --verbose || exit 1
+zcat $CWD/gpm-1.20.1-input-defines.diff.gz | patch -p1 --verbose || exit 1
+
+autoconf
+
+CFLAGS="$SLKCFLAGS" \
+./configure \
+ --prefix=/usr \
+ --sysconfdir=/etc \
+ $ARCH-slackware-linux
+
+make || exit 1
+zcat $CWD/inputattach.c.gz > inputattach.c
+gcc $SLKCFLAGS -o inputattach inputattach.c || exit
+
+mkdir -p $PKG/usr/bin $PKG/etc/rc.d
+cat inputattach > $PKG/usr/bin/inputattach
+( cd src
+ mkdir -p $PKG/usr/sbin
+ cat gpm > $PKG/usr/sbin/gpm
+ cat prog/disable-paste > $PKG/usr/bin/disable-paste
+ cat prog/gpm-root > $PKG/usr/bin/gpm-root
+ cat prog/hltest > $PKG/usr/bin/hltest
+ cat prog/mev > $PKG/usr/bin/mev
+ cat prog/mouse-test > $PKG/usr/bin/mouse-test
+ mkdir -p $PKG/usr/include
+ cp headers/gpm.h $PKG/usr/include/gpm.h
+ chmod 644 $PKG/usr/include/gpm.h
+ mkdir -p $PKG/usr/lib${LIBDIRSUFFIX} $PKG/lib${LIBDIRSUFFIX}
+ cat lib/libgpm.a > $PKG/usr/lib${LIBDIRSUFFIX}/libgpm.a
+ cat lib/libgpm.so.1.19.0 > $PKG/lib${LIBDIRSUFFIX}/libgpm.so.1.19.0
+ chmod 755 $PKG/lib${LIBDIRSUFFIX}/libgpm.so.1.19.0
+)
+( cd conf
+ mkdir -p $PKG/etc
+ cat gpm-root.conf > $PKG/etc/gpm-root.conf
+ cat gpm-syn.conf > $PKG/etc/gpm-syn.conf
+ cat gpm-twiddler.conf > $PKG/etc/gpm-twiddler.conf
+)
+( cd contrib/emacs
+ mkdir -p $PKG/usr/share/emacs/site-lisp
+ cat t-mouse.el > $PKG/usr/share/emacs/site-lisp/t-mouse.el
+)
+mkdir -p $PKG/usr/doc/gpm-$VERSION
+cp -a \
+ BUGS COPYING Changelog Changes MANIFEST README TODO \
+ $PKG/usr/doc/gpm-$VERSION
+( cd doc
+ for page in *.1 *.7 *.8 ; do
+ CHAPTER=`echo $page | cut -f 2 -d .`
+ mkdir -p $PKG/usr/man/man$CHAPTER
+ cat $page | gzip -9c > $PKG/usr/man/man${CHAPTER}/$page.gz
+ done
+ mkdir -p $PKG/usr/info
+ cat gpm.info | gzip -9c > $PKG/usr/info/gpm.info.gz
+ cp -a \
+ Announce FAQ HACK_GPM README* \
+ $PKG/usr/doc/gpm-$VERSION
+)
+( cd $PKG/usr/lib${LIBDIRSUFFIX}
+ ln -sf ../../lib${LIBDIRSUFFIX}/libgpm.so.1 libgpm.so )
+( cd $PKG/lib${LIBDIRSUFFIX} ; ln -sf libgpm.so.1.19.0 libgpm.so.1 )
+zcat $CWD/mouseconfig.gz > $PKG/usr/sbin/mouseconfig
+chmod 755 $PKG/usr/bin/* $PKG/usr/sbin/*
+mkdir -p $PKG/var/log/setup
+zcat $CWD/setup.mouse.gz > $PKG/var/log/setup/setup.mouse
+chmod 755 $PKG/var/log/setup/setup.mouse
+( cd $PKG
+ find . | xargs file | grep "executable" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
+ find . | xargs file | grep "shared object" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
+)
+mkdir -p $PKG/install
+cat $CWD/slack-desc > $PKG/install/slack-desc
+
+# Build the package:
+cd $PKG
+makepkg -l y -c n $TMP/gpm-$VERSION-$ARCH-$BUILD.txz
+
diff --git a/source/a/gpm/gpm.evdevmakefile.patch b/source/a/gpm/gpm.evdevmakefile.patch
new file mode 100644
index 00000000..bd56c3aa
--- /dev/null
+++ b/source/a/gpm/gpm.evdevmakefile.patch
@@ -0,0 +1,11 @@
+--- ./src/Makefile.in.orig 2006-02-07 15:24:17.000000000 -0600
++++ ./src/Makefile.in 2006-02-07 15:26:03.000000000 -0600
+@@ -12,7 +12,7 @@
+ include $(top_builddir)/Makefile.include
+
+ # Main portion: regular build rules
+-MICESRC = mice.c twiddler.c synaptics.c @EVDEV_SRCS@
++MICESRC = mice.c twiddler.c synaptics.c evdev.c
+
+ GSRC = main.c gpm.c gpn.c special.c startup.c server_tools.c console.c \
+ selection.c client.c optparser.c $(MICESRC)
diff --git a/source/a/gpm/inputattach.c b/source/a/gpm/inputattach.c
new file mode 100644
index 00000000..c47fad13
--- /dev/null
+++ b/source/a/gpm/inputattach.c
@@ -0,0 +1,472 @@
+/*
+ * $Id: inputattach.c,v 1.21 2002/07/10 22:34:01 vojtech Exp $
+ *
+ * Copyright (c) 1999-2000 Vojtech Pavlik
+ *
+ * Sponsored by SuSE
+ *
+ * Twiddler support Copyright (c) 2001 Arndt Schoenewald
+ * Sponsored by Quelltext AG (http://www.quelltext-ag.de), Dortmund, Germany
+ */
+
+/*
+ * Input line discipline attach program
+ */
+
+/*
+ * 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-1307 USA
+ *
+ * Should you need to contact me, the author, you can do so either by
+ * e-mail - mail your message to <vojtech@ucw.cz>, or by paper mail:
+ * Vojtech Pavlik, Simunkova 1594, Prague 8, 182 00 Czech Republic
+ */
+
+#include <linux/serio.h>
+
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <sys/ioctl.h>
+#include <sys/time.h>
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <unistd.h>
+#include <fcntl.h>
+#include <termios.h>
+#include <string.h>
+#include <assert.h>
+#include <ctype.h>
+
+int readchar(int fd, unsigned char *c, int timeout)
+{
+ struct timeval tv;
+ fd_set set;
+
+ tv.tv_sec = 0;
+ tv.tv_usec = timeout * 1000;
+
+ FD_ZERO(&set);
+ FD_SET(fd, &set);
+
+ if (!select(fd+1, &set, NULL, NULL, &tv)) return -1;
+ if (read(fd, c, 1) != 1) return -1;
+
+ return 0;
+}
+
+
+
+void setline(int fd, int flags, int speed)
+{
+ struct termios t;
+
+ tcgetattr(fd, &t);
+
+ t.c_cflag = flags | CREAD | HUPCL | CLOCAL;
+ t.c_iflag = IGNBRK | IGNPAR;
+ t.c_oflag = 0;
+ t.c_lflag = 0;
+ t.c_cc[VMIN ] = 1;
+ t.c_cc[VTIME] = 0;
+
+ cfsetispeed(&t, speed);
+ cfsetospeed(&t, speed);
+
+ tcsetattr(fd, TCSANOW, &t);
+}
+
+int logitech_command(int fd, char *c)
+{
+ int i;
+ unsigned char d;
+ for (i = 0; c[i]; i++) {
+ write(fd, c + i, 1);
+ if (readchar(fd, &d, 1000))
+ return -1;
+ if (c[i] != d)
+ return -1;
+ }
+ return 0;
+}
+
+int magellan_init(int fd, long *id, long *extra)
+{
+ write(fd, "m3\rpBB\rz\r", 9);
+ return 0;
+}
+
+int warrior_init(int fd, long *id, long *extra)
+{
+ if (logitech_command(fd, "*S")) return -1;
+ setline(fd, CS8, B4800);
+ return 0;
+}
+
+int spaceball_waitchar(int fd, unsigned char c, unsigned char *d, int timeout)
+{
+ unsigned char b = 0;
+
+ while (!readchar(fd, &b, timeout)) {
+ if (b == 0x0a) continue;
+ *d++ = b;
+ if (b == c) break;
+ }
+
+ *d = 0;
+
+ return -(b != c);
+}
+
+int spaceball_waitcmd(int fd, char c, char *d)
+{
+ int i;
+
+ for (i = 0; i < 8; i++) {
+ if (spaceball_waitchar(fd, 0x0d, d, 1000))
+ return -1;
+ if (d[0] == c)
+ return 0;
+ }
+
+ return -1;
+}
+
+int spaceball_cmd(int fd, char *c, char *d)
+{
+ int i;
+
+ for (i = 0; c[i]; i++)
+ write(fd, c + i, 1);
+ write(fd, "\r", 1);
+
+ i = spaceball_waitcmd(fd, toupper(c[0]), d);
+
+ return i;
+}
+
+#define SPACEBALL_1003 1
+#define SPACEBALL_2003B 3
+#define SPACEBALL_2003C 4
+#define SPACEBALL_3003C 7
+#define SPACEBALL_4000FLX 8
+#define SPACEBALL_4000FLX_L 9
+
+int spaceball_init(int fd, long *id, long *extra)
+{
+ char r[64];
+
+ if (spaceball_waitchar(fd, 0x11, r, 4000) ||
+ spaceball_waitchar(fd, 0x0d, r, 1000))
+ return -1;
+
+ if (spaceball_waitcmd(fd, '@', r))
+ return -1;
+
+ if (strncmp("@1 Spaceball alive", r, 18))
+ return -1;
+
+ if (spaceball_waitcmd(fd, '@', r))
+ return -1;
+
+ if (spaceball_cmd(fd, "hm", r))
+ return -1;
+
+ if (!strncmp("Hm2003B", r, 7))
+ *id = SPACEBALL_2003B;
+ if (!strncmp("Hm2003C", r, 7))
+ *id = SPACEBALL_2003C;
+ if (!strncmp("Hm3003C", r, 7))
+ *id = SPACEBALL_3003C;
+
+ if (!strncmp("HvFirmware", r, 10)) {
+
+ if (spaceball_cmd(fd, "\"", r))
+ return -1;
+
+ if (strncmp("\"1 Spaceball 4000 FLX", r, 21))
+ return -1;
+
+ if (spaceball_waitcmd(fd, '"', r))
+ return -1;
+
+ if (strstr(r, " L "))
+ *id = SPACEBALL_4000FLX_L;
+ else
+ *id = SPACEBALL_4000FLX;
+
+ if (spaceball_waitcmd(fd, '"', r))
+ return -1;
+
+ if (spaceball_cmd(fd, "YS", r))
+ return -1;
+
+ if (spaceball_cmd(fd, "M", r))
+ return -1;
+
+ return 0;
+ }
+
+ if (spaceball_cmd(fd, "P@A@A", r) ||
+ spaceball_cmd(fd, "FT@", r) ||
+ spaceball_cmd(fd, "MSS", r))
+ return -1;
+
+ return 0;
+}
+
+int stinger_init(int fd, long *id, long *extra)
+{
+ int i;
+ unsigned char c;
+ unsigned char *response = "\r\n0600520058C272";
+
+ if (write(fd, " E5E5", 5) != 5) /* Enable command */
+ return -1;
+
+ for (i = 0; i < 16; i++) /* Check for Stinger */
+ if (readchar(fd, &c, 200) || (c != response[i]))
+ return -1;
+
+ return 0;
+}
+
+int mzp_init(int fd, long *id, long *extra)
+{
+ if (logitech_command(fd, "*X*q")) return -1;
+ setline(fd, CS8, B9600);
+ return 0;
+}
+
+int newton_init(int fd, long *id, long *extra)
+{
+ int i;
+ unsigned char c;
+ unsigned char response[35] =
+ { 0x16, 0x10, 0x02, 0x64, 0x5f, 0x69, 0x64, 0x00,
+ 0x00, 0x00, 0x0c, 0x6b, 0x79, 0x62, 0x64, 0x61,
+ 0x70, 0x70, 0x6c, 0x00, 0x00, 0x00, 0x01, 0x6e,
+ 0x6f, 0x66, 0x6d, 0x00, 0x00, 0x00, 0x00, 0x10,
+ 0x03, 0xdd, 0xe7 };
+
+ for (i = 0; i < 35; i++)
+ if (readchar(fd, &c, 400) || (c != response[i]))
+ return -1;
+
+ return 0;
+}
+
+int twiddler_init(int fd, long *id, long *extra)
+{
+ unsigned char c[10];
+ int count, line;
+
+ /* Turn DTR off, otherwise the Twiddler won't send any data. */
+ if (ioctl(fd, TIOCMGET, &line)) return -1;
+ line &= ~TIOCM_DTR;
+ if (ioctl(fd, TIOCMSET, &line)) return -1;
+
+ /* Check whether the device on the serial line is the Twiddler.
+ *
+ * The Twiddler sends data packets of 5 bytes which have the following
+ * properties: the MSB is 0 on the first and 1 on all other bytes, and
+ * the high order nibble of the last byte is always 0x8.
+ *
+ * We read and check two of those 5 byte packets to be sure that we
+ * are indeed talking to a Twiddler. */
+
+ /* Read at most 5 bytes until we find one with the MSB set to 0 */
+ for (count = 0; count < 5; count++) {
+ if (readchar(fd, c+0, 500)) return -1;
+ if ((c[0] & 0x80) == 0) break;
+ }
+
+ if (count == 5) {
+ /* Could not find header byte in data stream */
+ return -1;
+ }
+
+ /* Read remaining 4 bytes plus the full next data packet */
+ for (count = 1; count < 10; count++) {
+ if (readchar(fd, c+count, 500)) return -1;
+ }
+
+ /* Check whether the bytes of both data packets obey the rules */
+ for (count = 1; count < 10; count++) {
+ if ((count % 5 == 0 && (c[count] & 0x80) != 0)
+ || (count % 5 == 4 && (c[count] & 0xF0) != 0x80)
+ || (count % 5 != 0 && (c[count] & 0x80) != 0x80)) {
+ /* Invalid byte in data packet */
+ return -1;
+ }
+ }
+
+ return 0;
+}
+
+int dump_init(int fd, long *id, long *extra)
+{
+ unsigned char c, o = 0;
+
+ c = 0x80;
+
+ if (write(fd, &c, 1) != 1) /* Enable command */
+ return -1;
+
+ while (1)
+ if (!readchar(fd, &c, 1)) {
+ printf("%02x (%c) ", c, ((c > 32) && (c < 127)) ? c : 'x');
+ o = 1;
+ } else {
+ if (o) {
+ printf("\n");
+ o = 0;
+ }
+ }
+}
+
+struct input_types {
+ char name[16];
+ char name2[16];
+ int speed;
+ int flags;
+ unsigned long type;
+ unsigned long extra;
+ int flush;
+ int (*init)(int fd, long *id, long *extra);
+};
+
+struct input_types input_types[] = {
+
+{ "--sunkbd", "-skb", B1200, CS8, SERIO_SUNKBD, 0x00, 1, NULL },
+{ "--spaceorb", "-orb", B9600, CS8, SERIO_SPACEORB, 0x00, 1, NULL },
+{ "--spaceball", "-sbl", B9600, CS8, SERIO_SPACEBALL,0x00, 0, spaceball_init },
+{ "--magellan", "-mag", B9600, CS8 | CSTOPB | CRTSCTS, SERIO_MAGELLAN, 0x00, 1, magellan_init },
+{ "--warrior", "-war", B1200, CS7 | CSTOPB, SERIO_WARRIOR, 0x00, 1, warrior_init },
+{ "--stinger", "-sting", B1200, CS8, SERIO_STINGER, 0x00, 1, stinger_init },
+{ "--mousesystems", "-msc", B1200, CS8, SERIO_MSC, 0x01, 1, NULL },
+{ "--sunmouse", "-sun", B1200, CS8, SERIO_SUN, 0x01, 1, NULL },
+{ "--microsoft", "-bare", B1200, CS7, SERIO_MS, 0x00, 1, NULL },
+{ "--mshack", "-ms", B1200, CS7, SERIO_MS, 0x01, 1, NULL },
+{ "--mouseman", "-mman", B1200, CS7, SERIO_MP, 0x01, 1, NULL },
+{ "--intellimouse", "-ms3", B1200, CS7, SERIO_MZ, 0x11, 1, NULL },
+{ "--mmwheel", "-mmw", B1200, CS7 | CSTOPB, SERIO_MZP, 0x13, 1, mzp_init },
+{ "--iforce", "-ifor", B38400, CS8, SERIO_IFORCE, 0x00, 0, NULL },
+{ "--newtonkbd", "-newt", B9600, CS8, SERIO_NEWTON, 0x00, 0, newton_init },
+{ "--h3600ts", "-ipaq", B115200, CS8, SERIO_H3600, 0x00, 0, NULL },
+{ "--stowawaykbd", "-ipaqkbd", B115200, CS8, SERIO_STOWAWAY, 0x00, 0, NULL },
+{ "--ps2serkbd", "-ps2ser", B1200, CS8, SERIO_PS2SER, 0x00, 1, NULL },
+#if 0
+{ "--twiddler", "-twid", B2400, CS8, SERIO_TWIDKBD, 0x00, 0, twiddler_init },
+{ "--twiddler-joy", "-twidjoy", B2400, CS8, SERIO_TWIDJOY, 0x00, 0, twiddler_init },
+{ "--ipod-remote", "-ipod", B9600, CS8, SERIO_IPOD_REM, 0x00, 0, NULL },
+#endif
+{ "--dump", "-dump", B2400, CS8, 0, 0x00, 0, dump_init },
+{ "", "", 0, 0 }
+
+};
+
+int main(int argc, char **argv)
+{
+ unsigned long devt;
+ int ldisc;
+ int type;
+ long id, extra;
+ int fd;
+ char c;
+
+ if (argc < 2 || argc > 4 || (argc == 4 && strcmp(argv[3], "--daemon")) || !strcmp("--help", argv[1])) {
+ puts("");
+ puts("Usage: inputttach <mode> <device>");
+ puts("");
+ puts("Modes:");
+ puts(" --sunkbd -skb Sun Type 4 and Type 5 keyboards");
+ puts(" --spaceorb -orb SpaceOrb 360 / SpaceBall Avenger");
+ puts(" --spaceball -sbl SpaceBall 2003 / 3003 / 4000 FLX");
+ puts(" --magellan -mag Magellan / SpaceMouse");
+ puts(" --warrior -war WingMan Warrior");
+ puts(" --stinger -stng Gravis Stinger");
+ puts(" --mousesystems -msc 3-button Mouse Systems mice");
+ puts(" --sunmouse -sun 3-button Sun mice");
+ puts(" --microsoft -bare 2-button Microsoft mice");
+ puts(" --mshack -ms 3-button mice in Microsoft mode");
+ puts(" --mouseman -mman 3-button Logitech and Genius mice");
+ puts(" --intellimouse -ms3 Microsoft IntelliMouse");
+ puts(" --mmwheel -mmw Logitech mice with 4-5 buttons or wheel");
+ puts(" --iforce -ifor I-Force joysticks and wheels");
+ puts(" --h3600ts -ipaq Ipaq h3600 touchscreen");
+ puts(" --stowawaykbd -ipaqkbd Stowaway keyboard");
+ puts(" --ps2serkbd -ps2ser PS/2 via serial keyboard");
+#if 0
+ puts(" --twiddler -twid Handykey Twiddler chording keyboard");
+ puts(" --twiddler-joy -twidjoy Handykey Twiddler used as a joystick");
+ puts(" --ipod-remote -ipod iPod remote control");
+#endif
+ puts("");
+ return 1;
+ }
+
+ for (type = 0; input_types[type].speed; type++) {
+ if (!strncasecmp(argv[1], input_types[type].name, 16) ||
+ !strncasecmp(argv[1], input_types[type].name2, 16))
+ break;
+ }
+
+ if (!input_types[type].speed) {
+ fprintf(stderr, "inputattach: invalid mode\n");
+ return 1;
+ }
+
+ if ((fd = open(argv[2], O_RDWR | O_NOCTTY | O_NONBLOCK)) < 0) {
+ perror("inputattach");
+ return 1;
+ }
+
+ setline(fd, input_types[type].flags, input_types[type].speed);
+
+ if (input_types[type].flush)
+ while (!readchar(fd, &c, 100));
+
+ id = 0;
+ extra = input_types[type].extra;
+
+ if (input_types[type].init && input_types[type].init(fd, &id, &extra)) {
+ fprintf(stderr, "inputattach: device initialization failed\n");
+ return 1;
+ }
+
+ ldisc = N_MOUSE;
+ if(ioctl(fd, TIOCSETD, &ldisc)) {
+ fprintf(stderr, "inputattach: can't set line discipline\n");
+ return 1;
+ }
+
+ devt = SERIO_RS232 | input_types[type].type | (id << 8) | (extra << 16);
+
+ if(ioctl(fd, SPIOCSTYPE, &devt)) {
+ fprintf(stderr, "inputattach: can't set device type\n");
+ return 1;
+ }
+
+ if (argc == 4 && !strcmp(argv[3],"--daemon"))
+ daemon(0,0);
+
+ read(fd, NULL, 0);
+
+ ldisc = 0;
+ ioctl(fd, TIOCSETD, &ldisc);
+ close(fd);
+
+ return 0;
+}
diff --git a/source/a/gpm/mouseconfig b/source/a/gpm/mouseconfig
new file mode 100644
index 00000000..4e9575f5
--- /dev/null
+++ b/source/a/gpm/mouseconfig
@@ -0,0 +1,7 @@
+#!/bin/sh
+# Starts the Slackware mouse configuration menu, where you can set your
+# /dev/mouse link and configure gpm.
+COLOR=on
+export COLOR
+cd /
+/bin/sh /var/log/setup/setup.mouse /
diff --git a/source/a/gpm/setup.mouse b/source/a/gpm/setup.mouse
new file mode 100644
index 00000000..dcdc6a8f
--- /dev/null
+++ b/source/a/gpm/setup.mouse
@@ -0,0 +1,154 @@
+#!/bin/sh
+#BLURB="Configure the console mouse support (GPM)."
+T_PX=$1
+TMP=/var/log/setup/tmp
+GPM=/usr/sbin/gpm
+# If the mouse is USB, we can autodetect it:
+if [ -r /proc/bus/usb/devices ]; then
+ if cat /proc/bus/usb/devices | grep usb_mouse 1> /dev/null 2> /dev/null ; then
+ MOUSE_TYPE=usb
+ MTYPE="imps2"
+ ( cd $T_PX/dev ; rm -f mouse ; ln -sf input/mice mouse )
+ fi
+fi
+
+if [ "$MOUSE_TYPE" = "" ]; then
+ dialog --title "MOUSE CONFIGURATION" --default-item "imps2" --menu \
+"This part of the configuration \
+process will create a /dev/mouse link pointing to your default mouse device. \
+You can change the /dev/mouse link later if the mouse doesn't work, or if \
+you switch to a different type of pointing device. We will also use the \
+information about the mouse to set the correct protocol for gpm, the Linux \
+mouse server. Please select a mouse type \
+from the list below:" 20 76 8 \
+ "ps2" "PS/2 port mouse (most desktops and laptops)" \
+ "usb" "USB connected mouse" \
+ "imps2" "Microsoft PS/2 Intellimouse" \
+ "exps2" "Intellimouse Explorer PS/2" \
+ "bare" "2 button Microsoft compatible serial mouse" \
+ "ms" "3 button Microsoft compatible serial mouse" \
+ "mman" "Logitech serial MouseMan and similar devices" \
+ "msc" "MouseSystems serial (most 3 button serial mice)" \
+ "pnp" "Plug and Play (serial mice that do not work with ms)" \
+ "ms3" "Microsoft serial Intellimouse" \
+ "netmouse" "Genius Netmouse on PS/2 port" \
+ "logi" "Some serial Logitech devices" \
+ "logim" "Make serial Logitech behave like msc" \
+ "atibm" "ATI XL busmouse (mouse card)" \
+ "inportbm" "Microsoft busmouse (mouse card)" \
+ "logibm" "Logitech busmouse (mouse card)" \
+ "ncr" "A pointing pen (NCR3125) on some laptops" \
+ "twid" "Twiddler keyboard, by HandyKey Corp" \
+ "genitizer" "Genitizer tablet (relative mode)" \
+ "js" "Use a joystick as a mouse" \
+ "wacom" "Wacom serial graphics tablet" \
+ 2> $TMP/mtype
+ if [ ! $? = 0 ]; then
+ rm -f $TMP/mtype
+ exit
+ fi
+ if [ -f $TMP/mtype ]; then
+ MOUSE_TYPE="`cat $TMP/mtype`"
+ else
+ unset MOUSE_TYPE
+ fi
+ rm -f $TMP/mtype
+ if [ "$MOUSE_TYPE" = "bare" -o "$MOUSE_TYPE" = "ms" \
+ -o "$MOUSE_TYPE" = "mman" -o "$MOUSE_TYPE" = "msc" \
+ -o "$MOUSE_TYPE" = "genitizer" \
+ -o "$MOUSE_TYPE" = "pnp" -o "$MOUSE_TYPE" = "ms3" \
+ -o "$MOUSE_TYPE" = "logi" -o "$MOUSE_TYPE" = "logim" \
+ -o "$MOUSE_TYPE" = "wacom" -o "$MOUSE_TYPE" = "twid" ]; then
+ dialog --title "SELECT SERIAL PORT" --menu "Your mouse requires a \
+serial port. Which one would you like to use?" 12 50 4 \
+ "/dev/ttyS0" "(COM1: under DOS)" \
+ "/dev/ttyS1" "(COM2: under DOS)" \
+ "/dev/ttyS2" "(COM3: under DOS)" \
+ "/dev/ttyS3" "(COM4: under DOS)" 2> $TMP/mport
+ if [ ! $? = 0 ]; then
+ rm -f $TMP/mport
+ exit
+ fi
+ MDEVICE="`cat $TMP/mport`"
+ SHORT_MDEVICE=`basename $MDEVICE`
+ ( cd $T_PX/dev ; rm -f mouse ; ln -sf $SHORT_MDEVICE mouse )
+ # For the serial mice, the protocol is the same as the mouse type:
+ MTYPE=$MOUSE_TYPE
+ rm -f $TMP/mport
+ elif [ "$MOUSE_TYPE" = "ps2" ]; then
+ ( cd $T_PX/dev ; rm -f mouse ; ln -sf psaux mouse )
+ MTYPE="ps2"
+ elif [ "$MOUSE_TYPE" = "ncr" ]; then
+ ( cd $T_PX/dev ; rm -f mouse ; ln -sf psaux mouse )
+ MTYPE="ncr"
+ elif [ "$MOUSE_TYPE" = "exps2" ]; then
+ ( cd $T_PX/dev ; rm -f mouse ; ln -sf psaux mouse )
+ MTYPE="exps2"
+ elif [ "$MOUSE_TYPE" = "imps2" ]; then
+ ( cd $T_PX/dev ; rm -f mouse ; ln -sf psaux mouse )
+ MTYPE="imps2"
+ elif [ "$MOUSE_TYPE" = "logibm" ]; then
+ ( cd $T_PX/dev ; rm -f mouse ; ln -sf logibm mouse )
+ MTYPE="ps2"
+ elif [ "$MOUSE_TYPE" = "atibm" ]; then
+ ( cd $T_PX/dev ; rm -f mouse ; ln -sf atibm mouse )
+ MTYPE="ps2"
+ elif [ "$MOUSE_TYPE" = "inportbm" ]; then
+ ( cd $T_PX/dev ; rm -f mouse ; ln -sf inportbm mouse )
+ MTYPE="bm"
+ elif [ "$MOUSE_TYPE" = "js" ]; then
+ ( cd $T_PX/dev ; rm -f mouse ; ln -sf js0 mouse )
+ MTYPE="js"
+ elif [ "$MOUSE_TYPE" = "usb" ]; then
+ ( cd $T_PX/dev ; rm -f mouse ; ln -sf input/mice mouse )
+ MTYPE="imps2"
+ fi
+fi
+
+# OK, we know enough now to create a sample rc.gpm:
+cat << EOF > $T_PX/etc/rc.d/rc.gpm-sample
+#!/bin/sh
+# Start/stop/restart the GPM mouse server:
+
+if [ "\$1" = "stop" ]; then
+ echo "Stopping gpm..."
+ $GPM -k
+elif [ "\$1" = "restart" ]; then
+ echo "Restarting gpm..."
+ $GPM -k
+ sleep 1
+ $GPM -m /dev/mouse -t $MTYPE
+else # assume \$1 = start:
+ echo "Starting gpm: $GPM -m /dev/mouse -t $MTYPE"
+ $GPM -m /dev/mouse -t $MTYPE
+fi
+
+# There is another way to run GPM, where it acts as a repeater outputting a
+# virtual MouseSystems mouse on /dev/gpmdata. This is useful for feeding
+# gpm's data to X, especially if you've got a busmouse (in that situation X
+# and gpm may not coexist without using a repeater). To try running a GPM
+# repeater for X, change the gpm command line to look like this:
+# $GPM -R msc -m /dev/mouse -t $MTYPE
+# Then, make sure that the mouse configuration in your XF86Config file refers
+# to the repeater device (/dev/gpmdata) and a MouseSystems mouse type. If you
+# edit the file directly, you'll want the lines to look like this (minus the
+# comment marks '#' shown here, of course):
+#Section "Pointer"
+# Protocol "MouseSystems"
+# Device "/dev/gpmdata"
+
+EOF
+chmod 755 $T_PX/etc/rc.d/rc.gpm-sample
+# Now ask if this should be the new rc.gpm:
+ dialog --title "GPM CONFIGURATION" --yesno \
+"The gpm program allows you to cut and paste text on\n\
+the virtual consoles using a mouse. If you choose to\n\
+run it at boot time, this line will be added to your\n\
+/etc/rc.d/rc.gpm:\n\
+\n\
+ $GPM -m /dev/mouse -t $MTYPE \n\
+\n\
+Shall we load the gpm program at boot time?" 12 58
+ if [ $? = 0 ]; then
+ mv $T_PX/etc/rc.d/rc.gpm-sample $T_PX/etc/rc.d/rc.gpm
+ fi
diff --git a/source/a/gpm/slack-desc b/source/a/gpm/slack-desc
new file mode 100644
index 00000000..17774f10
--- /dev/null
+++ b/source/a/gpm/slack-desc
@@ -0,0 +1,19 @@
+# HOW TO EDIT THIS FILE:
+# The "handy ruler" below makes it easier to edit a package description. Line
+# up the first '|' above the ':' following the base package name, and the '|'
+# on the right side marks the last column you can put a character in. You must
+# make exactly 11 lines for the formatting to be correct. It's also
+# customary to leave one space after the ':'.
+
+ |-----handy-ruler------------------------------------------------------|
+gpm: gpm (general purpose mouse server)
+gpm:
+gpm: The general purpose mouse server, or gpm, allows you to use the mouse
+gpm: to cut and paste text from the screen. It also acts as a mouse
+gpm: server for applications running on the Linux console, such as the
+gpm: Midnight Commander file manager.
+gpm:
+gpm: NOTE: This program may cause problems when you start X on systems
+gpm: that do not use a serial mouse. If you get an 'unable to open mouse
+gpm: device' error from X, disable /etc/rc.d/rc.gpm.
+gpm:
diff --git a/source/a/grep/grep.SlackBuild b/source/a/grep/grep.SlackBuild
new file mode 100755
index 00000000..1b2ac8e7
--- /dev/null
+++ b/source/a/grep/grep.SlackBuild
@@ -0,0 +1,110 @@
+#!/bin/sh
+
+# Copyright 2005-2008, 2009 Patrick J. Volkerding, Sebeka, MN, USA
+# All rights reserved.
+#
+# Redistribution and use of this script, with or without modification, is
+# permitted provided that the following conditions are met:
+#
+# 1. Redistributions of this script must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# 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.
+
+VERSION=${VERSION:-2.5.4}
+ARCH=${ARCH:-x86_64}
+BUILD=${BUILD:-1}
+
+NUMJOBS=${NUMJOBS:-" -j7 "}
+
+CWD=$(pwd)
+TMP=${TMP:-/tmp}
+PKG=$TMP/package-grep
+
+if [ "$ARCH" = "i486" ]; then
+ SLKCFLAGS="-O2 -march=i486 -mtune=i686"
+ LIBDIRSUFFIX=""
+elif [ "$ARCH" = "s390" ]; then
+ SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
+elif [ "$ARCH" = "x86_64" ]; then
+ SLKCFLAGS="-O2 -fPIC"
+ LIBDIRSUFFIX="64"
+fi
+
+rm -rf $PKG
+mkdir -p $TMP $PKG
+cd $TMP
+rm -rf grep-$VERSION
+tar xvf $CWD/grep-$VERSION.tar.bz2 || exit 1
+cd grep-$VERSION || exit 1
+chown -R root:root .
+find . \
+ \( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \
+ -exec chmod 755 {} \; -o \
+ \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
+ -exec chmod 644 {} \;
+
+CFLAGS="$SLKCFLAGS" \
+./configure \
+ --prefix=/usr \
+ --bindir=/bin \
+ --mandir=/usr/man \
+ --infodir=/usr/info \
+ --disable-perl-regexp \
+ --build=$ARCH-slackware-linux
+
+make $NUMJOBS || make || exit 1
+make install DESTDIR=$PKG || exit 1
+
+find $PKG | xargs file | grep -e "executable" -e "shared object" | grep ELF \
+ | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
+
+# ****************************************************************************
+# Makefile installs different binaries for each of grep, egrep, and fgrep
+# This is how we used to do it...
+#( cd $PKG/bin
+# rm -f egrep ; ln -sf grep egrep
+# rm -f fgrep ; ln -sf grep fgrep
+#)
+# ****************************************************************************
+
+# Make symlinks in /usr/bin:
+mkdir -p $PKG/usr/bin
+( cd $PKG/usr/bin
+ ln -sf ../../bin/grep .
+ ln -sf ../../bin/egrep .
+ ln -sf ../../bin/fgrep .
+)
+
+# Compress man pages
+( cd $PKG/usr/man
+ find . -type f -exec gzip -9 {} \;
+ for i in $(find . -type l) ; do ln -s $(readlink $i).gz $i.gz ; rm $i ; done
+)
+
+# Compress info pages
+rm -f $PKG/usr/info/dir
+gzip -9 $PKG/usr/info/*
+
+mkdir -p $PKG/usr/doc/grep-$VERSION
+cp -a \
+ ABOUT-NLS AUTHORS COPYING* INSTALL NEWS README* THANKS TODO \
+ $PKG/usr/doc/grep-$VERSION
+
+mkdir -p $PKG/install
+cat $CWD/slack-desc > $PKG/install/slack-desc
+
+# Build the package:
+cd $PKG
+/sbin/makepkg -l y -c n $TMP/grep-$VERSION-$ARCH-$BUILD.txz
+
diff --git a/source/a/grep/slack-desc b/source/a/grep/slack-desc
new file mode 100644
index 00000000..fe831013
--- /dev/null
+++ b/source/a/grep/slack-desc
@@ -0,0 +1,19 @@
+# HOW TO EDIT THIS FILE:
+# The "handy ruler" below makes it easier to edit a package description. Line
+# up the first '|' above the ':' following the base package name, and the '|'
+# on the right side marks the last column you can put a character in. You must
+# make exactly 11 lines for the formatting to be correct. It's also
+# customary to leave one space after the ':'.
+
+ |-----handy-ruler------------------------------------------------------|
+grep: grep (print lines matching a pattern)
+grep:
+grep: This is GNU grep, the "fastest grep in the west" (we hope). Grep
+grep: searches through textual input for lines which contain a match to a
+grep: specified pattern and then prints the matching lines.
+grep:
+grep:
+grep:
+grep:
+grep:
+grep:
diff --git a/source/a/gzip/gzip.SlackBuild b/source/a/gzip/gzip.SlackBuild
new file mode 100755
index 00000000..c2719ebd
--- /dev/null
+++ b/source/a/gzip/gzip.SlackBuild
@@ -0,0 +1,146 @@
+#!/bin/sh
+# Copyright 2006-2009 Patrick J. Volkerding, Sebeka, MN, USA
+# All rights reserved.
+#
+# Redistribution and use of this script, with or without modification, is
+# permitted provided that the following conditions are met:
+#
+# 1. Redistributions of this script must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# 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.
+
+PKGNAM=gzip
+VERSION=${VERSION:-1.3.12}
+ARCH=${ARCH:-x86_64}
+BUILD=${BUILD:-1}
+
+CWD=$(pwd)
+TMP=${TMP:-/tmp}
+PKG=$TMP/package-${PKGNAM}
+
+if [ "$ARCH" = "i386" ]; then
+ SLKCFLAGS="-O2 -march=i386 -mcpu=i686"
+elif [ "$ARCH" = "i486" ]; then
+ SLKCFLAGS="-O2 -march=i486 -mtune=i686"
+elif [ "$ARCH" = "s390" ]; then
+ SLKCFLAGS="-O2"
+elif [ "$ARCH" = "x86_64" ]; then
+ SLKCFLAGS="-O2 -fPIC"
+fi
+
+rm -rf $PKG
+mkdir -p $TMP $PKG
+
+cd $TMP
+rm -rf ${PKGNAM}-${VERSION}
+tar xjvf $CWD/${PKGNAM}-$VERSION.tar.bz2 || exit 1
+cd ${PKGNAM}-$VERSION
+
+# Make sure ownerships and permissions are sane:
+chown -R root:root .
+find . \
+ \( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \
+ -exec chmod 755 {} \; -o \
+ \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
+ -exec chmod 644 {} \;
+
+# The following command renames the internal implementation of futimens
+# to gl_futimens as newer versions of Glibc provide an incompatible version:
+sed -i -e "s/futimens/gl_&/" $(grep -lr futimens *)
+
+# Configure:
+CFLAGS="$SLKCFLAGS" \
+./configure \
+ --prefix=/usr \
+ --bindir=/bin \
+ --mandir=/usr/man \
+ --infodir=/usr/info \
+ --build=$ARCH-slackware-linux
+
+# Build and install:
+make -j4 || exit 1
+make install DESTDIR=$PKG || exit 1
+
+# The ncompress package already has this:
+rm -f $PKG/bin/uncompress
+
+# Strip binaries:
+( cd $PKG
+ find . | xargs file | grep "executable" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
+ find . | xargs file | grep "shared object" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
+)
+
+# Fix locations:
+#( cd $PKG
+ #mkdir bin
+ #mv usr/bin/gzip bin
+ #( cd bin ; rm -rf gunzip )
+ #( cd bin ; ln -sf gzip gunzip )
+ #( cd bin ; rm -rf zcat )
+ #( cd bin ; ln -sf gzip zcat )
+ #( cd usr/bin ; rm -rf gzip )
+ #( cd usr/bin ; ln -sf ../../bin/gzip gzip )
+ #( cd usr/bin ; rm -rf gunzip )
+ #( cd usr/bin ; ln -sf ../../bin/gunzip gunzip )
+ #( cd usr/bin ; rm -rf zcat )
+ #( cd usr/bin ; ln -sf ../../bin/zcat zcat )
+ #( cd usr/bin ; rm -rf zcmp )
+ #( cd usr/bin ; ln -sf zdiff zcmp )
+ #( cd usr/bin ; rm -rf zegrep )
+ #( cd usr/bin ; ln -sf zgrep zegrep )
+ #( cd usr/bin ; rm -rf zfgrep )
+ #( cd usr/bin ; ln -sf zgrep zfgrep )
+#)
+
+mkdir -p $PKG/usr/bin
+( cd $PKG/bin
+ for file in * ; do
+ ( cd $PKG/usr/bin ; ln -sf ../../bin/$file . )
+ done
+)
+
+# Compress and link manpages, if any:
+if [ -d $PKG/usr/man ]; then
+ ( cd $PKG/usr/man
+ for manpagedir in $(find . -type d -name "man*") ; do
+ ( cd $manpagedir
+ for eachpage in $( find . -type l -maxdepth 1) ; do
+ ln -s $( readlink $eachpage ).gz $eachpage.gz
+ rm $eachpage
+ done
+ gzip -9 *.?
+ )
+ done
+ )
+fi
+
+# Compress info files, if any:
+if [ -d $PKG/usr/info ]; then
+ ( cd $PKG/usr/info
+ rm -f dir
+ gzip -9 *
+ )
+fi
+
+# Add a documentation directory:
+mkdir -p $PKG/usr/doc/${PKGNAM}-$VERSION
+cp -a \
+ AUTHORS COPYING INSTALL NEWS README README-alpha THANKS TODO \
+ $PKG/usr/doc/${PKGNAM}-$VERSION
+
+mkdir -p $PKG/install
+cat $CWD/slack-desc > $PKG/install/slack-desc
+
+cd $TMP/package-${PKGNAM}
+makepkg -l y -c n $TMP/${PKGNAM}-$VERSION-$ARCH-$BUILD.tgz
+
diff --git a/source/a/gzip/slack-desc b/source/a/gzip/slack-desc
new file mode 100644
index 00000000..ef26d586
--- /dev/null
+++ b/source/a/gzip/slack-desc
@@ -0,0 +1,19 @@
+# HOW TO EDIT THIS FILE:
+# The "handy ruler" below makes it easier to edit a package description. Line
+# up the first '|' above the ':' following the base package name, and the '|'
+# on the right side marks the last column you can put a character in. You must
+# make exactly 11 lines for the formatting to be correct. It's also
+# customary to leave one space after the ':'.
+
+ |-----handy-ruler------------------------------------------------------|
+gzip: gzip (file compression utility)
+gzip:
+gzip: Gzip reduces the size of the named files using Lempel-Ziv coding
+gzip: (LZ77). Whenever possible, each file is replaced by one with the
+gzip: extension .gz, while keeping the same ownership modes, access and
+gzip: modification times.
+gzip:
+gzip:
+gzip:
+gzip:
+gzip:
diff --git a/source/a/hdparm/hdparm.SlackBuild b/source/a/hdparm/hdparm.SlackBuild
new file mode 100755
index 00000000..293b1cf8
--- /dev/null
+++ b/source/a/hdparm/hdparm.SlackBuild
@@ -0,0 +1,66 @@
+#!/bin/sh
+
+# Copyright 2008, 2009 Patrick J. Volkerding, Sebeka, MN, USA
+# All rights reserved.
+#
+# Redistribution and use of this script, with or without modification, is
+# permitted provided that the following conditions are met:
+#
+# 1. Redistributions of this script must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# 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.
+
+VERSION=${VERSION:-9.3}
+ARCH=${ARCH:-x86_64}
+BUILD=${BUILD:-1}
+NUMJOBS=${NUMJOBS:--j7}
+
+CWD=$(pwd)
+TMP=${TMP:-/tmp}
+PKG=$TMP/package-hdparm
+
+rm -rf $PKG
+mkdir -p $TMP $PKG
+
+cd $TMP
+rm -rf hdparm-$VERSION
+tar xvf $CWD/hdparm-$VERSION.tar.bz2 || exit 1
+cd hdparm-$VERSION || exit 1
+chown -R root:root .
+make $NUMJOBS || make || exit 1
+mkdir -p $PKG/sbin
+cat hdparm > $PKG/sbin/hdparm
+chmod 755 $PKG/sbin/hdparm
+mkdir -p $PKG/usr/sbin
+( cd $PKG/usr/sbin
+ ln -sf ../../sbin/hdparm .
+)
+mkdir -p $PKG/usr/man/man8
+cat hdparm.8 | gzip -9c > $PKG/usr/man/man8/hdparm.8.gz
+mkdir -p $PKG/usr/doc/hdparm-$VERSION
+cp -a \
+ LICENSE.TXT README.acoustic hdparm.lsm contrib \
+ $PKG/usr/doc/hdparm-$VERSION
+# I'm also not sure why I'm putting a binary in the docs, but...
+rm -f $PKG/usr/doc/hdparm-$VERSION/contrib/fix_standby.c
+
+find $PKG | xargs file | grep -e "executable" -e "shared object" \
+ | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
+
+mkdir -p $PKG/install
+cat $CWD/slack-desc > $PKG/install/slack-desc
+
+# Build the package:
+cd $PKG
+/sbin/makepkg -l y -c n $TMP/hdparm-$VERSION-$ARCH-$BUILD.txz
+
diff --git a/source/a/hdparm/slack-desc b/source/a/hdparm/slack-desc
new file mode 100644
index 00000000..dc846e07
--- /dev/null
+++ b/source/a/hdparm/slack-desc
@@ -0,0 +1,19 @@
+# HOW TO EDIT THIS FILE:
+# The "handy ruler" below makes it easier to edit a package description. Line
+# up the first '|' above the ':' following the base package name, and the '|' on
+# the right side marks the last column you can put a character in. You must make
+# exactly 11 lines for the formatting to be correct. It's also customary to
+# leave one space after the ':'.
+
+ |-----handy-ruler------------------------------------------------------|
+hdparm: hdparm (read/set hard drive parameters)
+hdparm:
+hdparm: hdparm provides a command line interface to various hard disk ioctls
+hdparm: supported by the Linux ATA/IDE device driver subsystem. This may be
+hdparm: required to enable higher-performing disk modes.
+hdparm:
+hdparm: hdparm was written by Mark Lord.
+hdparm:
+hdparm:
+hdparm:
+hdparm:
diff --git a/source/a/infozip/infozip.SlackBuild b/source/a/infozip/infozip.SlackBuild
new file mode 100755
index 00000000..900c4f95
--- /dev/null
+++ b/source/a/infozip/infozip.SlackBuild
@@ -0,0 +1,92 @@
+#!/bin/sh
+
+# Copyright 2008, 2009 Patrick J. Volkerding, Sebeka, Minnesota, USA
+# All rights reserved.
+#
+# Redistribution and use of this script, with or without modification, is
+# permitted provided that the following conditions are met:
+#
+# 1. Redistributions of this script must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# 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.
+
+VERSION=6.0
+ZIP=3.0
+ARCH=${ARCH:-x86_64}
+BUILD=${BUILD:-1}
+
+CWD=$(pwd)
+TMP=${TMP:-/tmp}
+PKG=$TMP/package-infozip
+
+rm -rf $PKG
+mkdir -p $TMP $PKG
+
+cd $TMP
+rm -rf zip$(echo $ZIP | tr -d .)
+tar xvf $CWD/zip$(echo $ZIP | tr -d .).tar.?z* || exit 1
+cd zip$(echo $ZIP | tr -d .)
+chown -R root:root .
+mkdir -p $PKG/usr/doc/zip-$ZIP
+cp -a BUGS CHANGES INSTALL LICENSE README* TODO US* WHATSNEW WHERE \
+ $PKG/usr/doc/zip-$ZIP
+chmod 644 $PKG/usr/doc/zip-$ZIP/*
+make -f unix/Makefile generic_gcc || exit 1
+mkdir -p $PKG/usr/bin
+cat zip > $PKG/usr/bin/zip
+cat zipnote > $PKG/usr/bin/zipnote
+cat zipsplit > $PKG/usr/bin/zipsplit
+cat zipcloak > $PKG/usr/bin/zipcloak
+mkdir -p $PKG/usr/man/man1
+for page in man/zip.1 ; do
+ cat $page | gzip -9c > $PKG/usr/man/man1/$(basename $page).gz
+done
+
+cd $TMP
+rm -rf unzip$(echo $VERSION | tr -d .)
+tar xvf $CWD/unzip$(echo $VERSION | tr -d .).tar.?z* || exit 1
+cd unzip$(echo $VERSION | tr -d .)
+chown -R root:root .
+mkdir -p $PKG/usr/doc/unzip-$VERSION
+cp -a BUGS COPYING* Contents History.* INSTALL LICENSE README ToDo WHERE \
+ $PKG/usr/doc/unzip-$VERSION
+chmod 644 $PKG/usr/doc/unzip-$VERSION/*
+make -f unix/Makefile generic || exit 1
+cat unzip > $PKG/usr/bin/unzip
+cat unzipsfx > $PKG/usr/bin/unzipsfx
+cat funzip > $PKG/usr/bin/funzip
+cat unix/zipgrep > $PKG/usr/bin/zipgrep
+( cd $PKG/usr/bin ; ln -sf unzip zipinfo )
+chmod 755 $PKG/usr/bin/*
+cd man
+for page in funzip.1 unzip.1 unzipsfx.1 zipgrep.1 zipinfo.1 ; do
+ cat $page | gzip -9c > $PKG/usr/man/man1/$page.gz
+done
+cd ..
+( cd $PKG
+ find . | xargs file | grep "executable" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
+ find . | xargs file | grep "shared object" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
+)
+mkdir -p $PKG/install
+cat $CWD/slack-desc > $PKG/install/slack-desc
+
+# Build the package:
+cd $PKG
+makepkg -l y -c n $TMP/infozip-$VERSION-$ARCH-$BUILD.txz
+
+# Clean up the extra stuff:
+if [ "$1" = "--cleanup" ]; then
+ rm -rf $TMP/zip-$ZIP
+ rm -rf $TMP/unzip-$VERSION
+ rm -rf $PKG
+fi
diff --git a/source/a/infozip/slack-desc b/source/a/infozip/slack-desc
new file mode 100644
index 00000000..92e64316
--- /dev/null
+++ b/source/a/infozip/slack-desc
@@ -0,0 +1,19 @@
+# HOW TO EDIT THIS FILE:
+# The "handy ruler" below makes it easier to edit a package description. Line
+# up the first '|' above the ':' following the base package name, and the '|'
+# on the right side marks the last column you can put a character in. You must
+# make exactly 11 lines for the formatting to be correct. It's also
+# customary to leave one space after the ':'.
+
+ |-----handy-ruler------------------------------------------------------|
+infozip: infozip (Info-ZIP's zip and unzip utilities)
+infozip:
+infozip: zip is a compression and file packaging utility for Unix, VMS, MSDOS,
+infozip: OS/2, Windows NT, Minix, Atari and Macintosh, Amiga and Acorn RISC OS.
+infozip: It is analogous to a combination of the UNIX commands tar(1) and
+infozip: compress(1) and is compatible with PKZIP (Phil Katz's ZIP). A
+infozip: companion program (unzip(1L)), unpacks zip archives.
+infozip:
+infozip:
+infozip:
+infozip:
diff --git a/source/a/inotify-tools/inotify-tools.SlackBuild b/source/a/inotify-tools/inotify-tools.SlackBuild
new file mode 100755
index 00000000..82e807fc
--- /dev/null
+++ b/source/a/inotify-tools/inotify-tools.SlackBuild
@@ -0,0 +1,109 @@
+#!/bin/sh
+
+# Copyright 2008, 2009 Patrick J. Volkerding, Sebeka, Minnesota, USA
+# All rights reserved.
+#
+# Redistribution and use of this script, with or without modification, is
+# permitted provided that the following conditions are met:
+#
+# 1. Redistributions of this script must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# 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.
+
+PKGNAM=inotify-tools
+VERSION=${VERSION:-3.13}
+ARCH=${ARCH:-x86_64}
+BUILD=${BUILD:-1}
+
+CWD=$(pwd)
+TMP=${TMP:-/tmp}
+PKG=$TMP/package-${PKGNAM}
+rm -rf $PKG
+mkdir -p $TMP $PKG
+
+if [ "$ARCH" = "i486" ]; then
+ SLKCFLAGS="-O2 -march=i486 -mtune=i686"
+ LIBDIRSUFFIX=""
+elif [ "$ARCH" = "s390" ]; then
+ SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
+elif [ "$ARCH" = "x86_64" ]; then
+ SLKCFLAGS="-O2 -fPIC"
+ LIBDIRSUFFIX="64"
+fi
+
+cd $TMP
+rm -rf ${PKGNAM}-${VERSION}
+tar xvf $CWD/${PKGNAM}-$VERSION.tar.bz2 || exit 1
+cd ${PKGNAM}-$VERSION
+
+# Make sure ownerships and permissions are sane:
+chown -R root:root .
+find . \
+ \( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \
+ -exec chmod 755 {} \; -o \
+ \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
+ -exec chmod 644 {} \;
+
+# Configure:
+CFLAGS="$SLKCFLAGS" \
+./configure \
+ --prefix=/usr \
+ --libdir=/usr/lib${LIBDIRSUFFIX} \
+ --sysconfdir=/etc \
+ --localstatedir=/var \
+ --mandir=/usr/man \
+ --docdir=/usr/doc/${PKGNAM}-${VERSION}/html \
+ --disable-static \
+ --build=$ARCH-slackware-linux
+
+# Build and install:
+make -j4 || exit 1
+make install DESTDIR=$PKG || exit 1
+
+# Strip binaries:
+( cd $PKG
+ find . | xargs file | grep "executable" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
+ find . | xargs file | grep "shared object" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
+)
+
+# Compress and link manpages, if any:
+if [ -d $PKG/usr/man ]; then
+ ( cd $PKG/usr/man
+ for manpagedir in $(find . -type d -name "man*") ; do
+ ( cd $manpagedir
+ for eachpage in $( find . -type l -maxdepth 1) ; do
+ ln -s $( readlink $eachpage ).gz $eachpage.gz
+ rm $eachpage
+ done
+ gzip -9 *.*
+ )
+ done
+ )
+fi
+
+# Add a documentation directory:
+mkdir -p $PKG/usr/doc/${PKGNAM}-${VERSION}
+cp -a \
+ AUTHORS COPYING ChangeLog INSTALL NEWS README \
+ $PKG/usr/doc/${PKGNAM}-${VERSION}
+# Get rid of html api documentation:
+rm -rf $PKG/usr/doc/${PKGNAM}-${VERSION}/html
+
+mkdir -p $PKG/install
+#zcat $CWD/doinst.sh.gz > $PKG/install/doinst.sh
+cat $CWD/slack-desc > $PKG/install/slack-desc
+
+cd $PKG
+makepkg -l y -c n $TMP/${PKGNAM}-$VERSION-$ARCH-$BUILD.txz
+
diff --git a/source/a/inotify-tools/slack-desc b/source/a/inotify-tools/slack-desc
new file mode 100644
index 00000000..f5cb8c6e
--- /dev/null
+++ b/source/a/inotify-tools/slack-desc
@@ -0,0 +1,19 @@
+# HOW TO EDIT THIS FILE:
+# The "handy ruler" below makes it easier to edit a package description. Line
+# up the first '|' above the ':' following the base package name, and the '|'
+# on the right side marks the last column you can put a character in. You must
+# make exactly 11 lines for the formatting to be correct. It's also
+# customary to leave one space after the ':'.
+
+ |-----handy-ruler------------------------------------------------------|
+inotify-tools: inotify-tools (command line utilities for inotify)
+inotify-tools:
+inotify-tools: inotify-tools is a set of command-line programs for Linux providing a
+inotify-tools: simple interface to inotify. These programs can be used to monitor
+inotify-tools: and act upon filesystem events.
+inotify-tools:
+inotify-tools: For more information see the inotifywait and inotifywatch man pages.
+inotify-tools:
+inotify-tools: inotify-tools home: http://inotify-tools.sourceforge.net/
+inotify-tools:
+inotify-tools:
diff --git a/source/a/jfsutils/jfsutils.SlackBuild b/source/a/jfsutils/jfsutils.SlackBuild
new file mode 100755
index 00000000..d97ebcb6
--- /dev/null
+++ b/source/a/jfsutils/jfsutils.SlackBuild
@@ -0,0 +1,96 @@
+#!/bin/sh
+
+# Copyright 2008, 2009 Patrick J. Volkerding, Sebeka, MN, USA
+# All rights reserved.
+#
+# Redistribution and use of this script, with or without modification, is
+# permitted provided that the following conditions are met:
+#
+# 1. Redistributions of this script must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# 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.
+
+
+VERSION=${VERSION:-1.1.14}
+ARCH=${ARCH:-x86_64}
+BUILD=${BUILD:-1}
+
+CWD=$(pwd)
+TMP=${TMP:-/tmp}
+PKG=$TMP/package-jfsutils
+
+if [ "$ARCH" = "i486" ]; then
+ SLKCFLAGS="-O2 -march=i486 -mtune=i686"
+elif [ "$ARCH" = "s390" ]; then
+ SLKCFLAGS="-O2"
+elif [ "$ARCH" = "x86_64" ]; then
+ SLKCFLAGS="-O2 -fPIC"
+fi
+
+rm -rf $PKG
+mkdir -p $TMP $PKG
+cd $TMP
+rm -rf jfsutils-$VERSION
+tar xvf $CWD/jfsutils-$VERSION.tar.?z* || exit 1
+cd jfsutils-$VERSION
+chown -R root:root .
+find . \
+ \( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \
+ -exec chmod 755 {} \; -o \
+ \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
+ -exec chmod 644 {} \;
+
+CFLAGS="$SLKCFLAGS" \
+./configure \
+ --prefix=/usr \
+ --disable-dependency-tracking \
+ --build=$ARCH-slackware-linux
+
+make
+
+mkdir -p $PKG/sbin
+cat fsck/jfs_fsck > $PKG/sbin/jfs_fsck
+( cd $PKG/sbin ; ln -sf jfs_fsck fsck.jfs )
+cat mkfs/jfs_mkfs > $PKG/sbin/jfs_mkfs
+( cd $PKG/sbin ; ln -sf jfs_mkfs mkfs.jfs )
+cat logdump/jfs_logdump > $PKG/sbin/jfs_logdump
+cat fscklog/jfs_fscklog > $PKG/sbin/jfs_fscklog
+cat xpeek/jfs_debugfs > $PKG/sbin/jfs_debugfs
+cat tune/jfs_tune > $PKG/sbin/jfs_tune
+chmod 755 $PKG/sbin/*
+
+mkdir -p $PKG/usr/man/man8
+for file in `find . -name "*.8"` ; do
+ cat $file | gzip -9c > $PKG/usr/man/man8/`basename $file`.gz
+done
+( cd $PKG/usr/man/man8
+ ln -sf jfs_fsck.8.gz fsck.jfs.8.gz
+ ln -sf jfs_mkfs.8.gz mkfs.jfs.8.gz
+)
+
+mkdir -p $PKG/usr/doc/jfsutils-$VERSION
+cp -a \
+ AUTHORS COPYING ChangeLog NEWS README \
+ $PKG/usr/doc/jfsutils-$VERSION
+
+( cd $PKG
+ find . | xargs file | grep "executable" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
+ find . | xargs file | grep "shared object" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
+)
+
+mkdir -p $PKG/install
+cat $CWD/slack-desc > $PKG/install/slack-desc
+
+cd $PKG
+/sbin/makepkg -l y -c n $TMP/jfsutils-$VERSION-$ARCH-$BUILD.txz
+
diff --git a/source/a/jfsutils/slack-desc b/source/a/jfsutils/slack-desc
new file mode 100644
index 00000000..d9c52dd2
--- /dev/null
+++ b/source/a/jfsutils/slack-desc
@@ -0,0 +1,19 @@
+# HOW TO EDIT THIS FILE:
+# The "handy ruler" below makes it easier to edit a package description. Line
+# up the first '|' above the ':' following the base package name, and the '|'
+# on the right side marks the last column you can put a character in. You must
+# make exactly 11 lines for the formatting to be correct. It's also
+# customary to leave one space after the ':'.
+
+ |-----handy-ruler------------------------------------------------------|
+jfsutils: jfsutils (IBM JFS utilities)
+jfsutils:
+jfsutils: Utilities for managing IBM's Journaled File System (JFS) under Linux:
+jfsutils: jfs_debugfs - shell-type JFS file system editor.
+jfsutils: jfs_fsck - check and repair a JFS formatted device.
+jfsutils: jfs_fscklog - extract a JFS fsck service log into a file.
+jfsutils: jfs_logdump - dump a JFS formatted device's journal log.
+jfsutils: jfs_mkfs - create a JFS formatted partition.
+jfsutils: jfs_tune - adjust tunable file system parameters on JFS.
+jfsutils:
+jfsutils:
diff --git a/source/a/kbd/kbd.SlackBuild b/source/a/kbd/kbd.SlackBuild
new file mode 100755
index 00000000..7ac0b142
--- /dev/null
+++ b/source/a/kbd/kbd.SlackBuild
@@ -0,0 +1,177 @@
+#!/bin/sh
+
+# Copyright 2005-2009 Patrick J. Volkerding, Sebeka, Minnesota, USA
+# All rights reserved.
+#
+# Redistribution and use of this script, with or without modification, is
+# permitted provided that the following conditions are met:
+#
+# 1. Redistributions of this script must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# 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.
+
+PKGNAM=kbd
+VERSION=1.15
+ARCH=${ARCH:-x86_64}
+BUILD=${BUILD:-3}
+
+NUMJOBS=${NUMJOBS:--j4}
+
+CWD=$(pwd)
+TMP=${TMP:-/tmp}
+PKG=$TMP/package-kbd
+
+rm -rf $PKG
+mkdir -p $TMP $PKG
+cd $TMP
+
+# Add some extra fonts:
+( cd $PKG ; explodepkg $CWD/sources/extraf.tgz )
+
+# Extract source:
+rm -rf $PKGNAM-$VERSION
+tar xvf $CWD/sources/$PKGNAM-$VERSION.tar.bz2
+cd $PKGNAM-$VERSION
+
+# Make sure ownerships and permissions are sane:
+chown -R root:root .
+find . -perm 666 -exec chmod 644 {} \;
+find . -perm 664 -exec chmod 644 {} \;
+find . -perm 600 -exec chmod 644 {} \;
+find . -perm 444 -exec chmod 644 {} \;
+find . -perm 400 -exec chmod 644 {} \;
+find . -perm 440 -exec chmod 644 {} \;
+find . -perm 777 -exec chmod 755 {} \;
+find . -perm 775 -exec chmod 755 {} \;
+find . -perm 511 -exec chmod 755 {} \;
+find . -perm 711 -exec chmod 755 {} \;
+find . -perm 555 -exec chmod 755 {} \;
+
+# Apply patches:
+# These are taken from Fedora's SRPM:
+zcat $CWD/sources/kbd-1.15-po.patch.gz | patch -p1 --verbose || exit 1
+zcat $CWD/sources/kbd-1.15-keycodes-man.patch | patch -p1 --verbose || exit 1
+zcat $CWD/sources/kbd-1.15-sparc.patch | patch -p1 --verbose || exit 1
+zcat $CWD/sources/kbd-1.15-unicode_start.patch | patch -p1 --verbose || exit 1
+zcat $CWD/sources/kbd-1.15-resizecon-x86_64.patch | patch -p1 --verbose || exit 1
+zcat $CWD/sources/kbd-1.15-quiet_doc.patch | patch -p1 --verbose || exit 1
+
+# This is from Fedora's spec file:
+# 7-bit maps are obsolete; so are non-euro maps
+( cd data/keymaps/i386
+ mv qwerty/fi.map qwerty/fi-old.map
+ cp -fav qwerty/fi-latin9.map qwerty/fi.map
+ cp -fav qwerty/pt-latin9.map qwerty/pt.map
+ cp -fav qwerty/sv-latin1.map qwerty/se-latin1.map
+ mv -fv azerty/fr.map azerty/fr-old.map
+ cp -fav azerty/fr-latin9.map azerty/fr.map
+ cp -fav azerty/fr-latin9.map azerty/fr-latin0.map # legacy alias
+
+ # Rename conflicting keymaps
+ mv -fv dvorak/no.map dvorak/no-dvorak.map
+ mv -fv fgGIod/trf.map fgGIod/trf-fgGIod.map
+ mv -fv olpc/es.map olpc/es-olpc.map
+ mv -fv olpc/pt.map olpc/pt-olpc.map
+ mv -fv qwerty/cz.map qwerty/cz-qwerty.map )
+
+# Apply a euro fix for the nl.map from alienBOB:
+zcat $CWD/sources/nl.euro.diff.gz | patch -p1 || exit 1
+
+# Configure:
+./configure \
+ --prefix=/usr \
+ --localedir=/usr/share/locale/ \
+ --mandir=/usr/man \
+ --docdir=/usr/doc/$PKGNAM-$VERSION \
+ --datadir=/usr/share/kbd \
+ --enable-nls || exit 1
+
+# Build:
+make $NUMJOBS || exit 1
+
+# Install into package:
+make install DESTDIR=$PKG || exit 1
+# This is where it's always been in Slackware, so let's move it back:
+( cd $PKG
+ mkdir -vpm755 bin
+ mv -fv usr/bin/loadkeys bin/
+ cd usr/bin ; ln -vsf ../../bin/loadkeys . )
+
+# ro_win.map.gz is useless
+rm -fv $PKG/usr/share/kbd/keymaps/i386/qwerty/ro_win.map.gz
+
+# The rhpl keyboard layout table is indexed by kbd layout names, so we need a
+# Korean keyboard
+ln -vfs us.map.gz $PKG/usr/share/kbd/keymaps/i386/qwerty/ko.map.gz
+
+# Install the setup script that will be run from the Slackware installer:
+mkdir -pm755 $PKG/var/log/setup
+install -vpm755 $CWD/setup.setconsolefont $PKG/var/log/setup/
+install -vpm755 $CWD/setconsolefont $PKG/usr/bin/
+
+# Copy docs:
+mkdir -p $PKG/usr/doc/$PKGNAM-$VERSION
+cp -a \
+ ChangeLog COPYING README doc/* \
+ $PKG/usr/doc/$PKGNAM-$VERSION
+rm -f $PKG/usr/doc/$PKGNAM-$VERSION/kbd.FAQ.sgml
+
+# Additional keymaps:
+# This is the keymap for Speakup (http://linux-speakup.org) users:
+cat $CWD/sources/speakupmap.map.gz > $PKG/usr/share/kbd/keymaps/i386/qwerty/speakupmap.map.gz
+# Another keymap for Speakup from Thomas Ward, for JFW users.
+tar xvf $CWD/sources/speakup-jfw.tar.gz
+( cd speakup-jfw
+ cat speakup-jfw.map | gzip -9c > $PKG/usr/share/kbd/keymaps/i386/qwerty/speakup-jfw.map.gz
+ cat readme > $PKG/usr/share/kbd/keymaps/i386/qwerty/speakup-jfw.readme )
+
+# Create the default run control script which will set the
+# console font to the default:
+mkdir -pm755 $PKG/etc/rc.d
+cat << EOF > $PKG/etc/rc.d/rc.font.new
+#!/bin/sh
+#
+# This selects your default screen font from among the ones in
+# /usr/share/kbd/consolefonts.
+#
+setfont -v
+EOF
+chmod 755 $PKG/etc/rc.d/rc.font.new
+
+# Create package post-install script:
+mkdir -p $PKG/install
+cat << EOF > $PKG/install/doinst.sh
+#if [ -r etc/rc.d/rc.font ]; then
+# rm -f etc/rc.d/rc.font.new
+#else
+# mv etc/rc.d/rc.font.new etc/rc.d/rc.font
+#fi
+EOF
+
+# Compress man pages:
+( cd $PKG/usr/man
+ find . -name "*.?" -type f | xargs gzip -9
+)
+
+# Install package description:
+install -vpm644 $CWD/slack-desc $PKG/install/
+
+# Strip binaries:
+( cd $PKG
+ find . | xargs file | grep "executable" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
+ find . | xargs file | grep "shared object" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
+)
+
+cd $PKG
+makepkg -l y -c n $TMP/$PKGNAM-$VERSION-$ARCH-$BUILD.txz
+#EOF
diff --git a/source/a/kbd/setconsolefont b/source/a/kbd/setconsolefont
new file mode 100644
index 00000000..d4cfb875
--- /dev/null
+++ b/source/a/kbd/setconsolefont
@@ -0,0 +1,384 @@
+#!/bin/sh
+
+# 06-May-2009
+# Updated by Stuart Winter <mozes@slackware.com>
+# Run 'setfont' in a chroot. This makes setfont work
+# correctly in the installer.
+
+if [ "$TMP" = "" ]; then
+ TMP=/var/log/setup/tmp
+fi
+
+load_font() {
+ if [ ! -z "$T_PX" ]; then
+ CHROOT="chroot $T_PX"
+ fi
+
+ $CHROOT setfont $*
+ if [ ! $? = 0 ]; then
+ if [ -r $T_PX/usr/share/kbd/consolefonts/$1 ]; then
+ $CHROOT setfont $T_PX/usr/share/kbd/consolefonts/$* 1> /dev/null 2> /dev/null
+ elif [ -r $T_PX/usr/lib/kbd/consolefonts/$1 ]; then
+ $CHROOT setfont $T_PX/usr/lib/kbd/consolefonts/$* 1> /dev/null 2> /dev/null
+ elif [ -r /var/adm/mount/live/usr/lib/kbd/consolefonts/$1 ]; then
+ $CHROOT setfont /var/adm/mount/live/usr/lib/kbd/consolefonts/$* 1> /dev/null 2> /dev/null
+ else # load default font
+ $CHROOT setfont
+ fi
+ fi
+}
+
+# Determine effective root path:
+if [ -r $TMP/SeTT_PX ]; then
+ T_PX="`cat $TMP/SeTT_PX`"
+elif [ ! "$1" = "" ]; then
+ T_PX=$1
+else
+ T_PX=/
+fi
+
+if [ ! "$COLOR" = "off" -o -r $TMP/SeTcolor -o -r /tmp/SeTcolor ]; then # use color menus
+ if [ ! "$1" = "" ]; then
+ dialog --title "CONSOLE FONT CONFIGURATION" --defaultno --yesno "Would you like to try \
+out some custom screen fonts?" 5 60
+ if [ $? = 1 ]; then
+ exit
+ fi
+ fi
+ REPLY=`mktemp -q $TMP/temp.XXXXXX`
+ FONT="161.cp.gz -16"
+ while [ 0 ]; do
+ dialog --default-item "$FONT" --title "SELECT A SCREEN FONT" --menu "Select one of the following \
+custom fonts. If you decide you like it, you can make it your new default \
+screen font. You'll be able to try as many of these as you like." 21 65 12 \
+"161.cp.gz -16" "" \
+"162.cp.gz -16" "" \
+"163.cp.gz -16" "" \
+"164.cp.gz -16" "" \
+"165.cp.gz -16" "" \
+"737.cp.gz -16" "" \
+"880.cp.gz -16" "" \
+"928.cp.gz -16" "" \
+"972.cp.gz -16" "" \
+"Agafari-12.psfu.gz" "" \
+"Agafari-14.psfu.gz" "" \
+"Agafari-16.psfu.gz" "" \
+"Cyr_a8x14.psfu.gz" "" \
+"Cyr_a8x16.psfu.gz" "" \
+"Cyr_a8x8.psfu.gz" "" \
+"Goha-12.psfu.gz" "" \
+"Goha-14.psfu.gz" "" \
+"Goha-16.psfu.gz" "" \
+"GohaClassic-12.psfu.gz" "" \
+"GohaClassic-14.psfu.gz" "" \
+"GohaClassic-16.psfu.gz" "" \
+"Lat2-Terminus16.psfu.gz" "" \
+"LatArCyrHeb-08.psfu.gz" "" \
+"LatArCyrHeb-14.psfu.gz" "" \
+"LatArCyrHeb-16+.psfu.gz" "" \
+"LatArCyrHeb-16.psfu.gz" "" \
+"LatArCyrHeb-19.psfu.gz" "" \
+"Mik_8x16.gz" "" \
+"UniCyrExt_8x16.psf.gz" "" \
+"UniCyr_8x14.psf.gz" "" \
+"UniCyr_8x16.psf.gz" "" \
+"UniCyr_8x8.psf.gz" "" \
+"alt-8x14.gz" "" \
+"alt-8x16.gz" "" \
+"alt-8x8.gz" "" \
+"altc-8x16.gz" "" \
+"aply16.psf.gz" "" \
+"arm8.fnt.gz" "" \
+"b.fnt.gz" "" \
+"c.fnt.gz" "" \
+"cp1250.psfu.gz" "" \
+"cp850-8x14.psfu.gz" "" \
+"cp850-8x16.psfu.gz" "" \
+"cp850-8x8.psfu.gz" "" \
+"cp857.08.gz" "" \
+"cp857.14.gz" "" \
+"cp857.16.gz" "" \
+"cp865-8x14.psfu.gz" "" \
+"cp865-8x16.psfu.gz" "" \
+"cp865-8x8.psfu.gz" "" \
+"cp866-8x14.psf.gz" "" \
+"cp866-8x16.psf.gz" "" \
+"cp866-8x8.psf.gz" "" \
+"cybercafe.fnt.gz" "" \
+"cyr-sun16.psfu.gz" "" \
+"default8x16.psfu.gz" "" \
+"default8x9.psfu.gz" "" \
+"drdos8x14.psfu.gz" "" \
+"drdos8x16.psfu.gz" "" \
+"drdos8x6.psfu.gz" "" \
+"drdos8x8.psfu.gz" "" \
+"gr737a-8x8.psfu.gz" "" \
+"gr737a-9x14.psfu.gz" "" \
+"gr737a-9x16.psfu.gz" "" \
+"gr737b-8x11.psfu.gz" "" \
+"gr737b-9x16-medieval.psfu.gz" "" \
+"gr737c-8x14.psfu.gz" "" \
+"gr737c-8x16.psfu.gz" "" \
+"gr737c-8x6.psfu.gz" "" \
+"gr737c-8x7.psfu.gz" "" \
+"gr737c-8x8.psfu.gz" "" \
+"gr737d-8x16.psfu.gz" "" \
+"gr928-8x16-thin.psfu.gz" "" \
+"gr928-9x14.psfu.gz" "" \
+"gr928-9x16.psfu.gz" "" \
+"gr928a-8x14.psfu.gz" "" \
+"gr928a-8x16.psfu.gz" "" \
+"gr928b-8x14.psfu.gz" "" \
+"gr928b-8x16.psfu.gz" "" \
+"greek-polytonic.psfu.gz" "" \
+"iso01-12x22.psfu.gz" "" \
+"iso01.08.gz" "" \
+"iso01.14.gz" "" \
+"iso01.16.gz" "" \
+"iso02-12x22.psfu.gz" "" \
+"iso02.08.gz" "" \
+"iso02.14.gz" "" \
+"iso02.16.gz" "" \
+"iso03.08.gz" "" \
+"iso03.14.gz" "" \
+"iso03.16.gz" "" \
+"iso04.08.gz" "" \
+"iso04.14.gz" "" \
+"iso04.16.gz" "" \
+"iso05.08.gz" "" \
+"iso05.14.gz" "" \
+"iso05.16.gz" "" \
+"iso06.08.gz" "" \
+"iso06.14.gz" "" \
+"iso06.16.gz" "" \
+"iso07.14.gz" "" \
+"iso07.16.gz" "" \
+"iso07u-16.psfu.gz" "" \
+"iso08.08.gz" "" \
+"iso08.14.gz" "" \
+"iso08.16.gz" "" \
+"iso09.08.gz" "" \
+"iso09.14.gz" "" \
+"iso09.16.gz" "" \
+"iso10.08.gz" "" \
+"iso10.14.gz" "" \
+"iso10.16.gz" "" \
+"koi8-14.psf.gz" "" \
+"koi8c-8x16.gz" "" \
+"koi8r-8x14.gz" "" \
+"koi8r-8x16.gz" "" \
+"koi8r-8x8.gz" "" \
+"koi8r.8x8.psfu.gz" "" \
+"koi8u_8x14.psfu.gz" "" \
+"koi8u_8x16.psfu.gz" "" \
+"koi8u_8x8.psfu.gz" "" \
+"lat0-08.psfu.gz" "" \
+"lat0-10.psfu.gz" "" \
+"lat0-12.psfu.gz" "" \
+"lat0-14.psfu.gz" "" \
+"lat0-16.psfu.gz" "" \
+"lat1-08.psfu.gz" "" \
+"lat1-10.psfu.gz" "" \
+"lat1-12.psfu.gz" "" \
+"lat1-14.psfu.gz" "" \
+"lat1-16.psfu.gz" "" \
+"lat2-08.psfu.gz" "" \
+"lat2-10.psfu.gz" "" \
+"lat2-12.psfu.gz" "" \
+"lat2-14.psfu.gz" "" \
+"lat2-16.psfu.gz" "" \
+"lat2a-16.psfu.gz" "" \
+"lat4-08.psfu.gz" "" \
+"lat4-10.psfu.gz" "" \
+"lat4-12.psfu.gz" "" \
+"lat4-14.psfu.gz" "" \
+"lat4-16+.psfu.gz" "" \
+"lat4-16.psfu.gz" "" \
+"lat4-19.psfu.gz" "" \
+"lat4a-08.psfu.gz" "" \
+"lat4a-10.psfu.gz" "" \
+"lat4a-12.psfu.gz" "" \
+"lat4a-14.psfu.gz" "" \
+"lat4a-16+.psfu.gz" "" \
+"lat4a-16.psfu.gz" "" \
+"lat4a-19.psfu.gz" "" \
+"lat5-12.psfu.gz" "" \
+"lat5-14.psfu.gz" "" \
+"lat5-16.psfu.gz" "" \
+"lat7-14.psfu.gz" "" \
+"lat7a-14.psfu.gz" "" \
+"lat7a-16.psf.gz" "" \
+"lat9-08.psf.gz" "" \
+"lat9-10.psf.gz" "" \
+"lat9-12.psf.gz" "" \
+"lat9-14.psf.gz" "" \
+"lat9-16.psf.gz" "" \
+"lat9u-08.psfu.gz" "" \
+"lat9u-10.psfu.gz" "" \
+"lat9u-12.psfu.gz" "" \
+"lat9u-14.psfu.gz" "" \
+"lat9u-16.psfu.gz" "" \
+"lat9v-08.psfu.gz" "" \
+"lat9v-10.psfu.gz" "" \
+"lat9v-12.psfu.gz" "" \
+"lat9v-14.psfu.gz" "" \
+"lat9v-16.psfu.gz" "" \
+"lat9w-08.psfu.gz" "" \
+"lat9w-10.psfu.gz" "" \
+"lat9w-12.psfu.gz" "" \
+"lat9w-14.psfu.gz" "" \
+"lat9w-16.psfu.gz" "" \
+"m.fnt.gz" "" \
+"ml.fnt.gz" "" \
+"mod_d.fnt.gz" "" \
+"mod_s.fnt.gz" "" \
+"mr.fnt.gz" "" \
+"mu.fnt.gz" "" \
+"r.fnt.gz" "" \
+"rl.fnt.gz" "" \
+"ro.fnt.gz" "" \
+"ruscii_8x16.psfu.gz" "" \
+"ruscii_8x8.psfu.gz" "" \
+"s.fnt.gz" "" \
+"sc.fnt.gz" "" \
+"scrawl_s.fnt.gz" "" \
+"scrawl_w.fnt.gz" "" \
+"sd.fnt.gz" "" \
+"sun12x22.psfu.gz" "" \
+"t.fnt.gz" "" \
+"t850b.fnt.gz" "" \
+"tcvn8x16.psf.gz" "" \
+"viscii10-8x16.psfu.gz" "" \
+2> $REPLY
+ if [ ! $? = 0 ]; then
+ load_font
+ exit
+ fi
+ FONT=`cat $REPLY`
+ rm -f $REPLY
+ load_font $FONT
+ dialog --title "SET AS DEFAULT FONT" --yesno "Well, what do you think? \
+If you'd like to make this your default font, select YES. You can change \
+the default font any time by typing 'setconsolefont' or by editing \
+/etc/rc.d/rc.font. If you don't \
+like this font, select NO, and you'll be returned to the font selection \
+menu. If you decide you want to stick with the default font, hit ESC or \
+CANCEL once you get to that menu." 11 60
+ if [ $? = 0 ]; then
+ cat << EOF > $T_PX/etc/rc.d/rc.font
+#!/bin/sh
+#
+# This selects your default screen font from among the ones in
+# /usr/share/kbd/consolefonts.
+#
+setfont -v $FONT
+EOF
+ chmod 755 $T_PX/etc/rc.d/rc.font
+ exit
+ else
+ load_font
+ fi
+ done
+else # no color!
+ echo
+ echo -n "Would you like to try out some custom screen fonts ([y]es, [n]o)? "
+ read YESNO;
+ if [ "$YESNO" = "n" ]; then
+ exit
+ fi
+ while [ 0 ]; do
+ cat << EOF
+
+SELECT A SCREEN FONT. Your choices are:
+161.cp.gz 162.cp.gz 163.cp.gz 164.cp.gz 165.cp.gz 737.cp.gz 880.cp.gz 928.cp.gz
+972.cp.gz Agafari-12.psfu.gz Agafari-14.psfu.gz Agafari-16.psfu.gz
+Cyr_a8x14.psfu.gz Cyr_a8x16.psfu.gz Cyr_a8x8.psfu.gz Goha-12.psfu.gz
+Goha-14.psfu.gz Goha-16.psfu.gz GohaClassic-12.psfu.gz GohaClassic-14.psfu.gz
+GohaClassic-16.psfu.gz Lat2-Terminus16.psfu.gz LatArCyrHeb-08.psfu.gz
+LatArCyrHeb-14.psfu.gz LatArCyrHeb-16+.psfu.gz LatArCyrHeb-16.psfu.gz
+LatArCyrHeb-19.psfu.gz Mik_8x16.gz UniCyrExt_8x16.psf.gz UniCyr_8x14.psf.gz
+UniCyr_8x16.psf.gz UniCyr_8x8.psf.gz alt-8x14.gz alt-8x16.gz alt-8x8.gz
+altc-8x16.gz aply16.psf.gz arm8.fnt.gz b.fnt.gz c.fnt.gz cp1250.psfu.gz
+cp850-8x14.psfu.gz cp850-8x16.psfu.gz cp850-8x8.psfu.gz cp857.08.gz cp857.14.gz
+cp857.16.gz cp865-8x14.psfu.gz cp865-8x16.psfu.gz cp865-8x8.psfu.gz
+cp866-8x14.psf.gz cp866-8x16.psf.gz cp866-8x8.psf.gz cybercafe.fnt.gz
+cyr-sun16.psfu.gz default8x16.psfu.gz default8x9.psfu.gz drdos8x14.psfu.gz
+drdos8x16.psfu.gz drdos8x6.psfu.gz drdos8x8.psfu.gz gr737a-8x8.psfu.gz
+gr737a-9x14.psfu.gz gr737a-9x16.psfu.gz gr737b-8x11.psfu.gz
+gr737b-9x16-medieval.psfu.gz gr737c-8x14.psfu.gz gr737c-8x16.psfu.gz
+gr737c-8x6.psfu.gz gr737c-8x7.psfu.gz gr737c-8x8.psfu.gz gr737d-8x16.psfu.gz
+gr928-8x16-thin.psfu.gz gr928-9x14.psfu.gz gr928-9x16.psfu.gz
+gr928a-8x14.psfu.gz gr928a-8x16.psfu.gz gr928b-8x14.psfu.gz gr928b-8x16.psfu.gz
+greek-polytonic.psfu.gz iso01-12x22.psfu.gz iso01.08.gz iso01.14.gz iso01.16.gz
+iso02-12x22.psfu.gz iso02.08.gz iso02.14.gz iso02.16.gz iso03.08.gz iso03.14.gz
+iso03.16.gz iso04.08.gz iso04.14.gz iso04.16.gz iso05.08.gz iso05.14.gz
+iso05.16.gz iso06.08.gz iso06.14.gz iso06.16.gz iso07.14.gz iso07.16.gz
+iso07u-16.psfu.gz iso08.08.gz iso08.14.gz iso08.16.gz iso09.08.gz iso09.14.gz
+iso09.16.gz iso10.08.gz iso10.14.gz iso10.16.gz koi8-14.psf.gz koi8c-8x16.gz
+koi8r-8x14.gz koi8r-8x16.gz koi8r-8x8.gz koi8r.8x8.psfu.gz koi8u_8x14.psfu.gz
+koi8u_8x16.psfu.gz koi8u_8x8.psfu.gz lat0-08.psfu.gz lat0-10.psfu.gz
+lat0-12.psfu.gz lat0-14.psfu.gz lat0-16.psfu.gz lat1-08.psfu.gz lat1-10.psfu.gz
+lat1-12.psfu.gz lat1-14.psfu.gz lat1-16.psfu.gz lat2-08.psfu.gz lat2-10.psfu.gz
+lat2-12.psfu.gz lat2-14.psfu.gz lat2-16.psfu.gz lat2a-16.psfu.gz lat4-08.psfu.gz
+lat4-10.psfu.gz lat4-12.psfu.gz lat4-14.psfu.gz lat4-16+.psfu.gz lat4-16.psfu.gz
+lat4-19.psfu.gz lat4a-08.psfu.gz lat4a-10.psfu.gz lat4a-12.psfu.gz
+lat4a-14.psfu.gz lat4a-16+.psfu.gz lat4a-16.psfu.gz lat4a-19.psfu.gz
+lat5-12.psfu.gz lat5-14.psfu.gz lat5-16.psfu.gz lat7-14.psfu.gz lat7a-14.psfu.gz
+lat7a-16.psf.gz lat9-08.psf.gz lat9-10.psf.gz lat9-12.psf.gz lat9-14.psf.gz
+lat9-16.psf.gz lat9u-08.psfu.gz lat9u-10.psfu.gz lat9u-12.psfu.gz
+lat9u-14.psfu.gz lat9u-16.psfu.gz lat9v-08.psfu.gz lat9v-10.psfu.gz
+lat9v-12.psfu.gz lat9v-14.psfu.gz lat9v-16.psfu.gz lat9w-08.psfu.gz
+lat9w-10.psfu.gz lat9w-12.psfu.gz lat9w-14.psfu.gz lat9w-16.psfu.gz m.fnt.gz
+ml.fnt.gz mod_d.fnt.gz mod_s.fnt.gz mr.fnt.gz mu.fnt.gz r.fnt.gz rl.fnt.gz
+ro.fnt.gz ruscii_8x16.psfu.gz ruscii_8x8.psfu.gz s.fnt.gz sc.fnt.gz
+scrawl_s.fnt.gz scrawl_w.fnt.gz sd.fnt.gz sun12x22.psfu.gz t.fnt.gz t850b.fnt.gz
+tcvn8x16.psf.gz viscii10-8x16.psfu.gz
+
+EOF
+ echo -n "Which font would you like (or ENTER to quit)? "
+ read FONT;
+ if [ "$FONT" = "" ]; then
+ load_font
+ echo
+ exit
+ fi
+ if [ ! -r $T_PX/usr/share/kbd/consolefonts/$FONT -a ! -r \
+ /var/adm/mount/usr/share/kbd/consolefonts/$FONT ]; then
+ cat << EOF
+
+Sorry, I couldn't find that font. Try again.
+
+EOF
+ fi
+ load_font $FONT
+ cat << EOF
+
+SET AS DEFAULT FONT
+
+Well, what do you think? If you'd like to make this your default font, select
+YES. You can change the default font any time by typing 'setconsolefont' or by
+editing /etc/rc.d/rc.font. If you don't like this font, select NO, and you'll
+be able to select a different one. If you decide you want to stick with the
+default font, hit RETURN once you return to the font selection menu.
+
+EOF
+ echo -n "Would you like to have this font loaded by default ([y]es, [n]o)? "
+ read DEF
+ if [ "$DEF" = "YES" -o "$DEF" = "y" ]; then
+ cat << EOF > $T_PX/etc/rc.d/rc.font
+#!/bin/sh
+#
+# This selects your default screen font from among the ones in
+# /usr/share/kbd/consolefonts.
+#
+setfont -v $FONT
+EOF
+ chmod 755 $T_PX/etc/rc.d/rc.font
+ echo
+ exit
+ else
+ load_font
+ fi
+ echo
+ done
+fi
diff --git a/source/a/kbd/setup.setconsolefont b/source/a/kbd/setup.setconsolefont
new file mode 100644
index 00000000..615cbaab
--- /dev/null
+++ b/source/a/kbd/setup.setconsolefont
@@ -0,0 +1,10 @@
+#!/bin/sh
+#BLURB="Select a font for the console"
+
+# These platforms are headless so we don't need to configure
+# this package.
+#
+# Silently exit if we find ourselves on one of these platforms
+egrep -q "SheevaPlug" /proc/cpuinfo > /dev/null 2>&1 && exit
+
+sh usr/bin/setconsolefont $*
diff --git a/source/a/kbd/slack-desc b/source/a/kbd/slack-desc
new file mode 100644
index 00000000..d912c112
--- /dev/null
+++ b/source/a/kbd/slack-desc
@@ -0,0 +1,19 @@
+# HOW TO EDIT THIS FILE:
+# The "handy ruler" below makes it easier to edit a package description. Line
+# up the first '|' above the ':' following the base package name, and the '|'
+# on the right side marks the last column you can put a character in. You must
+# make exactly 11 lines for the formatting to be correct. It's also
+# customary to leave one space after the ':'.
+
+ |-----handy-ruler------------------------------------------------------|
+kbd: kbd (keyboard maps and console fonts)
+kbd:
+kbd: Load and save keyboard mappings. Needed if you are not using the US
+kbd: keyboard map. This package also contains utilities to change your
+kbd: console fonts - if you install it you'll get a menu later on that lets
+kbd: you select from many different fonts. If you like one, you can make
+kbd: it your default font. A new default font can be chosen at any time by
+kbd: typing 'setconsolefont'.
+kbd:
+kbd:
+kbd:
diff --git a/source/a/kbd/sources/kbd-1.15-keycodes-man.patch b/source/a/kbd/sources/kbd-1.15-keycodes-man.patch
new file mode 100644
index 00000000..d18a8c8b
--- /dev/null
+++ b/source/a/kbd/sources/kbd-1.15-keycodes-man.patch
@@ -0,0 +1,52 @@
+diff -up kbd-1.15/man/man1/showkey.1_old kbd-1.15/man/man1/showkey.1
+--- kbd-1.15/man/man1/showkey.1_old 2008-03-13 17:46:23.000000000 +0100
++++ kbd-1.15/man/man1/showkey.1 2008-12-10 12:31:38.000000000 +0100
+@@ -80,6 +80,19 @@ corresponds to what the keyboard hardwar
+ to know the scan codes sent by various keys it is better to boot a
+ 2.4 kernel. Since 2.6.9 there also is the boot option atkbd.softraw=0
+ that tells the 2.6 kernel to return the actual scan codes.
++
++.SH NOTES
++The raw scan codes are available only on AT and PS/2 keyboards,
++and even then they are disabled unless the
++.B atkbd.softraw=0
++kernel parameter is used.
++When the raw scan codes are not available, the kernel uses a fixed built-in
++table to produce scan codes from keycodes. Thus,
++.BR setkeycodes (8)
++can affect the output of
++.B showkey
++in scan code dump mode.
++
+ .SH "SEE ALSO"
+ .BR loadkeys (1),
+ .BR dumpkeys (1),
+diff -up kbd-1.15/man/man8/setkeycodes.8_old kbd-1.15/man/man8/setkeycodes.8
+--- kbd-1.15/man/man8/setkeycodes.8_old 2008-12-10 12:31:56.000000000 +0100
++++ kbd-1.15/man/man8/setkeycodes.8 2008-12-10 12:37:36.000000000 +0100
+@@ -41,6 +41,10 @@ to showkey(1), the command
+ will assign the keycode 112 to it, and then loadkeys(1) can be used
+ to define the function of this key.
+
++USB keyboards have standardized keycodes and
++.B setkeycodes
++doesn't affect them at all.
++
+ .SH "2.6 KERNELS"
+ In 2.6 kernels key codes lie in the range 1-255, instead of 1-127.
+ (It might be best to confine oneself to the range 1-239.)
+@@ -54,6 +58,14 @@ None.
+ .SH BUGS
+ The keycodes of X have nothing to do with those of Linux.
+ Unusual keys can be made visible under Linux, but not under X.
++
++.B setkeycodes
++affects only the "first" input device
++that has modifiable scancode-to-keycode mapping.
++If there is more than one such device,
++.B setkeycodes
++cannot change the mapping of other devices than the "first" one.
++
+ .SH "SEE ALSO"
+ .I "dumpkeys (1), loadkeys (1), showkey (1), getkeycodes (8)"
+
diff --git a/source/a/kbd/sources/kbd-1.15-po.patch b/source/a/kbd/sources/kbd-1.15-po.patch
new file mode 100644
index 00000000..0221f60c
--- /dev/null
+++ b/source/a/kbd/sources/kbd-1.15-po.patch
@@ -0,0 +1,31 @@
+diff -up kbd-1.15/po/Makefile.in_old kbd-1.15/po/Makefile.in
+--- kbd-1.15/po/Makefile.in_old 2008-10-23 21:03:59.000000000 +0200
++++ kbd-1.15/po/Makefile.in 2008-12-09 15:35:58.000000000 +0100
+@@ -4,10 +4,10 @@ srcdir = @srcdir@
+
+ prefix = @prefix@
+ datarootdir = @datarootdir@
+-datadir = @datadir@
+-localedir = $(DESTDIR)$(datadir)/locale
+-gnulocaledir = $(DESTDIR)$(datadir)/locale
+-gettextsrcdir = $(DESTDIR)$(datadir)/gettext/po
++datadir = $(DESTDIR)@datadir@
++localedir = $(DESTDIR)@localedir@
++gnulocaledir = $(DESTDIR)@localedir@
++gettextsrcdir = $(datadir)/gettext/po
+
+ FOREIGN = @FOREIGN@
+ HAVE_XGETTEXT = @HAVE_XGETTEXT@
+@@ -36,10 +36,10 @@ INCLUDES = -I.. -I$(INTL)
+ COMPILE = $(CC) -c $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CFLAGS) $(XCFLAGS)
+
+ # Enter here all .po files
+-POFILES = cs.po da.po de.po el.po es.po fr.po gr.po nl.po pl.po \
++POFILES = cs.po da.po de.po el.po es.po fr.po nl.po pl.po \
+ ro.po ru.po sv.po tr.po
+ # the same but with .gmo
+-GMOFILES = cs.gmo da.gmo de.gmo el.gmo es.gmo fr.gmo gr.gmo nl.gmo \
++GMOFILES = cs.gmo da.gmo de.gmo el.gmo es.gmo fr.gmo nl.gmo \
+ pl.gmo ro.gmo ru.gmo sv.gmo tr.gmo
+
+ CATALOGS = $(GMOFILES)
diff --git a/source/a/kbd/sources/kbd-1.15-quiet_doc.patch b/source/a/kbd/sources/kbd-1.15-quiet_doc.patch
new file mode 100644
index 00000000..eca867b8
--- /dev/null
+++ b/source/a/kbd/sources/kbd-1.15-quiet_doc.patch
@@ -0,0 +1,34 @@
+diff -up kbd-1.15/man/man1/loadkeys.1.in_old kbd-1.15/man/man1/loadkeys.1.in
+--- kbd-1.15/man/man1/loadkeys.1.in_old 2008-10-23 21:03:59.000000000 +0200
++++ kbd-1.15/man/man1/loadkeys.1.in 2009-03-05 13:11:08.000000000 +0100
+@@ -19,6 +19,8 @@ loadkeys \- load keyboard translation ta
+ ] [
+ .I -m --mktable
+ ] [
++.I -q --quiet
++] [
+ .I -s --clearstrings
+ ] [
+ .I -v --verbose
+@@ -148,6 +150,10 @@ command (and does not modify the current
+ .B loadkeys
+ prints its version number and a short usage message to the programs
+ standard error output and exits.
++.TP
++.B \-q \-\-quiet
++.B loadkeys
++suppresses all normal output.
+ .SH WARNING
+ Note that anyone having read access to
+ .B /dev/console
+diff -up kbd-1.15/src/loadkeys.c_old kbd-1.15/src/loadkeys.c
+--- kbd-1.15/src/loadkeys.c_old 2008-10-23 21:03:59.000000000 +0200
++++ kbd-1.15/src/loadkeys.c 2009-03-05 13:09:00.000000000 +0100
+@@ -1966,6 +1966,7 @@ usage(void) {
+ " -d --default load \"%s\"\n"
+ " -h --help display this help text\n"
+ " -m --mktable output a \"defkeymap.c\" to stdout\n"
++" -q --quiet suppress all normal output\n"
+ " -s --clearstrings clear kernel string table\n"
+ " -u --unicode implicit conversion to Unicode\n"
+ " -v --verbose report the changes\n"), PACKAGE_VERSION, DEFMAP);
diff --git a/source/a/kbd/sources/kbd-1.15-resizecon-x86_64.patch b/source/a/kbd/sources/kbd-1.15-resizecon-x86_64.patch
new file mode 100644
index 00000000..5e8350a8
--- /dev/null
+++ b/source/a/kbd/sources/kbd-1.15-resizecon-x86_64.patch
@@ -0,0 +1,15 @@
+diff -up kbd-1.15/configure_old kbd-1.15/configure
+--- kbd-1.15/configure_old 2009-01-08 15:11:04.000000000 +0100
++++ kbd-1.15/configure 2009-01-08 15:11:45.000000000 +0100
+@@ -7637,8 +7637,9 @@ fi
+
+
+ case $host_cpu in
+- i?86*) RESIZECONS_PROGS=yes ;;
+- *) RESIZECONS_PROGS=no ;;
++ i?86*) RESIZECONS_PROGS=yes ;;
++ x86_64*) RESIZECONS_PROGS=yes ;;
++ *) RESIZECONS_PROGS=no ;;
+ esac
+ if test "$RESIZECONS_PROGS" = "yes"; then
+ RESIZECONS_PROGS_TRUE=
diff --git a/source/a/kbd/sources/kbd-1.15-sparc.patch b/source/a/kbd/sources/kbd-1.15-sparc.patch
new file mode 100644
index 00000000..a858a253
--- /dev/null
+++ b/source/a/kbd/sources/kbd-1.15-sparc.patch
@@ -0,0 +1,97 @@
+diff -up kbd-1.15/man/man8/kbdrate.8_old kbd-1.15/man/man8/kbdrate.8
+--- kbd-1.15/man/man8/kbdrate.8_old 2008-12-10 14:20:33.000000000 +0100
++++ kbd-1.15/man/man8/kbdrate.8 2008-12-10 14:41:10.000000000 +0100
+@@ -22,7 +22,7 @@ Using
+ without any options will reset the repeat rate to 10.9 characters per second (cps)
+ and the delay to 250 milliseconds (ms) for Intel- and M68K-based systems.
+ These are the IBM defaults. On SPARC-based systems it will reset the repeat rate
+-to 5 cps and the delay to 200 ms.
++to 20 cps and the delay to 200 ms.
+
+ .SH OPTIONS
+ .TP
+@@ -69,3 +69,5 @@ When these ioctls fail an ioport interfa
+ .I /etc/rc.local
+ .br
+ .I /dev/port
++.br
++.I /dev/kbd
+diff -up kbd-1.15/src/kbdrate.c_old kbd-1.15/src/kbdrate.c
+--- kbd-1.15/src/kbdrate.c_old 2008-12-10 14:00:25.000000000 +0100
++++ kbd-1.15/src/kbdrate.c 2008-12-10 14:20:11.000000000 +0100
+@@ -77,7 +77,6 @@ beats rebuilding the kernel!
+
+ #ifdef __sparc__
+ #include <asm/param.h>
+-#include <asm/kbio.h>
+ #endif
+
+ #ifndef KDKBDREP
+@@ -109,11 +108,15 @@ static int valid_delays[] = { 250, 500,
+
+ static int
+ KDKBDREP_ioctl_ok(double rate, int delay, int silent) {
++#if defined(KDKBDREP) && !defined(__sparc__)
+ /*
+ * This ioctl is defined in <linux/kd.h> but is not
+ * implemented anywhere - must be in some m68k patches.
++ * We cannot blindly try unimplemented ioctls on sparc64 -
++ * the 32<->64bit transition layer does not like it.
+ * Since 2.4.9 also on i386.
+- */
++ */
++
+ struct my_kbd_repeat kbdrep_s;
+
+ /* don't change, just test */
+@@ -177,6 +180,9 @@ KDKBDREP_ioctl_ok(double rate, int delay
+ rate, kbdrep_s.delay );
+
+ return 1; /* success! */
++#else /* no KDKBDREP or __sparc__ */
++ return 0;
++#endif /* KDKBDREP */
+ }
+
+ static int
+@@ -221,7 +227,7 @@ sigalrmhandler( int sig ) {
+ int
+ main( int argc, char **argv ) {
+ #ifdef __sparc__
+- double rate = 5.0; /* Default rate */
++ double rate = 20.0; /* Default rate */
+ int delay = 200; /* Default delay */
+ #else
+ double rate = 10.9; /* Default rate */
+@@ -272,7 +278,9 @@ main( int argc, char **argv ) {
+
+
+ /* The ioport way */
++ /* The ioport way - will crash on sparc */
+
++#ifndef __sparc__
+ for (i = 0; i < RATE_COUNT; i++)
+ if (rate * 10 >= valid_rates[i]) {
+ value &= 0x60;
+@@ -335,5 +343,7 @@ main( int argc, char **argv ) {
+ valid_rates[value & 0x1f] / 10.0,
+ valid_delays[ (value & 0x60) >> 5 ] );
+
++#endif
++
+ return 0;
+ }
+diff -up kbd-1.15/src/setleds.c_old kbd-1.15/src/setleds.c
+--- kbd-1.15/src/setleds.c_old 2008-12-10 14:00:02.000000000 +0100
++++ kbd-1.15/src/setleds.c 2008-12-10 14:00:16.000000000 +0100
+@@ -14,10 +14,6 @@
+ #include "nls.h"
+ #include "version.h"
+
+-#ifdef __sparc__
+-#include <asm/kbio.h>
+-#endif
+-
+ static void
+ usage(void)
+ {
diff --git a/source/a/kbd/sources/kbd-1.15-unicode_start.patch b/source/a/kbd/sources/kbd-1.15-unicode_start.patch
new file mode 100644
index 00000000..d3dab3fe
--- /dev/null
+++ b/source/a/kbd/sources/kbd-1.15-unicode_start.patch
@@ -0,0 +1,21 @@
+diff -up kbd-1.15/src/unicode_start_old kbd-1.15/src/unicode_start
+--- kbd-1.15/src/unicode_start_old 2009-01-08 13:34:10.000000000 +0100
++++ kbd-1.15/src/unicode_start 2009-01-08 14:02:12.000000000 +0100
+@@ -72,6 +72,9 @@ stty iutf8
+ # have a Unicode map attached, or explicitly specified, e.g.,
+ # by giving `def.uni' as a second argument.
+
++DEFAULT_UNICODE_FONT=LatArCyrHeb-16
++# Also drdos8x16 is a good candidate.
++
+ case "$#" in
+ 2)
+ setfont "$1" -u "$2"
+@@ -80,6 +83,7 @@ case "$#" in
+ setfont "$1"
+ ;;
+ 0)
++ setfont $DEFAULT_UNICODE_FONT
+ ;;
+ *)
+ echo "usage: unicode_start [font [unicode map]]"
diff --git a/source/a/kbd/sources/kbd-1.15.tar.bz2.sign b/source/a/kbd/sources/kbd-1.15.tar.bz2.sign
new file mode 100644
index 00000000..39388b38
--- /dev/null
+++ b/source/a/kbd/sources/kbd-1.15.tar.bz2.sign
@@ -0,0 +1,8 @@
+-----BEGIN PGP SIGNATURE-----
+Version: GnuPG v1.4.9 (GNU/Linux)
+Comment: See http://www.kernel.org/signature.html for info
+
+iD8DBQBJj684yGugalF9Dw4RAqQuAJ9fBsk3RWp6BT4UWHjceFn5YuEBygCff3dW
+qo/ACrIhyBx/eiZEpao8N4o=
+=0zxS
+-----END PGP SIGNATURE-----
diff --git a/source/a/kbd/sources/nl.euro.diff b/source/a/kbd/sources/nl.euro.diff
new file mode 100644
index 00000000..655a7e22
--- /dev/null
+++ b/source/a/kbd/sources/nl.euro.diff
@@ -0,0 +1,10 @@
+--- ./data/keymaps/i386/qwerty/nl.map.orig 2004-01-03 09:01:22.000000000 -0800
++++ ./data/keymaps/i386/qwerty/nl.map 2004-05-29 21:16:31.000000000 -0700
+@@ -12,6 +12,7 @@
+ keymaps 0-6,8-9,12
+ alt_is_meta
+ include "qwerty-layout"
++ altgr keycode 18 = euro
+ altgr keycode 19 = paragraph
+ altgr keycode 31 = ssharp
+ altgr keycode 44 = guillemotleft
diff --git a/source/a/kbd/sources/speakupmap.map b/source/a/kbd/sources/speakupmap.map
new file mode 100644
index 00000000..9c73e35d
--- /dev/null
+++ b/source/a/kbd/sources/speakupmap.map
@@ -0,0 +1,308 @@
+# us.map
+# with some additions from quinlan@spectrum.cs.bucknell.edu (Daniel Quinlan)
+# 14 Mar 1994
+keymaps 0-2,4-6,8,9,12,13
+keycode 1 = Escape Escape
+ alt keycode 1 = Meta_Escape
+keycode 2 = one exclam
+ alt keycode 2 = Meta_one
+ alt shift keycode 2 = Meta_exclam
+keycode 3 = two at at
+ control keycode 3 = nul
+ control shift keycode 3 = nul
+ alt keycode 3 = Meta_two
+ alt shift keycode 3 = Meta_at
+keycode 4 = three numbersign
+ control keycode 4 = Escape
+ alt keycode 4 = Meta_three
+ alt shift keycode 4 = Meta_numbersign
+keycode 5 = four dollar dollar
+ control keycode 5 = Control_backslash
+ alt keycode 5 = Meta_four
+ alt shift keycode 5 = Meta_dollar
+keycode 6 = five percent
+ control keycode 6 = Control_bracketright
+ alt keycode 6 = Meta_five
+ alt shift keycode 6 = Meta_percent
+keycode 7 = six asciicircum
+ control keycode 7 = Control_asciicircum
+ alt keycode 7 = Meta_six
+ alt shift keycode 7 = Meta_asciicircum
+keycode 8 = seven ampersand braceleft
+ control keycode 8 = Control_underscore
+ alt keycode 8 = Meta_seven
+keycode 9 = eight asterisk bracketleft
+ control keycode 9 = Delete
+ alt keycode 9 = Meta_eight
+keycode 10 = nine parenleft bracketright
+ alt keycode 10 = Meta_nine
+keycode 11 = zero parenright braceright
+ alt keycode 11 = Meta_zero
+keycode 12 = minus underscore backslash
+ control keycode 12 = Control_underscore
+ control shift keycode 12 = Control_underscore
+ alt keycode 12 = Meta_minus
+keycode 13 = equal plus
+ alt keycode 13 = Meta_equal
+keycode 14 = Delete Delete
+ alt keycode 14 = Meta_Delete
+keycode 15 = Tab Tab
+ alt keycode 15 = Meta_Tab
+keycode 16 = q
+keycode 17 = w
+keycode 18 = e
+keycode 19 = r
+keycode 20 = t
+keycode 21 = y
+keycode 22 = u
+keycode 23 = i
+keycode 24 = o
+keycode 25 = p
+keycode 26 = bracketleft braceleft
+ control keycode 26 = Escape
+ alt keycode 26 = Meta_bracketleft
+ alt shift keycode 26 = Meta_braceleft
+keycode 27 = bracketright braceright asciitilde
+ control keycode 27 = Control_bracketright
+ alt keycode 27 = Meta_bracketright
+ alt shift keycode 27 = Meta_braceright
+keycode 28 = Return
+ alt keycode 28 = 0x080d
+keycode 29 = Control
+keycode 30 = a
+keycode 31 = s
+keycode 32 = d
+keycode 33 = f
+keycode 34 = g
+keycode 35 = h
+keycode 36 = j
+keycode 37 = k
+keycode 38 = l
+keycode 39 = semicolon colon
+ alt keycode 39 = Meta_semicolon
+keycode 40 = apostrophe quotedbl
+ control keycode 40 = Control_g
+ alt keycode 40 = Meta_apostrophe
+keycode 41 = grave asciitilde
+ control keycode 41 = nul
+ alt keycode 41 = Meta_grave
+keycode 42 = Shift
+keycode 43 = backslash bar
+ control keycode 43 = Control_backslash
+ alt keycode 43 = Meta_backslash
+ alt shift keycode 43 = Meta_bar
+keycode 44 = z
+keycode 45 = x
+keycode 46 = c
+keycode 47 = v
+keycode 48 = b
+keycode 49 = n
+keycode 50 = m
+keycode 51 = comma less
+ alt keycode 51 = Meta_comma
+ alt shift keycode 51 = Meta_less
+keycode 52 = period greater
+ alt keycode 52 = Meta_period
+ alt shift keycode 52 = Meta_greater
+keycode 53 = slash question
+ control keycode 53 = Delete
+ alt keycode 53 = Meta_slash
+keycode 54 = Shift
+keycode 55 = 0x0d26
+#keycode 55 = KP_Multiply
+ altgr keycode 55 = 0x0406
+keycode 56 = Alt
+keycode 57 = space space
+ control keycode 57 = nul
+ alt keycode 57 = Meta_space
+keycode 58 = Caps_Lock
+keycode 59 = F1 F11 Console_13
+ control keycode 59 = F1
+ alt keycode 59 = Console_1
+ control alt keycode 59 = Console_1
+keycode 60 = F2 F12 Console_14
+ control keycode 60 = F2
+ alt keycode 60 = Console_2
+ control alt keycode 60 = Console_2
+keycode 61 = F3 F13 Console_15
+ control keycode 61 = F3
+ alt keycode 61 = Console_3
+ control alt keycode 61 = Console_3
+keycode 62 = F4 F14 Console_16
+ control keycode 62 = F4
+ alt keycode 62 = Console_4
+ control alt keycode 62 = Console_4
+keycode 63 = F5 F15 Console_17
+ control keycode 63 = F5
+ alt keycode 63 = Console_5
+ control alt keycode 63 = Console_5
+keycode 64 = F6 F16 Console_18
+ control keycode 64 = F6
+ alt keycode 64 = Console_6
+ control alt keycode 64 = Console_6
+keycode 65 = F7 F17 Console_19
+ control keycode 65 = F7
+ alt keycode 65 = Console_7
+ control alt keycode 65 = Console_7
+keycode 66 = F8 F18 Console_20
+ control keycode 66 = F8
+ alt keycode 66 = Console_8
+ control alt keycode 66 = Console_8
+keycode 67 = F9 F19 Console_21
+ control keycode 67 = F9
+ alt keycode 67 = Console_9
+ control alt keycode 67 = Console_9
+keycode 68 = F10 F20 Console_22
+ control keycode 68 = F10
+ alt keycode 68 = Console_10
+ control alt keycode 68 = Console_10
+keycode 69 = Num_Lock
+keycode 70 = Scroll_Lock Show_Memory Show_Registers
+ control keycode 70 = Show_State
+ alt keycode 70 = Scroll_Lock
+keycode 71 = 0x0d0b
+ altgr keycode 71 = 0x0d0f
+#keycode 71 = KP_7
+ alt keycode 71 = Ascii_7
+keycode 72 = 0x0d0a
+ altgr keycode 72 = 0x0d20
+#keycode 72 = KP_8
+ alt keycode 72 = Ascii_8
+keycode 73 = 0x0d0c
+ altgr keycode 73 = 0x0d0d
+#keycode 73 = KP_9
+ alt keycode 73 = Ascii_9
+keycode 74 = 0x0d1e
+ altgr keycode 74 = 0x0d24
+keycode 75 = 0x0d08
+ altgr keycode 75 = 0x0d22
+#keycode 75 = KP_4
+ alt keycode 75 = Ascii_4
+keycode 76 = 0x0d07
+#keycode 76 = KP_5
+ altgr keycode 76 = 0x0d12
+ alt keycode 76 = Ascii_5
+keycode 77 = 0x0d09
+ altgr keycode 77 = 0x0d23
+#keycode 77 = KP_6
+ alt keycode 77 = Ascii_6
+#keycode 78 = KP_Add
+keycode 78 = 0x0d14
+ altgr keycode 78 = 0x0d21
+keycode 79 = 0x0d05
+#keycode 79 = KP_1
+ altgr keycode 79 = 0x0d10
+ alt keycode 79 = Ascii_1
+keycode 80 = 0x0d04
+#keycode 80 = KP_2
+ altgr keycode 80 = 0x0d11
+ alt keycode 80 = Ascii_2
+keycode 81 = 0x0d06
+ altgr keycode 81 = 0x0d0e
+#keycode 81 = KP_3
+ alt keycode 81 = Ascii_3
+#keycode 82 = 0x0d14
+keycode 82 = AltGr
+#keycode 82 = KP_0
+ alt keycode 82 = Ascii_0
+#keycode 83 = KP_Period
+keycode 83 = 0x0d1b
+ altgr keycode 83 = 0x0d1d
+ altgr control keycode 83 = Boot
+ control alt keycode 83 = Boot
+keycode 84 = Last_Console
+keycode 85 =
+keycode 86 = less greater bar
+ alt keycode 86 = Meta_less
+keycode 87 = F11 F11 Console_23
+ control keycode 87 = F11
+ alt keycode 87 = Console_11
+ control alt keycode 87 = Console_11
+keycode 88 = F12 F12 Console_24
+ control keycode 88 = F12
+ alt keycode 88 = Console_12
+ control alt keycode 88 = Console_12
+keycode 89 =
+keycode 90 =
+keycode 91 =
+keycode 92 =
+keycode 93 =
+keycode 94 =
+keycode 95 =
+keycode 96 = 0x0d03
+ altgr keycode 96 = 0x0d1c
+#keycode 96 = KP_Enter
+keycode 97 = Control
+keycode 98 = 0x0d27
+#keycode 98 = KP_Divide
+ altgr keycode 98 = 0x0d28
+#keycode 99 = Control_backslash
+keycode 99 = 0x0d25
+ control keycode 99 = Control_backslash
+ alt keycode 99 = Control_backslash
+keycode 100 = Alt
+keycode 101 = Break
+keycode 102 = Find
+keycode 103 = Up
+keycode 104 = Prior
+ shift keycode 104 = Scroll_Backward
+keycode 105 = Left
+ alt keycode 105 = Decr_Console
+keycode 106 = Right
+ alt keycode 106 = Incr_Console
+keycode 107 = Select
+keycode 108 = Down
+keycode 109 = Next
+ shift keycode 109 = Scroll_Forward
+keycode 110 = Insert
+keycode 111 = Remove
+ altgr control keycode 111 = Boot
+ control alt keycode 111 = Boot
+keycode 112 =
+keycode 113 =
+keycode 114 =
+keycode 115 =
+keycode 116 =
+keycode 117 =
+keycode 118 =
+keycode 119 =
+keycode 120 =
+keycode 121 =
+keycode 122 =
+keycode 123 =
+keycode 124 =
+keycode 125 =
+keycode 126 =
+keycode 127 =
+string F1 = "\033[[A"
+string F2 = "\033[[B"
+string F3 = "\033[[C"
+string F4 = "\033[[D"
+string F5 = "\033[[E"
+string F6 = "\033[17~"
+string F7 = "\033[18~"
+string F8 = "\033[19~"
+string F9 = "\033[20~"
+string F10 = "\033[21~"
+string F11 = "\033[23~"
+string F12 = "\033[24~"
+string F13 = "\033[25~"
+string F14 = "\033[26~"
+string F15 = "\033[28~"
+string F16 = "\033[29~"
+string F17 = "\033[31~"
+string F18 = "\033[32~"
+string F19 = "\033[33~"
+string F20 = "\033[34~"
+string Find = "\033[1~"
+string Insert = "\033[2~"
+string Remove = "\033[3~"
+string Select = "\033[4~"
+string Prior = "\033[5~"
+string Next = "\033[6~"
+string F21 = ""
+string F22 = ""
+string F23 = ""
+string F24 = ""
+string F25 = ""
+string F26 = ""
diff --git a/source/a/less/less.SlackBuild b/source/a/less/less.SlackBuild
new file mode 100755
index 00000000..64335957
--- /dev/null
+++ b/source/a/less/less.SlackBuild
@@ -0,0 +1,102 @@
+#!/bin/sh
+
+# Copyright 2005-2009 Patrick J. Volkerding, Sebeka, MN, USA
+# All rights reserved.
+#
+# Redistribution and use of this script, with or without modification, is
+# permitted provided that the following conditions are met:
+#
+# 1. Redistributions of this script must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# 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.
+
+
+CWD=$(pwd)
+TMP=${TMP:-/tmp}
+PKG=$TMP/package-less
+
+VERSION=${VERSION:-418}
+ARCH=${ARCH:-x86_64}
+BUILD=${BUILD:-3}
+
+NUMJOBS=${NUMJOBS:-" -j7 "}
+
+if [ "$ARCH" = "i386" ]; then
+ SLKCFLAGS="-O2 -march=i386 -mcpu=i686"
+elif [ "$ARCH" = "i486" ]; then
+ SLKCFLAGS="-O2 -march=i486 -mtune=i686"
+elif [ "$ARCH" = "s390" ]; then
+ SLKCFLAGS="-O2"
+elif [ "$ARCH" = "x86_64" ]; then
+ SLKCFLAGS="-O2 -fPIC"
+elif [ "$ARCH" = "arm" ]; then
+ SLKCFLAGS="-O2 -march=armv4 -mtune=xscale"
+ LIBDIRSUFFIX=""
+elif [ "$ARCH" = "armel" ]; then
+ SLKCFLAGS="-O2 -march=armv4t"
+ LIBDIRSUFFIX=""
+fi
+
+rm -rf $PKG
+mkdir -p $TMP $PKG
+
+cd $TMP
+rm -rf less-$VERSION
+tar xvf $CWD/less-$VERSION.tar.bz2 || exit 1
+cd less-$VERSION
+zcat $CWD/less.sysconfdir.diff.gz | patch -p1 --verbose || exit 1
+
+chown -R root:root .
+find . \
+ \( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \
+ -exec chmod 755 {} \; -o \
+ \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
+ -exec chmod 644 {} \;
+
+CFLAGS="$SLKCFLAGS" \
+./configure \
+ --prefix=/usr \
+ --sysconfdir=/etc \
+ --mandir=/usr/man
+
+make $NUMJOBS || make || exit 1
+
+mkdir -p $PKG/usr/bin
+cat less > $PKG/usr/bin/less
+cat lesskey > $PKG/usr/bin/lesskey
+cat lessecho > $PKG/usr/bin/lessecho
+zcat $CWD/lesspipe.sh.gz > $PKG/usr/bin/lesspipe.sh
+chmod 755 $PKG/usr/bin/*
+
+( cd $PKG
+ find . | xargs file | grep "executable" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
+ find . | xargs file | grep "shared object" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
+)
+
+mkdir -p $PKG/usr/doc/less-$VERSION
+cp -a \
+ COPYING* LICENSE README NEWS \
+ $PKG/usr/doc/less-$VERSION
+
+mkdir -p $PKG/usr/man/man1
+for page in less.nro lesskey.nro ; do
+ cat $page | gzip -9c > $PKG/usr/man/man1/`basename $page .nro`.1.gz
+done
+
+mkdir -p $PKG/install
+cat $CWD/slack-desc > $PKG/install/slack-desc
+
+# Build the package:
+cd $PKG
+/sbin/makepkg -l y -c n $TMP/less-$VERSION-$ARCH-$BUILD.txz
+
diff --git a/source/a/less/less.sysconfdir.diff b/source/a/less/less.sysconfdir.diff
new file mode 100644
index 00000000..25c5bb58
--- /dev/null
+++ b/source/a/less/less.sysconfdir.diff
@@ -0,0 +1,15 @@
+--- ./less.nro.orig Mon May 27 17:14:24 2002
++++ ./less.nro Mon May 27 17:14:46 2002
+@@ -947,10 +947,10 @@
+ Otherwise,
+ .I less
+ looks in a standard place for the system-wide lesskey file:
+-On Unix systems, the system-wide lesskey file is /usr/local/etc/sysless.
++On Unix systems, the system-wide lesskey file is /etc/sysless.
+ (However, if
+ .I less
+-was built with a different sysconf directory than /usr/local/etc,
++was built with a different sysconf directory than /etc,
+ that directory is where the sysless file is found.)
+ On MS-DOS and Windows systems, the system-wide lesskey file is c:\\_sysless.
+ On OS/2 systems, the system-wide lesskey file is c:\\sysless.ini.
diff --git a/source/a/less/lesspipe.sh b/source/a/less/lesspipe.sh
new file mode 100644
index 00000000..2d660522
--- /dev/null
+++ b/source/a/less/lesspipe.sh
@@ -0,0 +1,67 @@
+#!/bin/sh
+#
+# Copyright 1997, 1998, 1999, 2000 Patrick Volkerding, Moorhead, MN, USA
+# Copyright 2001, 2002 Slackware Linux, Inc, Concord, CA, USA
+# Copyright 2006, 2009 Patrick Volkerding, Sebeka, MN, USA
+# All rights reserved.
+#
+# Redistribution and use of this script, with or without modification, is
+# permitted provided that the following conditions are met:
+#
+# 1. Redistributions of this script must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# 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.
+#
+
+# This is a preprocessor for 'less'. It is used when this environment
+# variable is set: LESSOPEN="|lesspipe.sh %s"
+
+lesspipe() {
+ case "$1" in
+ *.tar) tar tvvf "$1" 2>/dev/null ;;
+ *.tgz | *.tar.gz | *.tar.Z | *.tar.z | *.tar.bz2 | *.tbz ) tar tvvf "$1" 2>/dev/null ;;
+ *.tlz | *.tar.lzma ) lzma -dc "$1" 2> /dev/null | tar tvvf - 2> /dev/null ;;
+ *.txz | *.tar.xz ) xz -dc "$1" 2> /dev/null | tar tvvf - 2> /dev/null ;;
+ *.zip) unzip -l "$1" 2>/dev/null ;;
+ *.rpm) rpm -qpvl "$1" 2>/dev/null ;;
+ *.rar) # check if rar is installed first
+ if which rar 1> /dev/null ; then
+ `which rar` t "$1"
+ fi ;;
+ *.1|*.2|*.3|*.4|*.5|*.6|*.7|*.8|*.9|*.n|*.man) # *roff src?
+ if file -L "$1" | grep roff 1> /dev/null ; then
+ nroff -S -mandoc "$1"
+ fi ;;
+ *.1.gz|*.2.gz|*.3.gz|*.4.gz|*.5.gz|*.6.gz|*.7.gz|*.8.gz|*.9.gz|*.n.gz|*.man.gz) # compressed *roff src?
+ if gzip -dc "$1" | file - | grep roff 1> /dev/null ; then
+ gzip -dc "$1" | nroff -S -mandoc -
+ fi ;;
+ *.1.bz2|*.2.bz2|*.3.bz2|*.4.bz2|*.5.bz2|*.6.bz2|*.7.bz2|*.8.bz2|*.9.bz2|*.n.bz2|*.man.bz2) # compressed *roff src?
+ if bzip2 -dc "$1" | file - | grep roff 1> /dev/null ; then
+ bzip2 -dc "$1" | nroff -S -mandoc -
+ fi ;;
+ *.gz) gzip -dc "$1" 2>/dev/null ;;
+ *.bz2) bzip2 -dc "$1" 2>/dev/null ;;
+ *.lzma) lzma -dc "$1" 2>/dev/null ;;
+ *.xz) xz -dc "$1" 2>/dev/null ;;
+# *) FILE=`file -L "$1"` ; # Check to see if binary, if so -- view with 'strings'
+# FILE1=`echo $FILE | cut -d ' ' -f 2`
+# FILE2=`echo $FILE | cut -d ' ' -f 3`
+# if [ "$FILE1" = "Linux/i386" -o "$FILE2" = "Linux/i386" \
+# -o "$FILE1" = "ELF" -o "$FILE2" = "ELF" ]; then
+# strings "$1"
+# fi ;;
+ esac
+}
+
+lesspipe "$1"
diff --git a/source/a/less/slack-desc b/source/a/less/slack-desc
new file mode 100644
index 00000000..bbf440f9
--- /dev/null
+++ b/source/a/less/slack-desc
@@ -0,0 +1,19 @@
+# HOW TO EDIT THIS FILE:
+# The "handy ruler" below makes it easier to edit a package description. Line
+# up the first '|' above the ':' following the base package name, and the '|'
+# on the right side marks the last column you can put a character in. You must
+# make exactly 11 lines for the formatting to be correct. It's also
+# customary to leave one space after the ':'.
+
+ |-----handy-ruler------------------------------------------------------|
+less: less (file pager)
+less:
+less: Less is a paginator similar to more (1), but which allows backward
+less: movement in the file as well as forward movement. Also, less does not
+less: have to read the entire input file before starting, so with large
+less: input files it starts up faster than text editors like vi (1).
+less:
+less: Less was written by Mark Nudelman.
+less:
+less:
+less:
diff --git a/source/a/lha/lha.SlackBuild b/source/a/lha/lha.SlackBuild
new file mode 100755
index 00000000..fb333362
--- /dev/null
+++ b/source/a/lha/lha.SlackBuild
@@ -0,0 +1,75 @@
+#!/bin/sh
+
+# Copyright 2008, 2009 Patrick J. Volkerding, Sebeka, Minnesota, USA
+# All rights reserved.
+#
+# Redistribution and use of this script, with or without modification, is
+# permitted provided that the following conditions are met:
+#
+# 1. Redistributions of this script must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# 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.
+
+
+VERSION=114i
+ARCH=${ARCH:-x86_64}
+BUILD=${BUILD:-1}
+
+CWD=$(pwd)
+TMP=${TMP:-/tmp}
+PKG=$TMP/package-lha
+
+rm -rf $PKG
+mkdir -p $TMP $PKG
+
+cd $TMP
+rm -rf lha-114i
+tar xzvf $CWD/lha-114i.tar.gz
+cd lha-114i
+zcat $CWD/lha_1.14i-10.1.diff.gz | patch -p1 --verbose || exit 1
+patch -p0 < debian/patch.paul
+patch -p0 < debian/patch.multibyte
+patch -p0 < debian/patch.CAN-2004-0234_0235
+patch -p0 < debian/patch.header-overflow
+patch -p1 < debian/patch.redhat-sec2
+patch -p1 < debian/patch.CVE-2006-4335-CVE-2006-4337-CVE-2006-4338
+chown -R root:root .
+make || exit 1
+mkdir -p $PKG/usr/bin
+cat src/lha > $PKG/usr/bin/lha
+chmod 755 $PKG/usr/bin/lha
+mkdir -p $PKG/usr/man/man1
+cat debian/lha.1 | gzip -9 > $PKG/usr/man/man1/lha.1.gz
+mkdir -p $PKG/usr/man/jp/man1
+cat man/lha.man | gzip -9 > $PKG/usr/man/jp/man1/lha.1.gz
+mkdir -p $PKG/usr/doc/lha-114i
+cp -a \
+ change-${VERSION}.txt \
+ $PKG/usr/doc/lha-${VERSION}
+mkdir -p $PKG/usr/doc/lha-${VERSION}/jp
+cp -a *.euc \
+ $PKG/usr/doc/lha-${VERSION}/jp
+chmod 644 $PKG/usr/man/jp/man1/*
+
+( cd $PKG
+ find . | xargs file | grep "executable" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
+ find . | xargs file | grep "shared object" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
+)
+
+mkdir -p $PKG/install
+cat $CWD/slack-desc > $PKG/install/slack-desc
+
+# Build the package:
+cd $PKG
+makepkg -l y -c n $TMP/lha-$VERSION-$ARCH-$BUILD.txz
+
diff --git a/source/a/lha/lha_1.14i-10.1.diff b/source/a/lha/lha_1.14i-10.1.diff
new file mode 100644
index 00000000..cc32c4a6
--- /dev/null
+++ b/source/a/lha/lha_1.14i-10.1.diff
@@ -0,0 +1,5901 @@
+--- lha-1.14i.orig/src/lha_macro.h
++++ lha-1.14i/src/lha_macro.h
+@@ -7,7 +7,7 @@
+ /* Ver. 1.14g modified 2000.05.06 T.OKAMOTO */
+ /* ------------------------------------------------------------------------ */
+
+-#define LHA_VERSION "lha for unix version 1.14g"
++#define LHA_VERSION "lha for unix version 1.14i"
+
+ /* Most of System V, define SYSTIME_HAS_NO_TM */
+ #ifdef SYSTIME_HAS_NO_TM
+--- lha-1.14i.orig/man/lha.n
++++ lha-1.14i/man/lha.n
+@@ -9,7 +9,7 @@
+ ]
+ .I archive_file
+ [
+-.I flie
++.I file
+ \&.\|.\|. ]
+ .br
+ .B lha
+--- lha-1.14i.orig/man/lha.man
++++ lha-1.14i/man/lha.man
+@@ -1,324 +1,224 @@
++LHA(N) LHa for UNIX Users Manual LHA(N)
+
+
+-LHA(N) Unix Programmer's Manual LHA(N)
+
++NNAAMMEE ̾̾
++ LHa - ⰵ̥
+
+-NNNAAAMMMEEE ̾̾̾
+- LHa - ⰵ̥
++SSYYNNOOPPSSIISS 
++ llhhaa kkeeyy [ mmooddiiffiieerrss ] _a_r_c_h_i_v_e___f_i_l_e [ _f_i_l_e ... ]
++ llhhaa _a_r_c_h_i_v_e___f_i_l_e
+
+-SSSYYYNNNOOOPPPSSSIIISSS 
+- lllhhhaaa kkkeeeyyy [ mmmooodddiiifffiiieeerrrsss ] _a_r_c_h_i_v_e__f_i_l_e [ _f_l_i_e ... ]
+- lllhhhaaa _a_r_c_h_i_v_e__f_i_l_e
++DDEESSCCRRIIPPTTIIOONN 
++ LLHHaa ϸΨι⤤̵ǽĥե륢ФǤ
++ kkeeyy ˵ǽʸꤷfile ɲáСɽʤɤ
++ ʤޤ archive_file Τߤꤷˤϡǽʸ l
++ ꤷΤƱưԤʤޤ
++ ǽʸϰʲ̤Ǥ
+
+-DDDEEESSSCCCRRRIIIPPPTTTIIIOOONNN 
+- LLLHHHaaa ϸΨι⤤̵ǽĥե륢ФǤ
+- kkkeeeyyy ˵ǽʸꤷfile ɲáС
+- ɽʤɤԤʤޤ archive_file Τߤꤷ
+- ˤϡǽʸ l ꤷΤƱưԤʤ
+-
+- ǽʸϰʲ̤Ǥ
++ aa ɲáfile archive_file ɲäޤ file ǥ쥯ȥ
++ СΥǥ쥯ȥ˴ޤޤե򤹤٤ɲäޤ
+
+- aaa ɲáfile archive_file ɲäޤfile
+- 쥯ȥǤСΥǥ쥯ȥ˴ޤޤե
+- 򤹤٤ɲäޤ
++ uu file archive_file ˳ǼƤʤ⤷ϳǼ
++ ƤΤŤСfile archive_file ɲäޤ
+
+- uuu file archive_file ˳ǼƤʤ
+- ⤷ϳǼƤΤŤСfile
+- archive_file ɲäޤ
++ ll ޤ vv
++ ɽarchive_file ˳ǼƤ file ξɽ
++ ޤfile λ꤬ʤ archive_file ƤΥեξ
++ ɽ ޤ v ꤹ l ܤɽ
++
+
+- lll ޤ vvv
+- ɽarchive_file ˳ǼƤ file ξ
+- ɽޤfile λ꤬ʤ
+- archive_file ƤΥեξɽޤ
+- v ꤹ l ܤɽޤ
++ xx ޤ ee
++ Сarchive_file file Фޤfile λ꤬ʤ
++ archive_file ƤΥեФޤФ٤ե
++ 뤬Ǥ¸ߤƤˤϡŤͽ񤭤Ƥ䤤
++ Ԥʤޤ
+
+- xxx ޤ eee
+- Сarchive_file file Фޤfile
+- ꤬ʤ archive_file ƤΥե
+- ФޤФ٤ե뤬Ǥ¸ߤƤ
+- ˤϡŤͽ񤭤Ƥ䤤碌Ԥʤޤ
+-
++ pp ɽarchive_file file ƤФɸϤؤ
++ Ϥޤfile λ꤬ʤСƤƤϤޤ
+
+- ppp ɽarchive_file file ƤФ
+- ɸϤؤȽϤޤfile λ꤬ʤС
+- ƤƤϤޤ
++ dd archive_file file ޤ
+
+- ddd archive_file file ޤ
++ mm ưfile archive_file ɲä塢file ޤ
++ ϡkey a modifiers d ꤷƱưԤ
++ ޤ
+
+- mmm ưfile archive_file ɲä塢file
+- ޤϡkey a modifiers d
+- ꤷƱưԤʤޤ
++ cc archive_file 򿷤˺file ɲäޤ
+
++ ǽѹʸ modifiers ꤹ뤳Ȥˤä key ưξܺ٤ѹ
++ Ǥޤmodifiers ϡʲ椫ʣꤹ뤳ȤǤ
++
+
+- January 14,1997 1
+
+
++ qq<<nnuumm>> ɽŪʥåɽޤ <num> ͤ
++ äơINDICATOR ɽˡѹǤޤ
+
+-LHA(N) Unix Programmer's Manual LHA(N)
++ qq00 oooo........ ɽɽԤʤ
+
++ qq11 ե̾̾ɽɽΤ߹Ԥʤ
+
+- ccc archive_file 򿷤˺file ɲ
+- ޤ
++ qq22 ɽɽʤ
+
+- ǽѹʸ modifiers ꤹ뤳Ȥˤä key ư
+- ܺ٤ѹ뤳ȤǤޤmodifiers ϡʲ椫ʣ
+- ꤹ뤳ȤǤޤ
++ ʤͤϤʤäݤˤϡq2 Ʊˤʤޤ
+
++ vv ɽξĹɽåĹˤޤ
+
++ nn ¹ԤʤºݤιФưԤʤޤ󡣼¹Ƥγ
++ ǧΤѰդƤޤ
+
+- qqq<<<nnnuuummm>>> ɽŪʥåɽޤ
+- <num> ͤˤäơINDICATOR ɽˡѹǤ
+- ޤ
++ ff Ūʼ¹ԡեлˡ¸ߤեκǧ
++ Ԥʤ鷺Ū˺Ԥʤޤ
+
+- qqq000 oooooo............ ɽɽɽԤʤ
++ tt ƥȥ⡼ɤˤǼ,С֥եؤΥե
++ Ǽˤϡ UNIX MS-DOS ؤβԥѴԤʤ
++ եлˤϵդˡMS-DOS UNIX ؤβԥѴ
++ Ԥʤޤ
+
+- qqq111 ե̾̾̾ɽɽɽΤ߹Ԥʤ
++ oo{{nnuumm}} LHarc ߴ֤ޤϰ̥르ꥺꤹ 롣
++ ǽʸ a, u, m ȶ˻ꤷлˤ̵뤵ޤ
+
+- qqq222 ɽɽɽʤ
++ oo LLHHaarrcc ߴ֤Ԥ
+
+- ʤͤϤʤäݤˤϡq2 Ʊˤʤ
+-
++ ֤ޤ̥르ꥺ
++ -lh1-Ѥޤ
+
+- vvv ɽξĹɽåĹˤޤ
++ oo55 ̥르ꥺ --llhh55-- Ѥ롣
+
+- nnn ¹ԤʤºݤιФưԤʤޤ
+- ¹ƤγǧΤѰդƤޤ
++ oo66 ̥르ꥺ --llhh66-- Ѥ롣
+
+- fff Ūʼ¹ԡեлˡ¸ߤե
+- κǧԤʤ鷺Ū˺Ԥʤޤ
++ LHAμˤäƤϡ-lh6-줿֤ФǤ
++ Τǡ֤ۤݤˤդƤ
++ MSDOSǤǤǤ -lh6- ϹԤޤ󡣤ޤMSDOS
++ LHA version 2.5x ʹߤΥСǤ -lh6- ФΤߤǤ
++
+
+- ttt ƥȥ⡼ɤˤǼ,С֥ե
+- ؤΥեγǼˤϡUNIX MS-DOS ؤβ
+- ԥѴԤʤޤեлˤϵդ
+- MS-DOS UNIX ؤβԥѴԤʤޤ
+-
++ ww==<<//ddiirr>>
++ ǼлΥѥǥ쥯ȥ ꡣ ե
++ ϡ/tmp Ǥ/tmp 礭ʾΥեǼݤˤɬ
++ פǤ
+
+- ooo{{{nnnuuummm}}} LHarc ߴ֤ޤϰ̥르ꥺ
+- ꤹ롣ǽʸ a, u, m ȶ˻ꤷл
+- ˤ̵뤵ޤ
++ dd եǼΥեκǽʸ a, ⤷ u ȶ
++ ֥եؤΥեγǼθ˥ե
++ ޤ u ղä硢֥եƤ
++ ե 뤬Ǽ줺˺뤳ȤˤʤΤդƲ
++
+
+- ooo LLLHHHaaarrrccc ߴ֤Ԥ
++ ii лΥǥ쥯ȥ̵̾л˥ǥ쥯ȥ̵̾
++ ޤ
+
+- ŤΥ֤ޤ̥르
+- ꥺ-lh1-Ѥޤ
++ zz ̳Ǽ֤ؤΥեγǼ˰̤Ԥʤޤ
++ 󡣤Ǥ˰̤ԤʤäƤư̸Ψ˾ʤʤɤ˻
++ ޤлˤ̵뤵ޤ
+
++ gg [generic]֤κ UNIX Ѥղþʤ
++ ֥եޤлˤ̵뤵ޤ
+
++ 00//11//22 إå٥ꡣ֤ɽηꤷ
++ ե ȤǤ 1 Ǥ0 LHarc ѰդƤŤǤ
++ 2 η줵褦ǤϥեγǼΤ
++ ͭǤեлˤϼưŪ˷ȽǤޤ
+
+- January 14,1997 2
++ _a_r_c_h_i_v_e___f_i_l_e ˤϥ֥եꤷޤ
+
++ _a_r_c_h_i_v_e___f_i_l_e _- Ƚ񤯤Ȥˤäơ֥եɸϤ
++ 뤳ȤǽǤ ttaarr(1) Τ褦ˡ֤κˤɸ
++ Ϥˡ֤ΥեлˤɸϤˤʤޤ
+
++ л _a_r_c_h_i_v_e___f_i_l_e ¸ߤʤˤϥեå ..llzzhh ե̾
++ θղäФߤޤ
++ ä˵Ϥޤ󤬡Ѿ奵եåȤ ..llzzhh ѤΤ˾
++ ȻפޤܰʳǤ ..llhhaa ѤƤ륱뤽Ǥ
++ ǡŬĴƲ:-)
++ եå ccoomm ⤷ ..eexxee ξˤϡMS-DOS ǤǺ줿 _S_F_X(
++ Ÿǽդΰ̥ե) ɤåбޤ
++ եå ..xx ξˤϡ SHARP X68000 OS, Human68k Ǥ
++ 줿 SFX ɤåбޤ
++ SFX Υ֥եФɲäԤä ϡ
++ եå ..llzzhh ѹSFX ξޤ
+
+-LHA(N) Unix Programmer's Manual LHA(N)
+
++FFIILLEESS ե
++ *.lzh - LHa/LHarc ֥ե
++ *.bak - Хååץե
++ /tmp/lh* - ƥݥե
++ *.com *.exe - MS-DOS SFX ե
++ *.x - Human68k SFX ե
+
+- ooo555 ̥르ꥺ ---lllhhh555- Ѥ롣
+
+- ooo666 ̥르ꥺ ---lllhhh666- Ѥ롣
++SSEEEE AALLSSOO ϢϢ
++ ttaarr(1), aarr(1), ccoommpprreessss(1)
+
+- LHAμˤäƤϡ-lh6-줿֤
+- ФǤʤ줬Τǡ֤ۤ
+- ˤդƤMSDOSǤǤǤ -lh6-
+- ϹԤޤ󡣤ޤMSDOS LHA version 2.5x
+- ʹߤΥСǤ -lh6- ФΤߤǤޤ
++DDIISSTTRRIIBBUUTTIIOONN ۤˤĤ
++ ʲξǡۡžܡѤĤޤ
+
+- www===<<<///dddiiirrr>>>
+- ǼлΥѥǥ쥯ȥꡣǥե
+- ȤǤϡ/tmp Ǥ/tmp 礭ʾΥե
+- ǼݤˤɬפǤ
++ 1. ɽʤȡ
+
+- ddd եǼΥեκǽʸ a, ⤷
+- u ȶѤ֥եؤΥե
+- Ǽθ˥եޤu ղä硢
+- ֥եƤ˥ե뤬
+- Ǽ줺˺뤳ȤˤʤΤդƲ
+-
++ 2. ƤˤĤƤϡ
+
+- iii лΥǥ쥯ȥ̵̾л˥ǥ쥯
+- ̵̾ˤޤ
++ a. ۤκݤ¸ߤ(ʤɡɥ
++ ȡץޡؤμʤ)ۤ줿Τɬ
++ ¸ 뤳ȡѤƤʤС
++ ȤѰդ뤳ȡ
+
+- zzz 󰵽̳Ǽ֤ؤΥեγǼ˰̤
+- Ԥʤޤ󡣤Ǥ˰̤ԤʤäƤư̸Ψ˾
+- ʤʤɤ˻Ѥޤлˤ̵뤵ޤ
+-
++ b. LHa ФղòͤդƺۤˤϤ
++ Ǥޤ褦Ϥ뤳ȡޤκݤˤ
++ òͤդƤ뤳ȤɥȤѰ
++ 뤳ȡ
+
+- ggg [generic]֤κUNIX Ѥղþ
+- ʤ֥եޤлˤ̵
+- ޤ
++ c. ХʥΤߤۤϵʤ(ղòͤΤΤޤ)
+
+- 000///111///222 إå٥ꡣ֤ɽη
+- ޤǥեȤǤ 1 Ǥ0 LHarc Ѱդ
+- ƤŤǤ 2 η줵
+- 褦ǤϥեγǼΤͭǤե
+- лˤϼưŪ˷ȽǤޤ
++ 3. ǿǤ̳ۤ뤳ȡ(̳Ϥʤ)
+
+- _a_r_c_h_i_v_e__f_i_l_e ˤϥ֥եꤷޤ
++ . ʤͥåȤǤդϼͳǤ뤬ͥåȤ˥Ǥ
++ ʤʻ浪ӡ CD-ROM ʤɤˤդϡ
++ E-Mail 򤪴ꤤޤ˽ʤݤˤϡ
++ ɬ E-Mail 򤪴ꤤޤ
+
+- _a_r_c_h_i_v_e__f_i_l_e - Ƚ񤯤Ȥˤäơ֥ե
+- ɸϤˤ뤳ȤǽǤtttaaarrr(1) Τ褦ˡ
+- ֤κˤɸϤˡ֤Υե
++ 4. Υץ¸ߤѤȤˤä»ݾڤ
++ ʤ
+
++ 5. ԤϡΥץäƤ⡢̳
++ ʤ
+
+- January 14,1997 3
++ 6. Υץΰޤ¾ΥץȤ߹
++ Ƥ⤫ޤʤξ硢Υץ LHa ǤϤʤ LHa
++ ̾äƤϤʤ
+
++ 7. Ѥ˴ؤƤϡ嵭ξ˲äξΤȤˤǧ
++ 롣
+
++ a. ΥץᥤȤ뾦Ѥ϶ػߤ롣
+
+-LHA(N) Unix Programmer's Manual LHA(N)
++ b. Ѥ꤬ΥץλѼԤȤŬڤȽǤ
++ ˤۤʤ
+
++ c. 󥹥ȡμʤȤƻѤ硢Υץ
++ ˶ʤξ硢ѼԤȤ
++ ޤΤȤ»ϡѼԤǤ餦
+
+- лˤɸϤˤʤޤ
++ d. ѤղòͤȤƹԤΥץѤ 硢
++ ѼԤϡΥݡȤԤ
+
+- л_a_r_c_h_i_v_e__f_i_l_e ¸ߤʤˤϥեå...lllzzzhhh
+- ե̾θղäФߤޤ
+- ä˵Ϥޤ󤬡Ѿ奵եåȤ...lllzzzhhh
+- Τ˾ޤȻפޤܰʳǤ ...lllhhhaaa ѤƤ
+- 륱뤽ǤΤǡŬĴƲ:-)
+- եåcccooommm ⤷...eeexxxeee ξˤϡMS-DOS ǤǺ
+- 줿_S_F_X(Ÿǽդΰ̥ե) ɤ
+- åбޤ
+- եå...xxx ξˤϡ SHARP X68000 OS,
+- Human68k ǤǺ줿 SFX ɤåб
+- ޤ
+- SFX Υ֥եФɲäԤä
+- ˤϡեå...lllzzzhhh ѹSFX ξޤ
+-
+
+-FFFIIILLLEEESSS ե
+- *.lzh - LHa/LHarc ֥ե
+- *.bak - Хååץե
+- /tmp/lh* - ƥݥե
+- *.com *.exe - MS-DOS SFX ե
+- *.x - Human68k SFX ե
++Ǹ((FFrroomm YY..TTaaggaawwaa))
++ LZHUF ˡδäȤʤä LZARI ˡȯɽƤä¼ɧᡢ
++ NIFTY-Serve ˾Ҳ𤷡ޤLArc κԤǤ⤢뻰ɧᡢޤ
++ LZHUF ˡڤӡMS-DOS LHarc ȺٻᡢLHarc
++ UNIX γȯ˶Ϥã褯åζϤ򤷤Ƥ줿к
++ (MIX ID:k.ishi)ޤʥݡȤ򤯤줿ߤʤ󡢤
++ ѤƤäϺ (MIX ID:kmori)˴դޤ
+
+-SSSEEEEEE AAALLLSSSOOO ϢϢϢ
+- tttaaarrr(1), aaarrr(1), cccooommmppprrreeessssss(1)
+
+-DDDIIISSSTTTRRRIIIBBBUUUTTTIIIOOONNN ۤˤĤ
++Ǹ((FFrroomm MMaassaarruu OOkkii))
++ 嵭Ϥ󡢲ä LHarc UNIX Y.Tagawa ᡢ
++ OSK ˰ܿȺ LHx Υ르ꥺȤ߹ H.S ᡢ JUNET
++ LHa for UNIX MailingList ˤƶϤƤäߤʤ˴פޤ
+
+- ʲξǡۡžܡѤĤޤ
++Ǹ((FFrroomm NNoobbuuttaakkaa WWaattaazzaakkii))
++ Υץκˤäˤޤ LHa ž夲Ƥ
++ ä ˴פޤ
+
+- 1. ɽʤȡ
+
+- 2. ƤˤĤƤϡ
+-
+- a. ۤκݤ¸ߤ(ʤɡɥ
+- ȡץޡؤμʤ)ۤ
+- Τɬ¸ߤ뤳ȡѤƤʤ
+- ɥȤѰդ뤳ȡ
+-
+- b. LHa Фղòͤդƺۤ
+- ϤǤޤ褦Ϥ뤳ȡޤ
+- κݤˤղòͤդƤ뤳Ȥ
+- ȤѰդ뤳ȡ
+-
+-
+-
+- January 14,1997 4
+-
+-
+-
+-LHA(N) Unix Programmer's Manual LHA(N)
+-
+-
+- c. ХʥΤߤۤϵʤ(ղòͤΤΤ
+- ޤ)
+-
+- 3. ǿǤ̳ۤ뤳ȡ(̳Ϥʤ)
+-
+- . ʤͥåȤǤդϼͳǤ뤬ͥåȤ˥
+- Ǥʤʻ浪ӡCD-ROM ʤɤˤ
+- ϡˤ E-Mail 򤪴ꤤޤ
+- ˽ʤݤˤϡɬ E-Mail 򤪴ꤤޤ
+-
+- 4. Υץ¸ߤѤȤˤä»
+- ݾڤʤ
+-
+- 5. ԤϡΥץäƤ⡢
+- ̳ʤ
+-
+- 6. Υץΰޤ¾Υץ
+- Ȥ߹ѤƤ⤫ޤʤξ硢Υץ
+- LHa ǤϤʤLHa ̾äƤϤʤ
+-
+- 7. Ѥ˴ؤƤϡ嵭ξ˲äξΤ
+- Ȥˤǧ롣
+-
+- a. ΥץᥤȤ뾦Ѥ϶ػߤ롣
+-
+- b. Ѥ꤬ΥץλѼԤȤŬڤ
+- ȽǤˤۤʤ
+-
+- c. 󥹥ȡμʤȤƻѤ硢Υץ
+- ȤȤ˶ʤξ硢Ѽ
+- ȤԤޤΤȤ»ϡѼԤ
+- Ǥ餦
+-
+- d. ѤղòͤȤƹԤΥץѤ
+- 硢ѼԤϡΥݡȤԤ
+-
+-Ǹ(((FFFrrrooommm YYY...TTTaaagggaaawwwaaa)))
+- LZHUF ˡδäȤʤä LZARI ˡȯɽƤä¼
+- ɧᡢ NIFTY-Serve ˾Ҳ𤷡ޤLArc κԤǤ⤢
+- 뻰ɧᡢޤװ LZHUF ˡڤӡMS-DOS
+- LHarc ȺٻᡢLHarc UNIX γȯ˶Ϥ
+- ã褯åζϤ򤷤Ƥ줿к(MIX
+- ID:k.ishi)ޤʥݡȤ򤯤줿ߤʤ󡢤
+- ѤƤäϺ (MIX ID:kmori)˴դޤ
+-
+-
+-
+- January 14,1997 5
+-
+-
+-
+-LHA(N) Unix Programmer's Manual LHA(N)
+-
+-
+-Ǹ(((FFFrrrooommm MMMaaasssaaarrruuu OOOkkkiii)))
+- 嵭Ϥ󡢲ä LHarc UNIX Y.Tagawa
+- ᡢ OSK ˰ܿȺ LHx Υ르ꥺȤ߹
+- H.S ᡢJUNET LHa for UNIX MailingList ˤƶϤ
+- Ƥäߤʤ˴פޤ
+-
+-Ǹ(((FFFrrrooommm NNNooobbbuuutttaaakkkaaa WWWaaatttaaazzzaaakkkiii)))
+- Υץκˤäˤޤ LHa
+- ž夲Ƥä ˴פޤ
+-
+-
+-
+-
+-
+-
+-
+-
+-
+-
+-
+-
+-
+-
+-
+-
+-
+-
+-
+-
+-
+-
+-
+-
+-
+-
+-
+-
+-
+-
+-
+-
+-
+-
+-
+-
+-
+-
+- January 14,1997 6
+
++ January 14,1997 LHA(N)
+--- lha-1.14i.orig/Makefile
++++ lha-1.14i/Makefile
+@@ -20,7 +20,7 @@
+
+ #MACHINE = -DSYSTIME_HAS_NO_TM -DFTIME -DEUC
+ #MACHINE = -DSYSTIME_HAS_NO_TM -DEUC -DHAVE_TM_ZONE -DSYSV_SYSTEM_DIR
+-MACHINE = -DSYSTIME_HAS_NO_TM -DEUC -DSYSV_SYSTEM_DIR -DMKTIME
++MACHINE = -DSYSTIME_HAS_NO_TM -DEUC -DSYSV_SYSTEM_DIR -DMKTIME -DMULTIBYTE_CHAR
+
+ #OPTIMIZE = -O2 -fstrength-reduce -fomit-frame-pointer
+ OPTIMIZE = -O2 -DSUPPORT_LH7 -DMKSTEMP
+--- lha-1.14i.orig/debian/patch.multibyte
++++ lha-1.14i/debian/patch.multibyte
+@@ -0,0 +1,145 @@
++diff -Nuar src.old/header.c src/header.c
++--- src.old/header.c Fri Oct 6 02:36:03 2000
+++++ src/header.c Fri Jul 19 16:46:41 2002
++@@ -82,6 +82,7 @@
++ register int i;
++
++ #ifdef MULTIBYTE_CHAR
+++ if (multibyte_mode == TRUE) {
++ for (i = 0; i < len; i++) {
++ if (MULTIBYTE_FIRST_P(name[i]) &&
++ MULTIBYTE_SECOND_P(name[i + 1]))
++@@ -91,6 +92,14 @@
++ else if (!noconvertcase && isupper(name[i]))
++ name[i] = tolower(name[i]);
++ }
+++ } else {
+++ for (i = 0; i < len; i++) {
+++ if (name[i] == '\\')
+++ name[i] = '/';
+++ else if (!noconvertcase && isupper(name[i]))
+++ name[i] = tolower(name[i]);
+++ }
+++ }
++ #else
++ for (i = 0; i < len; i++) {
++ if (name[i] == '\\')
++@@ -111,6 +120,7 @@
++ boolean lower_case_used = FALSE;
++
++ #ifdef MULTIBYTE_CHAR
+++ if (multibyte_mode == TRUE) {
++ for (i = 0; i < len; i++) {
++ if (MULTIBYTE_FIRST_P(name[i]) &&
++ MULTIBYTE_SECOND_P(name[i + 1]))
++@@ -128,6 +138,19 @@
++ name[i] = '/';
++ else if (!noconvertcase && !lower_case_used && isupper(name[i]))
++ name[i] = tolower(name[i]);
+++ }
+++ } else {
+++ for (i = 0; i < len; i++)
+++ if (islower(name[i])) {
+++ lower_case_used = TRUE;
+++ break;
+++ }
+++ for (i = 0; i < len; i++) {
+++ if (name[i] == '\\')
+++ name[i] = '/';
+++ else if (!noconvertcase && !lower_case_used && isupper(name[i]))
+++ name[i] = tolower(name[i]);
+++ }
++ }
++ #else
++ for (i = 0; i < len; i++)
++diff -Nuar src.old/lha.h src/lha.h
++--- src.old/lha.h Fri Jul 19 17:22:13 2002
+++++ src/lha.h Fri Jul 19 17:18:05 2002
++@@ -101,6 +101,9 @@
++ #ifdef EUC
++ EXTERN boolean euc_mode;
++ #endif
+++#ifdef MULTIBYTE_CHAR
+++EXTERN boolean multibyte_mode;
+++#endif
++
++ /* list command flags */
++ EXTERN boolean verbose_listing;
++diff -Nuar src.old/lharc.c src/lharc.c
++--- src.old/lharc.c Fri Oct 6 02:33:34 2000
+++++ src/lharc.c Fri Jul 19 16:56:03 2002
++@@ -101,6 +101,10 @@
++ euc_mode = FALSE;
++ #endif
++
+++#ifdef MULTIBYTE_CHAR
+++ multibyte_mode = FALSE;
+++#endif
+++
++ /* view command flags */
++ verbose_listing = FALSE;
++
++@@ -177,6 +181,11 @@
++ e TEXT code convert from/to EUC\n\
++ ");
++ #endif
+++#ifdef MULTIBYTE_CHAR
+++ fprintf(stderr, "\
+++ y filename multibyte convert\n\
+++");
+++#endif
++ exit(1);
++ }
++
++@@ -308,6 +317,11 @@
++ case 'e':
++ text_mode = TRUE;
++ euc_mode = TRUE;
+++ break;
+++#endif
+++#ifdef MULTIBYTE_CHAR
+++ case 'y':
+++ multibyte_mode = TRUE;
++ break;
++ #endif
++ case 'n':
++diff -Nuar src.old/util.c src/util.c
++--- src.old/util.c Wed Oct 4 23:57:38 2000
+++++ src/util.c Fri Jul 19 16:49:23 2002
++@@ -113,18 +113,29 @@
++ #endif
++ for (p = path; (c = *p) != 0; p++) {
++ #ifdef MULTIBYTE_CHAR
++- if (kflg) {
++- kflg = 0;
+++ if (multibyte_mode == TRUE) {
+++ if (kflg) {
+++ kflg = 0;
+++ } else if (MULTIBYTE_FIRST_P(c)) {
+++ kflg = 1;
+++ } else {
+++ if (c == '\\' || c == DELIM || c == DELIM2) {
+++ *p = delim;
+++ path = p + 1;
+++ }
+++ }
+++ } else {
+++ if (c == '\\' || c == DELIM || c == DELIM2) {
+++ *p = delim;
+++ path = p + 1;
+++ }
++ }
++- else if (MULTIBYTE_FIRST_P(c)) {
++- kflg = 1;
++- }
++- else
++-#endif
+++#else
++ if (c == '\\' || c == DELIM || c == DELIM2) {
++ *p = delim;
++ path = p + 1;
++ }
+++#endif
++ }
++ return path;
++ }
+--- lha-1.14i.orig/debian/README.Debian
++++ lha-1.14i/debian/README.Debian
+@@ -0,0 +1,6 @@
++lha for DEBIAN
++----------------------
++
++LHa for UNIX
++
++Atsushi KAMOSHIDA <kamop@post1.com>, Sun, 13 Apr 1997 17:52:59 +0900
+--- lha-1.14i.orig/debian/org/lha.h
++++ lha-1.14i/debian/org/lha.h
+@@ -0,0 +1,322 @@
++/* ------------------------------------------------------------------------ */
++/* LHa for UNIX Archiver Driver */
++/* */
++/* Modified Nobutaka Watazaki */
++/* */
++/* Ver. 1.14 Soruce All chagned 1995.01.14 N.Watazaki */
++/* Ver. 1.14i Modified and bug fixed 2000.10.06 t.okamoto */
++/* ------------------------------------------------------------------------ */
++/*
++ Included...
++ lharc.h interface.h slidehuf.h
++*/
++#include <stdio.h>
++#include <errno.h>
++#include <ctype.h>
++#include <sys/types.h>
++#include <sys/file.h>
++#include <sys/stat.h>
++
++#include <signal.h>
++
++#include "lha_macro.h"
++
++struct encode_option {
++#if defined(__STDC__) || defined(AIX)
++ void (*output) ();
++ void (*encode_start) ();
++ void (*encode_end) ();
++#else
++ int (*output) ();
++ int (*encode_start) ();
++ int (*encode_end) ();
++#endif
++};
++
++struct decode_option {
++ unsigned short (*decode_c) ();
++ unsigned short (*decode_p) ();
++#if defined(__STDC__) || defined(AIX)
++ void (*decode_start) ();
++#else
++ int (*decode_start) ();
++#endif
++};
++
++/* ------------------------------------------------------------------------ */
++/* LHa File Type Definition */
++/* ------------------------------------------------------------------------ */
++struct string_pool {
++ int used;
++ int size;
++ int n;
++ char *buffer;
++};
++
++typedef struct LzHeader {
++ unsigned char header_size;
++ char method[METHOD_TYPE_STRAGE];
++ long packed_size;
++ long original_size;
++ long last_modified_stamp;
++ unsigned char attribute;
++ unsigned char header_level;
++ char name[256];
++ unsigned short crc;
++ boolean has_crc;
++ unsigned char extend_type;
++ unsigned char minor_version;
++
++ /* extend_type == EXTEND_UNIX and convert from other type. */
++ time_t unix_last_modified_stamp;
++ unsigned short unix_mode;
++ unsigned short unix_uid;
++ unsigned short unix_gid;
++} LzHeader;
++
++struct interfacing {
++ FILE *infile;
++ FILE *outfile;
++ unsigned long original;
++ unsigned long packed;
++ int dicbit;
++ int method;
++};
++
++
++/* ------------------------------------------------------------------------ */
++/* Option switch variable */
++/* ------------------------------------------------------------------------ */
++/* command line options (common options) */
++EXTERN boolean quiet;
++EXTERN boolean text_mode;
++EXTERN boolean verbose;
++EXTERN boolean noexec; /* debugging option */
++EXTERN boolean force;
++EXTERN boolean prof;
++EXTERN boolean delete_after_append;
++EXTERN int compress_method;
++EXTERN int header_level;
++/* EXTERN int quiet_mode; */ /* 1996.8.13 t.okamoto */
++#ifdef EUC
++EXTERN boolean euc_mode;
++#endif
++
++/* list command flags */
++EXTERN boolean verbose_listing;
++
++/* extract/print command flags */
++EXTERN boolean output_to_stdout;
++
++/* add/update/delete command flags */
++EXTERN boolean new_archive;
++EXTERN boolean update_if_newer;
++EXTERN boolean generic_format;
++
++EXTERN boolean remove_temporary_at_error;
++EXTERN boolean recover_archive_when_interrupt;
++EXTERN boolean remove_extracting_file_when_interrupt;
++EXTERN boolean get_filename_from_stdin;
++EXTERN boolean ignore_directory;
++EXTERN boolean verify_mode;
++
++/* Indicator flag */
++EXTERN int quiet_mode;
++
++/* ------------------------------------------------------------------------ */
++/* Globale Variable */
++/* ------------------------------------------------------------------------ */
++EXTERN char **cmd_filev;
++EXTERN int cmd_filec;
++
++EXTERN char *archive_name;
++EXTERN char expanded_archive_name[FILENAME_LENGTH];
++EXTERN char temporary_name[FILENAME_LENGTH];
++EXTERN char backup_archive_name[FILENAME_LENGTH];
++
++EXTERN char *reading_filename, *writting_filename;
++
++/* 1996.8.13 t.okamoto */
++#if 0
++EXTERN boolean remove_temporary_at_error;
++EXTERN boolean recover_archive_when_interrupt;
++EXTERN boolean remove_extracting_file_when_interrupt;
++#endif
++
++EXTERN int archive_file_mode;
++EXTERN int archive_file_gid;
++
++EXTERN struct interfacing interface;
++EXTERN node *next;
++/* EXTERN unsigned short crc; */ /* 1996.8.13 t.okamoto */
++
++EXTERN int noconvertcase; /* 2000.10.6 */
++
++/* slide.c */
++EXTERN int unpackable;
++EXTERN unsigned long origsize, compsize;
++EXTERN unsigned short dicbit;
++EXTERN unsigned short maxmatch;
++EXTERN unsigned long count;
++EXTERN unsigned long loc; /* short -> long .. Changed N.Watazaki */
++EXTERN unsigned char *text;
++EXTERN int prev_char;
++
++/* huf.c */
++#ifndef LHA_MAIN_SRC /* t.okamoto 96/2/20 */
++EXTERN unsigned short left[], right[];
++EXTERN unsigned char c_len[], pt_len[];
++EXTERN unsigned short c_freq[], c_table[], c_code[];
++EXTERN unsigned short p_freq[], pt_table[], pt_code[], t_freq[];
++#endif
++
++/* append.c */
++#ifdef NEED_INCREMENTAL_INDICATOR
++EXTERN long indicator_count;
++EXTERN long indicator_threshold;
++#endif
++
++/* crcio.c */
++EXTERN FILE *infile, *outfile;
++EXTERN unsigned short crc, bitbuf;
++EXTERN int dispflg;
++EXTERN long reading_size;
++
++/* from dhuf.c */
++EXTERN unsigned int n_max;
++
++/* lhadd.c */
++EXTERN FILE *temporary_fp;
++
++/* ------------------------------------------------------------------------ */
++/* Functions */
++/* ------------------------------------------------------------------------ */
++/* from lharc.c */
++extern int patmatch();
++
++extern void interrupt();
++
++extern void message();
++extern void warning();
++extern void error();
++extern void fatal_error();
++
++extern boolean need_file();
++extern int inquire();
++extern FILE *xfopen();
++
++extern boolean find_files();
++extern void free_files();
++
++extern void init_sp();
++extern void add_sp();
++extern void finish_sp();
++extern void free_sp();
++extern void cleaning_files();
++
++extern void build_temporary_name();
++extern void build_backup_file_name();
++extern void build_standard_archive_name();
++
++extern FILE *open_old_archive();
++extern void init_header();
++extern boolean get_header();
++extern boolean archive_is_msdos_sfx1();
++extern boolean skip_msdos_sfx1_code();
++extern void write_header();
++extern void write_archive_tail();
++extern void copy_old_one();
++extern unsigned char *convdelim();
++extern long copyfile();
++
++extern void cmd_list(), cmd_extract(), cmd_add(), cmd_delete();
++
++extern boolean ignore_directory;
++extern boolean compress_method;
++extern boolean verify_mode;
++
++extern char *extract_directory;
++
++/* from slide.c */
++
++extern int encode_alloc();
++extern void encode();
++extern void decode();
++
++/* from append.c */
++extern void start_indicator();
++extern void finish_indicator();
++extern void finish_indicator2();
++
++/* slide.c */
++extern void output_st1();
++extern unsigned char *alloc_buf();
++extern void encode_start_st1();
++extern void encode_end_st1();
++extern unsigned short decode_c_st1();
++extern unsigned short decode_p_st1();
++extern void decode_start_st1();
++
++/* from shuf.c */
++extern void decode_start_st0();
++extern void encode_p_st0( /* unsigned short j */ );
++extern void encode_start_fix();
++extern void decode_start_fix();
++extern unsigned short decode_c_st0();
++extern unsigned short decode_p_st0();
++
++/* from dhuf.c */
++extern void start_c_dyn();
++extern void decode_start_dyn();
++extern unsigned short decode_c_dyn();
++extern unsigned short decode_p_dyn();
++extern void output_dyn( /* int code, unsigned int pos */ );
++extern void encode_end_dyn();
++
++extern int decode_lzhuf();
++
++/* from larc.c */
++
++extern unsigned short decode_c_lzs();
++extern unsigned short decode_p_lzs();
++extern unsigned short decode_c_lz5();
++extern unsigned short decode_p_lz5();
++extern void decode_start_lzs();
++extern void decode_start_lz5();
++
++extern void make_table( /* int nchar, uchar bitlen[], int tablebits,
++ ushort table[] */ );
++
++/* from maketree.c */
++/*
++ * void make_code(short n, uchar len[], ushort code[]); short make_tree(short
++ * nparm, ushort freqparm[], uchar lenparm[], ushort codeparam[]);
++ */
++extern void make_code( /* int n, uchar len[], ushort code[] */ );
++extern short make_tree( /* int nparm, ushort freqparm[], uchar lenparm[],
++ ushort codeparam[] */ );
++
++/* from crcio.c */
++extern void make_crctable();
++extern unsigned short calccrc( /* uchar *p, uint n */ );
++extern void fillbuf( /* uchar n */ );
++extern unsigned short getbits( /* uchar n */ );
++extern void putcode( /* uchar n, ushort x */ );
++extern void putbits( /* uchar n, ushort x */ );
++extern int fread_crc( /* uchar *p, int n, FILE *f */ );
++extern void fwrite_crc( /* uchar *p, int n, FILE *f */ );
++extern void init_getbits();
++extern void init_putbits();
++extern void make_crctable();
++extern unsigned short calccrc();
++
++/* from lhadd.c */
++extern int encode_lzhuf();
++extern int encode_stored_crc();
++
++/* Local Variables: */
++/* mode:c */
++/* tab-width:4 */
++/* End: */
++
++
+--- lha-1.14i.orig/debian/org/header.c
++++ lha-1.14i/debian/org/header.c
+@@ -0,0 +1,875 @@
++/* ------------------------------------------------------------------------ */
++/* LHa for UNIX */
++/* header.c -- header manipulate functions */
++/* */
++/* Modified Nobutaka Watazaki */
++/* */
++/* Original Y.Tagawa */
++/* modified 1991.12.16 M.Oki */
++/* Ver. 1.10 Symbolic Link added 1993.10.01 N.Watazaki */
++/* Ver. 1.13b Symbolic Link Bug Fix 1994.08.22 N.Watazaki */
++/* Ver. 1.14 Source All chagned 1995.01.14 N.Watazaki */
++/* Ver. 1.14i bug fixed 2000.10.06 t.okamoto */
++/* ------------------------------------------------------------------------ */
++#include "lha.h"
++
++/* ------------------------------------------------------------------------ */
++static char *get_ptr;
++/* ------------------------------------------------------------------------ */
++int
++calc_sum(p, len)
++ register char *p;
++ register int len;
++{
++ register int sum;
++
++ for (sum = 0; len; len--)
++ sum += *p++;
++
++ return sum & 0xff;
++}
++
++/* ------------------------------------------------------------------------ */
++static unsigned short
++get_word()
++{
++ int b0, b1;
++
++ b0 = get_byte();
++ b1 = get_byte();
++ return (b1 << 8) + b0;
++}
++
++/* ------------------------------------------------------------------------ */
++static void
++put_word(v)
++ unsigned int v;
++{
++ put_byte(v);
++ put_byte(v >> 8);
++}
++
++/* ------------------------------------------------------------------------ */
++static long
++get_longword()
++{
++ long b0, b1, b2, b3;
++
++ b0 = get_byte();
++ b1 = get_byte();
++ b2 = get_byte();
++ b3 = get_byte();
++ return (b3 << 24) + (b2 << 16) + (b1 << 8) + b0;
++}
++
++/* ------------------------------------------------------------------------ */
++static void
++put_longword(v)
++ long v;
++{
++ put_byte(v);
++ put_byte(v >> 8);
++ put_byte(v >> 16);
++ put_byte(v >> 24);
++}
++
++/* ------------------------------------------------------------------------ */
++static void
++msdos_to_unix_filename(name, len)
++ register char *name;
++ register int len;
++{
++ register int i;
++
++#ifdef MULTIBYTE_CHAR
++ for (i = 0; i < len; i++) {
++ if (MULTIBYTE_FIRST_P(name[i]) &&
++ MULTIBYTE_SECOND_P(name[i + 1]))
++ i++;
++ else if (name[i] == '\\')
++ name[i] = '/';
++ else if (!noconvertcase && isupper(name[i]))
++ name[i] = tolower(name[i]);
++ }
++#else
++ for (i = 0; i < len; i++) {
++ if (name[i] == '\\')
++ name[i] = '/';
++ else if (!noconvertcase && isupper(name[i]))
++ name[i] = tolower(name[i]);
++ }
++#endif
++}
++
++/* ------------------------------------------------------------------------ */
++static void
++generic_to_unix_filename(name, len)
++ register char *name;
++ register int len;
++{
++ register int i;
++ boolean lower_case_used = FALSE;
++
++#ifdef MULTIBYTE_CHAR
++ for (i = 0; i < len; i++) {
++ if (MULTIBYTE_FIRST_P(name[i]) &&
++ MULTIBYTE_SECOND_P(name[i + 1]))
++ i++;
++ else if (islower(name[i])) {
++ lower_case_used = TRUE;
++ break;
++ }
++ }
++ for (i = 0; i < len; i++) {
++ if (MULTIBYTE_FIRST_P(name[i]) &&
++ MULTIBYTE_SECOND_P(name[i + 1]))
++ i++;
++ else if (name[i] == '\\')
++ name[i] = '/';
++ else if (!noconvertcase && !lower_case_used && isupper(name[i]))
++ name[i] = tolower(name[i]);
++ }
++#else
++ for (i = 0; i < len; i++)
++ if (islower(name[i])) {
++ lower_case_used = TRUE;
++ break;
++ }
++ for (i = 0; i < len; i++) {
++ if (name[i] == '\\')
++ name[i] = '/';
++ else if (!noconvertcase && !lower_case_used && isupper(name[i]))
++ name[i] = tolower(name[i]);
++ }
++#endif
++}
++
++/* ------------------------------------------------------------------------ */
++static void
++macos_to_unix_filename(name, len)
++ register char *name;
++ register int len;
++{
++ register int i;
++
++ for (i = 0; i < len; i++) {
++ if (name[i] == ':')
++ name[i] = '/';
++ else if (name[i] == '/')
++ name[i] = ':';
++ }
++}
++
++/* ------------------------------------------------------------------------ */
++static void
++unix_to_generic_filename(name, len)
++ register char *name;
++ register int len;
++{
++ register int i;
++
++ for (i = 0; i < len; i++) {
++ if (name[i] == '/')
++ name[i] = '\\';
++ else if (islower(name[i]))
++ name[i] = toupper(name[i]);
++ }
++}
++
++/* ------------------------------------------------------------------------ */
++/* */
++/* Generic stamp format: */
++/* */
++/* 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 */
++/* |<-------- year ------->|<- month ->|<-- day -->| */
++/* */
++/* 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 */
++/* |<--- hour --->|<---- minute --->|<- second*2 ->| */
++/* */
++/* ------------------------------------------------------------------------ */
++
++/*
++ * NOTE : If you don't have `gettimeofday(2)', or your gettimeofday(2)
++ * returns bogus timezone information, try FTIME, MKTIME, TIMELOCAL or TZSET.
++ */
++
++/* choose one */
++#if defined(MKTIME)
++#ifdef TIMELOCAL
++#undef TIMELOCAL
++#endif
++#endif /* defined(MKTIME) */
++
++#if defined(MKTIME) || defined(TIMELOCAL)
++#ifdef TZSET
++#undef TZSET
++#endif
++#endif /* defined(MKTIME) || defined(TIMELOCAL) */
++
++#if defined(MKTIME) || defined(TIMELOCAL) || defined(TZSET)
++#ifdef FTIME
++#undef FTIME
++#endif
++#endif
++
++#if defined(MKTIME) || defined(TIMELOCAL) || defined(TZSET) || defined(FTIME)
++#ifdef GETTIMEOFDAY
++#undef GETTIMEOFDAY
++#endif
++#else
++#ifndef GETTIMEOFDAY
++#define GETTIMEOFDAY /* use gettimeofday() */
++#endif
++#endif
++
++#ifdef FTIME
++#include <sys/timeb.h>
++#endif
++
++/*
++ * You may define as : #define TIMEZONE_HOOK \ extern long
++ * timezone ; \ extern void tzset();
++ */
++#ifdef TIMEZONE_HOOK
++TIMEZONE_HOOK
++/* Which do you like better, `TIMEZONE_HOOK' or `TIMEZONE_HOOK;' ? */
++#endif
++
++#if defined(TZSET) && defined(_MINIX)
++extern long timezone; /* not defined in time.h */
++#endif
++
++/* ------------------------------------------------------------------------ */
++#if defined(FTIME) || defined(GETTIMEOFDAY) || defined(TZSET)
++static long
++gettz()
++#ifdef TZSET
++{
++ tzset();
++ return timezone;
++}
++#endif
++
++/* ------------------------------------------------------------------------ */
++#if !defined(TZSET) && defined(FTIME)
++{
++ struct timeb buf;
++
++ ftime(&buf);
++ return buf.timezone * 60L;
++}
++#endif
++
++/* ------------------------------------------------------------------------ */
++#if !defined(TZSET) && !defined(FTIME) /* maybe defined(GETTIMEOFDAY) */
++{
++#ifdef HAVE_TM_ZONE
++ time_t tt;
++
++ time(&tt);
++ return -localtime(&tt)->tm_gmtoff;
++#else /* HAVE_TM_ZONE */
++ struct timeval tp;
++ struct timezone tzp;
++ gettimeofday(&tp, &tzp);/* specific to 4.3BSD */
++ /*
++ * return (tzp.tz_minuteswest * 60L + (tzp.tz_dsttime != 0 ? 60L *
++ * 60L : 0));
++ */
++ return (tzp.tz_minuteswest * 60L);
++#endif /* HAVE_TM_ZONE */
++}
++#endif
++#endif /* defined(FTIME) || defined(GETTIMEOFDAY) ||
++ * defined(TZSET) */
++
++/* ------------------------------------------------------------------------ */
++#ifdef NOT_USED
++static struct tm *
++msdos_to_unix_stamp_tm(a)
++ long a;
++{
++ static struct tm t;
++
++ t.tm_sec = (a & 0x1f) * 2;
++ t.tm_min = (a >> 5) & 0x3f;
++ t.tm_hour = (a >> 11) & 0x1f;
++ t.tm_mday = (a >> 16) & 0x1f;
++ t.tm_mon = ((a >> 16 + 5) & 0x0f) - 1;
++ t.tm_year = ((a >> 16 + 9) & 0x7f) + 80;
++ return &t;
++}
++#endif
++
++/* ------------------------------------------------------------------------ */
++static time_t
++generic_to_unix_stamp(t)
++ long t;
++#if defined(MKTIME) || defined(TIMELOCAL)
++{
++ struct tm dostm;
++
++ /*
++ * special case: if MSDOS format date and time were zero, then we
++ * set time to be zero here too.
++ */
++ if (t == 0)
++ return (time_t) 0;
++
++ dostm.tm_sec = (t & 0x1f) * 2;
++ dostm.tm_min = t >> 5 & 0x3f;
++ dostm.tm_hour = t >> 11 & 0x1f;
++ dostm.tm_mday = t >> 16 & 0x1f;
++ dostm.tm_mon = (t >> 16 + 5 & 0x0f) - 1; /* 0..11 */
++ dostm.tm_year = (t >> 16 + 9 & 0x7f) + 80;
++#if 0
++ dostm.tm_isdst = 0; /* correct? */
++#endif
++ dostm.tm_isdst = -1; /* correct? */
++#ifdef MKTIME
++ return (time_t) mktime(&dostm);
++#else /* maybe defined(TIMELOCAL) */
++ return (time_t) timelocal(&dostm);
++#endif
++}
++
++#else /* defined(MKTIME) || defined(TIMELOCAL) */
++{
++ int year, month, day, hour, min, sec;
++ long longtime;
++ static unsigned int dsboy[12] = {0, 31, 59, 90, 120, 151,
++ 181, 212, 243, 273, 304, 334};
++ unsigned int days;
++
++ /*
++ * special case: if MSDOS format date and time were zero, then we
++ * set time to be zero here too.
++ */
++ if (t == 0)
++ return (time_t) 0;
++
++ year = ((int) (t >> 16 + 9) & 0x7f) + 1980;
++ month = (int) (t >> 16 + 5) & 0x0f; /* 1..12 means Jan..Dec */
++ day = (int) (t >> 16) & 0x1f; /* 1..31 means 1st,...31st */
++
++ hour = ((int) t >> 11) & 0x1f;
++ min = ((int) t >> 5) & 0x3f;
++ sec = ((int) t & 0x1f) * 2;
++
++ /* Calculate days since 1970.01.01 */
++ days = (365 * (year - 1970) + /* days due to whole years */
++ (year - 1970 + 1) / 4 + /* days due to leap years */
++ dsboy[month - 1] + /* days since beginning of this year */
++ day - 1); /* days since beginning of month */
++
++ if ((year % 4 == 0) &&
++ (year % 100 != 0 || year % 400 == 0) && /* 1999.5.24 t.oka */
++ (month >= 3)) /* if this is a leap year and month */
++ days++; /* is March or later, add a day */
++
++ /* Knowing the days, we can find seconds */
++ longtime = (((days * 24) + hour) * 60 + min) * 60 + sec;
++ longtime += gettz(); /* adjust for timezone */
++
++ /* LONGTIME is now the time in seconds, since 1970/01/01 00:00:00. */
++ return (time_t) longtime;
++}
++#endif /* defined(MKTIME) || defined(TIMELOCAL) */
++
++/* ------------------------------------------------------------------------ */
++static long
++unix_to_generic_stamp(t)
++ time_t t;
++{
++ struct tm *tm = localtime(&t);
++
++ return ((((long) (tm->tm_year - 80)) << 25) +
++ (((long) (tm->tm_mon + 1)) << 21) +
++ (((long) tm->tm_mday) << 16) +
++ (long) ((tm->tm_hour << 11) +
++ (tm->tm_min << 5) +
++ (tm->tm_sec / 2)));
++}
++
++/* ------------------------------------------------------------------------ */
++/* build header functions */
++/* ------------------------------------------------------------------------ */
++boolean
++get_header(fp, hdr)
++ FILE *fp;
++ register LzHeader *hdr;
++{
++ int header_size;
++ int name_length;
++ char data[LZHEADER_STRAGE];
++ char dirname[FILENAME_LENGTH];
++ int dir_length = 0;
++ int checksum;
++ int i;
++ char *ptr;
++ int extend_size;
++ int dmy;
++
++ bzero(hdr, sizeof(LzHeader));
++
++ if (((header_size = getc(fp)) == EOF) || (header_size == 0)) {
++ return FALSE; /* finish */
++ }
++
++ if (fread(data + I_HEADER_CHECKSUM,
++ sizeof(char), header_size - 1, fp) < header_size - 1) {
++ fatal_error("Invalid header (LHarc file ?)");
++ return FALSE; /* finish */
++ }
++ setup_get(data + I_HEADER_LEVEL);
++ hdr->header_level = get_byte();
++ if (hdr->header_level != 2 &&
++ fread(data + header_size, sizeof(char), 2, fp) < 2) {
++ fatal_error("Invalid header (LHarc file ?)");
++ return FALSE; /* finish */
++ }
++
++ if (hdr->header_level >= 3) {
++ fatal_error("Unknown level header");
++ return FALSE;
++ }
++
++ setup_get(data + I_HEADER_CHECKSUM);
++ checksum = get_byte();
++
++ if (hdr->header_level == 2) {
++ hdr->header_size = header_size + checksum*256;
++ } else {
++ hdr->header_size = header_size;
++ }
++ bcopy(data + I_METHOD, hdr->method, METHOD_TYPE_STRAGE);
++ setup_get(data + I_PACKED_SIZE);
++ hdr->packed_size = get_longword();
++ hdr->original_size = get_longword();
++ hdr->last_modified_stamp = get_longword();
++ hdr->attribute = get_byte();
++
++ if ((hdr->header_level = get_byte()) != 2) {
++ if (calc_sum(data + I_METHOD, header_size) != checksum)
++ warning("Checksum error (LHarc file?)", "");
++ name_length = get_byte();
++ for (i = 0; i < name_length; i++)
++ hdr->name[i] = (char) get_byte();
++ hdr->name[name_length] = '\0';
++ }
++ else {
++ hdr->unix_last_modified_stamp = hdr->last_modified_stamp;
++ name_length = 0;
++ }
++
++ /* defaults for other type */
++ hdr->unix_mode = UNIX_FILE_REGULAR | UNIX_RW_RW_RW;
++ hdr->unix_gid = 0;
++ hdr->unix_uid = 0;
++
++ if (hdr->header_level == 0) {
++ extend_size = header_size - name_length -22;
++ if (extend_size < 0) {
++ if (extend_size == -2) {
++ hdr->extend_type = EXTEND_GENERIC;
++ hdr->has_crc = FALSE;
++ } else {
++ fatal_error("Unkonwn header (lha file?)");
++ return FALSE;
++ }
++ } else {
++ hdr->has_crc = TRUE;
++ hdr->crc = get_word();
++ }
++
++ if (extend_size >= 1) {
++ hdr->extend_type = get_byte();
++ extend_size--;
++ }
++ if (hdr->extend_type == EXTEND_UNIX) {
++ if (extend_size >= 11) {
++ hdr->minor_version = get_byte();
++ hdr->unix_last_modified_stamp = (time_t) get_longword();
++ hdr->unix_mode = get_word();
++ hdr->unix_uid = get_word();
++ hdr->unix_gid = get_word();
++ extend_size -= 11;
++ } else {
++ hdr->extend_type = EXTEND_GENERIC;
++ }
++ }
++ while (extend_size-- > 0)
++ dmy = get_byte();
++ if (hdr->extend_type == EXTEND_UNIX)
++ return TRUE;
++ } else if (hdr->header_level == 1) {
++ hdr->has_crc = TRUE;
++ extend_size = header_size - name_length-25;
++ hdr->crc = get_word();
++ hdr->extend_type = get_byte();
++ while (extend_size-- > 0)
++ dmy = get_byte();
++ } else { /* level 2 */
++ hdr->has_crc = TRUE;
++ hdr->crc = get_word();
++ hdr->extend_type = get_byte();
++ }
++
++ if (hdr->header_level > 0) {
++ /* Extend Header */
++ if (hdr->header_level != 2)
++ setup_get(data + hdr->header_size);
++ ptr = get_ptr;
++ while ((header_size = get_word()) != 0) {
++ if (hdr->header_level != 2 &&
++ ((data + LZHEADER_STRAGE - get_ptr < header_size) ||
++ fread(get_ptr, sizeof(char), header_size, fp) < header_size)) {
++ fatal_error("Invalid header (LHa file ?)");
++ return FALSE;
++ }
++ switch (get_byte()) {
++ case 0:
++ /*
++ * header crc
++ */
++ setup_get(get_ptr + header_size - 3);
++ break;
++ case 1:
++ /*
++ * filename
++ */
++ for (i = 0; i < header_size - 3; i++)
++ hdr->name[i] = (char) get_byte();
++ hdr->name[header_size - 3] = '\0';
++ name_length = header_size - 3;
++ break;
++ case 2:
++ /*
++ * directory
++ */
++ for (i = 0; i < header_size - 3; i++)
++ dirname[i] = (char) get_byte();
++ dirname[header_size - 3] = '\0';
++ convdelim(dirname, DELIM);
++ dir_length = header_size - 3;
++ break;
++ case 0x40:
++ /*
++ * MS-DOS attribute
++ */
++ if (hdr->extend_type == EXTEND_MSDOS ||
++ hdr->extend_type == EXTEND_HUMAN ||
++ hdr->extend_type == EXTEND_GENERIC)
++ hdr->attribute = get_word();
++ break;
++ case 0x50:
++ /*
++ * UNIX permission
++ */
++ if (hdr->extend_type == EXTEND_UNIX)
++ hdr->unix_mode = get_word();
++ break;
++ case 0x51:
++ /*
++ * UNIX gid and uid
++ */
++ if (hdr->extend_type == EXTEND_UNIX) {
++ hdr->unix_gid = get_word();
++ hdr->unix_uid = get_word();
++ }
++ break;
++ case 0x52:
++ /*
++ * UNIX group name
++ */
++ setup_get(get_ptr + header_size - 3);
++ break;
++ case 0x53:
++ /*
++ * UNIX user name
++ */
++ setup_get(get_ptr + header_size - 3);
++ break;
++ case 0x54:
++ /*
++ * UNIX last modified time
++ */
++ if (hdr->extend_type == EXTEND_UNIX)
++ hdr->unix_last_modified_stamp = (time_t) get_longword();
++ break;
++ default:
++ /*
++ * other headers
++ */
++ setup_get(get_ptr + header_size - 3);
++ break;
++ }
++ }
++ if (hdr->header_level != 2 && get_ptr - ptr != 2) {
++ hdr->packed_size -= get_ptr - ptr - 2;
++ hdr->header_size += get_ptr - ptr - 2;
++ }
++ }
++
++ switch (hdr->extend_type) {
++ case EXTEND_MSDOS:
++ msdos_to_unix_filename(hdr->name, name_length);
++ msdos_to_unix_filename(dirname, dir_length);
++ case EXTEND_HUMAN:
++ if (hdr->header_level == 2)
++ hdr->unix_last_modified_stamp = hdr->last_modified_stamp;
++ else
++ hdr->unix_last_modified_stamp =
++ generic_to_unix_stamp(hdr->last_modified_stamp);
++ break;
++
++#ifdef OSK
++ case EXTEND_OS68K:
++ case EXTEND_XOSK:
++#endif
++ case EXTEND_UNIX:
++ break;
++
++ case EXTEND_MACOS:
++ macos_to_unix_filename(hdr->name, name_length);
++ /* macos_to_unix_filename(dirname, dir_length); */
++ hdr->unix_last_modified_stamp =
++ generic_to_unix_stamp(hdr->last_modified_stamp);
++ break;
++
++ default:
++ generic_to_unix_filename(hdr->name, name_length);
++ generic_to_unix_filename(dirname, dir_length);
++ if (hdr->header_level == 2)
++ hdr->unix_last_modified_stamp = hdr->last_modified_stamp;
++ else
++ hdr->unix_last_modified_stamp =
++ generic_to_unix_stamp(hdr->last_modified_stamp);
++ }
++
++ if (dir_length) {
++ strcat(dirname, hdr->name);
++ strcpy(hdr->name, dirname);
++ name_length += dir_length;
++ }
++
++ return TRUE;
++}
++
++/* ------------------------------------------------------------------------ */
++void
++init_header(name, v_stat, hdr)
++ char *name;
++ struct stat *v_stat;
++ LzHeader *hdr;
++{
++ int len;
++
++ if (compress_method == LZHUFF5_METHOD_NUM) /* Changed N.Watazaki */
++ bcopy(LZHUFF5_METHOD, hdr->method, METHOD_TYPE_STRAGE);
++ else if (compress_method)
++ bcopy(LZHUFF1_METHOD, hdr->method, METHOD_TYPE_STRAGE);
++ else
++ bcopy(LZHUFF0_METHOD, hdr->method, METHOD_TYPE_STRAGE);
++
++ hdr->packed_size = 0;
++ hdr->original_size = v_stat->st_size;
++ hdr->last_modified_stamp = unix_to_generic_stamp(v_stat->st_mtime);
++ hdr->attribute = GENERIC_ATTRIBUTE;
++ hdr->header_level = header_level;
++ strcpy(hdr->name, name);
++ len = strlen(name);
++ hdr->crc = 0x0000;
++ hdr->extend_type = EXTEND_UNIX;
++ hdr->unix_last_modified_stamp = v_stat->st_mtime;
++ /* since 00:00:00 JAN.1.1970 */
++#ifdef NOT_COMPATIBLE_MODE
++ /* Please need your modification in this space. */
++#else
++ hdr->unix_mode = v_stat->st_mode;
++#endif
++
++ hdr->unix_uid = v_stat->st_uid;
++ hdr->unix_gid = v_stat->st_gid;
++
++ if (is_directory(v_stat)) {
++ bcopy(LZHDIRS_METHOD, hdr->method, METHOD_TYPE_STRAGE);
++ hdr->attribute = GENERIC_DIRECTORY_ATTRIBUTE;
++ hdr->original_size = 0;
++ if (len > 0 && hdr->name[len - 1] != '/')
++ strcpy(&hdr->name[len++], "/");
++ }
++
++#ifdef S_IFLNK
++ if (is_symlink(v_stat)) {
++ char lkname[257];
++ int len;
++ bcopy(LZHDIRS_METHOD, hdr->method, METHOD_TYPE_STRAGE);
++ hdr->attribute = GENERIC_DIRECTORY_ATTRIBUTE;
++ hdr->original_size = 0;
++ len = readlink(name, lkname, 256);
++ lkname[len] = (char)'\0';
++ sprintf(hdr->name, "%s|%s", hdr->name, lkname);
++ }
++#endif
++ if (generic_format)
++ unix_to_generic_filename(hdr->name, len);
++}
++
++/* ------------------------------------------------------------------------ */
++/* Write unix extended header or generic header. */
++void
++write_header(nafp, hdr)
++ FILE *nafp;
++ LzHeader *hdr;
++{
++ int header_size;
++ int name_length;
++ char data[LZHEADER_STRAGE];
++ char *p;
++ char *headercrc_ptr;
++
++ bzero(data, LZHEADER_STRAGE);
++ bcopy(hdr->method, data + I_METHOD, METHOD_TYPE_STRAGE);
++ setup_put(data + I_PACKED_SIZE);
++ put_longword(hdr->packed_size);
++ put_longword(hdr->original_size);
++
++ if (hdr->header_level == HEADER_LEVEL2)
++ put_longword((long) hdr->unix_last_modified_stamp);
++ else
++ put_longword(hdr->last_modified_stamp);
++
++ switch (hdr->header_level) {
++ case HEADER_LEVEL0:
++ put_byte(hdr->attribute);
++ break;
++ case HEADER_LEVEL1:
++ case HEADER_LEVEL2:
++ put_byte(0x20);
++ break;
++ }
++
++ put_byte(hdr->header_level);
++
++ convdelim(hdr->name, DELIM2);
++ if (hdr->header_level != HEADER_LEVEL2) {
++ if (p = (char *) rindex(hdr->name, DELIM2))
++ name_length = strlen(++p);
++ else
++ name_length = strlen(hdr->name);
++ put_byte(name_length);
++ bcopy(p ? p : hdr->name, data + I_NAME, name_length);
++ setup_put(data + I_NAME + name_length);
++ }
++
++ put_word(hdr->crc);
++ if (header_level == HEADER_LEVEL0) {
++ if (generic_format) {
++ header_size = I_GENERIC_HEADER_BOTTOM - 2 + name_length;
++ data[I_HEADER_SIZE] = header_size;
++ data[I_HEADER_CHECKSUM] = calc_sum(data + I_METHOD, header_size);
++ } else {
++ /* write old-style extend header */
++ put_byte(EXTEND_UNIX);
++ put_byte(CURRENT_UNIX_MINOR_VERSION);
++ put_longword((long) hdr->unix_last_modified_stamp);
++ put_word(hdr->unix_mode);
++ put_word(hdr->unix_uid);
++ put_word(hdr->unix_gid);
++ header_size = I_UNIX_EXTEND_BOTTOM - 2 + name_length;
++ data[I_HEADER_SIZE] = header_size;
++ data[I_HEADER_CHECKSUM] = calc_sum(data + I_METHOD, header_size);
++ }
++ } else {
++ /* write extend header. */
++ char *ptr;
++
++ if (generic_format)
++ put_byte(0x00);
++ else
++ put_byte(EXTEND_UNIX);
++
++ ptr = put_ptr;
++ if (hdr->header_level == HEADER_LEVEL2) {
++ /* write common header */
++ put_word(5);
++ put_byte(0x00);
++ headercrc_ptr = put_ptr;
++ put_word(0x0000);
++ }
++
++ if (generic_format) {
++ header_size = put_ptr - data; /* +2 for last 0x0000 */
++ } else {
++ put_word(5);
++ if (hdr->header_level == HEADER_LEVEL1)
++ header_size = put_ptr - data - 2;
++ put_byte(0x50); /* permission */
++ put_word(hdr->unix_mode);
++ put_word(7);
++ put_byte(0x51); /* gid and uid */
++ put_word(hdr->unix_gid);
++ put_word(hdr->unix_uid);
++
++ if (p = (char *) rindex(hdr->name, DELIM2)) {
++ int i;
++
++ name_length = p - hdr->name + 1;
++ put_word(name_length + 3);
++ put_byte(2); /* dirname */
++ for (i = 0; i < name_length; i++)
++ put_byte(hdr->name[i]);
++ }
++ } /* if generic .. */
++
++ if (header_level != HEADER_LEVEL2) {
++ if (!generic_format) {
++ put_word(7);
++ put_byte(0x54); /* time stamp */
++ put_longword(hdr->unix_last_modified_stamp);
++ }
++ hdr->packed_size += put_ptr - ptr;
++ ptr = put_ptr;
++ setup_put(data + I_PACKED_SIZE);
++ put_longword(hdr->packed_size);
++ put_ptr = ptr;
++ data[I_HEADER_SIZE] = header_size;
++ data[I_HEADER_CHECKSUM] = calc_sum(data + I_METHOD, header_size);
++ } else { /* header level 2 */
++ int i;
++ if (p = (char *) rindex(hdr->name, DELIM2))
++ name_length = strlen(++p);
++ else {
++ p = hdr->name;
++ name_length = strlen(hdr->name);
++ }
++ put_word(name_length + 3);
++ put_byte(1); /* filename */
++ for (i = 0; i < name_length; i++)
++ put_byte(*p++);
++ } /* if he.. != HEAD_LV2 */
++ header_size = put_ptr - data;
++ }
++
++ if (header_level == HEADER_LEVEL2) {
++ unsigned short hcrc;
++ setup_put(data + I_HEADER_SIZE);
++ put_word(header_size + 2);
++ /* common header */
++ hcrc = calc_header_crc(data, (unsigned int) header_size + 2);
++ setup_put(headercrc_ptr);
++ put_word(hcrc);
++ }
++
++ if (fwrite(data, sizeof(char), header_size + 2, nafp) == 0)
++ fatal_error("Cannot write to temporary file");
++
++ convdelim(hdr->name, DELIM);
++}
++
++/* Local Variables: */
++/* mode:c */
++/* tab-width:4 */
++/* compile-command:"gcc -c header.c" */
++/* End: */
+--- lha-1.14i.orig/debian/org/lharc.c
++++ lha-1.14i/debian/org/lharc.c
+@@ -0,0 +1,1135 @@
++/* ------------------------------------------------------------------------ */
++/* LHa for UNIX */
++/* lharc.c -- append to archive */
++/* */
++/* Copyright (C) MCMLXXXIX Yooichi.Tagawa */
++/* Modified Nobutaka Watazaki */
++/* Thanks to H.Yoshizaki. (MS-DOS LHarc) */
++/* */
++/* Ver. 0.00 Original 1988.05.23 Y.Tagawa */
++/* Ver. 0.01 Alpha Version (for 4.2BSD) 1989.05.28 Y.Tagawa */
++/* Ver. 0.02 Alpha Version Rel.2 1989.05.29 Y.Tagawa */
++/* Ver. 0.03 Release #3 Beta Version 1989.07.02 Y.Tagawa */
++/* Ver. 0.03a Debug 1989.07.03 Y.Tagawa */
++/* Ver. 0.03b Modified 1989.07.13 Y.Tagawa */
++/* Ver. 0.03c Debug (Thanks to void@rena.dit.junet) */
++/* 1989.08.09 Y.Tagawa */
++/* Ver. 0.03d Modified (quiet and verbose) 1989.09.14 Y.Tagawa */
++/* V1.00 Fixed 1989.09.22 Y.Tagawa */
++/* V1.01 Bug Fixed 1989.12.25 Y.Tagawa */
++/* */
++/* DOS-Version Original LHx V C2.01 (C) H.Yohizaki */
++/* */
++/* V2.00 UNIX Lharc + DOS LHx -> OSK LHx 1990.11.01 Momozou */
++/* V2.01 Minor Modified 1990.11.24 Momozou */
++/* */
++/* Ver. 0.02 LHx for UNIX 1991.11.18 M.Oki */
++/* Ver. 0.03 LHa for UNIX 1991.12.17 M.Oki */
++/* Ver. 0.04 LHa for UNIX beta version 1992.01.20 M.Oki */
++/* Ver. 1.00 LHa for UNIX Fixed 1992.03.19 M.Oki */
++/* */
++/* Ver. 1.10 for Symblic Link 1993.06.25 N.Watazaki */
++/* Ver. 1.11 for Symblic Link Bug Fixed 1993.08.18 N.Watazaki */
++/* Ver. 1.12 for File Date Check 1993.10.28 N.Watazaki */
++/* Ver. 1.13 Bug Fixed (Idicator calcurate) 1994.02.21 N.Watazaki */
++/* Ver. 1.13a Bug Fixed (Sym. Link delete) 1994.03.11 N.Watazaki */
++/* Ver. 1.13b Bug Fixed (Sym. Link delete) 1994.07.29 N.Watazaki */
++/* Ver. 1.14 Source All chagned 1995.01.14 N.Watazaki */
++/* Ver. 1.14b,c Bug Fixed 1996.03.07 t.okamoto */
++/* Ver. 1.14d Version up 1997.01.12 t.okamoto */
++/* Ver. 1.14g Bug Fixed 2000.05.06 t.okamoto */
++/* Ver. 1.14i Modified 2000.10.06 t.okamoto */
++/* ------------------------------------------------------------------------ */
++#define LHA_MAIN_SRC
++
++#include "lha.h"
++
++/* ------------------------------------------------------------------------ */
++/* PROGRAM */
++/* ------------------------------------------------------------------------ */
++static int cmd = CMD_UNKNOWN;
++
++/* 1996.8.13 t.okamoto */
++#if 0
++char **cmd_filev;
++int cmd_filec;
++
++char *archive_name;
++char expanded_archive_name[FILENAME_LENGTH];
++char temporary_name[FILENAME_LENGTH];
++char backup_archive_name[FILENAME_LENGTH];
++#endif
++
++/* static functions */
++static void sort_files();
++static void print_version();
++
++char *extract_directory = NULL;
++char **xfilev;
++int xfilec = 257;
++
++/* 1996.8.13 t.okamoto */
++#if 0
++char *writting_filename;
++char *reading_filename;
++
++int archive_file_mode;
++int archive_file_gid;
++#endif
++/* ------------------------------------------------------------------------ */
++static void
++init_variable() /* Added N.Watazaki */
++{
++/* options */
++ quiet = FALSE;
++ text_mode = FALSE;
++ verbose = FALSE;
++ noexec = FALSE; /* debugging option */
++ force = FALSE;
++ prof = FALSE;
++#ifndef SUPPORT_LH7
++ compress_method = LZHUFF5_METHOD_NUM;
++#endif
++#ifdef SUPPORT_LH7
++ compress_method = LZHUFF7_METHOD_NUM;
++#endif
++
++ header_level = HEADER_LEVEL1;
++ quiet_mode = 0;
++
++#ifdef EUC
++ euc_mode = FALSE;
++#endif
++
++/* view command flags */
++ verbose_listing = FALSE;
++
++/* extract command flags */
++ output_to_stdout = FALSE;
++
++/* append command flags */
++ new_archive = FALSE;
++ update_if_newer = FALSE;
++ delete_after_append = FALSE;
++ generic_format = FALSE;
++
++ remove_temporary_at_error = FALSE;
++ recover_archive_when_interrupt = FALSE;
++ remove_extracting_file_when_interrupt = FALSE;
++ get_filename_from_stdin = FALSE;
++ ignore_directory = FALSE;
++ verify_mode = FALSE;
++
++ noconvertcase = FALSE;
++
++ extract_directory = NULL;
++ xfilec = 257;
++}
++
++/* ------------------------------------------------------------------------ */
++/* NOTES : Text File Format */
++/* GENERATOR NewLine */
++/* [generic] 0D 0A */
++/* [MS-DOS] 0D 0A */
++/* [OS9][MacOS] 0D */
++/* [UNIX] 0A */
++/* ------------------------------------------------------------------------ */
++static void
++print_tiny_usage_and_exit()
++{
++ fprintf(stderr, "\
++LHarc for UNIX V 1.02 Copyright(C) 1989 Y.Tagawa\n\
++LHx for MSDOS V C2.01 Copyright(C) 1990 H.Yoshizaki\n\
++LHx(arc) for OSK V 2.01 Modified 1990 Momozou\n\
++LHa for UNIX V 1.00 Copyright(C) 1992 Masaru Oki\n\
++LHa for UNIX V 1.14 Modified 1995 Nobutaka Watazaki\n\
++LHa for UNIX V 1.14i Modified 2000 Tsugio Okamoto\n\
++");
++ fprintf(stderr, "\
++usage: lha [-]{axelvudmcp[q[num]][vnfodizg012]}[w=<dir>] archive_file [file...]\n\
++commands: options:\n\
++ a Add(or replace) to archive q{num} quiet (num:quiet mode)\n\
++ x,e EXtract from archive v verbose\n\
++ l,v List / Verbose List n not execute\n\
++ u Update newer files to archive f force (over write at extract)\n\
++ d Delete from archive t FILES are TEXT file\n");
++#ifdef SUPPORT_LH7
++ fprintf(stderr, "\
++ m Move to archive (means 'ad') o[567] compression method (a/u)\n\
++");
++#endif
++#ifndef SUPPORT_LH7
++ fprintf(stderr, "\
++ m Move to archive (means 'ad') o use LHarc compatible method (a/u)\n\
++");
++#endif
++ fprintf(stderr, "\
++ c re-Construct new archive w=<dir> specify extract directory (a/u/m/x/e)\n\
++ p Print to STDOUT from archive d delete FILES after (a/u/c)\n\
++ t Test file CRC in archive i ignore directory path (x/e)\n\
++ z files not compress (a/u)\n\
++ g Generic format (for compatibility)\n\
++ or not convert case when extracting\n\
++ 0/1/2 header level (a/u)\n\
++");
++#ifdef EUC
++ fprintf(stderr, "\
++ e TEXT code convert from/to EUC\n\
++");
++#endif
++ exit(1);
++}
++
++/* ------------------------------------------------------------------------ */
++int
++main(argc, argv)
++ int argc;
++ char *argv[];
++{
++ char *p, inpbuf[256];
++
++ int i;
++ int ac;
++ char **av, *m;
++
++ init_variable(); /* Added N.Watazaki */
++
++ ac = argc;
++ av = (char **)malloc( sizeof(char*)*argc );
++ if (av == NULL) fatal_error("not enough memory\n");
++ for (i=0; i<argc; i++) {
++ if ((av[i] = strdup( argv[i] )) == NULL)
++ fatal_error("not enough memory\n");
++ }
++
++ if (ac < 2)
++ print_tiny_usage_and_exit();
++
++ if (strcmp(av[1], "--version") == 0) {
++ print_version();
++ exit(1);
++ }
++
++ if (ac < 3) {
++ cmd = CMD_LIST;
++ av--; /* argv--; */ /* 1999.7.18 */
++ ac++; /* argc++; */
++ goto work;
++ }
++
++ m = av[1];
++
++ if (m[0] == '-')
++ m++;
++ /* commands */
++ switch (*m) {
++ case 'x':
++ case 'e':
++ cmd = CMD_EXTRACT;
++ break;
++
++ case 'p':
++ output_to_stdout = TRUE;
++ cmd = CMD_EXTRACT;
++ break;
++
++ case 'c':
++ new_archive = TRUE;
++ cmd = CMD_ADD;
++ break;
++
++ case 'a':
++ cmd = CMD_ADD;
++ break;
++
++ case 'd':
++ cmd = CMD_DELETE;
++ break;
++
++ case 'u':
++ update_if_newer = TRUE;
++ cmd = CMD_ADD;
++ break;
++
++ case 'm':
++ delete_after_append = TRUE;
++ cmd = CMD_ADD;
++ break;
++
++ case 'v':
++ verbose_listing = TRUE;
++ cmd = CMD_LIST;
++ break;
++
++ case 'l':
++ cmd = CMD_LIST;
++ break;
++
++ case 't':
++ cmd = CMD_EXTRACT;
++ verify_mode = TRUE;
++ break;
++
++ default:
++ print_tiny_usage_and_exit();
++
++ }
++
++ /* options */
++ /* p = &argv[1][1]; */
++ p = m+1;
++ while ( *p != 0 ) {
++ switch ((*p++)) {
++ case 'q':
++ switch (*p) {
++ case '0':
++ case '1':
++ quiet_mode = *p - '0';
++ ++p;
++ break;
++ case '2':
++ default:
++ quiet = TRUE;
++ break;
++ }
++ case 'f':
++ force = TRUE;
++ break;
++ case 'p':
++ prof = TRUE;
++ break;
++ case 'v':
++ verbose = TRUE;
++ break;
++ case 't':
++ text_mode = TRUE;
++ break;
++#ifdef EUC
++ case 'e':
++ text_mode = TRUE;
++ euc_mode = TRUE;
++ break;
++#endif
++ case 'n':
++ noexec = TRUE;
++ break;
++ case 'g':
++ generic_format = TRUE;
++ noconvertcase = TRUE;
++ header_level = 0;
++ break;
++ case 'd':
++ delete_after_append = TRUE;
++ break;
++ case 'o':
++ switch (*p) {
++ case 0:
++ compress_method = LZHUFF1_METHOD_NUM;
++ header_level = 0;
++ break;
++ case '5':
++ compress_method = LZHUFF5_METHOD_NUM;
++ p++;
++ break;
++#ifdef SUPPORT_LH7
++ case '6':
++ compress_method = LZHUFF6_METHOD_NUM;
++ p++;
++ break;
++ case '7':
++ compress_method = LZHUFF7_METHOD_NUM;
++ p++;
++ break;
++#endif
++ default:
++ fprintf(stderr, "LHa: error option o%c\n", p[-1]);
++ exit(1);
++ }
++ break;
++ case 'z':
++ compress_method = LZHUFF0_METHOD_NUM; /* Changed N.Watazaki */
++ break;
++ case 'i':
++ ignore_directory = TRUE;
++ break;
++ case 'w':
++ if (*p == '=')
++ p++;
++ extract_directory = p;
++ while (*p)
++ p++;
++ break;
++ case '0':
++ header_level = HEADER_LEVEL0;
++ break;
++ case '1':
++ header_level = HEADER_LEVEL1;
++ break;
++ case '2':
++ header_level = HEADER_LEVEL2;
++ break;
++ default:
++ fprintf(stderr, "LHa: Unknown option '%c'.\n", p[-1]);
++ exit(1);
++ }
++ }
++
++work:
++ /* archive file name */
++ archive_name = av[2];
++
++ if (!strcmp(archive_name, "-")) {
++ if (!isatty(1) && cmd == CMD_ADD)
++ quiet = TRUE;
++ }
++ else {
++ if (ac == 3 && !isatty(0)) { /* 1999.7.18 */
++ get_filename_from_stdin = TRUE;
++ }
++ }
++
++ /* target file name */
++ if (get_filename_from_stdin) {
++ cmd_filec = 0;
++ if ((xfilev = (char **) malloc(sizeof(char *) * xfilec)) == NULL)
++ fatal_error("Virtual memory exhausted\n");
++ while (fgets(inpbuf, sizeof(inpbuf), stdin)) {
++ /* delete \n if it exist */
++ i=0; p=inpbuf;
++ while (i < sizeof(inpbuf) && p != 0) {
++ if (*p == '\n') {
++ *p = 0;
++ break;
++ }
++ p++; i++;
++ }
++
++ if (cmd_filec >= xfilec) {
++ xfilec += 256;
++ cmd_filev = (char **) realloc(xfilev,
++ sizeof(char *) * xfilec);
++ if (cmd_filev == NULL)
++ fatal_error("Virtual memory exhausted\n");
++ xfilev = cmd_filev;
++ }
++ if (strlen(inpbuf) < 1)
++ continue;
++ if ((xfilev[cmd_filec++] = (char *) strdup(inpbuf)) == NULL)
++ fatal_error("Virtual memory exhausted\n");
++ }
++ xfilev[cmd_filec] = NULL;
++ cmd_filev = xfilev;
++ } else {
++ cmd_filec = ac - 3;
++ cmd_filev = av + 3;
++ }
++ sort_files();
++
++ /* make crc table */
++ make_crctable();
++
++ switch (cmd) {
++ case CMD_EXTRACT:
++ cmd_extract();
++ break;
++ case CMD_ADD:
++ cmd_add();
++ break;
++ case CMD_LIST:
++ cmd_list();
++ break;
++ case CMD_DELETE:
++ cmd_delete();
++ break;
++ }
++
++#ifdef USE_PROF
++ if (!prof)
++ exit(0);
++#endif
++
++ return 0;
++}
++
++
++/* ------------------------------------------------------------------------ */
++/* */
++/* ------------------------------------------------------------------------ */
++
++/* ------------------------------------------------------------------------ */
++static void
++print_version()
++{
++ fprintf(stderr, "%s\n", LHA_VERSION);
++}
++
++/* ------------------------------------------------------------------------ */
++static void
++message_1(title, subject, name)
++ char *title, *subject, *name;
++{
++ fprintf(stderr, "LHa: %s%s ", title, subject);
++ fflush(stderr);
++
++ if (errno == 0)
++ fprintf(stderr, "%s\n", name);
++ else
++ perror(name);
++}
++
++/* ------------------------------------------------------------------------ */
++void
++message(subject, name)
++ char *subject, *name;
++{
++ message_1("", subject, name);
++}
++
++/* ------------------------------------------------------------------------ */
++void
++warning(subject, name)
++ char *subject, *name;
++{
++ message_1("Warning: ", subject, name);
++}
++
++/* ------------------------------------------------------------------------ */
++void
++error(subject, msg)
++ char *subject, *msg;
++{
++ message_1("Error: ", subject, msg);
++}
++
++/* ------------------------------------------------------------------------ */
++void
++fatal_error(msg)
++ char *msg;
++{
++ message_1("Fatal error:", "", msg);
++
++ if (remove_temporary_at_error)
++ unlink(temporary_name);
++
++ exit(1);
++}
++
++/* ------------------------------------------------------------------------ */
++void
++write_error()
++{
++ fatal_error(writting_filename);
++}
++
++/* ------------------------------------------------------------------------ */
++void
++read_error()
++{
++ fatal_error(reading_filename);
++}
++
++/* ------------------------------------------------------------------------ */
++void
++interrupt(signo)
++ int signo;
++{
++ errno = 0;
++ message("Interrupted\n", "");
++
++ if (temporary_fp)
++ fclose(temporary_fp);
++ unlink(temporary_name);
++ if (recover_archive_when_interrupt)
++ rename(backup_archive_name, archive_name);
++ if (remove_extracting_file_when_interrupt) {
++ errno = 0;
++ message("Removing", writting_filename);
++ unlink(writting_filename);
++ }
++ signal(SIGINT, SIG_DFL);
++ signal(SIGHUP, SIG_DFL);
++ kill(getpid(), signo);
++}
++
++/* ------------------------------------------------------------------------ */
++/* */
++/* ------------------------------------------------------------------------ */
++static int
++sort_by_ascii(a, b)
++ char **a, **b;
++{
++ register char *p, *q;
++ register int c1, c2;
++
++ p = *a, q = *b;
++ if (generic_format) {
++ do {
++ c1 = *(unsigned char *) p++;
++ c2 = *(unsigned char *) q++;
++ if (!c1 || !c2)
++ break;
++ if (islower(c1))
++ c1 = toupper(c1);
++ if (islower(c2))
++ c2 = toupper(c2);
++ }
++ while (c1 == c2);
++ return c1 - c2;
++ }
++ else {
++ while (*p == *q && *p != '\0')
++ p++, q++;
++ return *(unsigned char *) p - *(unsigned char *) q;
++ }
++}
++
++/* ------------------------------------------------------------------------ */
++static void
++sort_files()
++{
++ if (cmd_filec > 1)
++ qsort(cmd_filev, cmd_filec, sizeof(char *), sort_by_ascii);
++}
++
++/* ------------------------------------------------------------------------ */
++char *
++xmalloc(size)
++ int size;
++{
++ char *p = (char *) malloc(size);
++ if (!p)
++ fatal_error("Not enough memory");
++ return p;
++}
++
++/* ------------------------------------------------------------------------ */
++char *
++xrealloc(old, size)
++ char *old;
++ int size;
++{
++ char *p = (char *) realloc(old, size);
++ if (!p)
++ fatal_error("Not enough memory");
++ return p;
++}
++
++/* ------------------------------------------------------------------------ */
++/* STRING POOL */
++/* ------------------------------------------------------------------------ */
++/*
++ string pool :
++ +-------------+-------------+------+-------------+----------+
++ | N A M E 1 \0| N A M E 2 \0| .... | N A M E n \0| |
++ +-------------+-------------+------+-------------+----------+
++ ^ ^ ^ buffer+0 buffer+used buffer+size
++
++ vector :
++ +---------------+---------------+------------- -----------------+
++ | pointer to | pointer to | pointer to ... pointer to |
++ | stringpool | N A M E 1 | N A M E 2 ... N A M E n |
++ +---------------+---------------+------------- -------------+
++ ^ malloc base returned
++*/
++
++/* ------------------------------------------------------------------------ */
++void
++init_sp(sp)
++ struct string_pool *sp;
++{
++ sp->size = 1024 - 8; /* any ( >=0 ) */
++ sp->used = 0;
++ sp->n = 0;
++ sp->buffer = (char *) xmalloc(sp->size * sizeof(char));
++}
++
++/* ------------------------------------------------------------------------ */
++void
++add_sp(sp, name, len)
++ struct string_pool *sp;
++ char *name; /* stored '\0' at tail */
++ int len; /* include '\0' */
++{
++ while (sp->used + len > sp->size) {
++ sp->size *= 2;
++ sp->buffer = (char *) xrealloc(sp->buffer, sp->size * sizeof(char));
++ }
++ bcopy(name, sp->buffer + sp->used, len);
++ sp->used += len;
++ sp->n++;
++}
++
++/* ------------------------------------------------------------------------ */
++void
++finish_sp(sp, v_count, v_vector)
++ register struct string_pool *sp;
++ int *v_count;
++ char ***v_vector;
++{
++ int i;
++ register char *p;
++ char **v;
++
++ v = (char **) xmalloc((sp->n + 1) * sizeof(char *));
++ *v++ = sp->buffer;
++ *v_vector = v;
++ *v_count = sp->n;
++ p = sp->buffer;
++ for (i = sp->n; i; i--) {
++ *v++ = p;
++ if (i - 1)
++ p += strlen(p) + 1;
++ }
++}
++
++/* ------------------------------------------------------------------------ */
++void
++free_sp(vector)
++ char **vector;
++{
++ vector--;
++ free(*vector); /* free string pool */
++ free(vector);
++}
++
++
++/* ------------------------------------------------------------------------ */
++/* READ DIRECTORY FILES */
++/* ------------------------------------------------------------------------ */
++static boolean
++include_path_p(path, name)
++ char *path, *name;
++{
++ char *n = name;
++ while (*path)
++ if (*path++ != *n++)
++ return (path[-1] == '/' && *n == '\0');
++ return (*n == '/' || (n != name && path[-1] == '/' && n[-1] == '/'));
++}
++
++/* ------------------------------------------------------------------------ */
++void
++cleaning_files(v_filec, v_filev)
++ int *v_filec;
++ char ***v_filev;
++{
++ char *flags;
++ struct stat stbuf;
++
++ register char **filev = *v_filev;
++ register int filec = *v_filec;
++ register char *p;
++ register int i, j;
++
++ if (filec == 0)
++ return;
++
++ flags = xmalloc(filec * sizeof(char));
++
++ /* flags & 0x01 : 1: ignore */
++ /* flags & 0x02 : 1: directory, 0 : regular file */
++ /* flags & 0x04 : 1: need delete */
++
++
++ for (i = 0; i < filec; i++)
++ if (GETSTAT(filev[i], &stbuf) < 0) {
++ flags[i] = 0x04;
++ fprintf(stderr,
++ "LHa: Cannot access \"%s\", ignored.\n", filev[i]);
++ }
++ else {
++ if (is_regularfile(&stbuf))
++ flags[i] = 0x00;
++ else if (is_directory(&stbuf))
++ flags[i] = 0x02;
++#ifdef S_IFLNK
++ else if (is_symlink(&stbuf)) /* t.okamoto */
++ flags[i] = 0x00;
++#endif
++ else {
++ flags[i] = 0x04;
++ fprintf(stderr,
++ "LHa: Cannot archive \"%s\", ignored.\n", filev[i]);
++ }
++ }
++ errno = 0;
++
++ for (i = 0; i < filec; i++) {
++ p = filev[i];
++ if ((flags[i] & 0x07) == 0x00) { /* regular file, not
++ * deleted/ignored */
++ for (j = i + 1; j < filec; j++) {
++ if ((flags[j] & 0x07) == 0x00) { /* regular file, not
++ * deleted/ignored */
++ if (STREQU(p, filev[j]))
++ flags[j] = 0x04; /* delete */
++ }
++ }
++ }
++ else if ((flags[i] & 0x07) == 0x02) { /* directory, not
++ * deleted/ignored */
++ for (j = i + 1; j < filec; j++) {
++ if ((flags[j] & 0x07) == 0x00) { /* regular file, not
++ * deleted/ignored */
++ if (include_path_p(p, filev[j]))
++ flags[j] = 0x04; /* delete */
++ }
++ else if ((flags[j] & 0x07) == 0x02) { /* directory, not
++ * deleted/ignored */
++ if (include_path_p(p, filev[j]))
++ flags[j] = 0x04; /* delete */
++ }
++ }
++ }
++ }
++
++ for (i = j = 0; i < filec; i++) {
++ if ((flags[i] & 0x04) == 0) {
++ if (i != j)
++ filev[j] = filev[i];
++ j++;
++ }
++ }
++ *v_filec = j;
++
++ free(flags);
++}
++
++/* ------------------------------------------------------------------------ */
++#ifdef NODIRECTORY
++/* please need your imprementation */
++boolean
++find_files(name, v_filec, v_filev)
++ char *name;
++ int *v_filec;
++ char ***v_filev;
++{
++ return FALSE; /* DUMMY */
++}
++
++/* ------------------------------------------------------------------------ */
++void
++free_files(filec, filev)
++ int filec;
++ char **filev;
++{
++ /* do nothing */
++}
++/* ------------------------------------------------------------------------ */
++#else
++boolean
++find_files(name, v_filec, v_filev)
++ char *name;
++ int *v_filec;
++ char ***v_filev;
++{
++ struct string_pool sp;
++ char newname[FILENAME_LENGTH];
++ int len, n;
++ DIR *dirp;
++ DIRENTRY *dp;
++ struct stat tmp_stbuf, arc_stbuf, fil_stbuf;
++
++ strcpy(newname, name);
++ len = strlen(name);
++ if (len > 0 && newname[len - 1] != '/')
++ newname[len++] = '/';
++
++ dirp = opendir(name);
++ if (!dirp)
++ return FALSE;
++
++ init_sp(&sp);
++
++ GETSTAT(temporary_name, &tmp_stbuf);
++ GETSTAT(archive_name, &arc_stbuf);
++
++ for (dp = readdir(dirp); dp != NULL; dp = readdir(dirp)) {
++ n = NAMLEN(dp);
++ strncpy(newname + len, dp->d_name, n);
++ newname[len + n] = '\0';
++ if (GETSTAT(newname, &fil_stbuf) < 0)
++ continue;
++#ifdef NO_INODE
++ if ( dp->d_name[0] != '.' ||
++ (n != 1 &&
++ (dp->d_name[1] != '.' ||
++ n != 2)) ) {
++ add_sp(&sp, newname, len+n+1);
++ }
++#else
++ if ((dp->d_ino != 0) &&
++ /* exclude '.' and '..' */
++ ((dp->d_name[0] != '.') ||
++ ((n != 1) &&
++ ((dp->d_name[1] != '.') ||
++ (n != 2)))) &&
++ ((tmp_stbuf.st_dev != fil_stbuf.st_dev ||
++ tmp_stbuf.st_ino != fil_stbuf.st_ino) &&
++ (arc_stbuf.st_dev != fil_stbuf.st_dev ||
++ arc_stbuf.st_ino != fil_stbuf.st_ino))) {
++ add_sp(&sp, newname, len + n + 1);
++ }
++#endif
++ }
++ closedir(dirp);
++ finish_sp(&sp, v_filec, v_filev);
++ if (*v_filec > 1)
++ qsort(*v_filev, *v_filec, sizeof(char *), sort_by_ascii);
++ cleaning_files(v_filec, v_filev);
++
++ return TRUE;
++}
++
++/* ------------------------------------------------------------------------ */
++void
++free_files(filec, filev)
++ int filec;
++ char **filev;
++{
++ free_sp(filev);
++}
++#endif
++/* ------------------------------------------------------------------------ */
++/* */
++/* ------------------------------------------------------------------------ */
++/* Build temporary file name and store to TEMPORARY_NAME */
++void
++build_temporary_name()
++{
++#ifdef TMP_FILENAME_TEMPLATE
++ /* "/tmp/lhXXXXXX" etc. */
++ if (extract_directory == NULL) {
++ strcpy(temporary_name, TMP_FILENAME_TEMPLATE);
++ }
++ else {
++ sprintf(temporary_name, "%s/lhXXXXXX", extract_directory);
++ }
++#ifdef MKSTEMP
++ mkstemp(temporary_name);
++#else
++ mktemp(temporary_name);
++#endif
++#else
++ char *p, *s;
++
++ strcpy(temporary_name, archive_name);
++ for (p = temporary_name, s = (char *) 0; *p; p++)
++ if (*p == '/')
++ s = p;
++ strcpy((s ? s + 1 : temporary_name), "lhXXXXXX");
++#ifdef MKSTEMP
++ mkstemp(temporary_name);
++#else
++ mktemp(temporary_name);
++#endif
++#endif
++}
++
++/* ------------------------------------------------------------------------ */
++static void
++modify_filename_extention(buffer, ext)
++ char *buffer;
++ char *ext;
++{
++ register char *p, *dot;
++
++ for (p = buffer, dot = (char *) 0; *p; p++) {
++ if (*p == '.')
++ dot = p;
++ else if (*p == '/')
++ dot = (char *) 0;
++ }
++
++ if (dot)
++ p = dot;
++
++ strcpy(p, ext);
++}
++
++/* ------------------------------------------------------------------------ */
++/* build backup file name */
++void
++build_backup_name(buffer, original)
++ char *buffer;
++ char *original;
++{
++ strcpy(buffer, original);
++ modify_filename_extention(buffer, BACKUPNAME_EXTENTION); /* ".bak" */
++}
++
++/* ------------------------------------------------------------------------ */
++void
++build_standard_archive_name(buffer, orginal)
++ char *buffer;
++ char *orginal;
++{
++ strcpy(buffer, orginal);
++ modify_filename_extention(buffer, ARCHIVENAME_EXTENTION); /* ".lzh" */
++}
++
++/* ------------------------------------------------------------------------ */
++/* */
++/* ------------------------------------------------------------------------ */
++boolean
++need_file(name)
++ char *name;
++{
++ int i;
++
++ if (cmd_filec == 0)
++ return TRUE;
++
++ for (i = 0; i < cmd_filec; i++) {
++ if (patmatch(cmd_filev[i], name, 0))
++ return TRUE;
++ }
++
++ return FALSE;
++}
++
++FILE *
++xfopen(name, mode)
++ char *name, *mode;
++{
++ FILE *fp;
++
++ if ((fp = fopen(name, mode)) == NULL)
++ fatal_error(name);
++
++ return fp;
++}
++
++/* ------------------------------------------------------------------------ */
++/* */
++/* ------------------------------------------------------------------------ */
++static boolean
++open_old_archive_1(name, v_fp)
++ char *name;
++ FILE **v_fp;
++{
++ FILE *fp;
++ struct stat stbuf;
++
++ if (stat(name, &stbuf) >= 0 &&
++ is_regularfile(&stbuf) &&
++ (fp = fopen(name, READ_BINARY)) != NULL) {
++ *v_fp = fp;
++ archive_file_gid = stbuf.st_gid;
++ archive_file_mode = stbuf.st_mode;
++ return TRUE;
++ }
++
++ *v_fp = NULL;
++ archive_file_gid = -1;
++ return FALSE;
++}
++
++/* ------------------------------------------------------------------------ */
++FILE *
++open_old_archive()
++{
++ FILE *fp;
++ char *p;
++
++ if (!strcmp(archive_name, "-")) {
++ if (cmd == CMD_EXTRACT || cmd == CMD_LIST)
++ return stdin;
++ else
++ return NULL;
++ }
++ if (p = (char *) rindex(archive_name, '.')) {
++ if (strucmp(".LZH", p) == 0
++ || strucmp(".LZS", p) == 0
++ || strucmp(".COM", p) == 0 /* DOS SFX */
++ || strucmp(".EXE", p) == 0
++ || strucmp(".X", p) == 0 /* HUMAN SFX */
++ || strucmp(".BAK", p) == 0) { /* for BackUp */
++ open_old_archive_1(archive_name, &fp);
++ return fp;
++ }
++ }
++
++ if (open_old_archive_1(archive_name, &fp))
++ return fp;
++ sprintf(expanded_archive_name, "%s.lzh", archive_name);
++ if (open_old_archive_1(expanded_archive_name, &fp)) {
++ archive_name = expanded_archive_name;
++ return fp;
++ }
++ /*
++ * if ( (errno&0xffff)!=E_PNNF ) { archive_name =
++ * expanded_archive_name; return NULL; }
++ */
++ sprintf(expanded_archive_name, "%s.lzs", archive_name);
++ if (open_old_archive_1(expanded_archive_name, &fp)) {
++ archive_name = expanded_archive_name;
++ return fp;
++ }
++ /*
++ * if ( (errno&0xffff)!=E_PNNF ) { archive_name =
++ * expanded_archive_name; return NULL; }
++ */
++ /*
++ * sprintf( expanded_archive_name , "%s.lzh",archive_name);
++ * archive_name = expanded_archive_name;
++ */
++ return NULL;
++}
++
++/* ------------------------------------------------------------------------ */
++int
++inquire(msg, name, selective)
++ char *msg, *name, *selective;
++{
++ char buffer[1024];
++ char *p;
++
++ for (;;) {
++ fprintf(stderr, "%s %s ", name, msg);
++ fflush(stderr);
++
++ fgets(buffer, 1024, stdin);
++
++ for (p = selective; *p; p++)
++ if (buffer[0] == *p)
++ return p - selective;
++ }
++ /* NOTREACHED */
++}
++
++/* ------------------------------------------------------------------------ */
++void
++write_archive_tail(nafp)
++ FILE *nafp;
++{
++ putc(0x00, nafp);
++}
++
++/* ------------------------------------------------------------------------ */
++void
++copy_old_one(oafp, nafp, hdr)
++ FILE *oafp, *nafp;
++ LzHeader *hdr;
++{
++ if (noexec) {
++ fseek(oafp, (long) (hdr->header_size + 2) + hdr->packed_size, SEEK_CUR);
++ }
++ else {
++ reading_filename = archive_name;
++ writting_filename = temporary_name;
++ if (hdr->header_level != 2) {
++ copyfile(oafp, nafp,
++ (long) (hdr->header_size + 2) + hdr->packed_size, 0);
++ } else {
++ copyfile(oafp, nafp,
++ (long) (hdr->header_size) + hdr->packed_size, 0);
++ }
++ }
++}
++
++/* Local Variables: */
++/* mode:c */
++/* tab-width:4 */
++/* compile-command:"gcc -c lharc.c" */
++/* End: */
+--- lha-1.14i.orig/debian/org/util.c
++++ lha-1.14i/debian/org/util.c
+@@ -0,0 +1,375 @@
++/* ------------------------------------------------------------------------ */
++/* LHa for UNIX */
++/* util.c -- LHarc Util */
++/* */
++/* Modified Nobutaka Watazaki */
++/* */
++/* Ver. 1.14 Source All chagned 1995.01.14 N.Watazaki */
++/* Ver. 1.14e Support for sfx archives 1999.05.28 T.Okamoto */
++/* ------------------------------------------------------------------------ */
++#include "lha.h"
++/*
++ * util.c - part of LHa for UNIX Feb 26 1992 modified by Masaru Oki Mar 4
++ * 1992 modified by Masaru Oki #ifndef USESTRCASECMP added. Mar 31 1992
++ * modified by Masaru Oki #ifdef NOMEMSET added.
++ */
++#include <errno.h>
++
++/* ------------------------------------------------------------------------ */
++extern unsigned short crc;
++extern int quiet;
++/* ------------------------------------------------------------------------ */
++long
++copyfile(f1, f2, size, crc_flg) /* return: size of source file */
++ FILE *f1;
++ FILE *f2;
++ long size;
++ int crc_flg;/* 0: no crc, 1: crc check, 2: extract, 3:
++ * append */
++{
++ unsigned short xsize;
++ char *buf;
++ long rsize = 0;
++
++ if ((buf = (char *) malloc(BUFFERSIZE)) == NULL)
++ fatal_error("virtual memory exhausted.\n");
++ crc = 0;
++ if ((crc_flg == 2 || crc_flg) && text_mode)
++ init_code_cache();
++ while (size > 0) {
++ /* read */
++ if (crc_flg == 3 && text_mode) {
++ xsize = fread_txt(buf, BUFFERSIZE, f1);
++ if (xsize == 0)
++ break;
++ if (ferror(f1)) {
++ fatal_error("file read error\n");
++ }
++ }
++ else {
++ xsize = (size > BUFFERSIZE) ? BUFFERSIZE : size;
++ if (fread(buf, 1, xsize, f1) != xsize) {
++ fatal_error("file read error\n");
++ }
++ }
++ /* write */
++ if (f2) {
++ if (crc_flg == 2 && text_mode) {
++ if (fwrite_txt(buf, xsize, f2)) {
++ fatal_error("file write error\n");
++ }
++ }
++ else {
++ if (fwrite(buf, 1, xsize, f2) != xsize) {
++ fatal_error("file write error\n");
++ }
++ }
++ }
++ /* calculate crc */
++ if (crc_flg) {
++ calccrc(buf, xsize);
++ }
++ rsize += xsize;
++ if (crc_flg != 3 || !text_mode)
++ size -= xsize;
++ }
++ free(buf);
++ return rsize;
++}
++
++/* ------------------------------------------------------------------------ */
++int
++encode_stored_crc(ifp, ofp, size, original_size_var, write_size_var)
++ FILE *ifp, *ofp;
++ long size;
++ long *original_size_var;
++ long *write_size_var;
++{
++ int save_quiet;
++
++ save_quiet = quiet;
++ quiet = 1;
++ size = copyfile(ifp, ofp, size, 3);
++ *original_size_var = *write_size_var = size;
++ quiet = save_quiet;
++ return crc;
++}
++
++/* ------------------------------------------------------------------------ */
++/* convert path delimit
++ erreturns *filename */
++/* ------------------------------------------------------------------------ */
++unsigned char *
++convdelim(path, delim)
++ unsigned char *path;
++ unsigned char delim;
++{
++ unsigned char c;
++ unsigned char *p;
++#ifdef MULTIBYTE_CHAR
++ int kflg;
++
++ kflg = 0;
++#endif
++ for (p = path; (c = *p) != 0; p++) {
++#ifdef MULTIBYTE_CHAR
++ if (kflg) {
++ kflg = 0;
++ }
++ else if (MULTIBYTE_FIRST_P(c)) {
++ kflg = 1;
++ }
++ else
++#endif
++ if (c == '\\' || c == DELIM || c == DELIM2) {
++ *p = delim;
++ path = p + 1;
++ }
++ }
++ return path;
++}
++
++/* ------------------------------------------------------------------------ */
++/* If TRUE, archive file name is msdos SFX file name. */
++boolean
++archive_is_msdos_sfx1(name)
++ char *name;
++{
++ int len = strlen(name);
++
++ return ((len >= 4) &&
++ (strucmp(".COM", name + len - 4) == 0 ||
++ strucmp(".EXE", name + len - 4) == 0)) ||
++ ((len >= 2) &&
++ (strucmp(".x", name + len - 2) == 0));
++}
++
++/* ------------------------------------------------------------------------ */
++/* skip SFX header */
++boolean
++skip_msdos_sfx1_code(fp)
++ FILE *fp;
++{
++ unsigned char buffer[MAXSFXCODE];
++ unsigned char *p, *q;
++ int n;
++
++ n = fread(buffer, sizeof(char), MAXSFXCODE, fp);
++
++ for (p = buffer + 2, q = buffer + n - /* 5 */ (I_HEADER_LEVEL+1)-2; p < q; p++) {
++ /* found "-l??-" keyword (as METHOD type string) */
++ if (p[0] == '-' && p[1] == 'l' && p[4] == '-') {
++ /* size and checksum validate check */
++ if ( (p[I_HEADER_LEVEL-2] == 0 || p[I_HEADER_LEVEL-2] == 0)
++ && p[I_HEADER_SIZE-2] > 20
++ && p[I_HEADER_CHECKSUM-2] == calc_sum(p, p[-2])) {
++ fseek(fp, ((p - 2) - buffer) - n, SEEK_CUR);
++ return TRUE;
++ } else if (p[I_HEADER_LEVEL-2] == 2 && p[I_HEADER_SIZE-2] >= 24
++ && p[I_ATTRIBUTE-2] == 0x20) {
++ fseek(fp, ((p - 2) - buffer) - n, SEEK_CUR);
++ return TRUE;
++ }
++ }
++ }
++
++ fseek(fp, -n, SEEK_CUR);
++ return FALSE;
++}
++
++/*
++ * strdup(3)
++ */
++
++/* ------------------------------------------------------------------------ */
++#ifdef NOSTRDUP
++char *
++strdup(buf)
++ char *buf;
++{
++ char *p;
++
++ if ((p = (char *) malloc(strlen(buf) + 1)) == NULL)
++ return NULL;
++ strcpy(p, buf);
++ return p;
++}
++#endif
++
++/*
++ * memmove( char *dst , char *src , size_t cnt )
++ */
++
++/* ------------------------------------------------------------------------ */
++#if defined(NOBSTRING) && !defined(__STDC__)
++void *
++memmove(dst, src, cnt)
++ register char *dst, *src;
++ register int cnt;
++{
++ if (dst == src)
++ return dst;
++ if (src > dst) {
++ while (--cnt >= 0)
++ *dst++ = *src++;
++ }
++ else {
++ dst += cnt;
++ src += cnt;
++ while (--cnt >= 0)
++ *--dst = *--src;
++ }
++ return dst;
++}
++#endif
++
++/*
++ * rename - change the name of file 91.11.02 by Tomohiro Ishikawa
++ * (ishikawa@gaia.cow.melco.CO.JP) 92.01.20 little modified (added #ifdef) by
++ * Masaru Oki 92.01.28 added mkdir() and rmdir() by Tomohiro Ishikawa
++ */
++
++#if defined(NOFTRUNCATE) && !defined(_MINIX)
++
++/* ------------------------------------------------------------------------ */
++int
++rename(from, to)
++ char *from, *to;
++{
++ struct stat s1, s2;
++ extern int errno;
++
++ if (stat(from, &s1) < 0)
++ return (-1);
++ /* is 'FROM' file a directory? */
++ if ((s1.st_mode & S_IFMT) == S_IFDIR) {
++ errno = ENOTDIR;
++ return (-1);
++ }
++ if (stat(to, &s2) >= 0) { /* 'TO' exists! */
++ /* is 'TO' file a directory? */
++ if ((s2.st_mode & S_IFMT) == S_IFDIR) {
++ errno = EISDIR;
++ return (-1);
++ }
++ if (unlink(to) < 0)
++ return (-1);
++ }
++ if (link(from, to) < 0)
++ return (-1);
++ if (unlink(from) < 0)
++ return (-1);
++ return (0);
++}
++#endif /* NOFTRUNCATE */
++/* ------------------------------------------------------------------------ */
++
++#ifdef NOMKDIR
++#ifndef MKDIRPATH
++#define MKDIRPATH "/bin/mkdir"
++#endif
++#ifndef RMDIRPATH
++#define RMDIRPATH "/bin/rmdir"
++#endif
++int
++rmdir(path)
++ char *path;
++{
++ int stat, rtn = 0;
++ char *cmdname;
++ if ((cmdname = (char *) malloc(strlen(RMDIRPATH) + 1 + strlen(path) + 1))
++ == 0)
++ return (-1);
++ strcpy(cmdname, RMDIRPATH);
++ *(cmdname + strlen(RMDIRPATH)) = ' ';
++ strcpy(cmdname + strlen(RMDIRPATH) + 1, path);
++ if ((stat = system(cmdname)) < 0)
++ rtn = -1; /* fork or exec error */
++ else if (stat) { /* RMDIR command error */
++ errno = EIO;
++ rtn = -1;
++ }
++ free(cmdname);
++ return (rtn);
++}
++
++/* ------------------------------------------------------------------------ */
++int
++mkdir(path, mode)
++ char *path;
++ int mode;
++{
++ int child, stat;
++ char *cmdname, *cmdpath = MKDIRPATH;
++ if ((cmdname = (char *) strrchr(cmdpath, '/')) == (char *) 0)
++ cmdname = cmdpath;
++ if ((child = fork()) < 0)
++ return (-1); /* fork error */
++ else if (child) { /* parent process */
++ while (child != wait(&stat)) /* ignore signals */
++ continue;
++ }
++ else { /* child process */
++ int maskvalue;
++ maskvalue = umask(0); /* get current umask() value */
++ umask(maskvalue | (0777 & ~mode)); /* set it! */
++ execl(cmdpath, cmdname, path, (char *) 0);
++ /* never come here except execl is error */
++ return (-1);
++ }
++ if (stat != 0) {
++ errno = EIO; /* cannot get error num. */
++ return (-1);
++ }
++ return (0);
++}
++#endif
++
++/*
++ * strucmp modified: Oct 29 1991 by Masaru Oki
++ */
++
++#ifndef USESTRCASECMP
++static int
++my_toupper(n)
++ register int n;
++{
++ if (n >= 'a' && n <= 'z')
++ return n & (~('a' - 'A'));
++ return n;
++}
++
++/* ------------------------------------------------------------------------ */
++int
++strucmp(s, t)
++ register char *s, *t;
++{
++ while (my_toupper(*s++) == my_toupper(*t++))
++ if (!*s || !*t)
++ break;
++ if (!*s && !*t)
++ return 0;
++ return 1;
++}
++#endif
++
++/* ------------------------------------------------------------------------ */
++#ifdef NOMEMSET
++/* Public Domain memset(3) */
++char *
++memset(s, c, n)
++ char *s;
++ int c, n;
++{
++ char *p = s;
++ while (n--)
++ *p++ = (char) c;
++ return s;
++}
++#endif
++
++/* Local Variables: */
++/* mode:c */
++/* tab-width:4 */
++/* compile-command:"gcc -c util.c" */
++/* End: */
+--- lha-1.14i.orig/debian/org/lhext.c
++++ lha-1.14i/debian/org/lhext.c
+@@ -0,0 +1,425 @@
++/* ------------------------------------------------------------------------ */
++/* LHa for UNIX */
++/* lhext.c -- LHarc extract */
++/* */
++/* Copyright (C) MCMLXXXIX Yooichi.Tagawa */
++/* Modified Nobutaka Watazaki */
++/* */
++/* Ver. 0.00 Original 1988.05.23 Y.Tagawa */
++/* Ver. 1.00 Fixed 1989.09.22 Y.Tagawa */
++/* Ver. 0.03 LHa for UNIX 1991.12.17 M.Oki */
++/* Ver. 1.12 LHa for UNIX 1993.10.01 N.Watazaki */
++/* Ver. 1.13b Symbolic Link Update Bug Fix 1994.06.21 N.Watazaki */
++/* Ver. 1.14 Source All chagned 1995.01.14 N.Watazaki */
++/* Ver. 1.14e bugfix 1999.04.30 T.Okamoto */
++/* ------------------------------------------------------------------------ */
++#include "lha.h"
++/* ------------------------------------------------------------------------ */
++static int skip_flg = FALSE; /* FALSE..No Skip , TRUE..Skip */
++static char *methods[] =
++{
++ LZHUFF0_METHOD, LZHUFF1_METHOD, LZHUFF2_METHOD, LZHUFF3_METHOD,
++ LZHUFF4_METHOD, LZHUFF5_METHOD, LZHUFF6_METHOD, LZHUFF7_METHOD,
++ LARC_METHOD, LARC5_METHOD, LARC4_METHOD,
++ LZHDIRS_METHOD,
++ NULL
++};
++
++/* ------------------------------------------------------------------------ */
++static boolean
++inquire_extract(name)
++ char *name;
++{
++ struct stat stbuf;
++
++ skip_flg = FALSE;
++ if (stat(name, &stbuf) >= 0) {
++ if (!is_regularfile(&stbuf)) {
++ error("Already exist (not a file)", name);
++ return FALSE;
++ }
++
++ if (noexec) {
++ printf("EXTRACT %s but file is exist.\n", name);
++ return FALSE;
++ }
++ else if (!force) {
++ if (!isatty(0))
++ return FALSE;
++
++ switch (inquire("OverWrite ?(Yes/[No]/All/Skip)", name, "YyNnAaSs\n")) {
++ case 0:
++ case 1:/* Y/y */
++ break;
++ case 2:
++ case 3:/* N/n */
++ case 8:/* Return */
++ return FALSE;
++ case 4:
++ case 5:/* A/a */
++ force = TRUE;
++ break;
++ case 6:
++ case 7:/* S/s */
++ skip_flg = TRUE;
++ break;
++ }
++ }
++ }
++ if (noexec)
++ printf("EXTRACT %s\n", name);
++
++ return TRUE;
++}
++
++/* ------------------------------------------------------------------------ */
++static boolean
++make_parent_path(name)
++ char *name;
++{
++ char path[FILENAME_LENGTH];
++ struct stat stbuf;
++ register char *p;
++
++ /* make parent directory name into PATH for recursive call */
++ strcpy(path, name);
++ for (p = path + strlen(path); p > path; p--)
++ if (p[-1] == '/') {
++ *--p = '\0';
++ break;
++ }
++
++ if (p == path) {
++ message("Why?", "ROOT");
++ return FALSE; /* no more parent. */
++ }
++
++ if (GETSTAT(path, &stbuf) >= 0) {
++ if (is_directory(&stbuf))
++ return TRUE;
++ error("Not a directory", path);
++ return FALSE;
++ }
++ errno = 0;
++
++ if (verbose)
++ printf("Making directory \"%s\".\n", path);
++
++ if (mkdir(path, 0777) >= 0) /* try */
++ return TRUE; /* successful done. */
++ errno = 0;
++
++ if (!make_parent_path(path))
++ return FALSE;
++
++ if (mkdir(path, 0777) < 0) { /* try again */
++ message("Cannot make directory", path);
++ return FALSE;
++ }
++
++ return TRUE;
++}
++
++/* ------------------------------------------------------------------------ */
++static FILE *
++open_with_make_path(name)
++ char *name;
++{
++ FILE *fp;
++
++ if ((fp = fopen(name, WRITE_BINARY)) == NULL) {
++ errno = 0;
++ if (!make_parent_path(name) ||
++ (fp = fopen(name, WRITE_BINARY)) == NULL)
++ error("Cannot extract", name);
++ errno = 0;
++ }
++ return fp;
++}
++
++/* ------------------------------------------------------------------------ */
++static void
++adjust_info(name, hdr)
++ char *name;
++ LzHeader *hdr;
++{
++ time_t utimebuf[2];
++
++ /* adjust file stamp */
++ utimebuf[0] = utimebuf[1] = hdr->unix_last_modified_stamp;
++
++ if ((hdr->unix_mode & UNIX_FILE_TYPEMASK) != UNIX_FILE_SYMLINK)
++ utime(name, utimebuf);
++
++ if (hdr->extend_type == EXTEND_UNIX
++ || hdr->extend_type == EXTEND_OS68K
++ || hdr->extend_type == EXTEND_XOSK) {
++#ifdef NOT_COMPATIBLE_MODE
++ Please need your modification in this space.
++#else
++ if ((hdr->unix_mode & UNIX_FILE_TYPEMASK) != UNIX_FILE_SYMLINK)
++ chmod(name, hdr->unix_mode);
++#endif
++ if (!getuid()) {
++#ifndef HAVE_NO_LCHOWN
++ if ((hdr->unix_mode & UNIX_FILE_TYPEMASK) == UNIX_FILE_SYMLINK)
++ lchown(name, hdr->unix_uid, hdr->unix_gid);
++ else
++#endif /* HAVE_NO_LCHWON */
++ chown(name, hdr->unix_uid, hdr->unix_gid);
++ }
++ errno = 0;
++ }
++}
++
++/* ------------------------------------------------------------------------ */
++static void
++extract_one(afp, hdr)
++ FILE *afp; /* archive file */
++ LzHeader *hdr;
++{
++ FILE *fp; /* output file */
++ struct stat stbuf;
++ char name[257];
++ int crc;
++ int method;
++ boolean save_quiet, save_verbose, up_flag;
++ char *q = hdr->name, c;
++
++ if (ignore_directory && rindex(hdr->name, '/')) {
++ q = (char *) rindex(hdr->name, '/') + 1;
++ }
++ else {
++ if (*q == '/') {
++ q++;
++ /*
++ * if OSK then strip device name
++ */
++ if (hdr->extend_type == EXTEND_OS68K
++ || hdr->extend_type == EXTEND_XOSK) {
++ do
++ c = (*q++);
++ while (c && c != '/');
++ if (!c || !*q)
++ q = "."; /* if device name only */
++ }
++ }
++ }
++
++ if (extract_directory)
++ sprintf(name, "%s/%s", extract_directory, q);
++ else
++ strcpy(name, q);
++
++
++ /* LZHDIRS_METHODĥإåå */
++ /* 1999.4.30 t.okamoto */
++ for (method = 0;; method++) {
++ if (methods[method] == NULL) {
++ error("Unknown method skiped ...", name);
++ return;
++ }
++ if (bcmp(hdr->method, methods[method], 5) == 0)
++ break;
++ }
++
++ if ((hdr->unix_mode & UNIX_FILE_TYPEMASK) == UNIX_FILE_REGULAR
++ && method != LZHDIRS_METHOD_NUM) {
++#if 0
++ for (method = 0;; method++) {
++ if (methods[method] == NULL) {
++ error("Unknown method skiped ...", name);
++ return;
++ }
++ if (bcmp(hdr->method, methods[method], 5) == 0)
++ break;
++ }
++#endif
++
++ reading_filename = archive_name;
++ writting_filename = name;
++ if (output_to_stdout || verify_mode) {
++ if (noexec) {
++ printf("%s %s\n", verify_mode ? "VERIFY" : "EXTRACT", name);
++ if (afp == stdin) {
++ int i = hdr->packed_size;
++ while (i--)
++ fgetc(afp);
++ }
++ return;
++ }
++
++ save_quiet = quiet;
++ save_verbose = verbose;
++ if (!quiet && output_to_stdout) {
++ printf("::::::::\n%s\n::::::::\n", name);
++ quiet = TRUE;
++ verbose = FALSE;
++ }
++ else if (verify_mode) {
++ quiet = FALSE;
++ verbose = TRUE;
++ }
++
++ crc = decode_lzhuf
++ (afp, stdout, hdr->original_size, hdr->packed_size, name, method);
++ quiet = save_quiet;
++ verbose = save_verbose;
++ }
++ else {
++ if (skip_flg == FALSE) {
++ up_flag = inquire_extract(name);
++ if (up_flag == FALSE && force == FALSE) {
++ return;
++ }
++ }
++
++ if (skip_flg == TRUE) { /* if skip_flg */
++ if (stat(name, &stbuf) == 0 && force != TRUE) {
++ if (stbuf.st_mtime >= hdr->unix_last_modified_stamp) {
++ if (quiet != TRUE)
++ printf("%s : Skipped...\n", name);
++ return;
++ }
++ }
++ }
++ if (noexec) {
++ if (afp == stdin) {
++ int i = hdr->packed_size;
++ while (i--)
++ fgetc(afp);
++ }
++ return;
++ }
++
++ signal(SIGINT, interrupt);
++ signal(SIGHUP, interrupt);
++
++ unlink(name);
++ errno = 0;
++ remove_extracting_file_when_interrupt = TRUE;
++
++ if ((fp = open_with_make_path(name)) != NULL) {
++ crc = decode_lzhuf
++ (afp, fp, hdr->original_size, hdr->packed_size, name, method);
++ fclose(fp);
++ }
++ remove_extracting_file_when_interrupt = FALSE;
++ signal(SIGINT, SIG_DFL);
++ signal(SIGHUP, SIG_DFL);
++
++ if (!fp)
++ return;
++ }
++
++ errno = 0;
++ if (hdr->has_crc && crc != hdr->crc)
++ error("CRC error", name);
++ }
++ else if ((hdr->unix_mode & UNIX_FILE_TYPEMASK) == UNIX_FILE_DIRECTORY
++ || (hdr->unix_mode & UNIX_FILE_TYPEMASK) == UNIX_FILE_SYMLINK
++ || method == LZHDIRS_METHOD_NUM) {
++ /* ǡSymblic Link ϡפ */
++ if (!ignore_directory && !verify_mode) {
++ if (noexec) {
++ if (quiet != TRUE)
++ printf("EXTRACT %s (directory)\n", name);
++ return;
++ }
++ /* NAME has trailing SLASH '/', (^_^) */
++ if ((hdr->unix_mode & UNIX_FILE_TYPEMASK) == UNIX_FILE_SYMLINK) {
++ char buf[256], *bb1, *bb2;
++ int l_code;
++ strcpy(buf, name);
++ bb1 = strtok(buf, "|");
++ bb2 = strtok(NULL, "|");
++
++#ifdef S_IFLNK
++ if (skip_flg == FALSE) {
++ up_flag = inquire_extract(name);
++ if (up_flag == FALSE && force == FALSE) {
++ return;
++ }
++ } else {
++ if (GETSTAT(bb1, &stbuf) == 0 && force != TRUE) {
++ if (stbuf.st_mtime >= hdr->unix_last_modified_stamp) {
++ if (quiet != TRUE)
++ printf("%s : Skipped...\n", bb1);
++ return;
++ }
++ }
++ }
++
++ unlink(bb1);
++ l_code = symlink(bb2, bb1);
++ if (l_code < 0) {
++ if (quiet != TRUE)
++ warning("Can't make Symbolic Link : ");
++ }
++ if (quiet != TRUE) {
++ printf("Symbolic Link %s -> %s\n", bb1, bb2);
++ }
++ strcpy(name, bb1); /* Symbolic's name set */
++#else
++ sprintf(buf, "%s -> %s", bb1, bb2);
++ warning("Can't make Symbolic Link", buf);
++ return;
++#endif
++ } else { /* make directory */
++ if (!output_to_stdout && !make_parent_path(name))
++ return;
++ }
++ }
++ }
++ else {
++ error("Unknown information", name);
++ }
++
++ if (!output_to_stdout)
++ adjust_info(name, hdr);
++}
++
++/* ------------------------------------------------------------------------ */
++/* EXTRACT COMMAND MAIN */
++/* ------------------------------------------------------------------------ */
++void
++cmd_extract()
++{
++ LzHeader hdr;
++ long pos;
++ FILE *afp;
++
++ /* open archive file */
++ if ((afp = open_old_archive()) == NULL)
++ fatal_error(archive_name);
++
++ if (archive_is_msdos_sfx1(archive_name))
++ skip_msdos_sfx1_code(afp);
++
++ /* extract each files */
++ while (get_header(afp, &hdr)) {
++ if (need_file(hdr.name)) {
++ pos = ftell(afp);
++ extract_one(afp, &hdr);
++ fseek(afp, pos + hdr.packed_size, SEEK_SET);
++ } else {
++ if (afp != stdin)
++ fseek(afp, hdr.packed_size, SEEK_CUR);
++ else {
++ int i = hdr.packed_size;
++ while (i--)
++ fgetc(afp);
++ }
++ }
++ }
++
++ /* close archive file */
++ fclose(afp);
++
++ return;
++}
++
++/* Local Variables: */
++/* mode:c */
++/* tab-width:4 */
++/* End: */
+--- lha-1.14i.orig/debian/org/lha_macro.h
++++ lha-1.14i/debian/org/lha_macro.h
+@@ -0,0 +1,420 @@
++/* ------------------------------------------------------------------------ */
++/* LHa for UNIX Archiver Driver macro define */
++/* */
++/* Modified Nobutaka Watazaki */
++/* */
++/* Ver. 1.14 Soruce All chagned 1995.01.14 N.Watazaki */
++/* Ver. 1.14g modified 2000.05.06 T.OKAMOTO */
++/* ------------------------------------------------------------------------ */
++
++#define LHA_VERSION "lha for unix version 1.14i"
++
++/* Most of System V, define SYSTIME_HAS_NO_TM */
++#ifdef SYSTIME_HAS_NO_TM
++#include <time.h>
++#else
++#include <sys/time.h>
++#endif /* SYSTIME_HAS_NO_TM */
++
++/* ------------------------------------------------------------------------ */
++/* Directory Access Stuff */
++/* ------------------------------------------------------------------------ */
++#ifndef NODIRECTORY
++#ifdef SYSV_SYSTEM_DIR
++
++#include <dirent.h>
++
++#define DIRENTRY struct dirent
++#define NAMLEN(p) strlen (p->d_name)
++
++#else /* not SYSV_SYSTEM_DIR */
++
++#ifdef NONSYSTEM_DIR_LIBRARY
++#include "lhdir.h"
++#else
++#include <sys/dir.h>
++#endif /* not NONSYSTEM_DIR_LIBRARY */
++
++#define DIRENTRY struct direct
++#define NAMLEN(p) p->d_namlen
++
++#endif /* not SYSV_SYSTEM_DIR */
++#endif /* NODIRECTORY */
++
++/* ------------------------------------------------------------------------ */
++/* Other Define */
++/* ------------------------------------------------------------------------ */
++/* Not support 'void' */
++#ifdef NOVOID
++#define void
++#endif
++
++#ifndef SEEK_SET
++#define SEEK_SET 0
++#define SEEK_CUR 1
++#define SEEK_END 2
++#endif /* SEEK_SET
++
++
++/* non-integral functions */
++extern struct tm *localtime();
++extern char *getenv();
++
++#ifndef _MINIX
++#ifndef __STDC__
++extern char *malloc();
++extern char *realloc();
++#endif
++#endif
++
++/* external variables */
++extern int errno;
++
++#define FALSE 0
++#define TRUE 1
++typedef int boolean;
++
++/* used by qsort() for alphabetic-sort */
++#define STRING_COMPARE(a,b) strcmp((a),(b))
++
++#define FILENAME_LENGTH 1024
++
++/* ------------------------------------------------------------------------ */
++/* YOUR CUSTOMIZIES */
++/* ------------------------------------------------------------------------ */
++
++#ifndef ARCHIVENAME_EXTENTION
++#define ARCHIVENAME_EXTENTION ".lzh"
++#endif
++#ifndef BACKUPNAME_EXTENTION
++#define BACKUPNAME_EXTENTION ".bak"
++#endif
++#ifndef TMP_FILENAME_TEMPLATE
++#define TMP_FILENAME_TEMPLATE "/tmp/lhXXXXXX"
++#endif
++
++#define SJC_FIRST_P(c) \
++ (((unsigned char)(c) >= 0x80) && \
++ (((unsigned char)(c) < 0xa0) || \
++ ((unsigned char)(c) >= 0xe0) && \
++ ((unsigned char)(c) < 0xfd)))
++#define SJC_SECOND_P(c) \
++ (((unsigned char)(c) >= 0x40) && \
++ ((unsigned char)(c) < 0xfd) && \
++ ((unsigned char)(c) != 0x7f))
++
++#ifdef MULTIBYTE_CHAR
++#define MULTIBYTE_FIRST_P SJC_FIRST_P
++#define MULTIBYTE_SECOND_P SJC_SECOND_P
++#endif /* MULTIBYTE_CHAR */
++
++/* ------------------------------------------------------------------------ */
++/* LHa File Definitions */
++/* ------------------------------------------------------------------------ */
++#ifdef S_IFLNK
++#define GETSTAT lstat
++#else
++#define GETSTAT stat
++#endif
++
++#ifdef LHA_MAIN_SRC
++#define EXTERN
++#else
++#define EXTERN extern
++#endif /* LHA_MAIN_SRC */
++
++#define LZHUFF0_METHOD "-lh0-"
++#define LZHUFF1_METHOD "-lh1-"
++#define LZHUFF2_METHOD "-lh2-"
++#define LZHUFF3_METHOD "-lh3-"
++#define LZHUFF4_METHOD "-lh4-"
++#define LZHUFF5_METHOD "-lh5-"
++#define LZHUFF6_METHOD "-lh6-"
++#define LZHUFF7_METHOD "-lh7-"
++#define LARC_METHOD "-lzs-"
++#define LARC5_METHOD "-lz5-"
++#define LARC4_METHOD "-lz4-"
++#define LZHDIRS_METHOD "-lhd-"
++
++#define METHOD_TYPE_STRAGE 5
++
++/* Added N.Watazaki ..V */
++#define LZHUFF0_METHOD_NUM 0
++#define LZHUFF1_METHOD_NUM 1
++#define LZHUFF2_METHOD_NUM 2
++#define LZHUFF3_METHOD_NUM 3
++#define LZHUFF4_METHOD_NUM 4
++#define LZHUFF5_METHOD_NUM 5
++#define LZHUFF6_METHOD_NUM 6
++#define LZHUFF7_METHOD_NUM 7
++#define LARC_METHOD_NUM 8
++#define LARC5_METHOD_NUM 9
++#define LARC4_METHOD_NUM 10
++#define LZHDIRS_METHOD_NUM 11
++/* Added N.Watazaki ..^ */
++
++#define I_HEADER_SIZE 0
++#define I_HEADER_CHECKSUM 1
++#define I_METHOD 2
++#define I_PACKED_SIZE 7
++#define I_ORIGINAL_SIZE 11
++#define I_LAST_MODIFIED_STAMP 15
++#define I_ATTRIBUTE 19
++#define I_HEADER_LEVEL 20
++#define I_NAME_LENGTH 21
++#define I_NAME 22
++
++#define I_CRC 22 /* + name_length */
++#define I_EXTEND_TYPE 24 /* + name_length */
++#define I_MINOR_VERSION 25 /* + name_length */
++#define I_UNIX_LAST_MODIFIED_STAMP 26 /* + name_length */
++#define I_UNIX_MODE 30 /* + name_length */
++#define I_UNIX_UID 32 /* + name_length */
++#define I_UNIX_GID 34 /* + name_length */
++#define I_UNIX_EXTEND_BOTTOM 36 /* + name_length */
++
++#define I_GENERIC_HEADER_BOTTOM I_EXTEND_TYPE
++
++#define EXTEND_GENERIC 0
++#define EXTEND_UNIX 'U'
++#define EXTEND_MSDOS 'M'
++#define EXTEND_MACOS 'm'
++#define EXTEND_OS9 '9'
++#define EXTEND_OS2 '2'
++#define EXTEND_OS68K 'K'
++#define EXTEND_OS386 '3' /* OS-9000??? */
++#define EXTEND_HUMAN 'H'
++#define EXTEND_CPM 'C'
++#define EXTEND_FLEX 'F'
++#define EXTEND_RUNSER 'R'
++
++/* this OS type is not official */
++
++#define EXTEND_TOWNSOS 'T'
++#define EXTEND_XOSK 'X'
++
++/*---------------------------------------------------------------------------*/
++
++#define GENERIC_ATTRIBUTE 0x20
++#define GENERIC_DIRECTORY_ATTRIBUTE 0x10
++#define HEADER_LEVEL0 0x00
++#define HEADER_LEVEL1 0x01
++#define HEADER_LEVEL2 0x02
++
++#define CURRENT_UNIX_MINOR_VERSION 0x00
++
++#define DELIM ('/')
++#define DELIM2 (0xff)
++#define DELIMSTR "/"
++
++#define OSK_RW_RW_RW 0000033
++#define OSK_FILE_REGULAR 0000000
++#define OSK_DIRECTORY_PERM 0000200
++#define OSK_SHARED_PERM 0000100
++#define OSK_OTHER_EXEC_PERM 0000040
++#define OSK_OTHER_WRITE_PERM 0000020
++#define OSK_OTHER_READ_PERM 0000010
++#define OSK_OWNER_EXEC_PERM 0000004
++#define OSK_OWNER_WRITE_PERM 0000002
++#define OSK_OWNER_READ_PERM 0000001
++
++#define UNIX_FILE_TYPEMASK 0170000
++#define UNIX_FILE_REGULAR 0100000
++#define UNIX_FILE_DIRECTORY 0040000
++#define UNIX_FILE_SYMLINK 0120000
++#define UNIX_SETUID 0004000
++#define UNIX_SETGID 0002000
++#define UNIX_STYCKYBIT 0001000
++#define UNIX_OWNER_READ_PERM 0000400
++#define UNIX_OWNER_WRITE_PERM 0000200
++#define UNIX_OWNER_EXEC_PERM 0000100
++#define UNIX_GROUP_READ_PERM 0000040
++#define UNIX_GROUP_WRITE_PERM 0000020
++#define UNIX_GROUP_EXEC_PERM 0000010
++#define UNIX_OTHER_READ_PERM 0000004
++#define UNIX_OTHER_WRITE_PERM 0000002
++#define UNIX_OTHER_EXEC_PERM 0000001
++#define UNIX_RW_RW_RW 0000666
++
++#define LZHEADER_STRAGE 4096
++
++#define MAX_INDICATOR_COUNT 64
++
++typedef short node;
++
++/* ------------------------------------------------------------------------ */
++/* Slide relation */
++/* ------------------------------------------------------------------------ */
++#if defined(__STDC__) || defined(AIX)
++
++#include <limits.h>
++
++#else
++
++#ifndef CHAR_BIT
++#define CHAR_BIT 8
++#endif
++
++#ifndef UCHAR_MAX
++#define UCHAR_MAX ((1<<(sizeof(unsigned char)*8))-1)
++#endif
++
++#ifndef USHRT_MAX
++#define USHRT_MAX ((1<<(sizeof(unsigned short)*8))-1)
++#endif
++
++#ifndef SHRT_MAX
++#define SHRT_MAX ((1<<(sizeof(short)*8-1))-1)
++#endif
++
++#ifndef SHRT_MIN
++#define SHRT_MIN (SHRT_MAX-USHRT_MAX)
++#endif
++
++#ifndef ULONG_MAX
++#define ULONG_MAX ((1<<(sizeof(unsigned long)*8))-1)
++#endif
++
++#ifndef LONG_MAX
++#define LONG_MAX ((1<<(sizeof(long)*8-1))-1)
++#endif
++
++#ifndef LONG_MIN
++#define LONG_MIN (LONG_MAX-ULONG_MAX)
++#endif
++
++#endif /* not __STDC__ */
++
++/* ------------------------------------------------------------------------ */
++/* FILE Attribute */
++/* ------------------------------------------------------------------------ */
++#define is_directory(statp) (((statp)->st_mode & S_IFMT) == S_IFDIR)
++#define is_symlink(statp) (((statp)->st_mode & S_IFMT) == S_IFLNK)
++#define is_regularfile(statp) (((statp)->st_mode & S_IFMT) == S_IFREG)
++
++#ifdef MSDOS
++#define WRITE_BINARY "wb"
++#define READ_BINARY "rb"
++#else
++#define WRITE_BINARY "w"
++#define READ_BINARY "r"
++#endif
++
++/* ------------------------------------------------------------------------ */
++/* Memory and String function */
++/* ------------------------------------------------------------------------ */
++#include <string.h>
++
++#ifdef NOINDEX
++#define index strchr
++#define rindex strrchr
++#endif /* NOINDEX */
++
++#ifdef NOBSTRING
++#define bcmp(a,b,n) memcmp ((a),(b),(n))
++#define bzero(d,n) memset((d),0,(n))
++#define bcopy(s,d,n) memmove((d),(s),(n))
++#endif /* NOBSTRING */
++
++#ifdef USESTRCASECMP
++#define strucmp(p,q) strcasecmp((p),(q))
++#endif
++
++/* ------------------------------------------------------------------------ */
++/* Individual macro define */
++/* ------------------------------------------------------------------------ */
++
++/* from crcio.c */
++#define CRCPOLY 0xA001 /* CRC-16 */
++#define UPDATE_CRC(c) crc = crctable[(crc ^ (c)) & 0xFF] ^ (crc >> CHAR_BIT)
++
++/* dhuf.c */
++#define N_CHAR (256 + 60 - THRESHOLD + 1)
++#define TREESIZE_C (N_CHAR * 2)
++#define TREESIZE_P (128 * 2)
++#define TREESIZE (TREESIZE_C + TREESIZE_P)
++#define ROOT_C 0
++#define ROOT_P TREESIZE_C
++
++/* header.c */
++#define setup_get(PTR) (get_ptr = (PTR))
++#define get_byte() (*get_ptr++ & 0xff)
++#define put_ptr get_ptr
++#define setup_put(PTR) (put_ptr = (PTR))
++#define put_byte(c) (*put_ptr++ = (char)(c))
++
++/* huf.c */
++#define NP (MAX_DICBIT + 1)
++#define NT (USHRT_BIT + 3)
++#if 0
++#define PBIT 4 /* smallest integer such that (1 << PBIT) > * NP */
++#define TBIT 5 /* smallest integer such that (1 << TBIT) > * NT */
++#endif
++
++#define PBIT 5 /* smallest integer such that (1 << PBIT) > * NP */
++#define TBIT 5 /* smallest integer such that (1 << TBIT) > * NT */
++
++#define NC (UCHAR_MAX + MAXMATCH + 2 - THRESHOLD)
++
++/* #if NT > NP #define NPT NT #else #define NPT NP #endif */
++#define NPT 0x80
++
++/* larc.c */
++#define MAGIC0 18
++#define MAGIC5 19
++
++/* lharc.c */
++#define CMD_UNKNOWN 0
++#define CMD_EXTRACT 1
++#define CMD_ADD 2
++#define CMD_LIST 3
++#define CMD_DELETE 4
++
++#define STREQU(a,b) (((a)[0] == (b)[0]) ? (strcmp ((a),(b)) == 0) : FALSE)
++
++/* shuf.c */
++#define N1 286 /* alphabet size */
++#define N2 (2 * N1 - 1) /* # of nodes in Huffman tree */
++#define EXTRABITS 8 /* >= log2(F-THRESHOLD+258-N1) */
++#define BUFBITS 16 /* >= log2(MAXBUF) */
++#define LENFIELD 4 /* bit size of length field for tree output */
++
++/* util.c */
++#define BUFFERSIZE 2048
++#define MAXSFXCODE 1024*64
++
++#ifndef NULL
++#define NULL (char *)0
++#endif
++
++/* slide.c */
++/*
++#define PERCOLATE 1
++#define NIL 0
++#define HASH(p, c) ((p) + ((c) << hash1) + hash2)
++*/
++
++/* slide.c */
++#ifdef SUPPORT_LH7
++#define MAX_DICBIT 16 /* lh7 use 16bits */
++#endif
++
++#ifndef SUPPORT_LH7
++#define MAX_DICBIT 15 /* lh6 use 15bits */
++#endif
++
++#define MAX_DICSIZ (1 << MAX_DICBIT)
++#define MATCHBIT 8 /* bits for MAXMATCH - THRESHOLD */
++#define MAXMATCH 256 /* formerly F (not more than UCHAR_MAX + 1) */
++#define THRESHOLD 3 /* choose optimal value */
++
++/* from huf.c */
++
++/* alphabet = {0, 1, 2, ..., NC - 1} */
++#define CBIT 9 /* $\lfloor \log_2 NC \rfloor + 1$ */
++#define USHRT_BIT 16 /* (CHAR_BIT * sizeof(ushort)) */
++
++/* Local Variables: */
++/* mode:c */
++/* tab-width:4 */
++/* End: */
+--- lha-1.14i.orig/debian/org/lhlist.c
++++ lha-1.14i/debian/org/lhlist.c
+@@ -0,0 +1,348 @@
++/* ------------------------------------------------------------------------ */
++/* LHa for UNIX */
++/* lhlist.c -- LHarc list */
++/* */
++/* Copyright (C) MCMLXXXIX Yooichi.Tagawa */
++/* Modified Nobutaka Watazaki */
++/* */
++/* Ver. 0.00 Original 1988.05.23 Y.Tagawa */
++/* Ver. 1.00 Fixed 1989.09.22 Y.Tagawa */
++/* Ver. 1.01 Bug Fix for month name 1989.12.25 Y.Tagawa */
++/* Ver. 1.10 Changed list format 1993.10.01 N.Watazaki */
++/* Ver. 1.14 Source All chagned 1995.01.14 N.Watazaki */
++/* Ver. 1.14e Bug Fix for many problems 1999.05.25 T.Okamoto */
++/* ------------------------------------------------------------------------ */
++#include "lha.h"
++
++/* ------------------------------------------------------------------------ */
++static long packed_size_total;
++static long original_size_total;
++static int list_files;
++
++/* ------------------------------------------------------------------------ */
++/* Print Stuff */
++/* ------------------------------------------------------------------------ */
++/* need 14 or 22 (when verbose_listing is TRUE) column spaces */
++static void
++print_size(packed_size, original_size)
++ long packed_size, original_size;
++{
++ if (verbose_listing)
++ printf("%7d ", packed_size);
++
++ printf("%7d ", original_size);
++
++ if (original_size == 0L)
++ printf("******");
++ else /* Changed N.Watazaki */
++ printf("%5.1f%%", packed_size * 100.0 / original_size);
++}
++
++/* ------------------------------------------------------------------------ */
++/* need 12 or 17 (when verbose_listing is TRUE) column spaces */
++static void
++print_stamp(t)
++ time_t t;
++{
++ static boolean got_now = FALSE;
++ static time_t now;
++ static unsigned int threshold;
++ static char t_month[12 * 3 + 1] = "JanFebMarAprMayJunJulAugSepOctNovDec";
++ struct tm *p;
++
++ if (t == 0) {
++ printf(" "); /* 12 spaces */
++ return;
++ }
++
++ if (!got_now) {
++ now = time((time_t *) 0);
++ p = localtime(&now);
++ threshold = p->tm_year * 12 + p->tm_mon - 6;
++ got_now = TRUE;
++ }
++
++ p = localtime(&t);
++
++ if (p->tm_year * 12 + p->tm_mon > threshold)
++ printf("%.3s %2d %02d:%02d",
++ &t_month[p->tm_mon * 3], p->tm_mday, p->tm_hour, p->tm_min);
++ else
++ printf("%.3s %2d %04d",
++ &t_month[p->tm_mon * 3], p->tm_mday, p->tm_year + 1900);
++}
++
++/* ------------------------------------------------------------------------ */
++static void
++print_bar()
++{
++ char *p, *q;
++ /* 17+1+(0 or 7+1)+7+1+6+1+(0 or 1+4)+(12 or 17)+1+20 */
++ /* 12345678901234567_ 1234567_123456 _123456789012 1234 */
++
++ if (verbose_listing) {
++ p = "- ------ ---------- ";
++ q = " -------------";
++ }
++ else {
++ p = " ";
++ q = " --------------------";
++ }
++
++ if (verbose)
++ q = "";
++
++ printf("---------- ----------- ------- ------%s------------%s\n", p, q);
++}
++
++/* ------------------------------------------------------------------------ */
++/* */
++/* ------------------------------------------------------------------------ */
++static void
++list_header()
++{
++ char *p, *q;
++
++ if (verbose_listing) {
++ p = "PACKED SIZE RATIO METHOD CRC";
++ q = " NAME";
++ }
++ else {
++ p = " SIZE RATIO";
++ q = " NAME";
++ }
++
++ if (verbose)
++ q = "";
++
++ printf(" PERMSSN UID GID %s STAMP%s\n", p, q);
++#if 0
++ printf(" PERMSSN UID GID %s SIZE RATIO%s %s STAMP%s%s\n",
++ verbose_listing ? " PACKED " : "", /* 8,0 */
++ verbose_listing ? " CRC" : "", /* 5,0 */
++ verbose_listing ? " " : "", /* 2,0 */
++ verbose_listing ? " " : " ", /* 6,3 */
++ verbose ? "" : " NAME");
++#endif
++ print_bar();
++}
++
++/* ------------------------------------------------------------------------ */
++static void
++list_one(hdr)
++ register LzHeader *hdr;
++{
++ register int mode;
++ register char *p;
++ char method[6];
++ char modebits[11];
++
++ if (verbose)
++ printf("%s\n", hdr->name);
++
++ strncpy(method, hdr->method, 5);
++ method[5] = '\0';
++
++ switch (mode = hdr->extend_type) {
++ case EXTEND_UNIX:
++ mode = hdr->unix_mode;
++
++ if (mode & UNIX_FILE_DIRECTORY)
++ modebits[0] = 'd';
++ else if ((mode & UNIX_FILE_SYMLINK) == UNIX_FILE_SYMLINK)
++ modebits[0] = 'l';
++ else
++ modebits[0] = '-';
++ modebits[1] = ((mode & UNIX_OWNER_READ_PERM) ? 'r' : '-');
++ modebits[2] = ((mode & UNIX_OWNER_WRITE_PERM) ? 'w' : '-');
++ modebits[3] = (mode & UNIX_SETUID) ? 's' :
++ ((mode & UNIX_OWNER_EXEC_PERM) ? 'x' : '-');
++ modebits[4] = ((mode & UNIX_GROUP_READ_PERM) ? 'r' : '-');
++ modebits[5] = ((mode & UNIX_GROUP_WRITE_PERM) ? 'w' : '-');
++ modebits[6] = (mode & UNIX_SETGID) ? 's' :
++ ((mode & UNIX_GROUP_EXEC_PERM) ? 'x' : '-');
++ modebits[7] = ((mode & UNIX_OTHER_READ_PERM) ? 'r' : '-');
++ modebits[8] = ((mode & UNIX_OTHER_WRITE_PERM) ? 'w' : '-');
++ modebits[9] = (mode & UNIX_STYCKYBIT) ? 't' :
++ ((mode & UNIX_OTHER_EXEC_PERM) ? 'x' : '-');
++ modebits[10] = 0;
++
++ printf("%s %5d/%-5d ", modebits,
++ hdr->unix_uid, hdr->unix_gid);
++ break;
++ case EXTEND_OS68K:
++ /**/ case EXTEND_XOSK:/**/
++ mode = hdr->unix_mode;
++ printf("%c%c%c%c%c%c%c%c %5d/%-5d",
++ ((mode & OSK_DIRECTORY_PERM) ? 'd' : '-'),
++ ((mode & OSK_SHARED_PERM) ? 's' : '-'),
++ ((mode & OSK_OTHER_EXEC_PERM) ? 'e' : '-'),
++ ((mode & OSK_OTHER_WRITE_PERM) ? 'w' : '-'),
++ ((mode & OSK_OTHER_READ_PERM) ? 'r' : '-'),
++ ((mode & OSK_OWNER_EXEC_PERM) ? 'e' : '-'),
++ ((mode & OSK_OWNER_WRITE_PERM) ? 'w' : '-'),
++ ((mode & OSK_OWNER_READ_PERM) ? 'r' : '-'),
++ hdr->unix_uid, hdr->unix_gid);
++ break;
++ default:
++ switch (hdr->extend_type) { /* max 18 characters */
++ case EXTEND_GENERIC:
++ p = "[generic]";
++ break;
++ case EXTEND_CPM:
++ p = "[CP/M]";
++ break;
++ case EXTEND_FLEX:
++ p = "[FLEX]";
++ break;
++ case EXTEND_OS9:
++ p = "[OS-9]";
++ break;
++ case EXTEND_OS68K:
++ p = "[OS-9/68K]";
++ break;
++ case EXTEND_MSDOS:
++ p = "[MS-DOS]";
++ break;
++ case EXTEND_MACOS:
++ p = "[Mac OS]";
++ break;
++ case EXTEND_OS2:
++ p = "[OS/2]";
++ break;
++ case EXTEND_HUMAN:
++ p = "[Human68K]";
++ break;
++ case EXTEND_OS386:
++ p = "[OS-386]";
++ break;
++ case EXTEND_RUNSER:
++ p = "[Runser]";
++ break;
++#ifdef EXTEND_TOWNSOS
++ /* This ID isn't fixed */
++ case EXTEND_TOWNSOS:
++ p = "[TownsOS]";
++ break;
++#endif
++ /* Ouch! Please customize it's ID. */
++ default:
++ p = "[unknown]";
++ break;
++ }
++ printf("%-23.23s", p);
++ break;
++ }
++
++ print_size(hdr->packed_size, hdr->original_size);
++
++ if (verbose_listing)
++ if (hdr->has_crc)
++ printf(" %s %04x", method, hdr->crc);
++ else
++ printf(" %s ****", method);
++
++ printf(" ");
++ print_stamp(hdr->unix_last_modified_stamp);
++
++ if (!verbose)
++ if ((mode & UNIX_FILE_SYMLINK) != UNIX_FILE_SYMLINK)
++ printf(" %s", hdr->name);
++ else {
++ char buf[256], *b1, *b2;
++ strcpy(buf, hdr->name);
++ b1 = strtok(buf, "|");
++ b2 = strtok(NULL, "|");
++ printf(" %s -> %s", b1, b2);
++ }
++
++ if (verbose)
++ printf(" [%d]", hdr->header_level);
++ printf("\n");
++
++}
++
++/* ------------------------------------------------------------------------ */
++static void
++list_tailer()
++{
++ struct stat stbuf;
++
++ print_bar();
++
++ printf(" Total %9d file%c ",
++ list_files, (list_files == 1) ? ' ' : 's');
++ print_size(packed_size_total, original_size_total);
++ printf(" ");
++
++ if (verbose_listing)
++ printf(" ");
++
++ if (stat(archive_name, &stbuf) < 0)
++ print_stamp((time_t) 0);
++ else
++ print_stamp(stbuf.st_mtime);
++
++ printf("\n");
++}
++
++/* ------------------------------------------------------------------------ */
++/* LIST COMMAND MAIN */
++/* ------------------------------------------------------------------------ */
++void
++cmd_list()
++{
++ FILE *afp;
++ LzHeader hdr;
++ int i;
++
++ /* initialize total count */
++ packed_size_total = 0L;
++ original_size_total = 0L;
++ list_files = 0;
++
++ /* open archive file */
++ if ((afp = open_old_archive()) == NULL) {
++ error(archive_name, "");
++ exit(1);
++ }
++ if (archive_is_msdos_sfx1(archive_name))
++ skip_msdos_sfx1_code(afp);
++
++ /* print header message */
++ if (!quiet)
++ list_header();
++
++ /* print each file information */
++ while (get_header(afp, &hdr)) {
++ if (need_file(hdr.name)) {
++ list_one(&hdr);
++ list_files++;
++ packed_size_total += hdr.packed_size;
++ original_size_total += hdr.original_size;
++ }
++
++ if (afp != stdin)
++ fseek(afp, hdr.packed_size, SEEK_CUR);
++ else {
++ i = hdr.packed_size;
++ while (i--)
++ fgetc(afp);
++ }
++ }
++
++ /* close archive file */
++ fclose(afp);
++
++ /* print tailer message */
++ if (!quiet)
++ list_tailer();
++
++ return;
++}
++
++/* Local Variables: */
++/* mode:c */
++/* tab-width:4 */
++/* compile-command:"gcc -c lhlist.c" */
++/* End: */
+--- lha-1.14i.orig/debian/changelog
++++ lha-1.14i/debian/changelog
+@@ -0,0 +1,178 @@
++lha (1.14i-10.1) unstable; urgency=high
++
++ * Security NMU for vulnerabilities inherited from GNU Gzip:
++ [CVE-2006-4335 CVE-2006-4337 CVE-2006-4338]
++
++ -- Moritz Muehlenhoff <jmm@debian.org> Wed, 13 Dec 2006 20:21:32 +0100
++
++lha (1.14i-10) unstable; urgency=high
++
++ * debian/patch.redhat-sec2: Add one more security patch to fix:
++ - CAN-2004-0771 (-w working directory option buffer overflow)
++ http://www.cve.mitre.org/cgi-bin/cvename.cgi?name=CAN-2004-0771
++ - CAN-2004-0769 (buffer overflow can be executed arbitrary code
++ via long pathnames in headers, another issue of bug fixed in -9)
++ http://cve.mitre.org/cgi-bin/cvename.cgi?name=CAN-2004-0769
++ - CAN-2004-0745 (execute arbitrary commands via a directory with
++ shell metacharacters in its name.)
++ http://cve.mitre.org/cgi-bin/cvename.cgi?name=CAN-2004-0745
++ - CAN-2004-0694 (reserved number)
++ http://cve.mitre.org/cgi-bin/cvename.cgi?name=CAN-2004-0694
++ taken from RedHat patch. (Closes: #279870)
++ * man/lha.n: Fix typo "flie" instead of "file". (Closes: #277545)
++
++ -- GOTO Masanori <gotom@debian.org> Sat, 13 Nov 2004 15:31:22 +0900
++
++lha (1.14i-9) unstable; urgency=high
++
++ * debian/patch.header-overflow: Add fix another lha buffer overflow
++ problem. It warns when hitting an archive which includes
++ long directory name with option l, v, x. See:
++ http://lw.ftw.zamosc.pl/lha-exploit.txt
++ http://www.securityfocus.com/archive/1/363418
++ http://bugs.gentoo.org/show_bug.cgi?id=51285
++ Thanks to Lukasz Wojtow <lw@wszia.edu.pl> for pointing this problem.
++
++ -- GOTO Masanori <gotom@debian.org> Wed, 16 Jun 2004 09:51:06 +0900
++
++lha (1.14i-8) unstable; urgency=high
++
++ * debian/patch.CAN-2004-0234_0235: Add fix CAN-2004-0235 symlink part
++ patches. (Closes: #247355, #247357)
++
++ -- GOTO Masanori <gotom@debian.org> Sat, 8 May 2004 02:24:57 +0900
++
++lha (1.14i-7) unstable; urgency=high
++
++ * debian/patch.CAN-2004-ulf: Add to fix CAN-2004-0234 (buffer overflows),
++ CAN-2004-0235 (directory traversal). See:
++ http://marc.theaimsgroup.com/?l=full-disclosure&m=108345064008698&w=2
++ * debian/control: Change my mail address.
++
++ -- GOTO Masanori <gotom@debian.org> Thu, 6 May 2004 15:13:14 +0900
++
++lha (1.14i-6) unstable; urgency=low
++
++ * debian/copyright: Added more copyright license statement, translated
++ by Osamu Aoki <debian@aokiconsulting.com>.
++ * debian/copyright: Added good summary of upstream author, investigated by
++ Osamu Aoki <debian@aokiconsulting.com> and
++ Tatsuya Kinoshita <tats@iris.ne.jp>.
++ * debian/header-e.doc: Added English version of header.doc (LHa header
++ structure format document) translated by Osamu Aoki
++ <debian@aokiconsulting.com>.
++
++ -- GOTO Masanori <gotom@debian.or.jp> Tue, 27 Aug 2002 13:08:22 +0900
++
++lha (1.14i-5) unstable; urgency=low
++
++ * debian/patch.multibyte: Add multibyte character mode option 'y'.
++ You can use multibyte filename especially SHIFTJIS code
++ with this option.
++
++ -- GOTO Masanori <gotom@debian.or.jp> Fri, 19 Jul 2002 16:57:11 +0900
++
++lha (1.14i-4) unstable; urgency=low
++
++ * debian/copyright: add original/translated license statement
++ (closes: Bug#144582).
++
++ -- GOTO Masanori <gotom@debian.or.jp> Wed, 1 May 2002 09:53:24 +0900
++
++lha (1.14i-3) unstable; urgency=low
++
++ * fix lha reports a wrong version number (closes: Bug#135199).
++
++ -- GOTO Masanori <gotom@debian.or.jp> Sun, 3 Mar 2002 21:38:46 +0900
++
++lha (1.14i-2) unstable; urgency=low
++
++ * Applied the patch not to get compiling warning message.
++ Patched by Paul Slootman <paul@wurtel.net>. (Closes: #109634).
++
++ -- GOTO Masanori <gotom@debian.or.jp> Thu, 23 Aug 2001 00:26:53 +0900
++
++lha (1.14i-1) unstable; urgency=low
++
++ * New upstream release (Closes: #62256).
++ * New maintainer.
++ * Updated Standards-version 3.5.2.
++ * Use build this package with dh_*.
++ * New upstream version is ready for -lh7- format (Closes: #67592).
++ * Japanese manual is now included (Closes: #49245).
++ * Unclosed Bugs (No copyright file is included)
++ has just re-closed (Closes: #48748).
++
++ -- GOTO Masanori <gotom@debian.or.jp> Sun, 22 Jul 2001 13:11:50 +0900
++
++lha (1.14e-2) unstable; urgency=low
++
++ * Moved /usr/man/* and /usr/doc/* under /usr/share. Closes: #80759.
++ * Updated Standards-version, fixed lintian warnings.
++
++ -- Steve McIntyre <stevem@chiark.greenend.org.uk> Sun, 21 Jan 2001 17:35:52 +0000
++
++lha (1.14e-0) unstable; urgency=low
++
++ * New upstream release. Thanks to Jiro Iwamoto <iwamot@maroon.plala.or.jp> for pointing this out.
++
++ -- Steve McIntyre <stevem@chiark.greenend.org.uk> Sun, 25 Jul 1999 23:05:24 +0100
++
++lha (1.14d-1) unstable; urgency=low
++
++ * Fixed manpage - no need to specify "-b" for command line help. Closes bug #33328.
++
++ -- Steve McIntyre <stevem@chiark.greenend.org.uk> Sun, 14 Feb 1999 16:24:44 +0000
++
++lha (1.14d-0) unstable; urgency=low
++
++ * New upstream release. Thanks to Tomohiro KUBOTA <kubota@kubota.rcpom.osaka-u.ac.jp> for pointing this out.
++
++ -- Steve McIntyre <stevem@chiark.greenend.org.uk> Sat, 16 Jan 1999 21:54:37 +0000
++
++lha (1.14c-1) frozen unstable; urgency=low
++
++ * New man page, supplied by Martin Schulze <joey@finlandia.Infodrom.North.DE>. Fixes Bug#27195.
++
++ -- Steve McIntyre <stevem@chiark.greenend.org.uk> Sun, 18 Oct 1998 13:53:12 +0100
++
++lha (1.14c-0) unstable; urgency=low
++
++ * New upstream release. Thanks to Atsushi KAMOSHIDA <kamop@debian.or.jp> for pointing this out.
++
++ -- Steve McIntyre <stevem@chiark.greenend.org.uk> Sat, 15 Aug 1998 14:16:19 +0100
++
++lha (1.00-6) unstable; urgency=low
++
++ * New maintainer.
++
++ -- Steve McIntyre <stevem@chiark.greenend.org.uk> Mon, 12 Jan 1998 00:09:12 +0000
++
++lha (1.00-5) unstable; urgency=low, closes=16756
++
++ * Corrected Standards-Version to 2.3.0.1 (Bug#16756)
++
++ -- Martin Schulze <joey@finlandia.infodrom.north.de> Fri, 9 Jan 1998 02:08:03 +0100
++
++lha (1.00-4) unstable; urgency=low
++
++ * Compiled against libc6 (Bug#11696)
++
++ -- Martin Schulze <joey@finlandia.infodrom.north.de> Wed, 31 Dec 1997 20:51:38 +0100
++
++lha (1.00-3) unstable; urgency=low
++
++ * Corrected manpage (Bug#7980)
++
++ * New maintainer address
++
++ -- Martin Schulze <joey@namib.north.de> Mon, 28 Apr 1997 13:10:10 +0200
++
++lha (1.00-2) unstable; urgency=low
++
++ * Installed ChangeLog files
++
++ * Converted into new packaging scheme
++
++ -- Martin Schulze <joey@namib.north.de> Sun, 23 Feb 1997 12:22:13 +0100
++
+--- lha-1.14i.orig/debian/lha.1
++++ lha-1.14i/debian/lha.1
+@@ -0,0 +1,139 @@
++ .\" lha - LZH un-archiver
++.\" Copyright (c) 1996 Martin Schulze <joey@namib.north.de>
++.\"
++.\" This manual page 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.
++.\"
++.\" This manpage is written especially for Debian GNU/Linux.
++.\"
++.\" LHarc for UNIX V 1.02 Copyright(C) 1989 Y.Tagawa
++.\" LHx for MSDOS V C2.01 Copyright(C) 1990 H.Yoshizaki
++.\" LHx(arc) for OSK V 2.01 Modified 1990 Momozou
++.\" LHa for UNIX V 1.00 Copyright(C) 1992 Masaru Oki
++.\"
++.\" Additions by Joerg Boehnke <joerg@oggi.oche.de>
++.\"
++.TH LHA 1 "22 Sept, 1998" "Debian GNU/Linux" "Archiver"
++.SH NAME
++LHa \- LZH un-archiver
++.SH SYNOPSIS
++.B lha
++.B key
++[
++.B -
++]
++.B {axelvudmcp}
++[
++.B qvnfodizg012
++]
++[
++.B w=<dir>
++]
++.I archive_file
++[
++.I flie
++\&.\|.\|. ]
++.br
++.B lha
++.I archive_file
++.SH DESCRIPTION
++The
++.B lha
++program displays or extracts the contents of a LZH archive.
++
++For a list of commands, please refer to the executable. It will
++display a list of valid commands and modifiers if you omit any
++parameter.
++
++.TP
++commands:
++
++.B a
++Add(or replace) to archive
++
++.B x,e
++EXtract from archive
++
++.B l,v
++List / Verbose List
++
++.B u
++Update newer files to archive
++
++.B d
++Delete from archive
++
++.B m
++Move to archive (means 'ad')
++
++.B c
++re-Construct new archive
++
++.B p
++Print to STDOUT from archive
++
++.B t
++Test file CRC in archive
++
++.TP
++options:
++
++.B q
++quiet
++
++.B v
++verbose
++
++.B n
++not execute
++
++.B f
++force (over write at extract)
++
++.B t
++FILES are TEXT file
++
++.B o
++use LHarc compatible method (a/u)
++
++.B w=<dir>
++specify extract directory (x/e)
++
++.B d
++delete FILES after (a/u/c)
++
++.B i
++ignore directory path (x/e)
++
++.B z
++files not compress (a/u)
++
++.B g
++[Generic] format (for compatibility)
++
++.B 0/1/2
++header level (a/u)
++
++.B e
++TEXT code convert from/to EUC
++
++.B y
++filename multibyte convert
++
++.SH BUGS
++
++This manpage is poor, it really should be improved, but the original
++is in Japanese.
++
++Try lha without any command line arguments to get help
+--- lha-1.14i.orig/debian/rules
++++ lha-1.14i/debian/rules
+@@ -0,0 +1,115 @@
++#!/usr/bin/make -f
++# Sample debian/rules that uses debhelper.
++# GNU copyright 1997 to 1999 by Joey Hess.
++
++# Uncomment this to turn on verbose mode.
++#export DH_VERBOSE=1
++
++# This is the debhelper compatability version to use.
++export DH_COMPAT=3
++
++configure: configure-stamp
++configure-stamp:
++ dh_testdir
++ # Add here commands to configure the package.
++
++ patch -p0 < debian/patch.paul
++ patch -p0 < debian/patch.multibyte
++ patch -p0 < debian/patch.CAN-2004-0234_0235
++ patch -p0 < debian/patch.header-overflow
++ patch -p1 < debian/patch.redhat-sec2
++ patch -p1 < debian/patch.CVE-2006-4335-CVE-2006-4337-CVE-2006-4338
++
++ touch configure-stamp
++
++build: configure-stamp build-stamp
++build-stamp:
++ dh_testdir
++
++ # Add here commands to compile the package.
++ $(MAKE)
++ #/usr/bin/docbook-to-man debian/lha.sgml > lha.1
++
++ touch build-stamp
++
++clean:
++ dh_testdir
++ dh_testroot
++ rm -f build-stamp configure-stamp
++
++ # Add here commands to clean up after the build process.
++ -$(MAKE) clean
++
++ # delete copied docs.
++ rm -f MACHINES MACHINES2 PROBLEMS README
++ rm -f header.doc debian/lha.euc.1.gz debian/lha.1.gz
++ cp debian/org/lha.h src/lha.h
++ cp debian/org/header.c src/header.c
++ cp debian/org/lharc.c src/lharc.c
++ cp debian/org/util.c src/util.c
++ cp debian/org/lhext.c src/lhext.c
++ cp debian/org/lhlist.c src/lhlist.c
++ cp debian/org/lha_macro.h src/lha_macro.h
++
++ dh_clean
++
++install: build
++ dh_testdir
++ dh_testroot
++ dh_clean -k
++ dh_installdirs
++
++ # Add here commands to install the package into debian/lha.
++ # $(MAKE) install BINDIR=$(CURDIR)/debian/lha/usr/bin \
++ # MANDIR=$(CURDIR)/debian/lha/usr/share/man \
++ # MANSECT=1
++ install -m 755 src/lha $(CURDIR)/debian/lha/usr/bin
++
++ # Copy the filenames without the .euc extension
++ cp MACHINES.euc MACHINES
++ cp MACHINES2.euc MACHINES2
++ cp PROBLEMS.euc PROBLEMS
++ cp README.euc README
++ cp header.doc.euc header.doc
++
++ gzip -9 -c man/lha.n > debian/lha.euc.1.gz
++ gzip -9 -c debian/lha.1 > debian/lha.1.gz
++ install -m 644 debian/lha.euc.1.gz $(CURDIR)/debian/lha/usr/share/man/ja/man1/lha.1.gz
++ install -m 644 debian/lha.1.gz $(CURDIR)/debian/lha/usr/share/man/man1/lha.1.gz
++
++# Build architecture-independent files here.
++binary-indep: build install
++# We have nothing to do by default.
++
++# Build architecture-dependent files here.
++binary-arch: build install
++ dh_testdir
++ dh_testroot
++# dh_installdebconf
++ dh_installdocs
++ dh_installexamples
++ dh_installmenu
++# dh_installlogrotate
++# dh_installemacsen
++# dh_installpam
++# dh_installmime
++# dh_installinit
++# dh_installcron
++# dh_installman
++# dh_installinfo
++# dh_undocumented
++ dh_installchangelogs CHANGES.euc
++ dh_link
++ dh_strip
++ dh_compress
++ dh_fixperms
++# dh_makeshlibs
++ dh_installdeb
++# dh_perl
++ dh_shlibdeps
++ dh_gencontrol
++ dh_md5sums
++ dh_builddeb
++
++binary: binary-indep binary-arch
++.PHONY: build clean binary-indep binary-arch binary install configure
+--- lha-1.14i.orig/debian/dirs
++++ lha-1.14i/debian/dirs
+@@ -0,0 +1,3 @@
++usr/bin
++usr/share/man/man1
++usr/share/man/ja/man1/
+--- lha-1.14i.orig/debian/copyright
++++ lha-1.14i/debian/copyright
+@@ -0,0 +1,172 @@
++This package was debianized by Atsushi KAMOSHIDA kamop@post1.com on
++Sun, 13 Apr 1997 17:52:59 +0900.
++
++It was downloaded from http://www2m.biglobe.ne.jp/~dolphin/lha/lha.htm
++
++Upstream Authors:
++
++ LHarc 0.01-1.00: Yooichi Tagawa (LHa code taken from here, 1988-1989)
++ Nikkei-mix ID: y.tagawa (Now this is defunct BBS, Licensing term
++ in manual page come from his licence for lharc)
++ His new web page seems to be www2s.biglibe.ne.jp/~yex/
++ yooedit2001@yahoo.co.jp is the contact e-mail address for another
++ software. Page updated at least July/2001
++
++ LHa 0.01-1.00: Masaru Oki (LHa original author, 1991-1992)
++ E-Mail address: oki@netbsd.org
++
++ LHa 1.10-1.14: Nobutaka Watazaki (Last official release? 1993-1995)
++ ALICE-NET ALS00595 Nasty
++ E-Mail JBD02514@niftyserve.or.jp
++ E-Mail femcs@mbox.kyoto-inet.or.jp
++ NIFTY-Serve JBD02514
++ E-Mail address: watazaki@shimadzu.co.jp
++ E-Mail address: watazaki@shimadzusd.co.jp
++
++ Lha 1.14a-1.14e: Tsugio Okamoto <tsugio@muc.biglobe.ne.jp> (1996-2000)
++
++
++Copyright:
++
++Original Source Code License Statement:
++
++ /* Copyright (C) MCMLXXXIX Yooichi.Tagawa */
++ /* Modified Nobutaka Watazaki */
++ /* Thanks to H.Yoshizaki. (MS-DOS LHarc) */
++
++
++Original Authors License Statement (from man/lha.man, in Japanese
++EUC-JP):
++
++ ۤˤĤ
++ ʲξǡۡžܡѤĤޤ
++
++ 1. ɽʤȡ
++
++ 2. ƤˤĤƤϡ
++
++ a. ۤκݤ¸ߤ(ʤ
++ ɡ ȡץޡؤμ
++ )ۤ줿Τɬ¸
++ ȡ ѤƤʤС
++ ȤѰդ뤳ȡ
++
++ b. LHa Фղòͤդƺۤ
++ ˤϤǤޤ褦Ϥ
++ ȡޤκݤˤղòͤդƤ
++ 뤳ȤɥȤѰդ뤳ȡ
++
++ c. ХʥΤߤۤϵʤ(ղò
++ Τޤ)
++
++ 3. ǿǤ̳ۤ뤳ȡ(̳Ϥʤ)
++
++ . ʤͥåȤǤդϼͳǤ뤬ͥåȤ
++ Ǥʤʻ浪ӡ CDROM
++ դϡˤ EMail
++ ꤤޤ˽ʤݤˤϡɬ
++ EMail 򤪴ꤤޤ
++
++ 4. Υץ¸ߤѤȤˤä»
++ ݾڤʤ
++
++ 5. ԤϡΥץäƤ⡢
++ ̳ʤ
++
++ 6. Υץΰޤ¾Υץ
++ Ȥ߹ѤƤ⤫ޤʤξ硢Υ
++ LHa ǤϤʤ LHa ̾äƤϤʤ
++
++ 7. Ѥ˴ؤƤϡ嵭ξ˲äξΤ
++ Ȥˤǧ롣
++
++ a. ΥץᥤȤ뾦Ѥ϶
++ 롣
++
++ b. Ѥ꤬ΥץλѼԤȤ
++ ŬڤȽǤˤۤʤ
++
++ c. 󥹥ȡμʤȤƻѤ硢Υ
++ ȤȤ˶ʤξ
++ 硢ѼԤȤԤޤΤȤ»
++ ϡѼԤǤ餦
++
++ d. ѤղòͤȤƹԤΥץ
++ Ѥ硢ѼԤϡΥݡȤԤ
++
++
++Original Authors License Statement (from man/lha.man, translated by
++Osamu Aoki <debian@aokiconsulting.com>):
++
++ Permission is given for redistribution, copy, and modification provided
++ following conditions are met.
++
++ 1. Do not remove copyright clause.
++ 2. Distribution shall conform:
++ a. The content of redistribution (i.e., source code, documentation,
++ and reference guide for programmers) shall include original contents.
++ If contents are modified, the document clearly indicating
++ the fact of modification must be included.
++ b. If LHa is redistributed with added values, you must put your best
++ effort to include them (Translator comment: If read literally,
++ original Japanese was unclear what "them" means here. But
++ undoubtedly this "them" means source code for the added value
++ portion and this is a typical Japanese sloppy writing style to
++ abbreviate as such) Also the document clearly indicating that
++ added value was added must be included.
++ c. Binary only distribution is not allowed (including added value
++ ones.)
++ 3. You need to put effort to distribute the latest version (This is not
++ your duty).
++
++ NB: Distribution on Internet is free. Please notify me by e-mail or
++ other means prior to the distribution if distribution is done through
++ non-Internet media (Magazine, CDROM etc.) If not, make sure to Email
++ me later.
++
++ 4. Any damage caused by the existence and use of this program will not
++ be compensated.
++
++ 5. Author will not be responsible to correct errors even if program is
++ defective.
++
++ 6. This program, either as a part of this or as a whole of this, may be
++ included into other programs. In this case, that program is not LHa
++ and can not call itself LHa.
++
++ 7. For commercial use, in addition to above conditions, following
++ condition needs to be met.
++
++ a. The program whose content is mainly this program can not be used
++ commercially.
++ b. If the recipient of commercial use deems inappropriate as a
++ program user, you must not distribute.
++ c. If used as a method for the installation, you must not force
++ others to use this program. In this case, commercial user will
++ perform its work while taking full responsibility of its outcome.
++ d. If added value is done under the commercial use by using this
++ program, commercial user shall provide its support.
++
++
++(Osamu Aoki also comments:
++ Here "commercial" may be interpreted as "for-fee". "Added value" seems
++ to mean "feature enhancement". )
++
++
++License Statement by Tsugio Okamoto (in Japanese EUC-JP):
++
++ ʤͥåȤǤդϼͳǤͥåȤ˥Ǥʤʻ浪ӡ
++ CD-ROM ʤɤˤˤؤդϡˤ Inter-Net E-Mail
++ ꤤޤ ɤˡǺܤȤݤз빽ǤΤǡ
++ ޤʤݤˤϡ E-Mail ɬꤤޤ
++
++
++Translated License Statement by Tsugio Okamoto (translated by
++GOTO Masanori <gotom@debian.org>):
++
++ It's free to distribute on the network, but if you distribute for
++ the people who cannot access the network (by magazine or CD-ROM),
++ please send E-Mail (Inter-Net address) to the author before the
++ distribution. That's well where this software is appeard.
++ If you cannot do, you must send me the E-Mail later.
++
+--- lha-1.14i.orig/debian/control
++++ lha-1.14i/debian/control
+@@ -0,0 +1,13 @@
++Source: lha
++Section: non-free/utils
++Priority: optional
++Maintainer: GOTO Masanori <gotom@debian.org>
++Build-Depends: debhelper (>> 4.0.0)
++Standards-Version: 3.6.0
++
++Package: lha
++Architecture: any
++Depends: ${shlibs:Depends}
++Description: lzh archiver
++ The famous lzh archiver, known from DOS. When mixing DOS and Unix
++ you might need it. (Especially for fido <--> rfc conversions.)
+--- lha-1.14i.orig/debian/docs
++++ lha-1.14i/debian/docs
+@@ -0,0 +1,10 @@
++README.euc
++change-114e.txt
++change-114g.txt
++change-114h.txt
++change-114i.txt
++MACHINES
++MACHINES2
++PROBLEMS
++header.doc
++debian/header-e.doc
+--- lha-1.14i.orig/debian/patch.paul
++++ lha-1.14i/debian/patch.paul
+@@ -0,0 +1,10 @@
++--- src/lha.h Thu Oct 5 19:35:38 2000
+++++ src/lha.h Wed Aug 22 15:49:55 2001
++@@ -16,6 +16,7 @@
++ #include <sys/types.h>
++ #include <sys/file.h>
++ #include <sys/stat.h>
+++#include <stdlib.h>
++
++ #include <signal.h>
++
+--- lha-1.14i.orig/debian/header-e.doc
++++ lha-1.14i/debian/header-e.doc
+@@ -0,0 +1,189 @@
++/* header.doc (In English) */
++Header structure used in LHa for UNIX Mar. 2, 1992, Masaru Oki.
++(Translated by Osamu Aoki)
++
++----------------------------------------------------------------
++This version, as a transitional mreasure, uses level-1 as default value while
++offering 3 types of header types. In the future, I plan to use level-2 which
++has no limit on number of characters for the path mname.
++
++ A. Spec for header
++
++Basic part
++-----------------------------------------------------------------------------
++ level-0 level-1 level-2
++-----------------------------------------------------------------------------
++ 1 header size 1 header size 2 total header size
++ 1 header sum 1 header sum
++ 5 method ID 5 method ID 5 method ID
++ 4 packed size 4 skip size 4 packed size
++ 4 original size 4 original size 4 original size
++ 2 time 2 time 4 time(UNIX type)
++ 2 date 2 date
++ 1 attribute 1 0x20 1 RESERVED
++ 1 level 0x00 1 level 0x01 1 level 0x02
++ 1 name length 1 name length
++ ? pathname ? filename
++ 2 file crc 2 file crc 2 file crc
++ . ........ 1 OS ID 'U' 1 OS ID 'U'
++ . ........
++ 2 next-header size 2 next-header size
++ *************************************************************************
++ 24 + ? 27 + ? 26
++
++Extension part
++-----------------------------------------------------------------------------
++ 1 ext-type 1 ext-type
++ . ........ . ........
++ 2 next-header size 2 next-header size
++
++-----------------------------------------------------------------------------
++
++ a. Types of header
++
++ level-0 header
++ Same format as conventional LHarc, LArc. Separator for directory
++ name is '\' as default.
++
++ level-1 header
++ This header is used as default. Archive type -lh0 made with -x0 can
++ be unfrozen by LHarc but there will be no checking on CRC.
++
++ level-2 header
++ Header for supporting long file names. I would like to standarize
++ on this format in the future. Please follow this if you wish to
++ make utilities related ti LH.
++
++ b. method ID for freeze/unfreeze
++
++ * these methods are freeze/unfreeze, others are unfreeze only
++
++ -lh0- * no compression
++
++ -lh1- * 4k sliding dictionary(max 60 bytes) + dynamic Huffman
++ + fixed encoding of position
++
++ -lh2- 8k sliding dictionary(max 256 bytes) + dynamic Huffman
++
++ -lh3- 8k sliding dictionary(max 256 bytes) + static Huffman
++
++ -lh4- * 4k sliding dictionary(max 256 bytes) + static Huffman
++ + improved encoding of position and trees
++
++ -lh5- * 8k sliding dictionary(max 256 bytes) + static Huffman
++ + improved encoding of position and trees
++
++ -lh6- 32k sliding dictionary(max 256 bytes) + static Huffman
++ + improved encoding of position and trees
++
++ -lh7- 64k sliding dictionary(max 256 bytes) + static Huffman
++ + improved encoding of position and trees
++
++ -lzs- 2k sliding dictionary(max 17 bytes)
++
++ -lz4- no compression
++
++ -lz5- 4k sliding dictionary(max 17 bytes)
++
++ c. About OS ID
++
++ Following OS ID are reserved.
++
++ MS-DOS 'M'
++ OS/2 '2'
++ OS9 '9'
++ OS/68K 'K'
++ OS/386 '3'
++ HUMAN 'H'
++ UNIX 'U'
++ CP/M 'C'
++ FLEX 'F'
++ Mac 'm'
++ Runser 'R'
++
++ B. Extension
++
++ a. OS independent (0x00 - 0x3f)
++
++ common header
++ 1 0x00
++ 2 header crc
++ ( 1 information )
++ 2 next-header size
++
++ filename header
++ 1 0x01
++ ? filename
++ 2 next-header size
++
++ dirname header
++ 1 0x02
++ ? dirname
++ 2 next-header size
++
++ comment header
++ 1 0x3f
++ ? comments
++ 2 next-header size
++
++(Above portion, from lhx.doc by Mr. Yoshizaki)
++----------------------------------------------------------------
++LHa for UNIX : specification for extension header
++
++* Category of machine specific information (Information to be recorded)
++ Followings are UNIX specific information which requires to be recorded
++ (1) Permission
++ (2) GID,UID
++ (3) Group name, User name
++ (4) Last change time (UNIX time)
++
++* Type of machine specific information (ext-type)
++ First 1 byte of extension header contain value to distinguish types of
++ the infoemation. Foe UNIX specific information, 0x50 - 0x54 will be
++ used.
++
++* Method to store
++ Above categories (1) - (4) will be different type.
++
++
++ (1) Pemission
++ size value
++ 1 0x50
++ 2 Valur of permission
++ 2 next-header size
++
++ (2)GID,UID
++ size value
++ 1 0x51
++ 2 GID
++ 2 UID
++ 2 next-header size
++
++ (3)-1 Group name
++ 1 0x52
++ ? Group name string
++ 2 next-header size
++
++ (3)-2 user name
++ 1 0x53
++ ? User name string
++ 2 next-header size
++
++ (4) Last change time (for header_level1)
++ 1 0x54
++ 4 UNIX time
++ 2 next-header size
++
++* Implimentation of LHa for UNIX ver 1.14 (Watazaki)
++ Above (3) is not supported
++ Group name and user name specified by (3) is not used to make an
++ archive thus ignored during expansion.
++ Also (4) is contained only in level-1 archive.
++----------------------------------------------------------------
++That's all folks :)
++
++Partially modified by
++Nobutaka Watazaki
++watazaki@shimadzu.co.jp
++
++
+--- lha-1.14i.orig/debian/patch.CAN-2004-0234_0235
++++ lha-1.14i/debian/patch.CAN-2004-0234_0235
+@@ -0,0 +1,85 @@
++--- src/header.c.old 2000-10-05 19:36:03.000000000 +0200
+++++ src/header.c 2004-04-17 23:55:54.000000000 +0200
++@@ -538,6 +538,10 @@
++ /*
++ * filename
++ */
+++ if (header_size >= 256) {
+++ fprintf(stderr, "Possible buffer overflow hack attack, type #1\n");
+++ exit(109);
+++ }
++ for (i = 0; i < header_size - 3; i++)
++ hdr->name[i] = (char) get_byte();
++ hdr->name[header_size - 3] = '\0';
++@@ -547,6 +551,10 @@
++ /*
++ * directory
++ */
+++ if (header_size >= FILENAME_LENGTH) {
+++ fprintf(stderr, "Possible buffer overflow hack attack, type #2\n");
+++ exit(110);
+++ }
++ for (i = 0; i < header_size - 3; i++)
++ dirname[i] = (char) get_byte();
++ dirname[header_size - 3] = '\0';
++--- src/lhext.c.old 2000-10-04 16:57:38.000000000 +0200
+++++ src/lhext.c 2004-04-18 01:27:44.000000000 +0200
++@@ -190,8 +190,13 @@
++ q = (char *) rindex(hdr->name, '/') + 1;
++ }
++ else {
+++ if (is_directory_traversal(q)) {
+++ fprintf(stderr, "Possible directory traversal hack attempt in %s\n", q);
+++ exit(111);
+++ }
+++
++ if (*q == '/') {
++- q++;
+++ while (*q == '/') { q++; }
++ /*
++ * if OSK then strip device name
++ */
++@@ -419,6 +424,33 @@
++ return;
++ }
++
+++int
+++is_directory_traversal(char *string)
+++{
+++ unsigned int type = 0; /* 0 = new, 1 = only dots, 2 = other chars than dots */
+++ char *temp;
+++
+++ temp = string;
+++
+++ while (*temp != 0) {
+++ if (temp[0] == '/') {
+++ if (type == 1) { return 1; }
+++ type = 0;
+++ temp++;
+++ continue;
+++ }
+++
+++ if ((temp[0] == '.') && (type < 2))
+++ type = 1;
+++ if (temp[0] != '.')
+++ type = 2;
+++
+++ temp++;
+++ } /* while */
+++
+++ return (type == 1);
+++}
+++
++ /* Local Variables: */
++ /* mode:c */
++ /* tab-width:4 */
++--- src/lhext.c.symlink 2000-10-04 10:57:38.000000000 -0400
+++++ src/lhext.c 2003-05-19 22:55:57.000000000 -0400
++@@ -351,6 +351,7 @@ extract_one(afp, hdr)
++ }
++
++ unlink(bb1);
+++ make_parent_path(bb1);
++ l_code = symlink(bb2, bb1);
++ if (l_code < 0) {
++ if (quiet != TRUE)
+--- lha-1.14i.orig/debian/patch.header-overflow
++++ lha-1.14i/debian/patch.header-overflow
+@@ -0,0 +1,21 @@
++--- src/header.c 2002-07-19 17:23:58.000000000 +0900
+++++ src/header.c 2004-06-16 09:49:23.000000000 +0900
++@@ -648,8 +648,17 @@
++ }
++
++ if (dir_length) {
+++ if ((dir_length + name_length) > sizeof(dirname)) {
+++ fprintf(stderr, "Insufficient buffer size\n");
+++ exit(112);
+++ }
++ strcat(dirname, hdr->name);
++- strcpy(hdr->name, dirname);
+++
+++ if ((dir_length + name_length) > sizeof(hdr->name)) {
+++ fprintf(stderr, "Insufficient buffer size\n");
+++ exit(112);
+++ }
+++ strncpy(hdr->name, dirname, sizeof(hdr->name));
++ name_length += dir_length;
++ }
++
+--- lha-1.14i.orig/debian/patch.redhat-sec2
++++ lha-1.14i/debian/patch.redhat-sec2
+@@ -0,0 +1,196 @@
++diff -urNp lha-114i.orig/src/lha_macro.h lha-114i/src/lha_macro.h
++--- lha-114i.orig/src/lha_macro.h 2004-08-03 15:53:56.000000000 -0500
+++++ lha-114i/src/lha_macro.h 2004-08-03 15:54:05.000000000 -0500
++@@ -53,7 +53,7 @@
++ #define SEEK_SET 0
++ #define SEEK_CUR 1
++ #define SEEK_END 2
++-#endif /* SEEK_SET
+++#endif /* SEEK_SET */
++
++
++ /* non-integral functions */
++diff -urNp lha-114i.orig/src/lharc.c lha-114i/src/lharc.c
++--- lha-114i.orig/src/lharc.c 2004-08-03 15:53:56.000000000 -0500
+++++ lha-114i/src/lharc.c 2004-08-03 15:54:05.000000000 -0500
++@@ -830,9 +830,10 @@ find_files(name, v_filec, v_filev)
++ DIRENTRY *dp;
++ struct stat tmp_stbuf, arc_stbuf, fil_stbuf;
++
++- strcpy(newname, name);
+++ strncpy(newname, name, sizeof(newname));
+++ newname[sizeof(newname)-1] = 0;
++ len = strlen(name);
++- if (len > 0 && newname[len - 1] != '/')
+++ if (len > 0 && newname[len - 1] != '/' && len < (sizeof(newname)-1))
++ newname[len++] = '/';
++
++ dirp = opendir(name);
++@@ -846,6 +847,11 @@ find_files(name, v_filec, v_filev)
++
++ for (dp = readdir(dirp); dp != NULL; dp = readdir(dirp)) {
++ n = NAMLEN(dp);
+++ if (len >= (sizeof(newname)-1) ||
+++ (len+n) >= (sizeof(newname)-1) ||
+++ n <= 0 ||
+++ (len+n) <= 0)
+++ break;
++ strncpy(newname + len, dp->d_name, n);
++ newname[len + n] = '\0';
++ if (GETSTAT(newname, &fil_stbuf) < 0)
++@@ -903,7 +909,8 @@ build_temporary_name()
++ strcpy(temporary_name, TMP_FILENAME_TEMPLATE);
++ }
++ else {
++- sprintf(temporary_name, "%s/lhXXXXXX", extract_directory);
+++ snprintf(temporary_name, sizeof(temporary_name),
+++ "%s/lhXXXXXX", extract_directory);
++ }
++ #ifdef MKSTEMP
++ mkstemp(temporary_name);
++@@ -913,10 +920,16 @@ build_temporary_name()
++ #else
++ char *p, *s;
++
++- strcpy(temporary_name, archive_name);
+++ strncpy(temporary_name, archive_name, sizeof(temporary_name));
+++ temporary_name[sizeof(temporary_name)-1] = 0;
++ for (p = temporary_name, s = (char *) 0; *p; p++)
++ if (*p == '/')
++ s = p;
+++
+++ if( sizeof(temporary_name) - ((size_t) (s-temporary_name)) - 1
+++ <= strlen("lhXXXXXX"))
+++ exit(-1);
+++
++ strcpy((s ? s + 1 : temporary_name), "lhXXXXXX");
++ #ifdef MKSTEMP
++ mkstemp(temporary_name);
++@@ -1052,7 +1065,8 @@ open_old_archive()
++
++ if (open_old_archive_1(archive_name, &fp))
++ return fp;
++- sprintf(expanded_archive_name, "%s.lzh", archive_name);
+++ snprintf(expanded_archive_name, sizeof(expanded_archive_name),
+++ "%s.lzh", archive_name);
++ if (open_old_archive_1(expanded_archive_name, &fp)) {
++ archive_name = expanded_archive_name;
++ return fp;
++@@ -1061,7 +1075,8 @@ open_old_archive()
++ * if ( (errno&0xffff)!=E_PNNF ) { archive_name =
++ * expanded_archive_name; return NULL; }
++ */
++- sprintf(expanded_archive_name, "%s.lzs", archive_name);
+++ snprintf(expanded_archive_name, sizeof(expanded_archive_name),
+++ "%s.lzs", archive_name);
++ if (open_old_archive_1(expanded_archive_name, &fp)) {
++ archive_name = expanded_archive_name;
++ return fp;
++diff -urNp lha-114i.orig/src/lhext.c lha-114i/src/lhext.c
++--- lha-114i.orig/src/lhext.c 2004-08-03 15:53:56.000000000 -0500
+++++ lha-114i/src/lhext.c 2004-08-03 15:55:40.000000000 -0500
++@@ -82,7 +82,8 @@ make_parent_path(name)
++ register char *p;
++
++ /* make parent directory name into PATH for recursive call */
++- strcpy(path, name);
+++ memset(path, 0, sizeof(path));
+++ strncpy(path, name, sizeof(path)-1);
++ for (p = path + strlen(path); p > path; p--)
++ if (p[-1] == '/') {
++ *--p = '\0';
++@@ -212,9 +213,11 @@ extract_one(afp, hdr)
++ }
++
++ if (extract_directory)
++- sprintf(name, "%s/%s", extract_directory, q);
++- else
++- strcpy(name, q);
+++ snprintf(name, sizeof(name), "%s/%s", extract_directory, q);
+++ else {
+++ strncpy(name, q, sizeof(name));
+++ name[sizeof(name) - 1] = '\0';
+++ }
++
++
++ /* LZHDIRS_METHOD�����ĥإå��������å����� */
++@@ -335,7 +338,8 @@ extract_one(afp, hdr)
++ if ((hdr->unix_mode & UNIX_FILE_TYPEMASK) == UNIX_FILE_SYMLINK) {
++ char buf[256], *bb1, *bb2;
++ int l_code;
++- strcpy(buf, name);
+++ strncpy(buf, name, sizeof(buf));
+++ buf[sizeof(buf)-1] = 0;
++ bb1 = strtok(buf, "|");
++ bb2 = strtok(NULL, "|");
++
++@@ -365,9 +369,10 @@ extract_one(afp, hdr)
++ if (quiet != TRUE) {
++ printf("Symbolic Link %s -> %s\n", bb1, bb2);
++ }
++- strcpy(name, bb1); /* Symbolic's name set */
+++ strncpy(name, bb1, 255); /* Symbolic's name set */
+++ name[255] = 0;
++ #else
++- sprintf(buf, "%s -> %s", bb1, bb2);
+++ sprintf(buf, sizeof(buf), "%s -> %s", bb1, bb2);
++ warning("Can't make Symbolic Link", buf);
++ return;
++ #endif
++diff -urNp lha-114i.orig/src/lhlist.c lha-114i/src/lhlist.c
++--- lha-114i.orig/src/lhlist.c 2004-08-03 15:53:56.000000000 -0500
+++++ lha-114i/src/lhlist.c 2004-08-03 15:54:05.000000000 -0500
++@@ -250,7 +250,8 @@ list_one(hdr)
++ printf(" %s", hdr->name);
++ else {
++ char buf[256], *b1, *b2;
++- strcpy(buf, hdr->name);
+++ strncpy(buf, hdr->name, sizeof(buf));
+++ buf[sizeof(buf)-1] = 0;
++ b1 = strtok(buf, "|");
++ b2 = strtok(NULL, "|");
++ printf(" %s -> %s", b1, b2);
++diff -urNp lha-114i.orig/src/util.c lha-114i/src/util.c
++--- lha-114i.orig/src/util.c 2004-08-03 15:53:56.000000000 -0500
+++++ lha-114i/src/util.c 2004-08-03 15:54:05.000000000 -0500
++@@ -276,21 +276,27 @@ rmdir(path)
++ char *path;
++ {
++ int stat, rtn = 0;
++- char *cmdname;
++- if ((cmdname = (char *) malloc(strlen(RMDIRPATH) + 1 + strlen(path) + 1))
++- == 0)
+++ pid_t child;
+++
+++
+++ /* XXX thomas: shell meta chars in path could exec commands */
+++ /* therefore we should avoid using system() */
+++ if ((child = fork()) < 0)
+++ return (-1); /* fork error */
+++ else if (child) { /* parent process */
+++ while (child != wait(&stat)) /* ignore signals */
+++ continue;
+++ }
+++ else { /* child process */
+++ execl(RMDIRPATH, "rmdir", path, (char *) 0);
+++ /* never come here except execl is error */
++ return (-1);
++- strcpy(cmdname, RMDIRPATH);
++- *(cmdname + strlen(RMDIRPATH)) = ' ';
++- strcpy(cmdname + strlen(RMDIRPATH) + 1, path);
++- if ((stat = system(cmdname)) < 0)
++- rtn = -1; /* fork or exec error */
++- else if (stat) { /* RMDIR command error */
++- errno = EIO;
++- rtn = -1;
++ }
++- free(cmdname);
++- return (rtn);
+++ if (stat != 0) {
+++ errno = EIO; /* cannot get error num. */
+++ return (-1);
+++ }
+++ return (0);
++ }
++
++ /* ------------------------------------------------------------------------ */
+--- lha-1.14i.orig/debian/patch.CVE-2006-4335-CVE-2006-4337-CVE-2006-4338
++++ lha-1.14i/debian/patch.CVE-2006-4335-CVE-2006-4337-CVE-2006-4338
+@@ -0,0 +1,137 @@
++diff -aur lha-1.14i.orig/src/huf.c lha-1.14i/src/huf.c
++--- lha-1.14i.orig/src/huf.c 2000-10-05 19:35:49.000000000 +0200
+++++ lha-1.14i/src/huf.c 2006-12-11 10:07:31.000000000 +0100
++@@ -332,7 +332,7 @@
++ }
++ else {
++ i = 0;
++- while (i < n) {
+++ while (i < MIN(n, NPT)) {
++ c = bitbuf >> (16 - 3);
++ if (c == 7) {
++ unsigned short mask = 1 << (16 - 4);
++@@ -345,7 +345,7 @@
++ pt_len[i++] = c;
++ if (i == i_special) {
++ c = getbits(2);
++- while (--c >= 0)
+++ while (--c >= 0 && i < NPT)
++ pt_len[i++] = 0;
++ }
++ }
++@@ -370,7 +370,7 @@
++ c_table[i] = c;
++ } else {
++ i = 0;
++- while (i < n) {
+++ while (i < MIN(n,NC)) {
++ c = pt_table[bitbuf >> (16 - 8)];
++ if (c >= NT) {
++ unsigned short mask = 1 << (16 - 9);
++@@ -380,7 +380,7 @@
++ else
++ c = left[c];
++ mask >>= 1;
++- } while (c >= NT);
+++ } while (c >= NT && (mask || c != left[c])); /* CVE-2006-4338 */
++ }
++ fillbuf(pt_len[c]);
++ if (c <= 2) {
++@@ -427,7 +427,7 @@
++ else
++ j = left[j];
++ mask >>= 1;
++- } while (j >= NC);
+++ } while (j >= NC && (mask || j != left[j])); /* CVE-2006-4338 */
++ fillbuf(c_len[j] - 12);
++ }
++ return j;
++@@ -451,7 +451,7 @@
++ else
++ j = left[j];
++ mask >>= 1;
++- } while (j >= np);
+++ } while (j >= np && (mask || j != left[j])); /* CVE-2006-4338 */
++ fillbuf(pt_len[j] - 8);
++ }
++ if (j != 0)
++Only in lha-1.14i/src: huf.c~
++diff -aur lha-1.14i.orig/src/lha_macro.h lha-1.14i/src/lha_macro.h
++--- lha-1.14i.orig/src/lha_macro.h 2006-12-11 09:43:54.000000000 +0100
+++++ lha-1.14i/src/lha_macro.h 2006-12-11 09:55:42.000000000 +0100
++@@ -408,6 +408,8 @@
++ #define MAXMATCH 256 /* formerly F (not more than UCHAR_MAX + 1) */
++ #define THRESHOLD 3 /* choose optimal value */
++
+++#define MIN(a,b) ((a) <= (b) ? (a) : (b))
+++
++ /* from huf.c */
++
++ /* alphabet = {0, 1, 2, ..., NC - 1} */
++Only in lha-1.14i/src: lha_macro.h~
++diff -aur lha-1.14i.orig/src/maketbl.c lha-1.14i/src/maketbl.c
++--- lha-1.14i.orig/src/maketbl.c 2000-10-04 16:57:38.000000000 +0200
+++++ lha-1.14i/src/maketbl.c 2006-12-11 09:59:51.000000000 +0100
++@@ -32,8 +32,15 @@
++ }
++
++ /* count */
++- for (i = 0; i < nchar; i++)
++- count[bitlen[i]]++;
+++ for (i = 0; i < nchar; i++) {
+++ if (bitlen[i] > 16) {
+++ /* CVE-2006-4335 */
+++ error("Bad table (case a)");
+++ exit(1);
+++ }
+++ else
+++ count[bitlen[i]]++;
+++ }
++
++ /* calculate first code */
++ total = 0;
++@@ -41,8 +48,11 @@
++ start[i] = total;
++ total += weight[i] * count[i];
++ }
++- if ((total & 0xffff) != 0)
++- error("make_table()", "Bad table (5)\n");
+++
+++ if ((total & 0xffff) != 0 || tablebits > 16) { /* 16 for weight below */
+++ error("make_table(): Bad table (case b)");
+++ exit(1);
+++ }
++
++ /* shift data for make table. */
++ m = 16 - tablebits;
++@@ -53,7 +63,7 @@
++
++ /* initialize */
++ j = start[tablebits + 1] >> m;
++- k = 1 << tablebits;
+++ k = MIN(1 << tablebits, 4096);
++ if (j != 0)
++ for (i = j; i < k; i++)
++ table[i] = 0;
++@@ -66,12 +76,19 @@
++ l = start[k] + weight[k];
++ if (k <= tablebits) {
++ /* code in table */
+++ l = MIN(l, 4096);
++ for (i = start[k]; i < l; i++)
++ table[i] = j;
++ }
++ else {
++ /* code not in table */
++- p = &table[(i = start[k]) >> m];
+++ i = start[k];
+++ if ((i >> m) > 4096) {
+++ /* CVE-2006-4337 */
+++ error("Bad table (case c)");
+++ exit(1);
+++ }
+++ p = &table[i >> m];
++ i <<= tablebits;
++ n = k - tablebits;
++ /* make tree (n length) */
++Only in lha-1.14i/src: maketbl.c~
diff --git a/source/a/lha/slack-desc b/source/a/lha/slack-desc
new file mode 100644
index 00000000..75c1dd43
--- /dev/null
+++ b/source/a/lha/slack-desc
@@ -0,0 +1,19 @@
+# HOW TO EDIT THIS FILE:
+# The "handy ruler" below makes it easier to edit a package description. Line
+# up the first '|' above the ':' following the base package name, and the '|'
+# on the right side marks the last column you can put a character in. You must
+# make exactly 11 lines for the formatting to be correct. It's also
+# customary to leave one space after the ':'.
+
+ |-----handy-ruler------------------------------------------------------|
+lha: lha (LHa archive utility)
+lha:
+lha: LHa is an archiving and compressing utility written by Tsugio Okamoto.
+lha:
+lha:
+lha:
+lha:
+lha:
+lha:
+lha:
+lha:
diff --git a/source/a/lilo/lilo.SlackBuild b/source/a/lilo/lilo.SlackBuild
new file mode 100755
index 00000000..197f3384
--- /dev/null
+++ b/source/a/lilo/lilo.SlackBuild
@@ -0,0 +1,87 @@
+#!/bin/sh
+
+# Copyright 2008, 2009 Patrick J. Volkerding, Sebeka, Minnesota, USA
+# All rights reserved.
+#
+# Redistribution and use of this script, with or without modification, is
+# permitted provided that the following conditions are met:
+#
+# 1. Redistributions of this script must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# 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.
+
+
+VERSION=${VERSION:-22.8}
+ARCH=${ARCH:-x86_64}
+BUILD=${BUILD:-14}
+
+CWD=$(pwd)
+TMP=${TMP:-/tmp}
+PKG=$TMP/package-lilo
+
+rm -rf $PKG
+mkdir -p $TMP $PKG
+
+cd $TMP
+rm -rf lilo-$VERSION
+tar xvf $CWD/lilo-$VERSION.src.tar.gz || exit 1
+cd lilo-$VERSION
+chown -R root:root .
+
+make || exit 1
+make install ROOT=$PKG
+
+# Add a Slackware logo boot menu (sorry, couldn't resist):
+if [ "$ARCH" = "x86_64" -a -f $CWD/slack64.bmp ]; then
+ cp -a $CWD/slack64.bmp $PKG/boot/slack.bmp
+else
+ cp -a $CWD/slack.bmp $PKG/boot
+fi
+chmod 644 $PKG/boot/slack.bmp
+
+# We don't need to add this empty directory:
+rmdir $PKG/etc
+
+# Add Slackware's 'liloconfig' utility:
+mkdir -p $PKG/sbin
+cp -a $CWD/liloconfig $PKG/sbin/liloconfig
+chmod 755 $PKG/sbin/liloconfig
+mkdir -p $PKG/var/log/setup
+cp -a $CWD/setup.liloconfig $PKG/var/log/setup/setup.liloconfig
+cp -a $CWD/text.lilohelp $PKG/var/log/setup/text.lilohelp
+chmod 755 $PKG/var/log/setup/setup.liloconfig
+chmod 644 $PKG/var/log/setup/text.lilohelp
+chown root:root \
+ $PKG/var/log/setup/setup.liloconfig $PKG/var/log/setup/text.lilohelp
+
+rm -rf $PKG/usr/doc/lilo-$VERSION
+mkdir -p $PKG/usr/doc/lilo-$VERSION
+cp -a CHANGES COPYING COPYRIGHT INCOMPAT QuickInst READM* doc sample \
+ $PKG/usr/doc/lilo-$VERSION
+if [ -r $CWD/lilo-$VERSION.lsm ]; then
+ cp -a $CWD/lilo-$VERSION.lsm $PKG/usr/doc/lilo-$VERSION
+fi
+if [ -r $CWD/lilo-$VERSION.announce.txt ]; then
+ cp -a $CWD/lilo-$VERSION.announce.txt $PKG/usr/doc/lilo-$VERSION
+fi
+
+mv $PKG/usr/share/man $PKG/usr
+rmdir $PKG/usr/share
+gzip -9 $PKG/usr/man/man?/*.?
+
+mkdir -p $PKG/install
+cat $CWD/slack-desc > $PKG/install/slack-desc
+
+cd $PKG
+/sbin/makepkg -l y -c n $TMP/lilo-$VERSION-$ARCH-$BUILD.txz
+
diff --git a/source/a/lilo/liloconfig b/source/a/lilo/liloconfig
new file mode 100644
index 00000000..e786e752
--- /dev/null
+++ b/source/a/lilo/liloconfig
@@ -0,0 +1,1165 @@
+#!/bin/sh
+#
+# Copyright 1994, 1998, 1999 Patrick Volkerding, Moorhead, Minnesota USA
+# Copyright 2002, 2003 Slackware Linux, Inc, Concord, CA
+# Copyright 2007, 2008 Patrick Volkerding, Sebeka, Minnesota, USA
+# All rights reserved.
+#
+# Redistribution and use of this script, with or without modification, is
+# permitted provided that the following conditions are met:
+#
+# 1. Redistributions of this script must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# 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.
+#
+TMP=/var/log/setup/tmp
+CONSOLETYPE=standard
+unset UTFVT
+
+# Set the OS root directory (called T_PX for some unknown reason).
+# If an argument is given to this script and it is a directory, it
+# is taken to be the root directory. First though, we check for a
+# directory named $T_PX, and that gets the first priority.
+if [ ! -d "$T_PX" ]; then
+ if [ ! "$1" = "" ]; then
+ if [ -d "$1" ]; then
+ T_PX="$1"
+ fi
+ else
+ # Are we on the installer image?
+ if [ -r /usr/lib/setup/SeTpartitions ]; then
+ T_PX=/mnt
+ # Or, are we on a running system?
+ elif [ -r /etc/slackware-version ]; then
+ T_PX=/
+ # One more installer-likely thing:
+ elif [ -r /usr/lib/setup/setup ]; then
+ T_PX=/mnt
+ else
+ # We will have to assume we've on an installed and running system.
+ T_PX=/
+ fi
+ fi
+fi
+
+# If there's no boot_message.txt, start the header for one now:
+if [ ! -r $T_PX/boot/boot_message.txt ]; then
+ cat << EOF > $T_PX/boot/boot_message.txt
+
+Welcome to the LILO Boot Loader!
+
+Please enter the name of the partition you would like to boot
+at the prompt below. The choices are:
+
+EOF
+fi
+
+# The default install location may be set here:
+DEFAULT=" --default-item MBR "
+
+# This is a different 'probe' than the function below.
+PROBE() {
+ if [ -x /sbin/probe ]; then
+ /sbin/probe -l
+ elif fdisk -l | grep "Disk /dev/ide" 1> /dev/null 2> /dev/null ; then # no devfs yet
+ for devs in /dev/hda /dev/hdb /dev/hdc /dev/hdd /dev/hde /dev/hdf /dev/hdg \
+ /dev/hdh /dev/hdi /dev/hdj /dev/hdk /dev/hdl /dev/hdm /dev/hdn /dev/hdo /dev/hdp \
+ /dev/sda /dev/sdb /dev/sdc /dev/sdd /dev/sde /dev/sdf /dev/sdg /dev/sdh /dev/sdi \
+ /dev/sdj /dev/sdk /dev/sdl /dev/sdm /dev/sdn /dev/sdo /dev/sdp ; do
+ fdisk -l $devs 2> /dev/null
+ done
+ elif fdisk -l | grep "Disk /dev/scsi" 1> /dev/null 2> /dev/null ; then # no devfs yet
+ for devs in /dev/hda /dev/hdb /dev/hdc /dev/hdd /dev/hde /dev/hdf /dev/hdg \
+ /dev/hdh /dev/hdi /dev/hdj /dev/hdk /dev/hdl /dev/hdm /dev/hdn /dev/hdo /dev/hdp \
+ /dev/sda /dev/sdb /dev/sdc /dev/sdd /dev/sde /dev/sdf /dev/sdg /dev/sdh /dev/sdi \
+ /dev/sdj /dev/sdk /dev/sdl /dev/sdm /dev/sdn /dev/sdo /dev/sdp ; do
+ fdisk -l $devs 2> /dev/null
+ done
+ elif [ -z "`fdisk -l`" ]; then
+ for devs in /dev/hda /dev/hdb /dev/hdc /dev/hdd /dev/hde /dev/hdf /dev/hdg \
+ /dev/hdh /dev/hdi /dev/hdj /dev/hdk /dev/hdl /dev/hdm /dev/hdn /dev/hdo /dev/hdp \
+ /dev/sda /dev/sdb /dev/sdc /dev/sdd /dev/sde /dev/sdf /dev/sdg /dev/sdh /dev/sdi \
+ /dev/sdj /dev/sdk /dev/sdl /dev/sdm /dev/sdn /dev/sdo /dev/sdp ; do
+ fdisk -l $devs 2> /dev/null
+ done
+ else # We got output without /dev/ide or /dev/scsi, so it can probably be trusted:
+ fdisk -l 2> /dev/null
+ fi
+}
+
+# Function to ask if the Slackware logo boot screen should be used.
+ask_boot_splash() {
+ dialog --title "OPTIONAL SLACKWARE LOGO BOOT SCREEN" \
+ --yesno \
+"Would you like to use a boot screen with the Slackware logo \
+against a black background? If you answer no here, the standard \
+LILO menu will be used.\n\
+" 7 65 2> $TMP/reply
+ RETVAL=$?
+ return $RETVAL
+}
+
+boot_bmp() {
+ cat << EO_BMP
+# Boot BMP Image.
+# Bitmap in BMP format: 640x480x8
+ bitmap = /boot/slack.bmp
+# Menu colors (foreground, background, shadow, highlighted
+# foreground, highlighted background, highlighted shadow):
+ bmp-colors = 255,0,255,0,255,0
+# Location of the option table: location x, location y, number of
+# columns, lines per column (max 15), "spill" (this is how many
+# entries must be in the first column before the next begins to
+# be used. We don't specify it here, as there's just one column.
+ bmp-table = 60,6,1,16
+# Timer location x, timer location y, foreground color,
+# background color, shadow color.
+ bmp-timer = 65,27,0,255
+EO_BMP
+}
+
+# Menu to check if we want to use VESA framebuffer support:
+use_framebuffer() {
+if cat /proc/devices | grep "29 fb" 1> /dev/null ; then
+ dialog --title "CONFIGURE LILO TO USE FRAME BUFFER CONSOLE?" \
+ --default-item 1024x768x256 \
+ --menu "Looking at /proc/devices, it seems your kernel has support for \
+the Linux frame buffer console. If we enable this in /etc/lilo.conf, it \
+will allow more rows and columns of text on the screen and give you a cool \
+penguin logo at boot time. However, the frame buffer text console is \
+slower than a standard text console. In addition, not every video card \
+or monitor supports all of these video modes. Would you like to use the \
+frame buffer console, or the standard Linux console?" 0 0 0 \
+ "standard" "Use the standard Linux console (the safe choice)" \
+ "640x480x256" "Frame buffer console, 640x480x256" \
+ "800x600x256" "Frame buffer console, 800x600x256" \
+ "1024x768x256" "Frame buffer console, 1024x768x256" \
+ "640x480x32k" "Frame buffer console, 640x480x32k" \
+ "800x600x32k" "Frame buffer console, 800x600x32k" \
+ "1024x768x32k" "Frame buffer console, 1024x768x32k" \
+ "640x480x64k" "Frame buffer console, 640x480x64k" \
+ "800x600x64k" "Frame buffer console, 800x600x64k" \
+ "1024x768x64k" "Frame buffer console, 1024x768x64k" \
+ 2> $TMP/reply
+ if [ $? = 1 -o $? = 255 ]; then
+ exit
+ fi
+# Frame buffer modes above 1024x768 look terrible except
+# on LCD panels, and 32 bit color is slow. Since we don't
+# even need to run a framebuffer console to run framebuffer
+# X anymore, these modes aren't of much real use.
+# "1280x1024x256" "Frame buffer console, 1280x1024x256" \
+# "1600x1200x256" "Frame buffer console, 1600x1200x256" \
+# "1280x1024x32k" "Frame buffer console, 1280x1024x32k" \
+# "1600x1200x32k" "Frame buffer console, 1600x1200x32k" \
+# "1280x1024x64k" "Frame buffer console, 1280x1024x64k" \
+# "1600x1200x64k" "Frame buffer console, 1600x1200x64k" \
+# "640x480x16m" "Frame buffer console, 640x480x16.8m" \
+# "800x600x16m" "Frame buffer console, 800x600x16.8m" \
+# "1024x768x16m" "Frame buffer console, 1024x768x16.8m" \
+# "1280x1024x16m" "Frame buffer console, 1280x1024x16.8m" \
+# "1600x1200x16m" "Frame buffer console, 1600x1200x16.8m"
+ CONSOLETYPE="`cat $TMP/reply`"
+ if [ "$CONSOLETYPE" = "1600x1200x16m" ]; then
+ CONSOLENUM=799
+ elif [ "$CONSOLETYPE" = "1600x1200x64k" ]; then
+ CONSOLENUM=798
+ elif [ "$CONSOLETYPE" = "1600x1200x32k" ]; then
+ CONSOLENUM=797
+ elif [ "$CONSOLETYPE" = "1600x1200x256" ]; then
+ CONSOLENUM=796
+ elif [ "$CONSOLETYPE" = "1280x1024x16m" ]; then
+ CONSOLENUM=795
+ elif [ "$CONSOLETYPE" = "1280x1024x64k" ]; then
+ CONSOLENUM=794
+ elif [ "$CONSOLETYPE" = "1280x1024x32k" ]; then
+ CONSOLENUM=793
+ elif [ "$CONSOLETYPE" = "1280x1024x256" ]; then
+ CONSOLENUM=775
+ elif [ "$CONSOLETYPE" = "1024x768x16m" ]; then
+ CONSOLENUM=792
+ elif [ "$CONSOLETYPE" = "1024x768x64k" ]; then
+ CONSOLENUM=791
+ elif [ "$CONSOLETYPE" = "1024x768x32k" ]; then
+ CONSOLENUM=790
+ elif [ "$CONSOLETYPE" = "1024x768x256" ]; then
+ CONSOLENUM=773
+ elif [ "$CONSOLETYPE" = "800x600x16m" ]; then
+ CONSOLENUM=789
+ elif [ "$CONSOLETYPE" = "800x600x64k" ]; then
+ CONSOLENUM=788
+ elif [ "$CONSOLETYPE" = "800x600x32k" ]; then
+ CONSOLENUM=787
+ elif [ "$CONSOLETYPE" = "800x600x256" ]; then
+ CONSOLENUM=771
+ elif [ "$CONSOLETYPE" = "640x480x16m" ]; then
+ CONSOLENUM=786
+ elif [ "$CONSOLETYPE" = "640x480x64k" ]; then
+ CONSOLENUM=785
+ elif [ "$CONSOLETYPE" = "640x480x32k" ]; then
+ CONSOLENUM=784
+ elif [ "$CONSOLETYPE" = "640x480x256" ]; then
+ CONSOLENUM=769
+ fi
+fi
+}
+
+# A function to ask for append= parameters.
+ask_append() {
+ dialog --title "OPTIONAL LILO append=\"<kernel parameters>\" LINE" --inputbox \
+"Some systems might require extra parameters to be passed to the kernel. \
+If you needed to pass parameters to the kernel when you booted the Slackware \
+bootdisk, you'll probably want to enter the same ones here. Most \
+systems won't require any extra parameters. If you don't need any, just \
+hit ENTER to continue.\n\
+" 12 72 2> $TMP/reply
+ RETVAL=$?
+ return $RETVAL
+}
+
+ask_utf() {
+ if [ "$(uname -r | cut -f 3 -d .)" -gt "23" ]; then
+ dialog --defaultno --title "USE UTF-8 TEXT CONSOLE?" --yesno \
+"Beginning with the 2.6.24 kernel, the text consoles default to UTF-8 mode. \
+Unless you are using a UTF-8 locale (\$LANG setting), using the old default \
+of a non-UTF text console is safer until some issues with various console \
+programs are addressed. This option has no effect on the use of UTF-8 with X. \
+\"No\" is the safe choice here." 10 70
+ fi
+}
+
+# This function scans for bootable partitions (making some assumptions along
+# the way which may or may not be correct, but usually work), and sets up
+# LILO in either the superblock, or the MBR.
+simplelilo()
+{
+ use_framebuffer;
+
+ ask_append;
+ if [ $? = 1 -o $? = 255 ]; then
+ APPEND=""
+ fi
+ APPEND="`cat $TMP/reply`"
+
+ ask_utf;
+ if [ $? = 1 -o $? = 255 ]; then
+ UTFVT="vt.default_utf8=0"
+ else
+ UTFVT="vt.default_utf8=1"
+ fi
+
+ if PROBE -l | grep 'OS/2 Boot Manager' 1> /dev/null 2> /dev/null ; then
+ dialog --title "OS/2 BOOT MANAGER FOUND" --yesno \
+ "Your system appears to have Boot Manager, a boot menu system provided \
+with OS/2 and Partition Magic. If you like, we can install a very simple \
+LILO boot block at the start of your Linux partition. Then, you can \
+add the partition to the Boot Manager menu, and you'll be able to use \
+Boot Manager to boot Linux. Would you like to install LILO in a Boot \
+Manager compatible way?" 11 65
+ FLAG=$?
+ if [ ! $FLAG = 0 -a ! $FLAG = 1 ]; then
+ exit 1
+ fi
+ if [ $FLAG = 0 ]; then # yes, use BM
+ if [ -r $T_PX/etc/lilo.conf ]; then
+ mv $T_PX/etc/lilo.conf $T_PX/etc/lilo.conf.orig
+ fi
+ cat << EOF > $T_PX/etc/lilo.conf
+# LILO configuration file
+# generated by 'liloconfig'
+#
+# Start LILO global section
+#
+EOF
+ if [ ! "$APPEND" = "" -o ! "$UTFVT" = "" ]; then
+ echo "# Append any additional kernel parameters:" >> $T_PX/etc/lilo.conf
+ echo "append=\"$APPEND $UTFVT\"" >> $T_PX/etc/lilo.conf
+ fi
+ cat << EOF >> $T_PX/etc/lilo.conf
+boot = $ROOT_DEVICE
+#delay = 5
+EOF
+ if [ "$CONSOLETYPE" = "standard" ]; then
+ cat << EOF >> $T_PX/etc/lilo.conf
+vga = normal
+EOF
+ else
+ cat << EOF >> $T_PX/etc/lilo.conf
+# VESA framebuffer at $CONSOLETYPE
+vga = $CONSOLENUM
+EOF
+ fi
+ cat << EOF >> $T_PX/etc/lilo.conf
+# End LILO global section
+# Linux root partition section
+image = $KERNEL
+ root = $ROOT_DEVICE
+ label = Linux
+ read-only
+# End root Linux partition section
+EOF
+ installcolor;
+ return
+ fi # Use Boot Manager
+ fi # Boot Manager detected
+ # If we got here, we either don't have boot manager or don't want to use it
+ dialog --title "SELECT LILO DESTINATION" $DEFAULT --menu \
+"LILO can be installed to a variety of places:\n\
+\n\
+ 1. The superblock of your root Linux partition. (which could\n\
+ be made the bootable partition with Windows or Linux fdisk, or\n\
+ booted with a program like OS/2 Boot Manager)\n\
+ 2. A formatted floppy disk.\n\
+ 3. The Master Boot Record of your first hard drive.\n\
+\n\
+Options 1 and 2 are the safest, but option 1 does require a little\n\
+extra work later (setting the partition bootable with fdisk).\n\
+Which option would you like?" \
+ 20 72 3 \
+ "Root" "Install to superblock (not for use with XFS)" \
+ "Floppy" "Install to a formatted floppy in /dev/fd0 (A:)" \
+ "MBR" "Install to Master Boot Record" \
+ 2> $TMP/reply
+ if [ $? = 1 -o $? = 255 ]; then
+ exit
+ fi
+ TG="`cat $TMP/reply`"
+ rm -r $TMP/reply
+ if [ "$TG" = "MBR" ]; then
+ MBR_TARGET=/dev/sda
+ echo $MBR_TARGET > $TMP/LILOMBR
+ cat /proc/partitions | while read LINE ; do
+ MAJOR="`echo $LINE | cut -f 1 -d ' '`"
+ MINOR="`echo $LINE | cut -f 2 -d ' '`"
+ if [ ! "$MINOR" = "0" -a ! "$MINOR" = "64" ]; then # ignore whole devices to weed out CD drives
+ if [ "$MAJOR" = "3" ]; then
+ MBR_TARGET=/dev/hda
+ echo $MBR_TARGET > $TMP/LILOMBR
+ elif [ "$MAJOR" = "22" -a ! "$MBR_TARGET" = "/dev/hda" ]; then
+ MBR_TARGET=/dev/hdc
+ echo $MBR_TARGET > $TMP/LILOMBR
+ elif [ "$MAJOR" = "33" -a ! "$MBR_TARGET" = "/dev/hda" -a ! "$MBR_TARGET" = "/dev/hdc" ]; then
+ MBR_TARGET=/dev/hde
+ echo $MBR_TARGET > $TMP/LILOMBR
+ elif [ "$MAJOR" = "34" -a ! "$MBR_TARGET" = "/dev/hda" -a ! "$MBR_TARGET" = "/dev/hdc" -a ! "$MBR_TARGET" = "/dev/hde" ]; then
+ MBR_TARGET=/dev/hdg
+ echo $MBR_TARGET > $TMP/LILOMBR
+ fi
+ fi
+ done
+ LILO_TARGET=`cat $TMP/LILOMBR`
+ elif [ "$TG" = "Root" ]; then
+ LILO_TARGET=`echo $ROOT_DEVICE`
+ elif [ "$TG" = "Floppy" ]; then
+ LILO_TARGET="/dev/fd0"
+ fi
+ cat << EOF > $T_PX/etc/lilo.conf
+# LILO configuration file
+# generated by 'liloconfig'
+#
+# Start LILO global section
+EOF
+ if [ ! "$APPEND" = "" -o ! "$UTFVT" = "" ]; then
+ echo "# Append any additional kernel parameters:" >> $T_PX/etc/lilo.conf
+ echo "append=\"$APPEND $UTFVT\"" >> $T_PX/etc/lilo.conf
+ fi
+ cat << EOF >> $T_PX/etc/lilo.conf
+boot = $LILO_TARGET
+
+# Boot BMP Image.
+# Bitmap in BMP format: 640x480x8
+ bitmap = /boot/slack.bmp
+# Menu colors (foreground, background, shadow, highlighted
+# foreground, highlighted background, highlighted shadow):
+ bmp-colors = 255,0,255,0,255,0
+# Location of the option table: location x, location y, number of
+# columns, lines per column (max 15), "spill" (this is how many
+# entries must be in the first column before the next begins to
+# be used. We don't specify it here, as there's just one column.
+ bmp-table = 60,6,1,16
+# Timer location x, timer location y, foreground color,
+# background color, shadow color.
+ bmp-timer = 65,27,0,255
+
+# Standard menu.
+# Or, you can comment out the bitmap menu above and
+# use a boot message with the standard menu:
+#message = /boot/boot_message.txt
+
+# Wait until the timeout to boot (if commented out, boot the
+# first entry immediately):
+prompt
+# Timeout before the first entry boots.
+# This is given in tenths of a second, so 600 for every minute:
+timeout = 1200
+# Override dangerous defaults that rewrite the partition table:
+change-rules
+ reset
+EOF
+ if [ "$CONSOLETYPE" = "standard" ]; then
+ cat << EOF >> $T_PX/etc/lilo.conf
+# Normal VGA console
+vga = normal
+# VESA framebuffer console @ 1024x768x64k
+# vga=791
+# VESA framebuffer console @ 1024x768x32k
+# vga=790
+# VESA framebuffer console @ 1024x768x256
+# vga=773
+# VESA framebuffer console @ 800x600x64k
+# vga=788
+# VESA framebuffer console @ 800x600x32k
+# vga=787
+# VESA framebuffer console @ 800x600x256
+# vga=771
+# VESA framebuffer console @ 640x480x64k
+# vga=785
+# VESA framebuffer console @ 640x480x32k
+# vga=784
+# VESA framebuffer console @ 640x480x256
+# vga=769
+EOF
+ else
+ cat << EOF >> $T_PX/etc/lilo.conf
+# VESA framebuffer console @ $CONSOLETYPE
+vga = $CONSOLENUM
+# Normal VGA console
+# vga = normal
+# VESA framebuffer console @ 1024x768x64k
+# vga=791
+# VESA framebuffer console @ 1024x768x32k
+# vga=790
+# VESA framebuffer console @ 1024x768x256
+# vga=773
+# VESA framebuffer console @ 800x600x64k
+# vga=788
+# VESA framebuffer console @ 800x600x32k
+# vga=787
+# VESA framebuffer console @ 800x600x256
+# vga=771
+# VESA framebuffer console @ 640x480x64k
+# vga=785
+# VESA framebuffer console @ 640x480x32k
+# vga=784
+# VESA framebuffer console @ 640x480x256
+# vga=769
+EOF
+ fi
+cat << EOF >> $T_PX/etc/lilo.conf
+# End LILO global section
+EOF
+ # OK, now let's look for Windows partitions:
+ DOSP="`PROBE -l | grep "DOS
+Win
+W95
+FAT12
+FAT16
+HPFS" | grep -v "Ext'd" | grep -v "Extend" | sort`"
+ DOSP="`echo $DOSP | cut -f 1 -d ' '`"
+ if [ ! "$DOSP" = "" ]; then
+ TABLE="`echo $DOSP | cut -b1-8`"
+ cat << EOF >> $T_PX/etc/lilo.conf
+# Windows bootable partition config begins
+other = $DOSP
+ label = Windows
+ table = $TABLE
+# Windows bootable partition config ends
+EOF
+ echo "Windows - (Windows FAT/NTFS partition)" >> $T_PX/boot/boot_message.txt
+ fi
+ # Next, we search for Linux partitions:
+ LNXP="`PROBE -l | grep "Linux$"`"
+ LNXP="`echo $LNXP | cut -f 1 -d ' ' | sort`"
+ if [ ! "$LNXP" = "" ]; then
+ cat << EOF >> $T_PX/etc/lilo.conf
+# Linux bootable partition config begins
+image = $KERNEL
+ root = $ROOT_DEVICE
+ label = Linux
+ read-only
+# Linux bootable partition config ends
+EOF
+ echo "Linux - (Linux partition)" >> $T_PX/boot/boot_message.txt
+ fi
+# DEAD CODE, BUT IN CASE OS/2 MAKES A COMEBACK!
+# # OK, hopefully we can remember how to deal with OS/2 :^)
+# OS2P="`PROBE -l | grep "HPFS"`"
+# OS2P="`echo $OS2P | cut -f 1 -d ' ' | sort`"
+# if [ ! "$OS2P" = "" ]; then
+# TABLE="`echo $OS2P | cut -b1-8`"
+# if [ "$TABLE" = "/dev/hda" ]; then
+# cat << EOF >> $T_PX/etc/lilo.conf
+## OS/2 bootable partition config begins
+#other = $OS2P
+# label = OS2
+# table = $TABLE
+## OS/2 bootable partition config ends
+#EOF
+# else
+# cat << EOF >> $T_PX/etc/lilo.conf
+## OS/2 bootable partition config begins
+#other = $OS2P
+# label = OS2
+# table = $TABLE
+# loader = /boot/os2_d.b
+## map-drive = 0x80
+## to = 0x81
+## map-drive = 0x81
+## to = 0x80
+## OS/2 bootable partition config ends
+#EOF
+# echo "OS2 - OS/2 Warp (HPFS partition)" >> $T_PX/boot/boot_message.txt
+# fi
+# fi
+ echo >> $T_PX/boot/boot_message.txt
+ # Done, now we must install lilo:
+ installcolor;
+}
+
+checkp_text()
+{
+ if [ ! -r $1 ]; then
+ echo
+ echo "I can't find a device named '$1'!"
+ echo
+ echo -n "Are you sure you want to use this device name [y]es, [n]o? "
+ read use_device;
+ if [ ! "$use_device" = "y" ]; then
+ return 1;
+ fi
+ return 0;
+ fi
+}
+
+checkp_dialog()
+{
+ if [ ! -r $1 ]; then
+ dialog --title "DEVICE FILE NOT FOUND" --yesno "I can't find a \
+device named '$1'. Are you sure you want to use this device \
+name?" 7 60
+ return $?;
+ fi
+}
+
+installcolor()
+{
+ dialog --infobox "\nInstalling the Linux Loader..." 5 40
+ if [ "$T_PX" = "/" ]; then
+ lilo 1> /dev/null 2> /etc/lilo-error.$$
+ SUCCESS=$?
+ else
+ lilo -r $T_PX -m /boot/map -C /etc/lilo.conf 1> /dev/null 2> /etc/lilo-error.$$
+ SUCCESS=$?
+ fi
+ if [ ! "$SUCCESS" = "0" ]; then # edit file to try lba32 mode:
+ cat $T_PX/etc/lilo.conf | while read line ; do
+ echo $line
+ if [ "$line" = "# Start LILO global section" ] ; then
+ echo "lba32 # Allow booting past 1024th cylinder with a recent BIOS"
+ fi
+ done > $T_PX/etc/lilo.conf.lba32
+ mv $T_PX/etc/lilo.conf.lba32 $T_PX/etc/lilo.conf
+ if [ "$T_PX" = "/" ]; then
+ lilo 1> /dev/null 2> /etc/lilo-error.$$
+ SUCCESS=$?
+ else
+ lilo -r $T_PX -m /boot/map -C /etc/lilo.conf 1> /dev/null 2> /etc/lilo-error.$$
+ SUCCESS=$?
+ fi
+ fi
+ sleep 1
+ if [ ! "$SUCCESS" = "0" ]; then # some LILO error occured
+ echo >> /etc/lilo-error.$$
+cat << EOF >> /etc/lilo-error.$$
+Sorry, but the attempt to install LILO has returned an error, so LILO \
+has not been correctly installed. You'll have to use a bootdisk \
+to start your \
+machine instead. It should still be possible to get LILO working by \
+editing the /etc/lilo.conf and reinstalling LILO manually. See the \
+LILO man page and documentation in /usr/doc/lilo/ for more help. \
+The error message may be seen above.
+EOF
+ dialog --msgbox "$(cat /etc/lilo-error.$$)" 0 0
+ fi
+}
+
+installtext()
+{
+ echo "Installing the Linux Loader..."
+ if [ "$T_PX" = "/" ]; then
+ lilo
+ SUCCESS=$?
+ else
+ lilo -r $T_PX -m /boot/map -C /etc/lilo.conf
+ SUCCESS=$?
+ fi
+ if [ ! "$SUCCESS" = "0" ]; then # try lba32 mode:
+ cat $T_PX/etc/lilo.conf | while read line ; do
+ echo $line
+ if [ "$line" = "# Start LILO global section" ] ; then
+ echo "lba32 # Allow booting past 1024th cylinder with a recent BIOS"
+ fi
+ done > $T_PX/etc/lilo.conf.lba32
+ mv $T_PX/etc/lilo.conf.lba32 $T_PX/etc/lilo.conf
+ if [ "$T_PX" = "/" ]; then
+ lilo 1> /dev/null 2> /dev/null
+ SUCCESS=$?
+ else
+ lilo -r $T_PX -m /boot/map -C /etc/lilo.conf 1> /dev/null 2> /dev/null
+ SUCCESS=$?
+ fi
+ fi
+ sleep 1
+ if [ ! "$SUCCESS" = "0" ]; then # some LILO error occured
+ cat << EOF
+
+LILO INSTALL ERROR # $SUCCESS
+
+Sorry, but the attempt to install LILO has returned an error, so LILO
+has not been correctly installed. You'll have to use a bootdisk to
+start your machine instead. It should still be possible to get LILO
+working by editing the /etc/lilo.conf and reinstalling LILO manually.
+See the LILO man page and documentation in /usr/doc/lilo/ for more
+help.
+
+EOF
+ fi
+}
+
+# 'probe()' borrowed from LILO QuickInst.
+probe()
+{
+ [ ! -z "`dd if=$1 bs=1 count=1 2>/dev/null | tr '\0' x`" ]
+ return
+}
+
+# Figure out if we're installing from the hard drive
+if [ -r $TMP/SeTT_PX ]; then
+ T_PX="`cat $TMP/SeTT_PX`"
+else
+ if [ "$T_PX" = "" -a ! "$1" = "" ]; then
+ T_PX=$1
+ else
+ T_PX=/
+ fi
+fi
+HDR="no" # this means the header section of /etc/lilo.conf has not yet
+ # been configured
+LNX="no" # this means no Linux partition has been defined as bootable
+ # through LILO. Both of these must change to "yes" before LILO will
+ # install from this script.
+# Determine the root partition (such as /dev/hda2)
+ROOT_DEVICE=$2
+if [ "$ROOT_DEVICE" = "" ]; then
+ if [ -r $TMP/SeTrootdev ]; then
+ ROOT_DEVICE="`cat $TMP/SeTrootdev`"
+ else
+ ROOT_DEVICE="`mount | cut -f 1 -d " " | sed -n "1 p"`"
+ fi
+fi
+# Figure out where the kernel is:
+ARCHTYPE=i386
+if [ -r $T_PX/vmlinuz ]; then
+ KERNEL=/vmlinuz
+elif [ -r $T_PX/boot/vmlinuz ]; then
+ KERNEL=/boot/vmlinuz
+elif [ -r $T_PX/usr/src/linux/arch/$ARCHTYPE/boot/bzImage ]; then
+ KERNEL=/usr/src/linux/arch/$ARCHTYPE/boot/bzImage
+elif [ -r $T_PX/usr/src/linux/arch/$ARCHTYPE/boot/zImage ]; then
+ KERNEL=/usr/src/linux/arch/$ARCHTYPE/boot/zImage
+else
+ exit 99 # no kernel? guess you couldn't read. bye bye.
+fi
+
+ # If we're installing from the umsdos.gz rootdisk, suggest skipping LILO:
+ if [ ! "$T_PX" = "/" ]; then
+ if mount | grep " on /mnt " | grep umsdos 1> /dev/null 2> /dev/null ; then
+ dialog --title "SKIP LILO CONFIGURATION? (RECOMMENDED)" --yesno "Since \
+you are installing to a FAT partition, it's suggested that you do not \
+configure LILO at this time. (Instead, use your bootdisk. For booting \
+off the hard drive from MS-DOS, you can use Loadlin. You'll find \
+Loadlin on your hard drive in \LINUX\ROOT) Skip LILO configuration \
+(highly recommended)?" 10 70
+ if [ $? = 0 ]; then
+ exit
+ fi
+ fi
+ fi
+ # OK, now let's see if we should automate things:
+ dialog --title "INSTALL LILO" --menu "LILO (Linux Loader) is a generic \
+boot loader. There's a simple installation which tries to automatically \
+set up LILO to boot Linux (also Windows if found). For \
+more advanced users, the expert option offers more control over the \
+installation process. Since LILO does not work in all cases (and can \
+damage partitions if incorrectly installed), there's the third (safe) \
+option, which is to skip installing LILO for now. You can always install \
+it later with the 'liloconfig' command. Which option would you like?" \
+ 18 67 3 \
+ "simple" "Try to install LILO automatically" \
+ "expert" "Use expert lilo.conf setup menu" \
+ "skip" "Do not install LILO" 2> $TMP/reply
+ if [ $? = 1 -o $? = 255 ]; then
+ exit
+ fi
+ REPLY="`cat $TMP/reply`"
+ rm -f $TMP/reply
+ if [ "$REPLY" = "skip" ]; then
+ exit
+ elif [ "$REPLY" = "simple" ]; then
+ # Do simple LILO setup
+ simplelilo
+ exit
+ fi
+ # drop through to last option: (use the expert menus)
+ while [ 0 ]; do
+ dialog --title "EXPERT LILO INSTALLATION" --menu \
+"This menu directs the creation of the LILO config file, lilo.conf. \
+To install, you make a new LILO configuration file by creating a new header \
+and then adding one or more bootable partitions to the file. Once you've done \
+this, you can select the install option. Alternately, if you already have an \
+/etc/lilo.conf, you may reinstall using that. If you make a mistake, you can \
+always start over by choosing 'Begin'. \
+Which option would you like?" 21 73 8 \
+"Begin" "Start LILO configuration with a new LILO header" \
+"Linux" "Add a Linux partition to the LILO config" \
+"Windows" "Add a Windows FAT or NTFS partition to the LILO config" \
+"Install" "Install LILO" \
+"Recycle" "Reinstall LILO using the existing lilo.conf" \
+"Skip" "Skip LILO installation and exit this menu" \
+"View" "View your current /etc/lilo.conf" \
+"Help" "Read the Linux Loader HELP file" 2> $TMP/reply
+ if [ $? = 1 -o $? = 255 ]; then
+ REPLY="Skip"
+ else
+ REPLY="`cat $TMP/reply`"
+ fi
+ rm -r $TMP/reply
+ if [ "$REPLY" = "Begin" ]; then
+ ask_append;
+ if [ $? = 1 -o $? = 255 ]; then
+ APPEND=""
+ HDR="no"
+ continue;
+ else
+ APPEND="`cat $TMP/reply`"
+ fi
+ ask_utf;
+ if [ $? = 1 -o $? = 255 ]; then
+ UTFVT="vt.default_utf8=0"
+ else
+ UTFVT="vt.default_utf8=1"
+ fi
+ use_framebuffer;
+ dialog --title "SELECT LILO TARGET LOCATION" $DEFAULT --menu "LILO can be installed \
+to a variety of places: \
+the superblock of your root Linux partition (which could then be made the \
+bootable partition with fdisk), a formatted floppy disk, \
+or the master boot record of your first hard drive. If you're using \
+a boot system such as Boot Manager, you should use the "Root" \
+selection. Please pick a target location:" 15 65 3 \
+"Root" "Install to superblock (not for use with XFS)" \
+"Floppy" "Use a formatted floppy disk in the boot drive" \
+"MBR" "Use the Master Boot Record (possibly unsafe)" \
+2> $TMP/reply
+ if [ $? = 1 -o $? = 255 ]; then
+ HDR="no"
+ continue;
+ else
+ LNX="no"
+ TG="`cat $TMP/reply`"
+ fi
+ rm -r $TMP/reply
+ if [ "$TG" = "MBR" ]; then
+ MBR_TARGET=/dev/sda
+ echo $MBR_TARGET > $TMP/LILOMBR
+ cat /proc/partitions | while read LINE ; do
+ MAJOR="`echo $LINE | cut -f 1 -d ' '`"
+ MINOR="`echo $LINE | cut -f 2 -d ' '`"
+ if [ ! "$MINOR" = "0" -a ! "$MINOR" = "64" ]; then # ignore whole devices to weed out CD drives
+ if [ "$MAJOR" = "3" ]; then
+ MBR_TARGET=/dev/hda
+ echo $MBR_TARGET > $TMP/LILOMBR
+ elif [ "$MAJOR" = "22" -a ! "$MBR_TARGET" = "/dev/hda" ]; then
+ MBR_TARGET=/dev/hdc
+ echo $MBR_TARGET > $TMP/LILOMBR
+ elif [ "$MAJOR" = "33" -a ! "$MBR_TARGET" = "/dev/hda" -a ! "$MBR_TARGET" = "/dev/hdc" ]; then
+ MBR_TARGET=/dev/hde
+ echo $MBR_TARGET > $TMP/LILOMBR
+ elif [ "$MAJOR" = "34" -a ! "$MBR_TARGET" = "/dev/hda" -a ! "$MBR_TARGET" = "/dev/hdc" -a ! "$MBR_TARGET" = "/dev/hde" ]; then
+ MBR_TARGET=/dev/hdg
+ echo $MBR_TARGET > $TMP/LILOMBR
+ fi
+ fi
+ done
+ LILO_TARGET=`cat $TMP/LILOMBR`
+ dialog --title "CONFIRM LOCATION TO INSTALL LILO" --inputbox \
+"The auto-detected location to install the LILO boot block is shown below. \
+If you need to make any changes, you can make them below. Otherwise, hit \
+ENTER to accept the target location shown." 11 60 $LILO_TARGET 2> $TMP/reply
+ if [ $? = 0 ]; then
+ LILO_TARGET="`cat $TMP/reply`"
+ fi
+ rm -f $TMP/reply
+ elif [ "$TG" = "Root" ]; then
+ LILO_TARGET=`echo $ROOT_DEVICE`
+ elif [ "$TG" = "Floppy" ]; then
+ LILO_TARGET="/dev/fd0"
+ else
+ HDR="no"
+ continue;
+ fi
+ dialog --title "CHOOSE LILO TIMEOUT" --menu "At boot time, how long would \
+you like LILO to wait for you to select an operating system? If you \
+let LILO time out, it will boot the first OS in the configuration file by \
+default." 13 74 4 \
+"None" "Don't wait at all - boot straight into the first OS" \
+"5" "5 seconds" \
+"30" "30 seconds" \
+"Forever" "Present a prompt and wait until a choice is made" 2> $TMP/reply
+ if [ $? = 1 -o $? = 255 ]; then
+ HDR="no"
+ continue;
+ else
+ TIMEOUT="`cat $TMP/reply`"
+ fi
+ rm -r $TMP/reply
+ if [ "$TIMEOUT" = "None" ]; then
+ PROMPT="#prompt"
+ TIMEOUT="#timeout = 5"
+ elif [ "$TIMEOUT" = "5" ]; then
+ PROMPT="prompt"
+ TIMEOUT="timeout = 50"
+ elif [ "$TIMEOUT" = "30" ]; then
+ PROMPT="prompt"
+ TIMEOUT="timeout = 300"
+ elif [ "$TIMEOUT" = "Forever" ]; then
+ PROMPT="prompt"
+ TIMEOUT="#timeout = 300"
+ else
+ HDR="no"
+ continue;
+ fi
+ cat << EOF > $TMP/lilo.conf
+# LILO configuration file
+# generated by 'liloconfig'
+#
+# Start LILO global section
+boot = $LILO_TARGET
+#compact # faster, but won't work on all systems.
+EOF
+ # Boot splash
+ if [ "$PROMPT" = "prompt" ]; then
+ if ask_boot_splash ; then
+ boot_bmp >> $TMP/lilo.conf
+ cat << EOF >> $TMP/lilo.conf
+# Standard menu.
+# Or, you can comment out the bitmap menu above and
+# use a boot message with the standard menu:
+#message = /boot/boot_message.txt
+
+EOF
+ fi
+ else
+ cat << EOF >> $TMP/lilo.conf
+# Standard menu.
+message = /boot/boot_message.txt
+
+EOF
+ fi
+ if [ ! "$APPEND" = "" -o ! "$UTFVT" = "" ]; then
+ echo "# Append any additional kernel parameters:" >> $TMP/lilo.conf
+ echo "append=\"$APPEND $UTFVT\"" >> $TMP/lilo.conf
+ fi
+ cat << EOF >> $TMP/lilo.conf
+$PROMPT
+$TIMEOUT
+EOF
+ if [ "$CONSOLETYPE" = "standard" ]; then
+ cat << EOF >> $TMP/lilo.conf
+# Normal VGA console
+vga = normal
+# VESA framebuffer console @ 1024x768x64k
+# vga=791
+# VESA framebuffer console @ 1024x768x32k
+# vga=790
+# VESA framebuffer console @ 1024x768x256
+# vga=773
+# VESA framebuffer console @ 800x600x64k
+# vga=788
+# VESA framebuffer console @ 800x600x32k
+# vga=787
+# VESA framebuffer console @ 800x600x256
+# vga=771
+# VESA framebuffer console @ 640x480x64k
+# vga=785
+# VESA framebuffer console @ 640x480x32k
+# vga=784
+# VESA framebuffer console @ 640x480x256
+# vga=769
+EOF
+ else
+ cat << EOF >> $TMP/lilo.conf
+# VESA framebuffer console @ $CONSOLETYPE
+vga = $CONSOLENUM
+# Normal VGA console
+# vga = normal
+# VESA framebuffer console @ 1024x768x64k
+# vga=791
+# VESA framebuffer console @ 1024x768x32k
+# vga=790
+# VESA framebuffer console @ 1024x768x256
+# vga=773
+# VESA framebuffer console @ 800x600x64k
+# vga=788
+# VESA framebuffer console @ 800x600x32k
+# vga=787
+# VESA framebuffer console @ 800x600x256
+# vga=771
+# VESA framebuffer console @ 640x480x64k
+# vga=785
+# VESA framebuffer console @ 640x480x32k
+# vga=784
+# VESA framebuffer console @ 640x480x256
+# vga=769
+EOF
+ fi
+ cat << EOF >> $TMP/lilo.conf
+# ramdisk = 0 # paranoia setting
+# End LILO global section
+EOF
+ HDR="yes"
+ elif [ "$REPLY" = "Linux" ]; then
+ if [ "$HDR" = "yes" ]; then
+ echo "These are your Linux partitions:" > $TMP/tmpmsg
+ echo >> $TMP/tmpmsg
+ echo " Device Boot Start End Blocks Id System" >> $TMP/tmpmsg
+ PROBE -l | grep "Linux$" | sort >> $TMP/tmpmsg
+ echo >> $TMP/tmpmsg
+ echo "Which one would you like LILO to boot?" >> $TMP/tmpmsg
+ dialog --title "SELECT LINUX PARTITION" --no-collapse --inputbox \
+"`cat $TMP/tmpmsg`" 21 74 2> $TMP/reply
+ if [ $? = 1 -o $? = 255 ]; then
+ rm $TMP/tmpmsg
+ continue
+ fi
+ rm $TMP/tmpmsg
+ LINUX_PART="`cat $TMP/reply`"
+ checkp_dialog $LINUX_PART
+ if [ ! $? = 0 ]; then
+ continue;
+ fi
+ dialog --title "SELECT PARTITION NAME" --inputbox \
+"Now you must select a short, unique name for this partition. \
+You'll use this name if you specify a partition to boot at the \
+LILO prompt. 'Linux' might not be a bad choice. THIS MUST BE A \
+SINGLE WORD." 11 60 2> $TMP/reply
+ if [ $? = 1 -o $? = 255 ]; then
+ continue
+ fi
+ LABEL="`cat $TMP/reply`"
+ cat << EOF >> $TMP/lilo.conf
+# Linux bootable partition config begins
+image = $KERNEL
+ root = $LINUX_PART
+ label = $LABEL
+ read-only # Partitions should be mounted read-only for checking
+# Linux bootable partition config ends
+EOF
+ else
+ dialog --title "CAN'T ADD LINUX PARTITION" --msgbox "You can't add \
+partitions unless you start over with a new LILO header." 6 60
+ continue
+ fi
+ LNX="yes"
+ # MORE OS/2 DEAD CODE... DOESN'T HURT.
+ # THIS ITEM HAS LONG BEEN REMOVED FROM THE MENU...
+ elif [ "$REPLY" = "OS/2" ]; then
+ if [ "$HDR" = "yes" ]; then
+ echo "These are possibly OS/2 partitions. They will be treated" > $TMP/tmpmsg
+ echo "as such if you install them using this menu." >> $TMP/tmpmsg
+ echo >> $TMP/tmpmsg
+ echo " Device Boot Start End Blocks Id System" >> $TMP/tmpmsg
+ PROBE -l | grep DOS | sort >> $TMP/tmpmsg
+ PROBE -l | grep HPFS | sort >> $TMP/tmpmsg
+ echo >> $TMP/tmpmsg
+ echo "Which one would you like LILO to boot?" >> $TMP/tmpmsg
+ dialog --title "SELECT OS/2 PARTITION" --no-collapse --inputbox \
+"`cat $TMP/tmpmsg`" 20 74 2> $TMP/reply
+ if [ $? = 1 -o $? = 255 ]; then
+ rm $TMP/tmpmsg
+ continue
+ fi
+ rm $TMP/tmpmsg
+ OS_2_PART="`cat $TMP/reply`"
+ checkp_dialog $OS_2_PART
+ if [ ! $? = 0 ]; then
+ continue;
+ fi
+ dialog --title "SELECT PARTITION NAME" --inputbox \
+"Now you must select a short, unique name for this partition. \
+You'll use this name if you specify a partition to boot at the \
+LILO prompt. 'OS/2' might not be a bad choice. THIS MUST BE A \
+SINGLE WORD." 11 60 2> $TMP/reply
+ if [ $? = 1 -o $? = 255 ]; then
+ continue
+ fi
+ LABEL="`cat $TMP/reply`"
+ TABLE="`echo $OS_2_PART | cut -b1-8`"
+ if [ "`echo $TABLE | cut -b6-8`" = "hda" ]; then
+ cat << EOF >> $TMP/lilo.conf
+# OS/2 bootable partition config begins
+other = $OS_2_PART
+ label = $LABEL
+ table = $TABLE
+# OS/2 bootable partition config ends
+EOF
+ else
+ cat << EOF >> $TMP/lilo.conf
+# OS/2 bootable partition config begins
+other = $OS_2_PART
+ label = $LABEL
+ table = $TABLE
+ loader = /boot/os2_d.b
+# map-drive = 0x80
+# to = 0x81
+# map-drive = 0x81
+# to = 0x80
+# OS/2 bootable partition config ends
+EOF
+ fi
+ else
+ dialog --title "CAN'T ADD OS/2 PARTITION" --msgbox "You can't add \
+partitions unless you start over with a new LILO header." 6 60
+ continue
+ fi
+ LNX="yes"
+ elif [ "$REPLY" = "Windows" ]; then
+ if [ "$HDR" = "yes" ]; then
+ echo "These are possibly Windows or DOS partitions. They will be treated" > $TMP/tmpmsg
+ echo "as such if you install them using this menu." >> $TMP/tmpmsg
+ echo >> $TMP/tmpmsg
+ echo " Device Boot Start End Blocks Id System" >> $TMP/tmpmsg
+ PROBE -l | grep "DOS
+Win
+W95
+FAT12
+FAT16
+HPFS" | grep -v "Ext'd" | grep -v "Extend" | sort >> $TMP/tmpmsg
+ echo >> $TMP/tmpmsg
+ echo "Which one would you like LILO to boot?" >> $TMP/tmpmsg
+ dialog --title "SELECT WINDOWS PARTITION" --no-collapse --inputbox \
+"`cat $TMP/tmpmsg`" 20 74 2> $TMP/reply
+ if [ $? = 1 -o $? = 255 ]; then
+ rm $TMP/tmpmsg
+ continue
+ fi
+ rm $TMP/tmpmsg
+ DOSPART="`cat $TMP/reply`"
+ checkp_dialog $DOSPART
+ if [ ! $? = 0 ]; then
+ continue;
+ fi
+ dialog --title "SELECT PARTITION NAME" --inputbox \
+"Now you must select a short, unique name for this partition. \
+You'll use this name if you specify a partition to boot at the \
+LILO prompt. 'Windows' might not be a bad choice. THIS MUST BE A \
+SINGLE WORD." 11 60 2> $TMP/reply
+ if [ $? = 1 -o $? = 255 ]; then
+ continue
+ fi
+ LABEL="`cat $TMP/reply`"
+ unset USE_LOADER
+ TABLE="`echo $DOSPART | cut -b1-8`"
+ if [ "`echo $TABLE | cut -b6-8`" = "hda" ]; then
+ USE_LOADER="no"
+ fi
+ if [ "`echo $TABLE | cut -b6-8`" = "sda" ]; then
+ if probe /dev/hda; then
+ USE_LOADER="yes"
+ else
+ USE_LOADER="no"
+ fi
+ fi
+ if [ "$USE_LOADER" = "no" ]; then
+ cat << EOF >> $TMP/lilo.conf
+# Windows bootable partition config begins
+other = $DOSPART
+ label = $LABEL
+ table = $TABLE
+# Windows bootable partition config ends
+EOF
+ else
+ cat << EOF >> $TMP/lilo.conf
+# Windows bootable partition config begins
+other = $DOSPART
+ label = $LABEL
+# map-drive = 0x80
+# to = 0x81
+# map-drive = 0x81
+# to = 0x80
+ table = $TABLE
+# Windows bootable partition config ends
+EOF
+ fi
+ else
+ dialog --title "CAN'T ADD WINDOWS PARTITION" --msgbox "You can't add \
+partitions unless you start over with a new LILO header." 6 60
+ continue
+ fi
+ LNX="yes"
+ elif [ "$REPLY" = "Install" -o "$REPLY" = "Recycle" ]; then
+ if [ "$REPLY" = "Recycle" -a -r $T_PX/etc/lilo.conf ]; then
+ LNX="yes"
+ fi
+ if [ "$LNX" = "no" ]; then
+ dialog --title "CAN'T INSTALL LILO" --msgbox "LILO could not be \
+installed. If you have not created a LILO configuration file by defining \
+a new header and adding at least one bootable partition to it, you must do \
+so before installing LILO. If you were attempting to use an existing LILO \
+configuration file, it could not be found. Try making a new one." 9 70
+ continue
+ else
+ if [ "$REPLY" = "Install" ]; then
+ if [ -r $TMP/lilo.conf ]; then
+ if [ -r $T_PX/etc/lilo.conf ]; then
+ mv $T_PX/etc/lilo.conf $T_PX/etc/lilo.conf.bak
+ fi
+ cp $TMP/lilo.conf $T_PX/etc/lilo.conf
+ chmod 644 $T_PX/etc/lilo.conf
+ fi
+ fi
+ installcolor;
+ fi
+ rm -f $TMP/tmpmsg $TMP/reply
+ break
+ elif [ "$REPLY" = "Skip" ]; then
+ rm -f $TMP/tmpmsg $TMP/reply
+ break
+ elif [ "$REPLY" = "View" ]; then
+ if [ -r $TMP/lilo.conf ]; then
+ dialog --title "YOUR NEW /etc/lilo.conf" --textbox "$TMP/lilo.conf" 22 70
+ else
+ if [ -r /mnt/etc/lilo.conf ]; then
+ dialog --title "YOUR OLD /etc/lilo.conf" --textbox "/mnt/etc/lilo.conf" 22 70
+ elif [ "$T_PX" = "/" -a -r /etc/lilo.conf ]; then
+ dialog --title "YOUR OLD /etc/lilo.conf" --textbox "/etc/lilo.conf" 22 70
+ else
+ dialog --title "NO CONFIG FILE FOUND" --msgbox "Sorry, but you don't \
+have a LILO configuration file that can be viewed." 6 60
+ fi
+ fi
+ elif [ "$REPLY" = "Help" ]; then
+ dialog --title "LILO INSTALLATION HELP" --textbox "$T_PX/var/log/setup/text.lilohelp" 22 68
+ fi
+ done
+
diff --git a/source/a/lilo/setup.liloconfig b/source/a/lilo/setup.liloconfig
new file mode 100644
index 00000000..0b979854
--- /dev/null
+++ b/source/a/lilo/setup.liloconfig
@@ -0,0 +1,3 @@
+#!/bin/sh
+#BLURB="Set up LILO to boot Linux (and other OSes) from your hard drive"
+sh sbin/liloconfig $*
diff --git a/source/a/lilo/slack-desc b/source/a/lilo/slack-desc
new file mode 100644
index 00000000..db5daf65
--- /dev/null
+++ b/source/a/lilo/slack-desc
@@ -0,0 +1,19 @@
+# HOW TO EDIT THIS FILE:
+# The "handy ruler" below makes it easier to edit a package description. Line
+# up the first '|' above the ':' following the base package name, and the '|' on
+# the right side marks the last column you can put a character in. You must make
+# exactly 11 lines for the formatting to be correct. It's also customary to
+# leave one space after the ':'.
+
+ |-----handy-ruler------------------------------------------------------|
+lilo: lilo (Linux Loader)
+lilo:
+lilo: Generic Boot Loader for Linux ('LInux LOader') by Werner Almesberger.
+lilo: LILO boots Linux from your hard drive. It can also boot other
+lilo: operating systems such as MS-DOS and OS/2, and can even boot DOS from
+lilo: the second hard drive. LILO comes with utilities and documentation
+lilo: that make it easier to install, such as 'liloconfig' and 'QuickStart'.
+lilo: NOTE: Installing boot loaders is inherently dangerous. Be sure to have
+lilo: some means to boot your system from a different media if you install
+lilo: LILO on your hard disk.
+lilo:
diff --git a/source/a/lilo/slack.bmp b/source/a/lilo/slack.bmp
new file mode 100644
index 00000000..3dd5652a
--- /dev/null
+++ b/source/a/lilo/slack.bmp
Binary files differ
diff --git a/source/a/lilo/slack.dat b/source/a/lilo/slack.dat
new file mode 100644
index 00000000..73c557e6
--- /dev/null
+++ b/source/a/lilo/slack.dat
@@ -0,0 +1,7 @@
+#
+# generated companion file to:
+#
+bitmap = slack.bmp
+bmp-table = 60,6;1,16,16,4
+bmp-colors = 255,0,;0,255,
+bmp-timer = 65,28;255,0,
diff --git a/source/a/lilo/slack64.bmp b/source/a/lilo/slack64.bmp
new file mode 100644
index 00000000..464e4683
--- /dev/null
+++ b/source/a/lilo/slack64.bmp
Binary files differ
diff --git a/source/a/lilo/text.lilohelp b/source/a/lilo/text.lilohelp
new file mode 100644
index 00000000..9f06bf78
--- /dev/null
+++ b/source/a/lilo/text.lilohelp
@@ -0,0 +1,100 @@
+
+Slackware LILO Installation HELP file
+
+WARNING: As they say in the LILO docs, installing boot
+loaders is inherently dangerous. Be careful out there!
+
+These are the options you can use at the Slackware LILO
+install menu:
+
+1. Start LILO configuration with a new LILO header.
+
+ This choice allows you to start a new configuration
+ file, /etc/lilo.conf, with no OS's entered into it
+ (yet).
+
+ You'll first be asked if you want to use an optional
+ append="...." line. If you didn't need to use extra
+ parameters at the bootkernel prompt, then you can
+ probably just hit ENTER here.
+
+ You will be asked where you want to install LILO. This
+ can be your Master Boot Record, your root partition's
+ superblock (for OS/2's Boot Manager), or to a
+ formatted floppy disk.
+
+ Next, you'll be asked if you want a delay before
+ booting the first OS in your lilo.conf file. This delay
+ allows you to hit left-shift and boot any OS in the
+ lilo.conf file by typing in the label you've given it.
+
+ Once you've started a new lilo.conf, you must add at
+ least one OS to it before you can install LILO.
+
+2. Menu choices to add Linux, OS/2, and DOS to the lilo.conf.
+
+ These all pretty much work the same way. You'll be asked
+ which partition you want to make bootable (answer
+ /dev/hda1 or whatever partition you wish to use), and
+ you'll also be asked to assign a label to the partition.
+ The label can be any short word such as "Linux" or "OS/2"
+ that you'll type in later to boot that partition. The boot
+ prompt is not case-sensitive, so the user can type LINUX or
+ os/2 later on and it will match the labels Linux and OS/2.
+
+3. Install LILO
+
+ Once you've looked at your new config file and are
+ satisfied with the way it looks, pick this choice to
+ install LILO and leave the LILO installation menu.
+
+
+Other options:
+
+ -- Recycle (Reinstall) using your original /etc/lilo.conf.
+
+ If you already have an /etc/lilo.conf, and you just need to
+ refresh lilo then you don't need to reconstruct your
+ lilo.conf. Just use this menu choice to reinstall LILO
+ using the existing /etc/lilo.conf.
+
+
+ -- View your current /etc/lilo.conf
+
+ If you haven't begun building a new lilo.conf, this choice
+ will let you take a look at the existing one in /etc on your
+ root Linux partition.
+
+ If you have begun constructing a new lilo.conf, this option
+ will let you view the progress on that.
+
+
+ -- Skip LILO installation and exit this menu
+
+ This option skips LILO installation. Use this if you don't
+ want to install LILO, or if you've already installed it and
+ don't need to reinstall. You have to reinstall LILO whenever
+ you change your Linux kernel.
+
+ -- Help - Read the Linux Loader HELP file
+
+ I hope you found it helpful! :^)
+
+
+-----------
+
+Other LILO information:
+
+ LILO on the Master Boot Record can be removed easily.
+ MS-DOS's fdisk has a /MBR option that restores the master
+ boot record. You can actually restore your original boot
+ sector from the copy LILO makes in /boot, as well. This is
+ the best way to go about it. See the LILO docs for more
+ information. There is also a '-u' flag to LILO that restores
+ the boot sector from the backup copy. Again, see the LILO
+ docs for detailed info.
+
+Good luck!
+
+--- end of LILO help
+
diff --git a/source/a/logrotate/logrotate.SlackBuild b/source/a/logrotate/logrotate.SlackBuild
new file mode 100755
index 00000000..6b6284b7
--- /dev/null
+++ b/source/a/logrotate/logrotate.SlackBuild
@@ -0,0 +1,71 @@
+#!/bin/sh
+
+# Copyright 2008, 2009 Patrick J. Volkerding, Sebeka, Minnesota, USA
+# All rights reserved.
+#
+# Redistribution and use of this script, with or without modification, is
+# permitted provided that the following conditions are met:
+#
+# 1. Redistributions of this script must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# 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.
+
+
+VERSION=${VERSION:-3.7.4}
+ARCH=${ARCH:-x86_64}
+BUILD=${BUILD:-1}
+
+CWD=$(pwd)
+TMP=${TMP:-/tmp}
+PKG=$TMP/package-logrotate
+
+rm -rf $PKG
+mkdir -p $TMP $PKG
+
+# Explode the package framework:
+cd $PKG
+explodepkg $CWD/_logrotate.tar.gz
+
+cd $TMP
+rm -rf logrotate-$VERSION
+tar xzvf $CWD/logrotate-$VERSION.tar.gz
+cd logrotate-$VERSION
+chown -R root:root .
+find . \
+ \( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \
+ -exec chmod 755 {} \; -o \
+ \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
+ -exec chmod 644 {} \;
+
+zcat $CWD/logrotate.slackware.diff.gz | patch -p1
+make clean
+make || exit 1
+strip logrotate
+cat logrotate > $PKG/usr/sbin/logrotate
+cat logrotate.8 | gzip -9c > $PKG/usr/man/man8/logrotate.8.gz
+mkdir -p $PKG/usr/doc/logrotate-$VERSION
+cp -a \
+ CHANGES COPYING READM* \
+ $PKG/usr/doc/logrotate-$VERSION
+mkdir -p $PKG/install
+cat $CWD/slack-desc > $PKG/install/slack-desc
+
+# Build the package:
+cd $PKG
+makepkg -l y -c n $TMP/logrotate-$VERSION-$ARCH-$BUILD.txz
+
+# Clean up the extra stuff:
+if [ "$1" = "--cleanup" ]; then
+ rm -rf $TMP/logrotate-$VERSION
+ rm -rf $PKG
+fi
diff --git a/source/a/logrotate/logrotate.slackware.diff b/source/a/logrotate/logrotate.slackware.diff
new file mode 100644
index 00000000..77b8aad6
--- /dev/null
+++ b/source/a/logrotate/logrotate.slackware.diff
@@ -0,0 +1,49 @@
+diff -u -r --new-file logrotate-3.7.4.orig/config.c logrotate-3.7.4/config.c
+--- logrotate-3.7.4.orig/config.c 2006-07-24 07:08:04.000000000 -0500
++++ logrotate-3.7.4/config.c 2006-09-21 01:07:50.000000000 -0500
+@@ -29,7 +29,7 @@
+ #define isblank(c) ( (c) == ' ' || (c) == '\t' ) ? 1 : 0
+ #endif
+
+-static char *defTabooExts[] = { ".rpmsave", ".rpmorig", "~", ",v",
++static char *defTabooExts[] = { ".new", ".rpmsave", ".rpmorig", "~", ",v",
+ ".rpmnew", ".swp"
+ };
+ static int defTabooCount = sizeof(defTabooExts) / sizeof(char *);
+diff -u -r --new-file logrotate-3.7.4.orig/config.h logrotate-3.7.4/config.h
+--- logrotate-3.7.4.orig/config.h 2005-11-12 13:07:56.000000000 -0600
++++ logrotate-3.7.4/config.h 2006-09-21 01:08:02.000000000 -0500
+@@ -36,5 +36,5 @@
+ #endif
+
+ #ifndef STATEFILE
+-#define STATEFILE "/var/lib/logrotate.status"
++#define STATEFILE "/var/lib/logrotate/status"
+ #endif
+diff -u -r --new-file logrotate-3.7.4.orig/logrotate.8 logrotate-3.7.4/logrotate.8
+--- logrotate-3.7.4.orig/logrotate.8 2006-05-17 09:46:51.000000000 -0500
++++ logrotate-3.7.4/logrotate.8 2006-09-21 01:07:14.000000000 -0500
+@@ -1,4 +1,4 @@
+-.TH LOGROTATE 8 "Wed Nov 5 2002" "Red Hat Linux" "System Administrator's Manual"
++.TH LOGROTATE 8 "Wed Nov 5 2002" "Linux" "System Administrator's Manual"
+ .SH NAME
+ logrotate \- rotates, compresses, and mails system logs
+ .SH SYNOPSIS
+@@ -410,7 +410,7 @@
+ for information on the taboo extensions). If a + precedes the list of
+ extensions, the current taboo extension list is augmented, otherwise it
+ is replaced. At startup, the taboo extension list
+-contains .rpmorig, .rpmsave, ,v, .swp, .rpmnew, and ~.
++contains .new, .rpmorig, .rpmsave, ,v, .swp, .rpmnew, and ~.
+
+ .TP
+ \fBweekly\fR
+@@ -427,7 +427,7 @@
+ .SH FILES
+ .PD 0
+ .TP 27
+-\fI/var/lib/logrotate.status\fR
++\fI/var/lib/logrotate/status\fR
+ Default state file.
+ .TP 27
+ \fI/etc/logrotate.conf\fR
diff --git a/source/a/logrotate/slack-desc b/source/a/logrotate/slack-desc
new file mode 100644
index 00000000..2a1c76a5
--- /dev/null
+++ b/source/a/logrotate/slack-desc
@@ -0,0 +1,19 @@
+# HOW TO EDIT THIS FILE:
+# The "handy ruler" below makes it easier to edit a package description. Line
+# up the first '|' above the ':' following the base package name, and the '|' on
+# the right side marks the last column you can put a character in. You must make
+# exactly 11 lines for the formatting to be correct. It's also customary to
+# leave one space after the ':'.
+
+ |-----handy-ruler------------------------------------------------------|
+logrotate: logrotate (system log rotation tool)
+logrotate:
+logrotate: The logrotate utility is designed to simplify the administration
+logrotate: of log files on a system which generates a lot of log files.
+logrotate: Logrotate allows for the automatic rotation compression, removal
+logrotate: and mailing of log files. Logrotate can be set to handle a log
+logrotate: file daily, weekly, monthly or when the log file gets to a certain
+logrotate: size. Normally, logrotate runs as a daily cron job.
+logrotate:
+logrotate:
+logrotate:
diff --git a/source/a/lvm2/doinst.sh b/source/a/lvm2/doinst.sh
new file mode 100644
index 00000000..261294a9
--- /dev/null
+++ b/source/a/lvm2/doinst.sh
@@ -0,0 +1,13 @@
+#!/bin/sh
+config() {
+ NEW="$1"
+ OLD="`dirname $NEW`/`basename $NEW .new`"
+ # If there's no config file by that name, mv it over:
+ if [ ! -r $OLD ]; then
+ mv $NEW $OLD
+ elif [ "`cat $OLD | md5sum`" = "`cat $NEW | md5sum`" ]; then # toss the redundant copy
+ rm $NEW
+ fi
+ # Otherwise, we leave the .new copy for the admin to consider...
+}
+config etc/lvm/lvm.conf.new
diff --git a/source/a/lvm2/lvm2.SlackBuild b/source/a/lvm2/lvm2.SlackBuild
new file mode 100755
index 00000000..f0f630d8
--- /dev/null
+++ b/source/a/lvm2/lvm2.SlackBuild
@@ -0,0 +1,103 @@
+#!/bin/sh
+
+# Copyright 2008, 2009 Patrick J. Volkerding, Sebeka, Minnesota, USA
+# All rights reserved.
+#
+# Redistribution and use of this script, with or without modification, is
+# permitted provided that the following conditions are met:
+#
+# 1. Redistributions of this script must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# 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.
+
+
+VERSION=2.02.40
+ARCH=${ARCH:-x86_64}
+NUMJOBS=${NUMJOBS:-" -j7 "}
+BUILD=${BUILD:-1}
+
+CWD=$(pwd)
+TMP=${TMP:-/tmp}
+PKG=$TMP/package-lvm2
+
+if [ "$ARCH" = "i486" ]; then
+ SLKCFLAGS="-O2 -march=i486 -mtune=i686"
+ LIBDIRSUFFIX=""
+elif [ "$ARCH" = "s390" ]; then
+ SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
+elif [ "$ARCH" = "x86_64" ]; then
+ SLKCFLAGS="-O2 -fPIC"
+ LIBDIRSUFFIX="64"
+fi
+
+rm -rf $PKG
+mkdir -p $PKG
+cd $TMP
+rm -rf LVM2.$VERSION
+tar xvf $CWD/LVM2.$VERSION.tar.bz2
+cd LVM2.$VERSION || exit 1
+
+chown -R root:root .
+find . \
+ \( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \
+ -exec chmod 755 {} \; -o \
+ \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
+ -exec chmod 644 {} \;
+
+CFLAGS="$SLKCFLAGS" \
+./configure \
+ --disable-readline \
+ --enable-cmdlib \
+ --enable-dmeventd \
+ --libdir=/lib${LIBDIRSUFFIX} \
+ --mandir=/usr/man \
+ --enable-static_link \
+ --with-lvm1=internal
+
+make $NUMJOBS || make || exit 1
+make install DESTDIR=$PKG || exit 1
+mv $PKG/etc/lvm/lvm.conf $PKG/etc/lvm/lvm.conf.new
+
+( cd $PKG
+ find . | xargs file | grep "executable" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
+ find . | xargs file | grep "shared object" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
+)
+
+mkdir -p $PKG/usr/doc/LVM2.$VERSION
+cp -a \
+ COPYING* INSTALL README* VERSION WHATS_NEW \
+ $PKG/usr/doc/LVM2.$VERSION
+
+# Compress and if needed symlink the man pages:
+if [ -d $PKG/usr/man ]; then
+ ( cd $PKG/usr/man
+ for manpagedir in $(find . -type d -name "man*") ; do
+ ( cd $manpagedir
+ for eachpage in $( find . -type l -maxdepth 1) ; do
+ ln -s $( readlink $eachpage ).gz $eachpage.gz
+ rm $eachpage
+ done
+ gzip -9 *.?
+ )
+ done
+ )
+fi
+
+mkdir -p $PKG/install
+zcat $CWD/doinst.sh.gz > $PKG/install/doinst.sh
+cat $CWD/slack-desc > $PKG/install/slack-desc
+
+cd $PKG
+makepkg -l y -c n $TMP/lvm2-$VERSION-$ARCH-$BUILD.txz
+
diff --git a/source/a/lvm2/slack-desc b/source/a/lvm2/slack-desc
new file mode 100644
index 00000000..72dc87ae
--- /dev/null
+++ b/source/a/lvm2/slack-desc
@@ -0,0 +1,19 @@
+# HOW TO EDIT THIS FILE:
+# The "handy ruler" below makes it easier to edit a package description. Line
+# up the first '|' above the ':' following the base package name, and the '|'
+# on the right side marks the last column you can put a character in. You must
+# make exactly 11 lines for the formatting to be correct. It's also
+# customary to leave one space after the ':'.
+
+ |-----handy-ruler------------------------------------------------------|
+lvm2: lvm2 (Logical Volume Manager version 2)
+lvm2:
+lvm2: Heinz Mauelshagen's LVM (Logical Volume Manager) for Linux.
+lvm2: LVM adds an additional layer between the physical peripherals and the
+lvm2: low-level I/O interface to get a logical view of disks. This allows
+lvm2: the concatenation of several disks (so-called physical volumes or PVs)
+lvm2: to form a storage pool (so-called Volume Group or VG) with allocation
+lvm2: units called physical extents (called PE). With LVM, you can extend,
+lvm2: resize, or relocate storage dynamically.
+lvm2:
+lvm2:
diff --git a/source/a/mdadm/doinst.sh b/source/a/mdadm/doinst.sh
new file mode 100644
index 00000000..a6a71c73
--- /dev/null
+++ b/source/a/mdadm/doinst.sh
@@ -0,0 +1,12 @@
+config() {
+ NEW="$1"
+ OLD="`dirname $NEW`/`basename $NEW .new`"
+ # If there's no config file by that name, mv it over:
+ if [ ! -r $OLD ]; then
+ mv $NEW $OLD
+ elif [ "`cat $OLD | md5sum`" = "`cat $NEW | md5sum`" ]; then # toss the redundant copy
+ rm $NEW
+ fi
+ # Otherwise, we leave the .new copy for the admin to consider...
+}
+config etc/mdadm.conf.new
diff --git a/source/a/mdadm/mdadm-2.6.4.tar.bz2.sign b/source/a/mdadm/mdadm-2.6.4.tar.bz2.sign
new file mode 100644
index 00000000..36b61480
--- /dev/null
+++ b/source/a/mdadm/mdadm-2.6.4.tar.bz2.sign
@@ -0,0 +1,8 @@
+-----BEGIN PGP SIGNATURE-----
+Version: GnuPG v1.4.7 (GNU/Linux)
+Comment: See http://www.kernel.org/signature.html for info
+
+iD8DBQBHGC8JyGugalF9Dw4RArGIAJ9W38h+Mb/c62Ia6kn+TiDfd8ZxJQCfXEY8
+FdGihwdJnxz8cK3+VC4rmZs=
+=+YBi
+-----END PGP SIGNATURE-----
diff --git a/source/a/mdadm/mdadm.SlackBuild b/source/a/mdadm/mdadm.SlackBuild
new file mode 100755
index 00000000..45cc83b3
--- /dev/null
+++ b/source/a/mdadm/mdadm.SlackBuild
@@ -0,0 +1,73 @@
+#!/bin/sh
+
+# Copyright 2008, 2009 Patrick J. Volkerding, Sebeka, Minnesota, USA
+# All rights reserved.
+#
+# Redistribution and use of this script, with or without modification, is
+# permitted provided that the following conditions are met:
+#
+# 1. Redistributions of this script must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# 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.
+
+
+VERSION=2.6.4
+ARCH=${ARCH:-x86_64}
+BUILD=${BUILD:-1}
+
+CWD=$(pwd)
+TMP=${TMP:-/tmp}
+PKG=$TMP/package-mdadm
+
+rm -rf $PKG
+mkdir -p $TMP $PKG
+cd $TMP
+rm -rf mdadm-$VERSION
+tar xjvf $CWD/mdadm-$VERSION.tar.bz2
+cd mdadm-$VERSION
+
+# Build this static... it's small enough.
+zcat $CWD/mdadm.static.small.diff.gz | patch -p1 --verbose --backup --suffix=.orig || exit 1
+
+chown -R root:root .
+find . \
+ \( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \
+ -exec chmod 755 {} \; -o \
+ \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
+ -exec chmod 644 {} \;
+
+make clean || exit 1
+make || exit 1
+#make mdadm.static
+make install DESTDIR=$PKG || exit 1
+#cat mdadm.static > $PKG/sbin/mdadm
+mv $PKG/usr/share/man $PKG/usr
+rmdir $PKG/usr/share
+mkdir -p $PKG/etc
+cat mdadm.conf-example > $PKG/etc/mdadm.conf.new
+gzip -9 $PKG/usr/man/man?/*.?
+mkdir -p $PKG/usr/doc/mdadm-$VERSION
+cp -a \
+ ANNOUNCE-$VERSION COPYING* ChangeLog INSTALL TODO \
+ $PKG/usr/doc/mdadm-$VERSION
+( cd $PKG
+ find . | xargs file | grep "executable" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
+ find . | xargs file | grep "shared object" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
+)
+mkdir -p $PKG/install
+cat $CWD/slack-desc > $PKG/install/slack-desc
+zcat $CWD/doinst.sh.gz > $PKG/install/doinst.sh
+
+cd $PKG
+makepkg -l y -c n $TMP/mdadm-$VERSION-$ARCH-$BUILD.txz
+
diff --git a/source/a/mdadm/mdadm.static.small.diff b/source/a/mdadm/mdadm.static.small.diff
new file mode 100644
index 00000000..6be02fda
--- /dev/null
+++ b/source/a/mdadm/mdadm.static.small.diff
@@ -0,0 +1,20 @@
+--- ./Makefile.orig 2006-06-15 19:21:52.000000000 -0500
++++ ./Makefile 2006-06-25 00:28:24.000000000 -0500
+@@ -39,7 +39,7 @@
+
+ CC = $(CROSS_COMPILE)gcc
+ CXFLAGS = -ggdb
+-CWFLAGS = -Wall -Werror -Wstrict-prototypes
++CWFLAGS = -Wall -Werror -Wstrict-prototypes -Os
+
+ ifdef DEBIAN
+ CPPFLAGS= -DDEBIAN
+@@ -55,7 +55,7 @@
+ CFLAGS = $(CWFLAGS) $(CXFLAGS) -DSendmail=\""$(MAILCMD)"\" $(CONFFILEFLAGS)
+
+ # If you want a static binary, you might uncomment these
+-# LDFLAGS = -static
++LDFLAGS = -static
+ # STRIP = -s
+
+ INSTALL = /usr/bin/install
diff --git a/source/a/mdadm/slack-desc b/source/a/mdadm/slack-desc
new file mode 100644
index 00000000..984da7f3
--- /dev/null
+++ b/source/a/mdadm/slack-desc
@@ -0,0 +1,19 @@
+# HOW TO EDIT THIS FILE:
+# The "handy ruler" below makes it easier to edit a package description. Line
+# up the first '|' above the ':' following the base package name, and the '|' on
+# the right side marks the last column you can put a character in. You must make
+# exactly 11 lines for the formatting to be correct. It's also customary to
+# leave one space after the ':'.
+
+ |-----handy-ruler------------------------------------------------------|
+mdadm: mdadm (manage RAID arrays)
+mdadm:
+mdadm: mdadm is a utility program for creating, managing, and monitoring
+mdadm: Linux MD (Software RAID) devices. Unlike the older raidtools
+mdadm: package, mdadm is a single program (which should make it easier to
+mdadm: use).
+mdadm:
+mdadm: mdadm was written by Neil Brown. Development of mdadm is sponsored
+mdadm: by CSE@UNSW (The School of Computer Science and Engineering at
+mdadm: The University of New South Wales).
+mdadm:
diff --git a/source/a/minicom/config.sub-x86_64.diff b/source/a/minicom/config.sub-x86_64.diff
new file mode 100644
index 00000000..fa89bb3c
--- /dev/null
+++ b/source/a/minicom/config.sub-x86_64.diff
@@ -0,0 +1,20 @@
+--- ./config.sub.orig 1998-04-26 17:20:59.000000000 +0400
++++ ./config.sub 2007-08-30 09:48:46.000000000 +0400
+@@ -129,7 +129,7 @@
+ case $basic_machine in
+ # Recognize the basic CPU types without company name.
+ # Some are omitted here because they have special meanings below.
+- tahoe | i[345]86 | i860 | m68k | m68000 | m88k | ns32k | arm \
++ tahoe | i[345]86 | x86_64 | i860 | m68k | m68000 | m88k | ns32k | arm \
+ | arme[lb] | pyramid \
+ | tron | a29k | 580 | i960 | h8300 | hppa1.0 | hppa1.1 \
+ | alpha | we32k | ns16k | clipper | sparclite | i370 | sh \
+@@ -144,7 +144,7 @@
+ exit 1
+ ;;
+ # Recognize the basic CPU types with company name.
+- vax-* | tahoe-* | i[345]86-* | i860-* | m68k-* | m68000-* | m88k-* \
++ vax-* | tahoe-* | i[345]86-* | x86_64-* | i860-* | m68k-* | m68000-* | m88k-* \
+ | sparc-* | ns32k-* | fx80-* | arm-* | c[123]* \
+ | mips-* | pyramid-* | tron-* | a29k-* | romp-* | rs6000-* | power-* \
+ | none-* | 580-* | cray2-* | h8300-* | i960-* | xmp-* | ymp-* \
diff --git a/source/a/minicom/doinst.sh b/source/a/minicom/doinst.sh
new file mode 100644
index 00000000..f667412e
--- /dev/null
+++ b/source/a/minicom/doinst.sh
@@ -0,0 +1,15 @@
+#!/bin/sh
+config() {
+ NEW="$1"
+ OLD="`dirname $NEW`/`basename $NEW .new`"
+ # If there's no config file by that name, mv it over:
+ if [ ! -r $OLD ]; then
+ mv $NEW $OLD
+ elif [ "`cat $OLD | md5sum`" = "`cat $NEW | md5sum`" ]; then # toss the redundant copy
+ rm $NEW
+ fi
+ # Otherwise, we leave the .new copy for the admin to consider...
+}
+config etc/minicom.users.new
+config etc/minirc.dfl.new
+rm -f etc/minicom.users.new etc/minirc.dfl.new
diff --git a/source/a/minicom/lrzsz_0.12.21-4.diff b/source/a/minicom/lrzsz_0.12.21-4.diff
new file mode 100644
index 00000000..01c72157
--- /dev/null
+++ b/source/a/minicom/lrzsz_0.12.21-4.diff
@@ -0,0 +1,3019 @@
+--- lrzsz-0.12.21.orig/Makefile.in
++++ lrzsz-0.12.21/Makefile.in
+@@ -1,4 +1,4 @@
+-# Makefile.in generated automatically by automake 1.4a from Makefile.am
++# Makefile.in generated automatically by automake 1.4 from Makefile.am
+
+ # Copyright (C) 1994, 1995-8, 1999 Free Software Foundation, Inc.
+ # This Makefile.in is free software; the Free Software Foundation
+@@ -46,10 +46,9 @@
+ AUTOHEADER = @AUTOHEADER@
+
+ INSTALL = @INSTALL@
+-INSTALL_PROGRAM = @INSTALL_PROGRAM@
++INSTALL_PROGRAM = @INSTALL_PROGRAM@ $(AM_INSTALL_PROGRAM_FLAGS)
+ INSTALL_DATA = @INSTALL_DATA@
+ INSTALL_SCRIPT = @INSTALL_SCRIPT@
+-INSTALL_STRIP_FLAG =
+ transform = @program_transform_name@
+
+ NORMAL_INSTALL = :
+@@ -106,13 +105,13 @@
+
+ DIST_COMMON = README ./stamp-h.in ABOUT-NLS AUTHORS COPYING ChangeLog \
+ INSTALL Makefile.am Makefile.in NEWS Specfile.in THANKS TODO acconfig.h \
+-acinclude.m4 aclocal.m4 config.guess config.h.in configure configure.in \
+-install-sh missing mkinstalldirs systype.in
++acinclude.m4 aclocal.m4 config.guess config.h.in config.sub configure \
++configure.in install-sh missing mkinstalldirs systype.in
+
+
+ DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST)
+
+-TAR = gtar
++TAR = tar
+ GZIP_ENV = --best
+ all: all-redirect
+ .SUFFIXES:
+@@ -298,7 +297,7 @@
+ @for file in $(DISTFILES); do \
+ d=$(srcdir); \
+ if test -d $$d/$$file; then \
+- cp -pr $$d/$$file $(distdir)/$$file; \
++ cp -pr $$/$$file $(distdir)/$$file; \
+ else \
+ test -f $(distdir)/$$file \
+ || ln $$d/$$file $(distdir)/$$file 2> /dev/null \
+@@ -340,7 +339,7 @@
+ all-am: Makefile $(SCRIPTS) config.h
+ all-redirect: all-recursive-am
+ install-strip:
+- $(MAKE) $(AM_MAKEFLAGS) INSTALL_STRIP_FLAG=-s install
++ $(MAKE) $(AM_MAKEFLAGS) AM_INSTALL_PROGRAM_FLAGS=-s install
+ installdirs: installdirs-recursive
+ installdirs-am:
+
+--- lrzsz-0.12.21.orig/aclocal.m4
++++ lrzsz-0.12.21/aclocal.m4
+@@ -1,4 +1,4 @@
+-dnl aclocal.m4 generated automatically by aclocal 1.4a
++dnl aclocal.m4 generated automatically by aclocal 1.4
+
+ dnl Copyright (C) 1994, 1995-8, 1999 Free Software Foundation, Inc.
+ dnl This file is free software; the Free Software Foundation
+@@ -117,8 +117,6 @@
+
+ AC_DEFUN(AM_INIT_AUTOMAKE,
+ [AC_REQUIRE([AC_PROG_INSTALL])
+-dnl We require 2.13 because we rely on SHELL being computed by configure.
+-AC_PREREQ([2.13])
+ PACKAGE=[$1]
+ AC_SUBST(PACKAGE)
+ VERSION=[$2]
+--- lrzsz-0.12.21.orig/configure
++++ lrzsz-0.12.21/configure
+@@ -703,7 +703,6 @@
+ fi
+
+
+-
+ PACKAGE=lrzsz
+
+ VERSION=0.12.21rc
+@@ -723,7 +722,7 @@
+
+ missing_dir=`cd $ac_aux_dir && pwd`
+ echo $ac_n "checking for working aclocal""... $ac_c" 1>&6
+-echo "configure:727: checking for working aclocal" >&5
++echo "configure:726: checking for working aclocal" >&5
+ # Run test in a subshell; some versions of sh will print an error if
+ # an executable is not found, even if stderr is redirected.
+ # Redirect stdin to placate older versions of autoconf. Sigh.
+@@ -736,7 +735,7 @@
+ fi
+
+ echo $ac_n "checking for working autoconf""... $ac_c" 1>&6
+-echo "configure:740: checking for working autoconf" >&5
++echo "configure:739: checking for working autoconf" >&5
+ # Run test in a subshell; some versions of sh will print an error if
+ # an executable is not found, even if stderr is redirected.
+ # Redirect stdin to placate older versions of autoconf. Sigh.
+@@ -749,7 +748,7 @@
+ fi
+
+ echo $ac_n "checking for working automake""... $ac_c" 1>&6
+-echo "configure:753: checking for working automake" >&5
++echo "configure:752: checking for working automake" >&5
+ # Run test in a subshell; some versions of sh will print an error if
+ # an executable is not found, even if stderr is redirected.
+ # Redirect stdin to placate older versions of autoconf. Sigh.
+@@ -762,7 +761,7 @@
+ fi
+
+ echo $ac_n "checking for working autoheader""... $ac_c" 1>&6
+-echo "configure:766: checking for working autoheader" >&5
++echo "configure:765: checking for working autoheader" >&5
+ # Run test in a subshell; some versions of sh will print an error if
+ # an executable is not found, even if stderr is redirected.
+ # Redirect stdin to placate older versions of autoconf. Sigh.
+@@ -775,7 +774,7 @@
+ fi
+
+ echo $ac_n "checking for working makeinfo""... $ac_c" 1>&6
+-echo "configure:779: checking for working makeinfo" >&5
++echo "configure:778: checking for working makeinfo" >&5
+ # Run test in a subshell; some versions of sh will print an error if
+ # an executable is not found, even if stderr is redirected.
+ # Redirect stdin to placate older versions of autoconf. Sigh.
+@@ -926,7 +925,7 @@
+ # Extract the first word of "gcc", so it can be a program name with args.
+ set dummy gcc; ac_word=$2
+ echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
+-echo "configure:930: checking for $ac_word" >&5
++echo "configure:929: checking for $ac_word" >&5
+ if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+ else
+@@ -956,7 +955,7 @@
+ # Extract the first word of "cc", so it can be a program name with args.
+ set dummy cc; ac_word=$2
+ echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
+-echo "configure:960: checking for $ac_word" >&5
++echo "configure:959: checking for $ac_word" >&5
+ if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+ else
+@@ -1007,7 +1006,7 @@
+ # Extract the first word of "cl", so it can be a program name with args.
+ set dummy cl; ac_word=$2
+ echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
+-echo "configure:1011: checking for $ac_word" >&5
++echo "configure:1010: checking for $ac_word" >&5
+ if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+ else
+@@ -1039,7 +1038,7 @@
+ fi
+
+ echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works""... $ac_c" 1>&6
+-echo "configure:1043: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5
++echo "configure:1042: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5
+
+ ac_ext=c
+ # CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options.
+@@ -1050,12 +1049,12 @@
+
+ cat > conftest.$ac_ext << EOF
+
+-#line 1054 "configure"
++#line 1053 "configure"
+ #include "confdefs.h"
+
+ main(){return(0);}
+ EOF
+-if { (eval echo configure:1059: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
++if { (eval echo configure:1058: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+ ac_cv_prog_cc_works=yes
+ # If we can't run a trivial program, we are probably using a cross compiler.
+ if (./conftest; exit) 2>/dev/null; then
+@@ -1081,12 +1080,12 @@
+ { echo "configure: error: installation or configuration problem: C compiler cannot create executables." 1>&2; exit 1; }
+ fi
+ echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler""... $ac_c" 1>&6
+-echo "configure:1085: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5
++echo "configure:1084: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5
+ echo "$ac_t""$ac_cv_prog_cc_cross" 1>&6
+ cross_compiling=$ac_cv_prog_cc_cross
+
+ echo $ac_n "checking whether we are using GNU C""... $ac_c" 1>&6
+-echo "configure:1090: checking whether we are using GNU C" >&5
++echo "configure:1089: checking whether we are using GNU C" >&5
+ if eval "test \"`echo '$''{'ac_cv_prog_gcc'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+ else
+@@ -1095,7 +1094,7 @@
+ yes;
+ #endif
+ EOF
+-if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:1099: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then
++if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:1098: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then
+ ac_cv_prog_gcc=yes
+ else
+ ac_cv_prog_gcc=no
+@@ -1114,7 +1113,7 @@
+ ac_save_CFLAGS="$CFLAGS"
+ CFLAGS=
+ echo $ac_n "checking whether ${CC-cc} accepts -g""... $ac_c" 1>&6
+-echo "configure:1118: checking whether ${CC-cc} accepts -g" >&5
++echo "configure:1117: checking whether ${CC-cc} accepts -g" >&5
+ if eval "test \"`echo '$''{'ac_cv_prog_cc_g'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+ else
+@@ -1146,7 +1145,7 @@
+ fi
+
+ echo $ac_n "checking how to run the C preprocessor""... $ac_c" 1>&6
+-echo "configure:1150: checking how to run the C preprocessor" >&5
++echo "configure:1149: checking how to run the C preprocessor" >&5
+ # On Suns, sometimes $CPP names a directory.
+ if test -n "$CPP" && test -d "$CPP"; then
+ CPP=
+@@ -1161,13 +1160,13 @@
+ # On the NeXT, cc -E runs the code through the compiler's parser,
+ # not just through cpp.
+ cat > conftest.$ac_ext <<EOF
+-#line 1165 "configure"
++#line 1164 "configure"
+ #include "confdefs.h"
+ #include <assert.h>
+ Syntax Error
+ EOF
+ ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
+-{ (eval echo configure:1171: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
++{ (eval echo configure:1170: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+ ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
+ if test -z "$ac_err"; then
+ :
+@@ -1178,13 +1177,13 @@
+ rm -rf conftest*
+ CPP="${CC-cc} -E -traditional-cpp"
+ cat > conftest.$ac_ext <<EOF
+-#line 1182 "configure"
++#line 1181 "configure"
+ #include "confdefs.h"
+ #include <assert.h>
+ Syntax Error
+ EOF
+ ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
+-{ (eval echo configure:1188: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
++{ (eval echo configure:1187: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+ ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
+ if test -z "$ac_err"; then
+ :
+@@ -1195,13 +1194,13 @@
+ rm -rf conftest*
+ CPP="${CC-cc} -nologo -E"
+ cat > conftest.$ac_ext <<EOF
+-#line 1199 "configure"
++#line 1198 "configure"
+ #include "confdefs.h"
+ #include <assert.h>
+ Syntax Error
+ EOF
+ ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
+-{ (eval echo configure:1205: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
++{ (eval echo configure:1204: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+ ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
+ if test -z "$ac_err"; then
+ :
+@@ -1235,13 +1234,13 @@
+ fi
+ if test $ac_cv_prog_gcc = yes; then
+ echo $ac_n "checking whether ${CC-cc} needs -traditional""... $ac_c" 1>&6
+-echo "configure:1239: checking whether ${CC-cc} needs -traditional" >&5
++echo "configure:1238: checking whether ${CC-cc} needs -traditional" >&5
+ if eval "test \"`echo '$''{'ac_cv_prog_gcc_traditional'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+ else
+ ac_pattern="Autoconf.*'x'"
+ cat > conftest.$ac_ext <<EOF
+-#line 1245 "configure"
++#line 1244 "configure"
+ #include "confdefs.h"
+ #include <sgtty.h>
+ Autoconf TIOCGETP
+@@ -1259,7 +1258,7 @@
+
+ if test $ac_cv_prog_gcc_traditional = no; then
+ cat > conftest.$ac_ext <<EOF
+-#line 1263 "configure"
++#line 1262 "configure"
+ #include "confdefs.h"
+ #include <termio.h>
+ Autoconf TCGETA
+@@ -1283,7 +1282,7 @@
+ # Extract the first word of "ranlib", so it can be a program name with args.
+ set dummy ranlib; ac_word=$2
+ echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
+-echo "configure:1287: checking for $ac_word" >&5
++echo "configure:1286: checking for $ac_word" >&5
+ if eval "test \"`echo '$''{'ac_cv_prog_RANLIB'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+ else
+@@ -1311,7 +1310,7 @@
+ fi
+
+ echo $ac_n "checking for POSIXized ISC""... $ac_c" 1>&6
+-echo "configure:1315: checking for POSIXized ISC" >&5
++echo "configure:1314: checking for POSIXized ISC" >&5
+ if test -d /etc/conf/kconfig.d &&
+ grep _POSIX_VERSION /usr/include/sys/unistd.h >/dev/null 2>&1
+ then
+@@ -1332,9 +1331,9 @@
+ fi
+
+ echo $ac_n "checking for AIX""... $ac_c" 1>&6
+-echo "configure:1336: checking for AIX" >&5
++echo "configure:1335: checking for AIX" >&5
+ cat > conftest.$ac_ext <<EOF
+-#line 1338 "configure"
++#line 1337 "configure"
+ #include "confdefs.h"
+ #ifdef _AIX
+ yes
+@@ -1357,17 +1356,17 @@
+
+ ac_safe=`echo "minix/config.h" | sed 'y%./+-%__p_%'`
+ echo $ac_n "checking for minix/config.h""... $ac_c" 1>&6
+-echo "configure:1361: checking for minix/config.h" >&5
++echo "configure:1360: checking for minix/config.h" >&5
+ if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+ else
+ cat > conftest.$ac_ext <<EOF
+-#line 1366 "configure"
++#line 1365 "configure"
+ #include "confdefs.h"
+ #include <minix/config.h>
+ EOF
+ ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
+-{ (eval echo configure:1371: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
++{ (eval echo configure:1370: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+ ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
+ if test -z "$ac_err"; then
+ rm -rf conftest*
+@@ -1408,7 +1407,7 @@
+
+
+ echo $ac_n "checking for ${CC-cc} option to accept ANSI C""... $ac_c" 1>&6
+-echo "configure:1412: checking for ${CC-cc} option to accept ANSI C" >&5
++echo "configure:1411: checking for ${CC-cc} option to accept ANSI C" >&5
+ if eval "test \"`echo '$''{'am_cv_prog_cc_stdc'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+ else
+@@ -1424,7 +1423,7 @@
+ do
+ CC="$ac_save_CC $ac_arg"
+ cat > conftest.$ac_ext <<EOF
+-#line 1428 "configure"
++#line 1427 "configure"
+ #include "confdefs.h"
+ #include <stdarg.h>
+ #include <stdio.h>
+@@ -1461,7 +1460,7 @@
+
+ ; return 0; }
+ EOF
+-if { (eval echo configure:1465: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
++if { (eval echo configure:1464: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+ rm -rf conftest*
+ am_cv_prog_cc_stdc="$ac_arg"; break
+ else
+@@ -1487,7 +1486,7 @@
+
+
+ echo $ac_n "checking for function prototypes""... $ac_c" 1>&6
+-echo "configure:1491: checking for function prototypes" >&5
++echo "configure:1490: checking for function prototypes" >&5
+ if test "$am_cv_prog_cc_stdc" != no; then
+ echo "$ac_t""yes" 1>&6
+ cat >> confdefs.h <<\EOF
+@@ -1500,12 +1499,12 @@
+ U=_ ANSI2KNR=./ansi2knr
+ # Ensure some checks needed by ansi2knr itself.
+ echo $ac_n "checking for ANSI C header files""... $ac_c" 1>&6
+-echo "configure:1504: checking for ANSI C header files" >&5
++echo "configure:1503: checking for ANSI C header files" >&5
+ if eval "test \"`echo '$''{'ac_cv_header_stdc'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+ else
+ cat > conftest.$ac_ext <<EOF
+-#line 1509 "configure"
++#line 1508 "configure"
+ #include "confdefs.h"
+ #include <stdlib.h>
+ #include <stdarg.h>
+@@ -1513,7 +1512,7 @@
+ #include <float.h>
+ EOF
+ ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
+-{ (eval echo configure:1517: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
++{ (eval echo configure:1516: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+ ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
+ if test -z "$ac_err"; then
+ rm -rf conftest*
+@@ -1530,7 +1529,7 @@
+ if test $ac_cv_header_stdc = yes; then
+ # SunOS 4.x string.h does not declare mem*, contrary to ANSI.
+ cat > conftest.$ac_ext <<EOF
+-#line 1534 "configure"
++#line 1533 "configure"
+ #include "confdefs.h"
+ #include <string.h>
+ EOF
+@@ -1548,7 +1547,7 @@
+ if test $ac_cv_header_stdc = yes; then
+ # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI.
+ cat > conftest.$ac_ext <<EOF
+-#line 1552 "configure"
++#line 1551 "configure"
+ #include "confdefs.h"
+ #include <stdlib.h>
+ EOF
+@@ -1569,7 +1568,7 @@
+ :
+ else
+ cat > conftest.$ac_ext <<EOF
+-#line 1573 "configure"
++#line 1572 "configure"
+ #include "confdefs.h"
+ #include <ctype.h>
+ #define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
+@@ -1580,7 +1579,7 @@
+ exit (0); }
+
+ EOF
+-if { (eval echo configure:1584: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
++if { (eval echo configure:1583: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+ then
+ :
+ else
+@@ -1607,17 +1606,17 @@
+ do
+ ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
+ echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
+-echo "configure:1611: checking for $ac_hdr" >&5
++echo "configure:1610: checking for $ac_hdr" >&5
+ if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+ else
+ cat > conftest.$ac_ext <<EOF
+-#line 1616 "configure"
++#line 1615 "configure"
+ #include "confdefs.h"
+ #include <$ac_hdr>
+ EOF
+ ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
+-{ (eval echo configure:1621: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
++{ (eval echo configure:1620: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+ ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
+ if test -z "$ac_err"; then
+ rm -rf conftest*
+@@ -1646,12 +1645,12 @@
+ fi
+
+ echo $ac_n "checking for working const""... $ac_c" 1>&6
+-echo "configure:1650: checking for working const" >&5
++echo "configure:1649: checking for working const" >&5
+ if eval "test \"`echo '$''{'ac_cv_c_const'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+ else
+ cat > conftest.$ac_ext <<EOF
+-#line 1655 "configure"
++#line 1654 "configure"
+ #include "confdefs.h"
+
+ int main() {
+@@ -1700,7 +1699,7 @@
+
+ ; return 0; }
+ EOF
+-if { (eval echo configure:1704: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
++if { (eval echo configure:1703: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+ rm -rf conftest*
+ ac_cv_c_const=yes
+ else
+@@ -1721,21 +1720,21 @@
+ fi
+
+ echo $ac_n "checking for inline""... $ac_c" 1>&6
+-echo "configure:1725: checking for inline" >&5
++echo "configure:1724: checking for inline" >&5
+ if eval "test \"`echo '$''{'ac_cv_c_inline'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+ else
+ ac_cv_c_inline=no
+ for ac_kw in inline __inline__ __inline; do
+ cat > conftest.$ac_ext <<EOF
+-#line 1732 "configure"
++#line 1731 "configure"
+ #include "confdefs.h"
+
+ int main() {
+ } $ac_kw foo() {
+ ; return 0; }
+ EOF
+-if { (eval echo configure:1739: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
++if { (eval echo configure:1738: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+ rm -rf conftest*
+ ac_cv_c_inline=$ac_kw; break
+ else
+@@ -1786,7 +1785,7 @@
+ esac
+
+ echo $ac_n "checking for syslog in -lsocket""... $ac_c" 1>&6
+-echo "configure:1790: checking for syslog in -lsocket" >&5
++echo "configure:1789: checking for syslog in -lsocket" >&5
+ ac_lib_var=`echo socket'_'syslog | sed 'y%./+-%__p_%'`
+ if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+@@ -1794,7 +1793,7 @@
+ ac_save_LIBS="$LIBS"
+ LIBS="-lsocket $LIBS"
+ cat > conftest.$ac_ext <<EOF
+-#line 1798 "configure"
++#line 1797 "configure"
+ #include "confdefs.h"
+ /* Override any gcc2 internal prototype to avoid an error. */
+ /* We use char because int might match the return type of a gcc2
+@@ -1805,7 +1804,7 @@
+ syslog()
+ ; return 0; }
+ EOF
+-if { (eval echo configure:1809: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
++if { (eval echo configure:1808: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+ rm -rf conftest*
+ eval "ac_cv_lib_$ac_lib_var=yes"
+ else
+@@ -1833,7 +1832,7 @@
+ fi
+
+ echo $ac_n "checking for syslog in -lbe""... $ac_c" 1>&6
+-echo "configure:1837: checking for syslog in -lbe" >&5
++echo "configure:1836: checking for syslog in -lbe" >&5
+ ac_lib_var=`echo be'_'syslog | sed 'y%./+-%__p_%'`
+ if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+@@ -1841,7 +1840,7 @@
+ ac_save_LIBS="$LIBS"
+ LIBS="-lbe $LIBS"
+ cat > conftest.$ac_ext <<EOF
+-#line 1845 "configure"
++#line 1844 "configure"
+ #include "confdefs.h"
+ /* Override any gcc2 internal prototype to avoid an error. */
+ /* We use char because int might match the return type of a gcc2
+@@ -1852,7 +1851,7 @@
+ syslog()
+ ; return 0; }
+ EOF
+-if { (eval echo configure:1856: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
++if { (eval echo configure:1855: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+ rm -rf conftest*
+ eval "ac_cv_lib_$ac_lib_var=yes"
+ else
+@@ -1880,7 +1879,7 @@
+ fi
+
+ echo $ac_n "checking for gethostbyname in -lnsl""... $ac_c" 1>&6
+-echo "configure:1884: checking for gethostbyname in -lnsl" >&5
++echo "configure:1883: checking for gethostbyname in -lnsl" >&5
+ ac_lib_var=`echo nsl'_'gethostbyname | sed 'y%./+-%__p_%'`
+ if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+@@ -1888,7 +1887,7 @@
+ ac_save_LIBS="$LIBS"
+ LIBS="-lnsl $LIBS"
+ cat > conftest.$ac_ext <<EOF
+-#line 1892 "configure"
++#line 1891 "configure"
+ #include "confdefs.h"
+ /* Override any gcc2 internal prototype to avoid an error. */
+ /* We use char because int might match the return type of a gcc2
+@@ -1899,7 +1898,7 @@
+ gethostbyname()
+ ; return 0; }
+ EOF
+-if { (eval echo configure:1903: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
++if { (eval echo configure:1902: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+ rm -rf conftest*
+ eval "ac_cv_lib_$ac_lib_var=yes"
+ else
+@@ -1928,12 +1927,12 @@
+
+
+ echo $ac_n "checking for ANSI C header files""... $ac_c" 1>&6
+-echo "configure:1932: checking for ANSI C header files" >&5
++echo "configure:1931: checking for ANSI C header files" >&5
+ if eval "test \"`echo '$''{'ac_cv_header_stdc'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+ else
+ cat > conftest.$ac_ext <<EOF
+-#line 1937 "configure"
++#line 1936 "configure"
+ #include "confdefs.h"
+ #include <stdlib.h>
+ #include <stdarg.h>
+@@ -1941,7 +1940,7 @@
+ #include <float.h>
+ EOF
+ ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
+-{ (eval echo configure:1945: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
++{ (eval echo configure:1944: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+ ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
+ if test -z "$ac_err"; then
+ rm -rf conftest*
+@@ -1958,7 +1957,7 @@
+ if test $ac_cv_header_stdc = yes; then
+ # SunOS 4.x string.h does not declare mem*, contrary to ANSI.
+ cat > conftest.$ac_ext <<EOF
+-#line 1962 "configure"
++#line 1961 "configure"
+ #include "confdefs.h"
+ #include <string.h>
+ EOF
+@@ -1976,7 +1975,7 @@
+ if test $ac_cv_header_stdc = yes; then
+ # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI.
+ cat > conftest.$ac_ext <<EOF
+-#line 1980 "configure"
++#line 1979 "configure"
+ #include "confdefs.h"
+ #include <stdlib.h>
+ EOF
+@@ -1997,7 +1996,7 @@
+ :
+ else
+ cat > conftest.$ac_ext <<EOF
+-#line 2001 "configure"
++#line 2000 "configure"
+ #include "confdefs.h"
+ #include <ctype.h>
+ #define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
+@@ -2008,7 +2007,7 @@
+ exit (0); }
+
+ EOF
+-if { (eval echo configure:2012: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
++if { (eval echo configure:2011: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+ then
+ :
+ else
+@@ -2035,17 +2034,17 @@
+ do
+ ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
+ echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
+-echo "configure:2039: checking for $ac_hdr" >&5
++echo "configure:2038: checking for $ac_hdr" >&5
+ if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+ else
+ cat > conftest.$ac_ext <<EOF
+-#line 2044 "configure"
++#line 2043 "configure"
+ #include "confdefs.h"
+ #include <$ac_hdr>
+ EOF
+ ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
+-{ (eval echo configure:2049: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
++{ (eval echo configure:2048: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+ ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
+ if test -z "$ac_err"; then
+ rm -rf conftest*
+@@ -2076,17 +2075,17 @@
+ do
+ ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
+ echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
+-echo "configure:2080: checking for $ac_hdr" >&5
++echo "configure:2079: checking for $ac_hdr" >&5
+ if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+ else
+ cat > conftest.$ac_ext <<EOF
+-#line 2085 "configure"
++#line 2084 "configure"
+ #include "confdefs.h"
+ #include <$ac_hdr>
+ EOF
+ ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
+-{ (eval echo configure:2090: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
++{ (eval echo configure:2089: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+ ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
+ if test -z "$ac_err"; then
+ rm -rf conftest*
+@@ -2116,17 +2115,17 @@
+ do
+ ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
+ echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
+-echo "configure:2120: checking for $ac_hdr" >&5
++echo "configure:2119: checking for $ac_hdr" >&5
+ if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+ else
+ cat > conftest.$ac_ext <<EOF
+-#line 2125 "configure"
++#line 2124 "configure"
+ #include "confdefs.h"
+ #include <$ac_hdr>
+ EOF
+ ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
+-{ (eval echo configure:2130: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
++{ (eval echo configure:2129: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+ ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
+ if test -z "$ac_err"; then
+ rm -rf conftest*
+@@ -2156,17 +2155,17 @@
+ do
+ ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
+ echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
+-echo "configure:2160: checking for $ac_hdr" >&5
++echo "configure:2159: checking for $ac_hdr" >&5
+ if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+ else
+ cat > conftest.$ac_ext <<EOF
+-#line 2165 "configure"
++#line 2164 "configure"
+ #include "confdefs.h"
+ #include <$ac_hdr>
+ EOF
+ ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
+-{ (eval echo configure:2170: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
++{ (eval echo configure:2169: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+ ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
+ if test -z "$ac_err"; then
+ rm -rf conftest*
+@@ -2196,17 +2195,17 @@
+ do
+ ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
+ echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
+-echo "configure:2200: checking for $ac_hdr" >&5
++echo "configure:2199: checking for $ac_hdr" >&5
+ if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+ else
+ cat > conftest.$ac_ext <<EOF
+-#line 2205 "configure"
++#line 2204 "configure"
+ #include "confdefs.h"
+ #include <$ac_hdr>
+ EOF
+ ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
+-{ (eval echo configure:2210: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
++{ (eval echo configure:2209: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+ ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
+ if test -z "$ac_err"; then
+ rm -rf conftest*
+@@ -2234,12 +2233,12 @@
+
+
+ echo $ac_n "checking for size_t""... $ac_c" 1>&6
+-echo "configure:2238: checking for size_t" >&5
++echo "configure:2237: checking for size_t" >&5
+ if eval "test \"`echo '$''{'ac_cv_type_size_t'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+ else
+ cat > conftest.$ac_ext <<EOF
+-#line 2243 "configure"
++#line 2242 "configure"
+ #include "confdefs.h"
+ #include <sys/types.h>
+ #if STDC_HEADERS
+@@ -2267,12 +2266,12 @@
+ fi
+
+ echo $ac_n "checking for mode_t""... $ac_c" 1>&6
+-echo "configure:2271: checking for mode_t" >&5
++echo "configure:2270: checking for mode_t" >&5
+ if eval "test \"`echo '$''{'ac_cv_type_mode_t'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+ else
+ cat > conftest.$ac_ext <<EOF
+-#line 2276 "configure"
++#line 2275 "configure"
+ #include "confdefs.h"
+ #include <sys/types.h>
+ #if STDC_HEADERS
+@@ -2300,12 +2299,12 @@
+ fi
+
+ echo $ac_n "checking for off_t""... $ac_c" 1>&6
+-echo "configure:2304: checking for off_t" >&5
++echo "configure:2303: checking for off_t" >&5
+ if eval "test \"`echo '$''{'ac_cv_type_off_t'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+ else
+ cat > conftest.$ac_ext <<EOF
+-#line 2309 "configure"
++#line 2308 "configure"
+ #include "confdefs.h"
+ #include <sys/types.h>
+ #if STDC_HEADERS
+@@ -2334,12 +2333,12 @@
+
+
+ echo $ac_n "checking for speed_t""... $ac_c" 1>&6
+-echo "configure:2338: checking for speed_t" >&5
++echo "configure:2337: checking for speed_t" >&5
+ if eval "test \"`echo '$''{'ac_cv_type_speed_t'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+ else
+ cat > conftest.$ac_ext <<EOF
+-#line 2343 "configure"
++#line 2342 "configure"
+ #include "confdefs.h"
+ #include <sys/types.h>
+ #if STDC_HEADERS
+@@ -2389,12 +2388,12 @@
+ fi
+
+ echo $ac_n "checking for st_rdev in struct stat""... $ac_c" 1>&6
+-echo "configure:2393: checking for st_rdev in struct stat" >&5
++echo "configure:2392: checking for st_rdev in struct stat" >&5
+ if eval "test \"`echo '$''{'ac_cv_struct_st_rdev'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+ else
+ cat > conftest.$ac_ext <<EOF
+-#line 2398 "configure"
++#line 2397 "configure"
+ #include "confdefs.h"
+ #include <sys/types.h>
+ #include <sys/stat.h>
+@@ -2402,7 +2401,7 @@
+ struct stat s; s.st_rdev;
+ ; return 0; }
+ EOF
+-if { (eval echo configure:2406: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
++if { (eval echo configure:2405: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+ rm -rf conftest*
+ ac_cv_struct_st_rdev=yes
+ else
+@@ -2423,12 +2422,12 @@
+ fi
+
+ echo $ac_n "checking whether time.h and sys/time.h may both be included""... $ac_c" 1>&6
+-echo "configure:2427: checking whether time.h and sys/time.h may both be included" >&5
++echo "configure:2426: checking whether time.h and sys/time.h may both be included" >&5
+ if eval "test \"`echo '$''{'ac_cv_header_time'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+ else
+ cat > conftest.$ac_ext <<EOF
+-#line 2432 "configure"
++#line 2431 "configure"
+ #include "confdefs.h"
+ #include <sys/types.h>
+ #include <sys/time.h>
+@@ -2437,7 +2436,7 @@
+ struct tm *tp;
+ ; return 0; }
+ EOF
+-if { (eval echo configure:2441: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
++if { (eval echo configure:2440: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+ rm -rf conftest*
+ ac_cv_header_time=yes
+ else
+@@ -2459,12 +2458,12 @@
+
+
+ echo $ac_n "checking for socklen_t""... $ac_c" 1>&6
+-echo "configure:2463: checking for socklen_t" >&5
++echo "configure:2462: checking for socklen_t" >&5
+ if eval "test \"`echo '$''{'ac_cv_type_socklen_t'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+ else
+ cat > conftest.$ac_ext <<EOF
+-#line 2468 "configure"
++#line 2467 "configure"
+ #include "confdefs.h"
+
+ #include "confdefs.h"
+@@ -2480,7 +2479,7 @@
+
+ ; return 0; }
+ EOF
+-if { (eval echo configure:2484: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
++if { (eval echo configure:2483: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+ rm -rf conftest*
+ ac_cv_type_socklen_t=yes
+ else
+@@ -2505,12 +2504,12 @@
+ fi
+
+ echo $ac_n "checking whether sys/time.h and sys/select.h may both be included""... $ac_c" 1>&6
+-echo "configure:2509: checking whether sys/time.h and sys/select.h may both be included" >&5
++echo "configure:2508: checking whether sys/time.h and sys/select.h may both be included" >&5
+ if eval "test \"`echo '$''{'lrzsz_cv_header_sys_select'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+ else
+ cat > conftest.$ac_ext <<EOF
+-#line 2514 "configure"
++#line 2513 "configure"
+ #include "confdefs.h"
+ #include <sys/types.h>
+ #include <sys/time.h>
+@@ -2519,7 +2518,7 @@
+ struct tm *tp;
+ ; return 0; }
+ EOF
+-if { (eval echo configure:2523: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
++if { (eval echo configure:2522: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+ rm -rf conftest*
+ lrzsz_cv_header_sys_select=yes
+ else
+@@ -2540,12 +2539,12 @@
+ fi
+
+ echo $ac_n "checking whether struct tm is in sys/time.h or time.h""... $ac_c" 1>&6
+-echo "configure:2544: checking whether struct tm is in sys/time.h or time.h" >&5
++echo "configure:2543: checking whether struct tm is in sys/time.h or time.h" >&5
+ if eval "test \"`echo '$''{'ac_cv_struct_tm'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+ else
+ cat > conftest.$ac_ext <<EOF
+-#line 2549 "configure"
++#line 2548 "configure"
+ #include "confdefs.h"
+ #include <sys/types.h>
+ #include <time.h>
+@@ -2553,7 +2552,7 @@
+ struct tm *tp; tp->tm_sec;
+ ; return 0; }
+ EOF
+-if { (eval echo configure:2557: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
++if { (eval echo configure:2556: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+ rm -rf conftest*
+ ac_cv_struct_tm=time.h
+ else
+@@ -2575,19 +2574,19 @@
+
+
+ echo $ac_n "checking for errno declaration""... $ac_c" 1>&6
+-echo "configure:2579: checking for errno declaration" >&5
++echo "configure:2578: checking for errno declaration" >&5
+ if eval "test \"`echo '$''{'lrzsz_cv_decl_errno'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+ else
+ cat > conftest.$ac_ext <<EOF
+-#line 2584 "configure"
++#line 2583 "configure"
+ #include "confdefs.h"
+ #include <errno.h>
+ int main() {
+ int i = errno; errno = 1;
+ ; return 0; }
+ EOF
+-if { (eval echo configure:2591: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
++if { (eval echo configure:2590: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+ rm -rf conftest*
+ lrzsz_cv_decl_errno=yes
+ else
+@@ -2610,7 +2609,7 @@
+
+ if test $cross_compiling = no ; then
+ echo $ac_n "checking whether setvbuf arguments are reversed""... $ac_c" 1>&6
+-echo "configure:2614: checking whether setvbuf arguments are reversed" >&5
++echo "configure:2613: checking whether setvbuf arguments are reversed" >&5
+ if eval "test \"`echo '$''{'ac_cv_func_setvbuf_reversed'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+ else
+@@ -2618,7 +2617,7 @@
+ { echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; }
+ else
+ cat > conftest.$ac_ext <<EOF
+-#line 2622 "configure"
++#line 2621 "configure"
+ #include "confdefs.h"
+ #include <stdio.h>
+ /* If setvbuf has the reversed format, exit 0. */
+@@ -2632,7 +2631,7 @@
+ exit(0); /* Non-reversed systems segv here. */
+ }
+ EOF
+-if { (eval echo configure:2636: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
++if { (eval echo configure:2635: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+ then
+ ac_cv_func_setvbuf_reversed=yes
+ else
+@@ -2657,12 +2656,12 @@
+
+ fi
+ echo $ac_n "checking return type of signal handlers""... $ac_c" 1>&6
+-echo "configure:2661: checking return type of signal handlers" >&5
++echo "configure:2660: checking return type of signal handlers" >&5
+ if eval "test \"`echo '$''{'ac_cv_type_signal'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+ else
+ cat > conftest.$ac_ext <<EOF
+-#line 2666 "configure"
++#line 2665 "configure"
+ #include "confdefs.h"
+ #include <sys/types.h>
+ #include <signal.h>
+@@ -2679,7 +2678,7 @@
+ int i;
+ ; return 0; }
+ EOF
+-if { (eval echo configure:2683: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
++if { (eval echo configure:2682: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+ rm -rf conftest*
+ ac_cv_type_signal=void
+ else
+@@ -2701,17 +2700,17 @@
+ do
+ ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
+ echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
+-echo "configure:2705: checking for $ac_hdr" >&5
++echo "configure:2704: checking for $ac_hdr" >&5
+ if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+ else
+ cat > conftest.$ac_ext <<EOF
+-#line 2710 "configure"
++#line 2709 "configure"
+ #include "confdefs.h"
+ #include <$ac_hdr>
+ EOF
+ ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
+-{ (eval echo configure:2715: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
++{ (eval echo configure:2714: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+ ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
+ if test -z "$ac_err"; then
+ rm -rf conftest*
+@@ -2740,12 +2739,12 @@
+ for ac_func in getpagesize
+ do
+ echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
+-echo "configure:2744: checking for $ac_func" >&5
++echo "configure:2743: checking for $ac_func" >&5
+ if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+ else
+ cat > conftest.$ac_ext <<EOF
+-#line 2749 "configure"
++#line 2748 "configure"
+ #include "confdefs.h"
+ /* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char $ac_func(); below. */
+@@ -2768,7 +2767,7 @@
+
+ ; return 0; }
+ EOF
+-if { (eval echo configure:2772: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
++if { (eval echo configure:2771: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+ rm -rf conftest*
+ eval "ac_cv_func_$ac_func=yes"
+ else
+@@ -2793,7 +2792,7 @@
+ done
+
+ echo $ac_n "checking for working mmap""... $ac_c" 1>&6
+-echo "configure:2797: checking for working mmap" >&5
++echo "configure:2796: checking for working mmap" >&5
+ if eval "test \"`echo '$''{'ac_cv_func_mmap_fixed_mapped'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+ else
+@@ -2801,7 +2800,7 @@
+ ac_cv_func_mmap_fixed_mapped=no
+ else
+ cat > conftest.$ac_ext <<EOF
+-#line 2805 "configure"
++#line 2804 "configure"
+ #include "confdefs.h"
+
+ /* Thanks to Mike Haertel and Jim Avera for this test.
+@@ -2941,7 +2940,7 @@
+ }
+
+ EOF
+-if { (eval echo configure:2945: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
++if { (eval echo configure:2944: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+ then
+ ac_cv_func_mmap_fixed_mapped=yes
+ else
+@@ -2966,19 +2965,19 @@
+ # The Ultrix 4.2 mips builtin alloca declared by alloca.h only works
+ # for constant arguments. Useless!
+ echo $ac_n "checking for working alloca.h""... $ac_c" 1>&6
+-echo "configure:2970: checking for working alloca.h" >&5
++echo "configure:2969: checking for working alloca.h" >&5
+ if eval "test \"`echo '$''{'ac_cv_header_alloca_h'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+ else
+ cat > conftest.$ac_ext <<EOF
+-#line 2975 "configure"
++#line 2974 "configure"
+ #include "confdefs.h"
+ #include <alloca.h>
+ int main() {
+ char *p = alloca(2 * sizeof(int));
+ ; return 0; }
+ EOF
+-if { (eval echo configure:2982: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
++if { (eval echo configure:2981: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+ rm -rf conftest*
+ ac_cv_header_alloca_h=yes
+ else
+@@ -2999,12 +2998,12 @@
+ fi
+
+ echo $ac_n "checking for alloca""... $ac_c" 1>&6
+-echo "configure:3003: checking for alloca" >&5
++echo "configure:3002: checking for alloca" >&5
+ if eval "test \"`echo '$''{'ac_cv_func_alloca_works'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+ else
+ cat > conftest.$ac_ext <<EOF
+-#line 3008 "configure"
++#line 3007 "configure"
+ #include "confdefs.h"
+
+ #ifdef __GNUC__
+@@ -3032,7 +3031,7 @@
+ char *p = (char *) alloca(1);
+ ; return 0; }
+ EOF
+-if { (eval echo configure:3036: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
++if { (eval echo configure:3035: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+ rm -rf conftest*
+ ac_cv_func_alloca_works=yes
+ else
+@@ -3064,12 +3063,12 @@
+
+
+ echo $ac_n "checking whether alloca needs Cray hooks""... $ac_c" 1>&6
+-echo "configure:3068: checking whether alloca needs Cray hooks" >&5
++echo "configure:3067: checking whether alloca needs Cray hooks" >&5
+ if eval "test \"`echo '$''{'ac_cv_os_cray'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+ else
+ cat > conftest.$ac_ext <<EOF
+-#line 3073 "configure"
++#line 3072 "configure"
+ #include "confdefs.h"
+ #if defined(CRAY) && ! defined(CRAY2)
+ webecray
+@@ -3094,12 +3093,12 @@
+ if test $ac_cv_os_cray = yes; then
+ for ac_func in _getb67 GETB67 getb67; do
+ echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
+-echo "configure:3098: checking for $ac_func" >&5
++echo "configure:3097: checking for $ac_func" >&5
+ if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+ else
+ cat > conftest.$ac_ext <<EOF
+-#line 3103 "configure"
++#line 3102 "configure"
+ #include "confdefs.h"
+ /* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char $ac_func(); below. */
+@@ -3122,7 +3121,7 @@
+
+ ; return 0; }
+ EOF
+-if { (eval echo configure:3126: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
++if { (eval echo configure:3125: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+ rm -rf conftest*
+ eval "ac_cv_func_$ac_func=yes"
+ else
+@@ -3149,7 +3148,7 @@
+ fi
+
+ echo $ac_n "checking stack direction for C alloca""... $ac_c" 1>&6
+-echo "configure:3153: checking stack direction for C alloca" >&5
++echo "configure:3152: checking stack direction for C alloca" >&5
+ if eval "test \"`echo '$''{'ac_cv_c_stack_direction'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+ else
+@@ -3157,7 +3156,7 @@
+ ac_cv_c_stack_direction=0
+ else
+ cat > conftest.$ac_ext <<EOF
+-#line 3161 "configure"
++#line 3160 "configure"
+ #include "confdefs.h"
+ find_stack_direction ()
+ {
+@@ -3176,7 +3175,7 @@
+ exit (find_stack_direction() < 0);
+ }
+ EOF
+-if { (eval echo configure:3180: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
++if { (eval echo configure:3179: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+ then
+ ac_cv_c_stack_direction=1
+ else
+@@ -3198,7 +3197,7 @@
+ fi
+
+ cat > conftest.$ac_ext <<EOF
+-#line 3202 "configure"
++#line 3201 "configure"
+ #include "confdefs.h"
+ #include <utime.h>
+ EOF
+@@ -3216,12 +3215,12 @@
+ for ac_func in gettimeofday settimeofday
+ do
+ echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
+-echo "configure:3220: checking for $ac_func" >&5
++echo "configure:3219: checking for $ac_func" >&5
+ if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+ else
+ cat > conftest.$ac_ext <<EOF
+-#line 3225 "configure"
++#line 3224 "configure"
+ #include "confdefs.h"
+ /* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char $ac_func(); below. */
+@@ -3244,7 +3243,7 @@
+
+ ; return 0; }
+ EOF
+-if { (eval echo configure:3248: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
++if { (eval echo configure:3247: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+ rm -rf conftest*
+ eval "ac_cv_func_$ac_func=yes"
+ else
+@@ -3271,12 +3270,12 @@
+ for ac_func in strchr memcpy select vprintf
+ do
+ echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
+-echo "configure:3275: checking for $ac_func" >&5
++echo "configure:3274: checking for $ac_func" >&5
+ if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+ else
+ cat > conftest.$ac_ext <<EOF
+-#line 3280 "configure"
++#line 3279 "configure"
+ #include "confdefs.h"
+ /* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char $ac_func(); below. */
+@@ -3299,7 +3298,7 @@
+
+ ; return 0; }
+ EOF
+-if { (eval echo configure:3303: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
++if { (eval echo configure:3302: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+ rm -rf conftest*
+ eval "ac_cv_func_$ac_func=yes"
+ else
+@@ -3326,12 +3325,12 @@
+ for ac_func in times rdchk utime syslog siginterrupt
+ do
+ echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
+-echo "configure:3330: checking for $ac_func" >&5
++echo "configure:3329: checking for $ac_func" >&5
+ if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+ else
+ cat > conftest.$ac_ext <<EOF
+-#line 3335 "configure"
++#line 3334 "configure"
+ #include "confdefs.h"
+ /* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char $ac_func(); below. */
+@@ -3354,7 +3353,7 @@
+
+ ; return 0; }
+ EOF
+-if { (eval echo configure:3358: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
++if { (eval echo configure:3357: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+ rm -rf conftest*
+ eval "ac_cv_func_$ac_func=yes"
+ else
+@@ -3381,12 +3380,12 @@
+ for ac_func in mkdir mktime strerror strstr strdup strtoul strtol strpbrk
+ do
+ echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
+-echo "configure:3385: checking for $ac_func" >&5
++echo "configure:3384: checking for $ac_func" >&5
+ if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+ else
+ cat > conftest.$ac_ext <<EOF
+-#line 3390 "configure"
++#line 3389 "configure"
+ #include "confdefs.h"
+ /* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char $ac_func(); below. */
+@@ -3409,7 +3408,7 @@
+
+ ; return 0; }
+ EOF
+-if { (eval echo configure:3413: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
++if { (eval echo configure:3412: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+ rm -rf conftest*
+ eval "ac_cv_func_$ac_func=yes"
+ else
+@@ -3438,12 +3437,12 @@
+ for ac_func in stpcpy strftime vasprintf
+ do
+ echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
+-echo "configure:3442: checking for $ac_func" >&5
++echo "configure:3441: checking for $ac_func" >&5
+ if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+ else
+ cat > conftest.$ac_ext <<EOF
+-#line 3447 "configure"
++#line 3446 "configure"
+ #include "confdefs.h"
+ /* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char $ac_func(); below. */
+@@ -3466,7 +3465,7 @@
+
+ ; return 0; }
+ EOF
+-if { (eval echo configure:3470: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
++if { (eval echo configure:3469: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+ rm -rf conftest*
+ eval "ac_cv_func_$ac_func=yes"
+ else
+@@ -3494,12 +3493,12 @@
+
+
+ echo $ac_n "checking for getopt_long""... $ac_c" 1>&6
+-echo "configure:3498: checking for getopt_long" >&5
++echo "configure:3497: checking for getopt_long" >&5
+ if eval "test \"`echo '$''{'ac_cv_func_getopt_long'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+ else
+ cat > conftest.$ac_ext <<EOF
+-#line 3503 "configure"
++#line 3502 "configure"
+ #include "confdefs.h"
+ /* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char getopt_long(); below. */
+@@ -3522,7 +3521,7 @@
+
+ ; return 0; }
+ EOF
+-if { (eval echo configure:3526: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
++if { (eval echo configure:3525: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+ rm -rf conftest*
+ eval "ac_cv_func_getopt_long=yes"
+ else
+@@ -3552,12 +3551,12 @@
+
+
+ echo $ac_n "checking for ftime""... $ac_c" 1>&6
+-echo "configure:3556: checking for ftime" >&5
++echo "configure:3555: checking for ftime" >&5
+ if eval "test \"`echo '$''{'ac_cv_func_ftime'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+ else
+ cat > conftest.$ac_ext <<EOF
+-#line 3561 "configure"
++#line 3560 "configure"
+ #include "confdefs.h"
+ /* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char ftime(); below. */
+@@ -3580,7 +3579,7 @@
+
+ ; return 0; }
+ EOF
+-if { (eval echo configure:3584: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
++if { (eval echo configure:3583: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+ rm -rf conftest*
+ eval "ac_cv_func_ftime=yes"
+ else
+@@ -3595,7 +3594,7 @@
+ if eval "test \"`echo '$ac_cv_func_'ftime`\" = yes"; then
+ echo "$ac_t""yes" 1>&6
+ echo $ac_n "checking that ftime works correctly""... $ac_c" 1>&6
+-echo "configure:3599: checking that ftime works correctly" >&5
++echo "configure:3598: checking that ftime works correctly" >&5
+ if eval "test \"`echo '$''{'lrzsz_cv_sys_ftime_ok'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+ else
+@@ -3603,7 +3602,7 @@
+ lrzsz_cv_sys_ftime_ok=runtime
+ else
+ cat > conftest.$ac_ext <<EOF
+-#line 3607 "configure"
++#line 3606 "configure"
+ #include "confdefs.h"
+
+ #include <sys/types.h>
+@@ -3632,7 +3631,7 @@
+ }
+
+ EOF
+-if { (eval echo configure:3636: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
++if { (eval echo configure:3635: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+ then
+ lrzsz_cv_sys_ftime_ok=yes
+ else
+@@ -3666,20 +3665,20 @@
+
+
+ echo $ac_n "checking for timezone variable""... $ac_c" 1>&6
+-echo "configure:3670: checking for timezone variable" >&5
++echo "configure:3669: checking for timezone variable" >&5
+ if eval "test \"`echo '$''{'libquark_cv_var_timezone'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+ else
+
+ cat > conftest.$ac_ext <<EOF
+-#line 3676 "configure"
++#line 3675 "configure"
+ #include "confdefs.h"
+ #include <time.h>
+ int main() {
+ return(int)(timezone/2);
+ ; return 0; }
+ EOF
+-if { (eval echo configure:3683: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
++if { (eval echo configure:3682: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+ rm -rf conftest*
+ libquark_cv_var_timezone=yes
+ else
+@@ -3705,13 +3704,13 @@
+ :
+ else
+ echo $ac_n "checking for $lookup_facility""... $ac_c" 1>&6
+-echo "configure:3709: checking for $lookup_facility" >&5
++echo "configure:3708: checking for $lookup_facility" >&5
+ if eval "test \"`echo '$''{'lrzsz_cv_lookup_facility'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+ else
+
+ cat > conftest.$ac_ext <<EOF
+-#line 3715 "configure"
++#line 3714 "configure"
+ #include "confdefs.h"
+
+ #ifdef HAVE_SYSLOG_H
+@@ -3763,17 +3762,17 @@
+ do
+ ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
+ echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
+-echo "configure:3767: checking for $ac_hdr" >&5
++echo "configure:3766: checking for $ac_hdr" >&5
+ if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+ else
+ cat > conftest.$ac_ext <<EOF
+-#line 3772 "configure"
++#line 3771 "configure"
+ #include "confdefs.h"
+ #include <$ac_hdr>
+ EOF
+ ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
+-{ (eval echo configure:3777: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
++{ (eval echo configure:3776: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+ ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
+ if test -z "$ac_err"; then
+ rm -rf conftest*
+@@ -3803,12 +3802,12 @@
+ strdup __argz_count __argz_stringify __argz_next
+ do
+ echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
+-echo "configure:3807: checking for $ac_func" >&5
++echo "configure:3806: checking for $ac_func" >&5
+ if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+ else
+ cat > conftest.$ac_ext <<EOF
+-#line 3812 "configure"
++#line 3811 "configure"
+ #include "confdefs.h"
+ /* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char $ac_func(); below. */
+@@ -3831,7 +3830,7 @@
+
+ ; return 0; }
+ EOF
+-if { (eval echo configure:3835: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
++if { (eval echo configure:3834: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+ rm -rf conftest*
+ eval "ac_cv_func_$ac_func=yes"
+ else
+@@ -3860,12 +3859,12 @@
+ for ac_func in stpcpy
+ do
+ echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
+-echo "configure:3864: checking for $ac_func" >&5
++echo "configure:3863: checking for $ac_func" >&5
+ if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+ else
+ cat > conftest.$ac_ext <<EOF
+-#line 3869 "configure"
++#line 3868 "configure"
+ #include "confdefs.h"
+ /* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char $ac_func(); below. */
+@@ -3888,7 +3887,7 @@
+
+ ; return 0; }
+ EOF
+-if { (eval echo configure:3892: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
++if { (eval echo configure:3891: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+ rm -rf conftest*
+ eval "ac_cv_func_$ac_func=yes"
+ else
+@@ -3922,19 +3921,19 @@
+
+ if test $ac_cv_header_locale_h = yes; then
+ echo $ac_n "checking for LC_MESSAGES""... $ac_c" 1>&6
+-echo "configure:3926: checking for LC_MESSAGES" >&5
++echo "configure:3925: checking for LC_MESSAGES" >&5
+ if eval "test \"`echo '$''{'am_cv_val_LC_MESSAGES'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+ else
+ cat > conftest.$ac_ext <<EOF
+-#line 3931 "configure"
++#line 3930 "configure"
+ #include "confdefs.h"
+ #include <locale.h>
+ int main() {
+ return LC_MESSAGES
+ ; return 0; }
+ EOF
+-if { (eval echo configure:3938: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
++if { (eval echo configure:3937: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+ rm -rf conftest*
+ am_cv_val_LC_MESSAGES=yes
+ else
+@@ -3955,7 +3954,7 @@
+ fi
+ fi
+ echo $ac_n "checking whether NLS is requested""... $ac_c" 1>&6
+-echo "configure:3959: checking whether NLS is requested" >&5
++echo "configure:3958: checking whether NLS is requested" >&5
+ # Check whether --enable-nls or --disable-nls was given.
+ if test "${enable_nls+set}" = set; then
+ enableval="$enable_nls"
+@@ -3975,7 +3974,7 @@
+ EOF
+
+ echo $ac_n "checking whether included gettext is requested""... $ac_c" 1>&6
+-echo "configure:3979: checking whether included gettext is requested" >&5
++echo "configure:3978: checking whether included gettext is requested" >&5
+ # Check whether --with-included-gettext or --without-included-gettext was given.
+ if test "${with_included_gettext+set}" = set; then
+ withval="$with_included_gettext"
+@@ -3994,17 +3993,17 @@
+
+ ac_safe=`echo "libintl.h" | sed 'y%./+-%__p_%'`
+ echo $ac_n "checking for libintl.h""... $ac_c" 1>&6
+-echo "configure:3998: checking for libintl.h" >&5
++echo "configure:3997: checking for libintl.h" >&5
+ if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+ else
+ cat > conftest.$ac_ext <<EOF
+-#line 4003 "configure"
++#line 4002 "configure"
+ #include "confdefs.h"
+ #include <libintl.h>
+ EOF
+ ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
+-{ (eval echo configure:4008: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
++{ (eval echo configure:4007: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+ ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
+ if test -z "$ac_err"; then
+ rm -rf conftest*
+@@ -4021,19 +4020,19 @@
+ if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then
+ echo "$ac_t""yes" 1>&6
+ echo $ac_n "checking for gettext in libc""... $ac_c" 1>&6
+-echo "configure:4025: checking for gettext in libc" >&5
++echo "configure:4024: checking for gettext in libc" >&5
+ if eval "test \"`echo '$''{'gt_cv_func_gettext_libc'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+ else
+ cat > conftest.$ac_ext <<EOF
+-#line 4030 "configure"
++#line 4029 "configure"
+ #include "confdefs.h"
+ #include <libintl.h>
+ int main() {
+ return (int) gettext ("")
+ ; return 0; }
+ EOF
+-if { (eval echo configure:4037: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
++if { (eval echo configure:4036: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+ rm -rf conftest*
+ gt_cv_func_gettext_libc=yes
+ else
+@@ -4049,7 +4048,7 @@
+
+ if test "$gt_cv_func_gettext_libc" != "yes"; then
+ echo $ac_n "checking for bindtextdomain in -lintl""... $ac_c" 1>&6
+-echo "configure:4053: checking for bindtextdomain in -lintl" >&5
++echo "configure:4052: checking for bindtextdomain in -lintl" >&5
+ ac_lib_var=`echo intl'_'bindtextdomain | sed 'y%./+-%__p_%'`
+ if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+@@ -4057,7 +4056,7 @@
+ ac_save_LIBS="$LIBS"
+ LIBS="-lintl $LIBS"
+ cat > conftest.$ac_ext <<EOF
+-#line 4061 "configure"
++#line 4060 "configure"
+ #include "confdefs.h"
+ /* Override any gcc2 internal prototype to avoid an error. */
+ /* We use char because int might match the return type of a gcc2
+@@ -4068,7 +4067,7 @@
+ bindtextdomain()
+ ; return 0; }
+ EOF
+-if { (eval echo configure:4072: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
++if { (eval echo configure:4071: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+ rm -rf conftest*
+ eval "ac_cv_lib_$ac_lib_var=yes"
+ else
+@@ -4084,12 +4083,12 @@
+ if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
+ echo "$ac_t""yes" 1>&6
+ echo $ac_n "checking for gettext in libintl""... $ac_c" 1>&6
+-echo "configure:4088: checking for gettext in libintl" >&5
++echo "configure:4087: checking for gettext in libintl" >&5
+ if eval "test \"`echo '$''{'gt_cv_func_gettext_libintl'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+ else
+ echo $ac_n "checking for gettext in -lintl""... $ac_c" 1>&6
+-echo "configure:4093: checking for gettext in -lintl" >&5
++echo "configure:4092: checking for gettext in -lintl" >&5
+ ac_lib_var=`echo intl'_'gettext | sed 'y%./+-%__p_%'`
+ if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+@@ -4097,7 +4096,7 @@
+ ac_save_LIBS="$LIBS"
+ LIBS="-lintl $LIBS"
+ cat > conftest.$ac_ext <<EOF
+-#line 4101 "configure"
++#line 4100 "configure"
+ #include "confdefs.h"
+ /* Override any gcc2 internal prototype to avoid an error. */
+ /* We use char because int might match the return type of a gcc2
+@@ -4108,7 +4107,7 @@
+ gettext()
+ ; return 0; }
+ EOF
+-if { (eval echo configure:4112: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
++if { (eval echo configure:4111: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+ rm -rf conftest*
+ eval "ac_cv_lib_$ac_lib_var=yes"
+ else
+@@ -4147,7 +4146,7 @@
+ # Extract the first word of "msgfmt", so it can be a program name with args.
+ set dummy msgfmt; ac_word=$2
+ echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
+-echo "configure:4151: checking for $ac_word" >&5
++echo "configure:4150: checking for $ac_word" >&5
+ if eval "test \"`echo '$''{'ac_cv_path_MSGFMT'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+ else
+@@ -4181,12 +4180,12 @@
+ for ac_func in dcgettext
+ do
+ echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
+-echo "configure:4185: checking for $ac_func" >&5
++echo "configure:4184: checking for $ac_func" >&5
+ if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+ else
+ cat > conftest.$ac_ext <<EOF
+-#line 4190 "configure"
++#line 4189 "configure"
+ #include "confdefs.h"
+ /* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char $ac_func(); below. */
+@@ -4209,7 +4208,7 @@
+
+ ; return 0; }
+ EOF
+-if { (eval echo configure:4213: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
++if { (eval echo configure:4212: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+ rm -rf conftest*
+ eval "ac_cv_func_$ac_func=yes"
+ else
+@@ -4236,7 +4235,7 @@
+ # Extract the first word of "gmsgfmt", so it can be a program name with args.
+ set dummy gmsgfmt; ac_word=$2
+ echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
+-echo "configure:4240: checking for $ac_word" >&5
++echo "configure:4239: checking for $ac_word" >&5
+ if eval "test \"`echo '$''{'ac_cv_path_GMSGFMT'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+ else
+@@ -4272,7 +4271,7 @@
+ # Extract the first word of "xgettext", so it can be a program name with args.
+ set dummy xgettext; ac_word=$2
+ echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
+-echo "configure:4276: checking for $ac_word" >&5
++echo "configure:4275: checking for $ac_word" >&5
+ if eval "test \"`echo '$''{'ac_cv_path_XGETTEXT'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+ else
+@@ -4304,7 +4303,7 @@
+ fi
+
+ cat > conftest.$ac_ext <<EOF
+-#line 4308 "configure"
++#line 4307 "configure"
+ #include "confdefs.h"
+
+ int main() {
+@@ -4312,7 +4311,7 @@
+ return _nl_msg_cat_cntr
+ ; return 0; }
+ EOF
+-if { (eval echo configure:4316: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
++if { (eval echo configure:4315: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+ rm -rf conftest*
+ CATOBJEXT=.gmo
+ DATADIRNAME=share
+@@ -4335,7 +4334,7 @@
+
+ if test "$CATOBJEXT" = "NONE"; then
+ echo $ac_n "checking whether catgets can be used""... $ac_c" 1>&6
+-echo "configure:4339: checking whether catgets can be used" >&5
++echo "configure:4338: checking whether catgets can be used" >&5
+ # Check whether --with-catgets or --without-catgets was given.
+ if test "${with_catgets+set}" = set; then
+ withval="$with_catgets"
+@@ -4348,7 +4347,7 @@
+
+ if test "$nls_cv_use_catgets" = "yes"; then
+ echo $ac_n "checking for main in -li""... $ac_c" 1>&6
+-echo "configure:4352: checking for main in -li" >&5
++echo "configure:4351: checking for main in -li" >&5
+ ac_lib_var=`echo i'_'main | sed 'y%./+-%__p_%'`
+ if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+@@ -4356,14 +4355,14 @@
+ ac_save_LIBS="$LIBS"
+ LIBS="-li $LIBS"
+ cat > conftest.$ac_ext <<EOF
+-#line 4360 "configure"
++#line 4359 "configure"
+ #include "confdefs.h"
+
+ int main() {
+ main()
+ ; return 0; }
+ EOF
+-if { (eval echo configure:4367: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
++if { (eval echo configure:4366: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+ rm -rf conftest*
+ eval "ac_cv_lib_$ac_lib_var=yes"
+ else
+@@ -4391,12 +4390,12 @@
+ fi
+
+ echo $ac_n "checking for catgets""... $ac_c" 1>&6
+-echo "configure:4395: checking for catgets" >&5
++echo "configure:4394: checking for catgets" >&5
+ if eval "test \"`echo '$''{'ac_cv_func_catgets'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+ else
+ cat > conftest.$ac_ext <<EOF
+-#line 4400 "configure"
++#line 4399 "configure"
+ #include "confdefs.h"
+ /* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char catgets(); below. */
+@@ -4419,7 +4418,7 @@
+
+ ; return 0; }
+ EOF
+-if { (eval echo configure:4423: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
++if { (eval echo configure:4422: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+ rm -rf conftest*
+ eval "ac_cv_func_catgets=yes"
+ else
+@@ -4441,7 +4440,7 @@
+ # Extract the first word of "gencat", so it can be a program name with args.
+ set dummy gencat; ac_word=$2
+ echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
+-echo "configure:4445: checking for $ac_word" >&5
++echo "configure:4444: checking for $ac_word" >&5
+ if eval "test \"`echo '$''{'ac_cv_path_GENCAT'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+ else
+@@ -4477,7 +4476,7 @@
+ # Extract the first word of "gmsgfmt", so it can be a program name with args.
+ set dummy gmsgfmt; ac_word=$2
+ echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
+-echo "configure:4481: checking for $ac_word" >&5
++echo "configure:4480: checking for $ac_word" >&5
+ if eval "test \"`echo '$''{'ac_cv_path_GMSGFMT'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+ else
+@@ -4514,7 +4513,7 @@
+ # Extract the first word of "msgfmt", so it can be a program name with args.
+ set dummy msgfmt; ac_word=$2
+ echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
+-echo "configure:4518: checking for $ac_word" >&5
++echo "configure:4517: checking for $ac_word" >&5
+ if eval "test \"`echo '$''{'ac_cv_path_GMSGFMT'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+ else
+@@ -4549,7 +4548,7 @@
+ # Extract the first word of "xgettext", so it can be a program name with args.
+ set dummy xgettext; ac_word=$2
+ echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
+-echo "configure:4553: checking for $ac_word" >&5
++echo "configure:4552: checking for $ac_word" >&5
+ if eval "test \"`echo '$''{'ac_cv_path_XGETTEXT'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+ else
+@@ -4607,7 +4606,7 @@
+ # Extract the first word of "msgfmt", so it can be a program name with args.
+ set dummy msgfmt; ac_word=$2
+ echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
+-echo "configure:4611: checking for $ac_word" >&5
++echo "configure:4610: checking for $ac_word" >&5
+ if eval "test \"`echo '$''{'ac_cv_path_MSGFMT'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+ else
+@@ -4641,7 +4640,7 @@
+ # Extract the first word of "gmsgfmt", so it can be a program name with args.
+ set dummy gmsgfmt; ac_word=$2
+ echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
+-echo "configure:4645: checking for $ac_word" >&5
++echo "configure:4644: checking for $ac_word" >&5
+ if eval "test \"`echo '$''{'ac_cv_path_GMSGFMT'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+ else
+@@ -4677,7 +4676,7 @@
+ # Extract the first word of "xgettext", so it can be a program name with args.
+ set dummy xgettext; ac_word=$2
+ echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
+-echo "configure:4681: checking for $ac_word" >&5
++echo "configure:4680: checking for $ac_word" >&5
+ if eval "test \"`echo '$''{'ac_cv_path_XGETTEXT'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+ else
+@@ -4770,7 +4769,7 @@
+ LINGUAS=
+ else
+ echo $ac_n "checking for catalogs to be installed""... $ac_c" 1>&6
+-echo "configure:4774: checking for catalogs to be installed" >&5
++echo "configure:4773: checking for catalogs to be installed" >&5
+ NEW_LINGUAS=
+ for lang in ${LINGUAS=$ALL_LINGUAS}; do
+ case "$ALL_LINGUAS" in
+@@ -4798,17 +4797,17 @@
+ if test "$CATOBJEXT" = ".cat"; then
+ ac_safe=`echo "linux/version.h" | sed 'y%./+-%__p_%'`
+ echo $ac_n "checking for linux/version.h""... $ac_c" 1>&6
+-echo "configure:4802: checking for linux/version.h" >&5
++echo "configure:4801: checking for linux/version.h" >&5
+ if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+ else
+ cat > conftest.$ac_ext <<EOF
+-#line 4807 "configure"
++#line 4806 "configure"
+ #include "confdefs.h"
+ #include <linux/version.h>
+ EOF
+ ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
+-{ (eval echo configure:4812: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
++{ (eval echo configure:4811: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+ ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
+ if test -z "$ac_err"; then
+ rm -rf conftest*
+--- lrzsz-0.12.21.orig/debian/changelog
++++ lrzsz-0.12.21/debian/changelog
+@@ -0,0 +1,80 @@
++lrzsz (0.12.21-4) unstable; urgency=low
++
++ * Updated for Standards-Version: 3.5.2.
++ * Added touch stamp-h.in before make invocation in order to stop
++ autoheader from running.
++
++ -- Josip Rodin <jrodin@jagor.srce.hr> Sun, 25 Mar 2001 19:48:18 +0200
++
++lrzsz (0.12.21-3) unstable; urgency=low
++
++ * Newish upstream version, (990823 in CVS).
++ * Updated for Policy 3.x.
++ * Misc. fixes for debian/*.
++
++ -- Josip Rodin <jrodin@jagor.srce.hr> Sun, 19 Sep 1999 17:55:38 +0200
++
++lrzsz (0.12.21-2) unstable; urgency=low
++
++ * Removed definition of strstr, advised by upstream maintainer, to
++ get it to compile on glibc2.1, as John Goerzen and Bart Warmerdam
++ noticed (fixes: #39429 #39812).
++
++ -- Josip Rodin <jrodin@jagor.srce.hr> Sun, 20 Jun 1999 21:38:07 +0200
++
++lrzsz (0.12.21-1) unstable; urgency=low
++
++ * New upstream version (990604 in CVS).
++ * Cleaned up the diff by removing unneeded .deps/ files and not changing
++ aclocal et al.
++
++ -- Josip Rodin <jrodin@jagor.srce.hr> Sun, 6 Jun 1999 21:01:50 +0200
++
++lrzsz (0.12.20-2) unstable; urgency=low
++
++ * Don't install ansi2knr.1 manpage, closing bug #33121
++
++ -- Josip Rodin <jrodin@jagor.srce.hr> Sun, 7 Feb 1999 01:32:31 +0100
++
++lrzsz (0.12.20-1) unstable; urgency=low
++
++ * New maintainer.
++ * Althought version number doesn't indicate that, this version is
++ today's CVS snapshot from ftp://tirka.ohse.de/uwe/cvs-trees
++ * This release fixes following bugs: #8373 #11208 #16170 #16744 #17210.
++ * Package is lintian clean.
++
++ -- Josip Rodin <jrodin@jagor.srce.hr> Sun, 7 Feb 1999 01:32:31 +0100
++
++lrzsz (0.12.17) unstable; urgency=low
++
++ * sorry, see ../ChangeLog. automagically generated debian/changelog
++
++ -- Uwe Ohse <uwe@ohse.de> Mon, 02 Jun 1997 10:06:05 +0200
++
++lrzsz (0.12.16) unstable; urgency=low
++
++ * sorry, see ../ChangeLog. changelog is here just to make
++ dpkg happy.
++ * initial release
++
++ -- Uwe Ohse <uwe@ohse.de> Sun, 2 Jun 1997 21:00:00 +0200
++
++lrzsz (0.12b-1.1) unstable; urgency=low
++
++ * Non-maintainer release.
++ * Libc6 compile.
++
++ -- Martin Mitchell <martin@debian.org> Sat, 18 Oct 1997 01:58:54 +1000
++
++lrzsz (0.12b-1) unstable; urgency=low
++
++ * Converted to new source packaging format.
++ * New upstream version.
++
++ -- Michael Alan Dorman <mdorman@calder.med.miami.edu> Tue, 17 Sep 1996 13:39:23 -0400
++
++Local variables:
++mode: debian-changelog
++add-log-mailing-address: "jrodin@jagor.srce.hr"
++End:
+--- lrzsz-0.12.21.orig/debian/control
++++ lrzsz-0.12.21/debian/control
+@@ -0,0 +1,18 @@
++Source: lrzsz
++Section: comm
++Priority: optional
++Maintainer: Josip Rodin <jrodin@jagor.srce.hr>
++Standards-Version: 3.5.2
++Build-Depends: debhelper
++
++Package: lrzsz
++Architecture: any
++Depends: ${shlibs:Depends}
++Suggests: minicom
++Description: Tools for zmodem/xmodem/ymodem file transfer
++ Lrzsz is a cosmetically modified zmodem/ymodem/xmodem package built
++ from the public-domain version of Chuck Forsberg's rzsz package.
++ .
++ These programs use error correcting protocols ({z,x,y}modem) to send
++ (sz, sx, sb) and receive (rz, rx, rb) files over a dial-in serial port
++ from a variety of programs running under various operating systems.
+--- lrzsz-0.12.21.orig/debian/copyright
++++ lrzsz-0.12.21/debian/copyright
+@@ -0,0 +1,31 @@
++This is the lrzsz Debian GNU/Linux package. It was first maintained by
++Michael Alan Dorman <mdorman@debian.org>, with help of Martin Mitchell
++and current upstream maintainer, Uwe Ohse <uwe@ohse.de>.
++
++Current maintainer is Josip Rodin <jrodin@jagor.srce.hr>
++
++Original source was downloaded from: ftp://tirka.ohse.de/uwe/
++
++Copyright (C) until 1988 Chuck Forsberg (Omen Technology INC)
++Copyright (C) 1994 Matt Porter, Michael D. Black
++Copyright (C) 1996, 1997 Uwe Ohse
++
++Please note that credit should be given to Chuck Forsberg (rzsz) and
++Stephen Satchell/Satchell Evaluations (crc routines) for this package.
++
++ 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; version 2 dated June, 1991.
++
++ 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.
++
++On Debian systems, the complete text of the GNU General Public License
++can be found in /usr/share/common-licenses/GPL file.
+--- lrzsz-0.12.21.orig/debian/rules
++++ lrzsz-0.12.21/debian/rules
+@@ -0,0 +1,60 @@
++#!/usr/bin/make -f
++# Derived from debhelper/dh_make example.
++
++#export DH_VERBOSE=1
++tmp := $(CURDIR)/debian/tmp
++
++CFLAGS := -O2
++ifneq "$(findstring debug,$(DEB_BUILD_OPTIONS))" ""
++CFLAGS += -g
++endif
++
++build: build-stamp
++build-stamp:
++ dh_testdir
++ CFLAGS="$(CFLAGS)" ./configure --prefix=/usr \
++ --mandir='$${prefix}/share/man' --program-transform-name=s/l//
++ touch stamp-h.in # to stop autoheader from running
++ $(MAKE)
++ touch $@
++
++clean:
++ dh_testdir
++ dh_testroot
++ [ ! -f Makefile ] || $(MAKE) distclean
++ dh_clean build-stamp
++
++install: build-stamp
++ dh_testdir
++ dh_testroot
++ dh_clean -k
++ dh_installdirs
++ $(MAKE) install prefix=$(tmp)/usr
++
++binary-indep:
++# We have nothing to do, no architecture independent packages here.
++
++binary-arch: build install
++ dh_testdir
++ dh_testroot
++ dh_installdocs NEWS README README.cvs README.isdn4linux TODO
++# dh_installmanpages ansi2knr.1
++ dh_installchangelogs ChangeLog
++ifeq "$(findstring nostrip,$(DEB_BUILD_OPTIONS))" ""
++ dh_strip
++endif
++ dh_compress
++ cd $(tmp)/usr/share/man/man1 ; \
++ ln -s rz.1.gz rb.1.gz ; \
++ ln -s rz.1.gz rx.1.gz ; \
++ ln -s sz.1.gz sb.1.gz ; \
++ ln -s sz.1.gz sx.1.gz
++ dh_fixperms
++ dh_installdeb
++ dh_shlibdeps
++ dh_gencontrol
++ dh_md5sums
++ dh_builddeb
++
++binary: binary-indep binary-arch
++.PHONY: build clean binary-indep binary-arch binary install
+--- lrzsz-0.12.21.orig/lib/Makefile.in
++++ lrzsz-0.12.21/lib/Makefile.in
+@@ -1,4 +1,4 @@
+-# Makefile.in generated automatically by automake 1.4a from Makefile.am
++# Makefile.in generated automatically by automake 1.4 from Makefile.am
+
+ # Copyright (C) 1994, 1995-8, 1999 Free Software Foundation, Inc.
+ # This Makefile.in is free software; the Free Software Foundation
+@@ -46,10 +46,9 @@
+ AUTOHEADER = @AUTOHEADER@
+
+ INSTALL = @INSTALL@
+-INSTALL_PROGRAM = @INSTALL_PROGRAM@
++INSTALL_PROGRAM = @INSTALL_PROGRAM@ $(AM_INSTALL_PROGRAM_FLAGS)
+ INSTALL_DATA = @INSTALL_DATA@
+ INSTALL_SCRIPT = @INSTALL_SCRIPT@
+-INSTALL_STRIP_FLAG =
+ transform = @program_transform_name@
+
+ NORMAL_INSTALL = :
+@@ -127,7 +126,7 @@
+
+ DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST)
+
+-TAR = gtar
++TAR = tar
+ GZIP_ENV = --best
+ DEP_FILES = .deps/alloca.P .deps/error.P .deps/getopt.P .deps/getopt1.P \
+ .deps/long-options.P .deps/mkdir.P .deps/mktime.P .deps/stpcpy.P \
+@@ -282,7 +281,7 @@
+ @for file in $(DISTFILES); do \
+ d=$(srcdir); \
+ if test -d $$d/$$file; then \
+- cp -pr $$d/$$file $(distdir)/$$file; \
++ cp -pr $$/$$file $(distdir)/$$file; \
+ else \
+ test -f $(distdir)/$$file \
+ || ln $$d/$$file $(distdir)/$$file 2> /dev/null \
+@@ -343,7 +342,7 @@
+ all-am: Makefile $(ANSI2KNR) $(LIBRARIES) $(HEADERS)
+ all-redirect: all-am
+ install-strip:
+- $(MAKE) $(AM_MAKEFLAGS) INSTALL_STRIP_FLAG=-s install
++ $(MAKE) $(AM_MAKEFLAGS) AM_INSTALL_PROGRAM_FLAGS=-s install
+ installdirs:
+
+
+--- lrzsz-0.12.21.orig/man/Makefile.in
++++ lrzsz-0.12.21/man/Makefile.in
+@@ -1,4 +1,4 @@
+-# Makefile.in generated automatically by automake 1.4a from Makefile.am
++# Makefile.in generated automatically by automake 1.4 from Makefile.am
+
+ # Copyright (C) 1994, 1995-8, 1999 Free Software Foundation, Inc.
+ # This Makefile.in is free software; the Free Software Foundation
+@@ -46,10 +46,9 @@
+ AUTOHEADER = @AUTOHEADER@
+
+ INSTALL = @INSTALL@
+-INSTALL_PROGRAM = @INSTALL_PROGRAM@
++INSTALL_PROGRAM = @INSTALL_PROGRAM@ $(AM_INSTALL_PROGRAM_FLAGS)
+ INSTALL_DATA = @INSTALL_DATA@
+ INSTALL_SCRIPT = @INSTALL_SCRIPT@
+-INSTALL_STRIP_FLAG =
+ transform = @program_transform_name@
+
+ NORMAL_INSTALL = :
+@@ -106,7 +105,7 @@
+
+ DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST)
+
+-TAR = gtar
++TAR = tar
+ GZIP_ENV = --best
+ all: all-redirect
+ .SUFFIXES:
+@@ -173,7 +172,7 @@
+ @for file in $(DISTFILES); do \
+ d=$(srcdir); \
+ if test -d $$d/$$file; then \
+- cp -pr $$d/$$file $(distdir)/$$file; \
++ cp -pr $$/$$file $(distdir)/$$file; \
+ else \
+ test -f $(distdir)/$$file \
+ || ln $$d/$$file $(distdir)/$$file 2> /dev/null \
+@@ -202,7 +201,7 @@
+ all-am: Makefile $(MANS)
+ all-redirect: all-am
+ install-strip:
+- $(MAKE) $(AM_MAKEFLAGS) INSTALL_STRIP_FLAG=-s install
++ $(MAKE) $(AM_MAKEFLAGS) AM_INSTALL_PROGRAM_FLAGS=-s install
+ installdirs:
+ $(mkinstalldirs) $(DESTDIR)$(mandir)/man1
+
+--- lrzsz-0.12.21.orig/po/lrzsz.pot
++++ lrzsz-0.12.21/po/lrzsz.pot
+@@ -6,7 +6,7 @@
+ msgid ""
+ msgstr ""
+ "Project-Id-Version: PACKAGE VERSION\n"
+-"POT-Creation-Date: 1999-08-22 21:00+0200\n"
++"POT-Creation-Date: 1999-09-19 19:34+0200\n"
+ "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+ "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+ "Language-Team: LANGUAGE <LL@li.org>\n"
+@@ -14,311 +14,311 @@
+ "Content-Type: text/plain; charset=CHARSET\n"
+ "Content-Transfer-Encoding: ENCODING\n"
+
+-#: src/lsz.c:228
++#: src/lsz.c:227
+ msgid "io_mode(,2) in rbsb.c not implemented\n"
+ msgstr ""
+
+-#: src/lrz.c:196 src/lsz.c:230
++#: src/lrz.c:195 src/lsz.c:229
+ #, c-format
+ msgid "caught signal %d; exiting"
+ msgstr ""
+
+-#: src/lsz.c:400
++#: src/lsz.c:399
+ msgid "command tries"
+ msgstr ""
+
+-#: src/lsz.c:422
++#: src/lsz.c:421
+ msgid "packetlength"
+ msgstr ""
+
+-#: src/lsz.c:427
++#: src/lsz.c:426
+ #, c-format
+ msgid "packetlength out of range 24..%ld"
+ msgstr ""
+
+-#: src/lsz.c:436
++#: src/lsz.c:435
+ msgid "framelength"
+ msgstr ""
+
+-#: src/lsz.c:441
++#: src/lsz.c:440
+ #, c-format
+ msgid "framelength out of range 32..%ld"
+ msgstr ""
+
+-#: src/lrz.c:318 src/lsz.c:450
++#: src/lrz.c:317 src/lsz.c:449
+ msgid "min_bps"
+ msgstr ""
+
+-#: src/lsz.c:452
++#: src/lsz.c:451
+ msgid "min_bps must be >= 0"
+ msgstr ""
+
+-#: src/lrz.c:324 src/lsz.c:458
++#: src/lrz.c:323 src/lsz.c:457
+ msgid "min_bps_time"
+ msgstr ""
+
+-#: src/lrz.c:326 src/lsz.c:460
++#: src/lrz.c:325 src/lsz.c:459
+ msgid "min_bps_time must be > 1"
+ msgstr ""
+
+-#: src/lrz.c:342 src/lsz.c:484
++#: src/lrz.c:341 src/lsz.c:483
+ msgid "hour to large (0..23)"
+ msgstr ""
+
+-#: src/lrz.c:344 src/lsz.c:486
++#: src/lrz.c:343 src/lsz.c:485
+ msgid "unparsable stop time\n"
+ msgstr ""
+
+-#: src/lrz.c:348 src/lsz.c:490
++#: src/lrz.c:347 src/lsz.c:489
+ msgid "minute to large (0..59)"
+ msgstr ""
+
+-#: src/lrz.c:358 src/lrz.c:365 src/lsz.c:500 src/lsz.c:507
++#: src/lrz.c:357 src/lrz.c:364 src/lsz.c:499 src/lsz.c:506
+ msgid "stop time to small"
+ msgstr ""
+
+-#: src/lrz.c:363 src/lsz.c:505
++#: src/lrz.c:362 src/lsz.c:504
+ msgid "stop-at"
+ msgstr ""
+
+-#: src/lrz.c:394 src/lsz.c:516
++#: src/lrz.c:393 src/lsz.c:515
+ msgid "timeout"
+ msgstr ""
+
+-#: src/lrz.c:396 src/lsz.c:518
++#: src/lrz.c:395 src/lsz.c:517
+ msgid "timeout out of range 10..1000"
+ msgstr ""
+
+-#: src/lrz.c:412 src/lsz.c:526
++#: src/lrz.c:411 src/lsz.c:525
+ msgid "security violation: can't do that under restricted shell\n"
+ msgstr ""
+
+-#: src/lrz.c:402 src/lsz.c:533
++#: src/lrz.c:401 src/lsz.c:532
+ msgid "window size"
+ msgstr ""
+
+-#: src/lrz.c:427 src/lrz.c:434 src/lsz.c:556 src/lsz.c:563
++#: src/lrz.c:426 src/lrz.c:433 src/lsz.c:555 src/lsz.c:562
+ msgid "cannot turnoff syslog"
+ msgstr ""
+
+-#: src/lrz.c:449 src/lsz.c:571
++#: src/lrz.c:448 src/lsz.c:570
+ msgid "startup delay"
+ msgstr ""
+
+-#: src/lrz.c:465 src/lrz.c:483 src/lrz.c:760 src/lrz.c:1122 src/lrz.c:1244
+-#: src/lrz.c:1292 src/lrz.c:1309 src/lrz.c:1324 src/lrz.c:1423 src/lsz.c:580
+-#: src/lsz.c:596 src/lsz.c:693 src/lsz.c:828 src/lsz.c:1061
++#: src/lrz.c:464 src/lrz.c:482 src/lrz.c:759 src/lrz.c:1121 src/lrz.c:1243
++#: src/lrz.c:1291 src/lrz.c:1308 src/lrz.c:1323 src/lrz.c:1422 src/lsz.c:579
++#: src/lsz.c:595 src/lsz.c:692 src/lsz.c:827 src/lsz.c:1060
+ #: src/zreadline.c:127
+ msgid "out of memory"
+ msgstr ""
+
+-#: src/lrz.c:475 src/lsz.c:592
++#: src/lrz.c:474 src/lsz.c:591
+ msgid "this program was never intended to be used setuid\n"
+ msgstr ""
+
+-#: src/lsz.c:612 src/lsz.c:627
++#: src/lsz.c:611 src/lsz.c:626
+ msgid "need at least one file to send"
+ msgstr ""
+
+-#: src/lsz.c:629
++#: src/lsz.c:628
+ msgid "Can't send command in restricted mode\n"
+ msgstr ""
+
+-#: src/lrz.c:527 src/lsz.c:656
++#: src/lrz.c:526 src/lsz.c:655
+ msgid "hostname too long\n"
+ msgstr ""
+
+-#: src/lrz.c:542 src/lsz.c:671
++#: src/lrz.c:541 src/lsz.c:670
+ msgid "illegal server address\n"
+ msgstr ""
+
+-#: src/lsz.c:710
++#: src/lsz.c:709
+ msgid "can read only one file from stdin"
+ msgstr ""
+
+-#: src/lrz.c:574 src/lsz.c:803
++#: src/lrz.c:573 src/lsz.c:802
+ msgid "Transfer incomplete\n"
+ msgstr ""
+
+-#: src/lrz.c:576 src/lsz.c:805
++#: src/lrz.c:575 src/lsz.c:804
+ msgid "Transfer complete\n"
+ msgstr ""
+
+-#: src/lsz.c:838
++#: src/lsz.c:837
+ #, c-format
+ msgid "send_pseudo %s: cannot open tmpfile %s: %s"
+ msgstr ""
+
+-#: src/lsz.c:851
++#: src/lsz.c:850
+ #, c-format
+ msgid "send_pseudo %s: cannot lstat tmpfile %s: %s"
+ msgstr ""
+
+-#: src/lsz.c:859
++#: src/lsz.c:858
+ #, c-format
+ msgid "send_pseudo %s: avoiding symlink trap"
+ msgstr ""
+
+-#: src/lsz.c:870
++#: src/lsz.c:869
+ #, c-format
+ msgid "send_pseudo %s: cannot write to tmpfile %s: %s"
+ msgstr ""
+
+-#: src/lsz.c:879
++#: src/lsz.c:878
+ #, c-format
+ msgid "send_pseudo %s: failed"
+ msgstr ""
+
+-#: src/lsz.c:882
++#: src/lsz.c:881
+ #, c-format
+ msgid "send_pseudo %s: ok"
+ msgstr ""
+
+-#: src/lsz.c:916
++#: src/lsz.c:915
+ #, c-format
+ msgid "Answering TIMESYNC at %s"
+ msgstr ""
+
+-#: src/lsz.c:921
++#: src/lsz.c:920
+ msgid "timezone"
+ msgstr ""
+
+-#: src/lsz.c:924
++#: src/lsz.c:923
+ msgid "timezone unknown"
+ msgstr ""
+
+-#: src/lsz.c:953
++#: src/lsz.c:952
+ msgid "Can't open any requested files."
+ msgstr ""
+
+-#: src/lsz.c:1009
++#: src/lsz.c:1008
+ #, c-format
+ msgid "security violation: not allowed to upload from %s"
+ msgstr ""
+
+-#: src/lrz.c:1384 src/lsz.c:1027
++#: src/lrz.c:1383 src/lsz.c:1026
+ #, c-format
+ msgid "cannot open %s"
+ msgstr ""
+
+-#: src/lsz.c:1082
++#: src/lsz.c:1081
+ #, c-format
+ msgid "is not a file: %s"
+ msgstr ""
+
+-#: src/lsz.c:1115 src/lsz.c:1130
++#: src/lsz.c:1114 src/lsz.c:1129
+ #, c-format
+ msgid "%s/%s: error occured"
+ msgstr ""
+
+-#: src/lsz.c:1119
++#: src/lsz.c:1118
+ #, c-format
+ msgid "skipped: %s"
+ msgstr ""
+
+-#: src/lsz.c:1122
++#: src/lsz.c:1121
+ #, c-format
+ msgid "%s/%s: skipped"
+ msgstr ""
+
+-#: src/lsz.c:1149
++#: src/lsz.c:1148
+ #, c-format
+ msgid "Bytes Sent:%7ld BPS:%-8ld \n"
+ msgstr ""
+
+-#: src/lsz.c:1178
++#: src/lsz.c:1177
+ #, c-format
+ msgid "Sending %s, %ld blocks: "
+ msgstr ""
+
+-#: src/lsz.c:1181
++#: src/lsz.c:1180
+ msgid "Give your local XMODEM receive command now."
+ msgstr ""
+
+-#: src/lsz.c:1224
++#: src/lsz.c:1223
+ #, c-format
+ msgid "Sending: %s\n"
+ msgstr ""
+
+-#: src/lsz.c:1267
++#: src/lsz.c:1266
+ msgid "Timeout on pathname"
+ msgstr ""
+
+-#: src/lsz.c:1314
++#: src/lsz.c:1313
+ msgid "Receiver Cancelled"
+ msgstr ""
+
+-#: src/lsz.c:1340
++#: src/lsz.c:1339
+ msgid "No ACK on EOT"
+ msgstr ""
+
+-#: src/lsz.c:1361
++#: src/lsz.c:1360
+ #, c-format
+ msgid "Xmodem sectors/kbytes sent: %3d/%2dk"
+ msgstr ""
+
+-#: src/lsz.c:1363
++#: src/lsz.c:1362
+ #, c-format
+ msgid "Ymodem sectors/kbytes sent: %3d/%2dk"
+ msgstr ""
+
+-#: src/lsz.c:1395
++#: src/lsz.c:1394
+ msgid "Cancelled"
+ msgstr ""
+
+-#: src/lsz.c:1399
++#: src/lsz.c:1398
+ msgid "Timeout on sector ACK"
+ msgstr ""
+
+-#: src/lsz.c:1404
++#: src/lsz.c:1403
+ msgid "NAK on sector"
+ msgstr ""
+
+-#: src/lsz.c:1410
++#: src/lsz.c:1409
+ msgid "Got burst for sector ACK"
+ msgstr ""
+
+-#: src/lsz.c:1412
++#: src/lsz.c:1411
+ #, c-format
+ msgid "Got %02x for sector ACK"
+ msgstr ""
+
+-#: src/lsz.c:1424
++#: src/lsz.c:1423
+ msgid "Retry Count Exceeded"
+ msgstr ""
+
+-#: src/lrz.c:596 src/lsz.c:1502
++#: src/lrz.c:595 src/lsz.c:1501
+ #, c-format
+ msgid "Try `%s --help' for more information.\n"
+ msgstr ""
+
+-#: src/lrz.c:601 src/lsz.c:1507
++#: src/lrz.c:600 src/lsz.c:1506
+ #, c-format
+ msgid "%s version %s\n"
+ msgstr ""
+
+-#: src/lsz.c:1510
++#: src/lsz.c:1509
+ #, c-format
+ msgid "Usage: %s [options] file ...\n"
+ msgstr ""
+
+-#: src/lsz.c:1512
++#: src/lsz.c:1511
+ #, c-format
+ msgid " or: %s [options] -{c|i} COMMAND\n"
+ msgstr ""
+
+-#: src/lsz.c:1513
++#: src/lsz.c:1512
+ msgid "Send file(s) with ZMODEM/YMODEM/XMODEM protocol\n"
+ msgstr ""
+
+-#: src/lrz.c:607 src/lsz.c:1515
++#: src/lrz.c:606 src/lsz.c:1514
+ msgid ""
+ " (X) = option applies to XMODEM only\n"
+ " (Y) = option applies to YMODEM only\n"
+ " (Z) = option applies to ZMODEM only\n"
+ msgstr ""
+
+-#: src/lsz.c:1521
++#: src/lsz.c:1520
+ msgid ""
+ " -+, --append append to existing destination file (Z)\n"
+ " -2, --twostop use 2 stop bits\n"
+@@ -345,7 +345,7 @@
+ " -M, --min-bps-time N for at least N seconds (default: 120)\n"
+ msgstr ""
+
+-#: src/lsz.c:1546
++#: src/lsz.c:1545
+ msgid ""
+ " -n, --newer send file if source newer (Z)\n"
+ " -N, --newer-or-longer send file if source newer or longer (Z)\n"
+@@ -371,64 +371,64 @@
+ "short options use the same arguments as the long ones\n"
+ msgstr ""
+
+-#: src/lsz.c:1768
++#: src/lsz.c:1767
+ msgid "got ZRQINIT"
+ msgstr ""
+
+-#: src/lrz.c:1079 src/lrz.c:1772 src/lsz.c:1774
++#: src/lrz.c:1078 src/lrz.c:1771 src/lsz.c:1773
+ msgid "got ZCAN"
+ msgstr ""
+
+-#: src/lsz.c:1991
++#: src/lsz.c:1990
+ #, c-format
+ msgid "blklen now %d\n"
+ msgstr ""
+
+-#: src/lsz.c:2053
++#: src/lsz.c:2052
+ #, c-format
+ msgid "zsendfdata: bps rate %ld below min %ld"
+ msgstr ""
+
+-#: src/lsz.c:2070
++#: src/lsz.c:2069
+ msgid "zsendfdata: reached stop time"
+ msgstr ""
+
+-#: src/lsz.c:2080
++#: src/lsz.c:2079
+ #, c-format
+ msgid "Bytes Sent:%7ld/%7ld BPS:%-8ld ETA %02d:%02d "
+ msgstr ""
+
+-#: src/lsz.c:2223
++#: src/lsz.c:2222
+ #, c-format
+ msgid "calc_blklen: reduced to %d due to error\n"
+ msgstr ""
+
+-#: src/lsz.c:2256
++#: src/lsz.c:2255
+ #, c-format
+ msgid "calc_blklen: returned old value %d due to low bpe diff\n"
+ msgstr ""
+
+-#: src/lsz.c:2258
++#: src/lsz.c:2257
+ #, c-format
+ msgid "calc_blklen: old %ld, new %ld, d %ld\n"
+ msgstr ""
+
+-#: src/lsz.c:2267
++#: src/lsz.c:2266
+ #, c-format
+ msgid "calc_blklen: calc total_bytes=%ld, bpe=%ld, ec=%ld\n"
+ msgstr ""
+
+-#: src/lsz.c:2278
++#: src/lsz.c:2277
+ #, c-format
+ msgid "calc_blklen: blklen %d, ok %ld, failed %ld -> %lu\n"
+ msgstr ""
+
+-#: src/lsz.c:2290
++#: src/lsz.c:2289
+ #, c-format
+ msgid "calc_blklen: returned %d as best\n"
+ msgstr ""
+
+-#: src/lsz.c:2486
++#: src/lsz.c:2485
+ #, c-format
+ msgid ""
+ "\n"
+@@ -444,7 +444,7 @@
+ msgid "Sender Canceled"
+ msgstr ""
+
+-#: src/lrz.c:1002 src/zm.c:586 src/zm.c:645
++#: src/lrz.c:1001 src/zm.c:586 src/zm.c:645
+ msgid "TIMEOUT"
+ msgstr ""
+
+@@ -470,40 +470,40 @@
+ msgid "Retry %d: "
+ msgstr ""
+
+-#: src/lrz.c:382
++#: src/lrz.c:381
+ msgid "don't have settimeofday, will not set time\n"
+ msgstr ""
+
+-#: src/lrz.c:386
++#: src/lrz.c:385
+ msgid "not running as root (this is good!), can not set time\n"
+ msgstr ""
+
+-#: src/lrz.c:441
++#: src/lrz.c:440
+ msgid "bytes_per_error"
+ msgstr ""
+
+-#: src/lrz.c:443
++#: src/lrz.c:442
+ msgid "bytes-per-error should be >100"
+ msgstr ""
+
+-#: src/lrz.c:455
++#: src/lrz.c:454
+ msgid "O_SYNC not supported by the kernel"
+ msgstr ""
+
+-#: src/lrz.c:497 src/lrz.c:499
++#: src/lrz.c:496 src/lrz.c:498
+ msgid "garbage on commandline"
+ msgstr ""
+
+-#: src/lrz.c:604
++#: src/lrz.c:603
+ #, c-format
+ msgid "Usage: %s [options] [filename.if.xmodem]\n"
+ msgstr ""
+
+-#: src/lrz.c:605
++#: src/lrz.c:604
+ msgid "Receive files with ZMODEM/YMODEM/XMODEM protocol\n"
+ msgstr ""
+
+-#: src/lrz.c:612
++#: src/lrz.c:611
+ msgid ""
+ " -+, --append append to existing files\n"
+ " -a, --ascii ASCII transfer (change CR/LF to LF)\n"
+@@ -543,152 +543,152 @@
+ "short options use the same arguments as the long ones\n"
+ msgstr ""
+
+-#: src/lrz.c:676
++#: src/lrz.c:675
+ #, c-format
+ msgid "%s waiting to receive."
+ msgstr ""
+
+-#: src/lrz.c:730 src/lrz.c:1806
++#: src/lrz.c:729 src/lrz.c:1805
+ #, c-format
+ msgid "\rBytes received: %7ld/%7ld BPS:%-6ld \r\n"
+ msgstr ""
+
+-#: src/lrz.c:772
++#: src/lrz.c:771
+ #, c-format
+ msgid "%s: ready to receive %s"
+ msgstr ""
+
+-#: src/lrz.c:799
++#: src/lrz.c:798
+ #, c-format
+ msgid "\rBytes received: %7ld BPS:%-6ld \r\n"
+ msgstr ""
+
+-#: src/lrz.c:825
++#: src/lrz.c:824
+ #, c-format
+ msgid ""
+ "\r\n"
+ "%s: %s removed.\r\n"
+ msgstr ""
+
+-#: src/lrz.c:856
++#: src/lrz.c:855
+ msgid "Pathname fetch returned EOT"
+ msgstr ""
+
+-#: src/lrz.c:903
++#: src/lrz.c:902
+ msgid "Received dup Sector"
+ msgstr ""
+
+-#: src/lrz.c:917
++#: src/lrz.c:916
+ msgid "Sync Error"
+ msgstr ""
+
+-#: src/lrz.c:965
++#: src/lrz.c:964
+ msgid "CRC"
+ msgstr ""
+
+-#: src/lrz.c:976
++#: src/lrz.c:975
+ msgid "Checksum"
+ msgstr ""
+
+-#: src/lrz.c:979
++#: src/lrz.c:978
+ msgid "Sector number garbled"
+ msgstr ""
+
+-#: src/lrz.c:991
++#: src/lrz.c:990
+ msgid "Sender Cancelled"
+ msgstr ""
+
+-#: src/lrz.c:1005
++#: src/lrz.c:1004
+ #, c-format
+ msgid "Got 0%o sector header"
+ msgstr ""
+
+-#: src/lrz.c:1113
++#: src/lrz.c:1112
+ #, c-format
+ msgid "file name ends with a /, skipped: %s\n"
+ msgstr ""
+
+-#: src/lrz.c:1127
++#: src/lrz.c:1126
+ #, c-format
+ msgid "zmanag=%d, Lzmanag=%d\n"
+ msgstr ""
+
+-#: src/lrz.c:1128
++#: src/lrz.c:1127
+ #, c-format
+ msgid "zconv=%d\n"
+ msgstr ""
+
+-#: src/lrz.c:1192 src/lrz.c:1226
++#: src/lrz.c:1191 src/lrz.c:1225
+ #, c-format
+ msgid "file exists, skipped: %s\n"
+ msgstr ""
+
+-#: src/lrz.c:1267
++#: src/lrz.c:1266
+ #, c-format
+ msgid "TIMESYNC: here %ld, remote %ld, diff %ld seconds\n"
+ msgstr ""
+
+-#: src/lrz.c:1276
++#: src/lrz.c:1275
+ #, c-format
+ msgid "TIMESYNC: cannot set time: %s\n"
+ msgstr ""
+
+-#: src/lrz.c:1296
++#: src/lrz.c:1295
+ msgid "Topipe"
+ msgstr ""
+
+-#: src/lrz.c:1314
++#: src/lrz.c:1313
+ #, c-format
+ msgid "Receiving: %s\n"
+ msgstr ""
+
+-#: src/lrz.c:1545
++#: src/lrz.c:1544
+ #, c-format
+ msgid "Blocks received: %d"
+ msgstr ""
+
+-#: src/lrz.c:1599
++#: src/lrz.c:1598
+ #, c-format
+ msgid "%s: %s exists\n"
+ msgstr ""
+
+-#: src/lrz.c:1612 src/lrz.c:1620
++#: src/lrz.c:1611 src/lrz.c:1619
+ #, c-format
+ msgid "%s:\tSecurity Violation"
+ msgstr ""
+
+-#: src/lrz.c:1730
++#: src/lrz.c:1729
+ msgid "remote command execution requested"
+ msgstr ""
+
+-#: src/lrz.c:1737
++#: src/lrz.c:1736
+ msgid "not executed"
+ msgstr ""
+
+-#: src/lrz.c:1768
++#: src/lrz.c:1767
+ msgid "got ZRINIT"
+ msgstr ""
+
+-#: src/lrz.c:1817
++#: src/lrz.c:1816
+ msgid "Skipped"
+ msgstr ""
+
+ #. too bad
+-#: src/lrz.c:2049
++#: src/lrz.c:2048
+ #, c-format
+ msgid "rzfile: bps rate %ld below min %ld"
+ msgstr ""
+
+ #. too bad
+-#: src/lrz.c:2064
++#: src/lrz.c:2063
+ msgid "rzfile: reached stop time"
+ msgstr ""
+
+-#: src/lrz.c:2071
++#: src/lrz.c:2070
+ #, c-format
+ msgid "\rBytes received: %7ld/%7ld BPS:%-6ld ETA %02d:%02d "
+ msgstr ""
+
+-#: src/lrz.c:2215
++#: src/lrz.c:2214
+ msgid "file close error"
+ msgstr ""
+--- lrzsz-0.12.21.orig/src/Makefile.in
++++ lrzsz-0.12.21/src/Makefile.in
+@@ -1,4 +1,4 @@
+-# Makefile.in generated automatically by automake 1.4a from Makefile.am
++# Makefile.in generated automatically by automake 1.4 from Makefile.am
+
+ # Copyright (C) 1994, 1995-8, 1999 Free Software Foundation, Inc.
+ # This Makefile.in is free software; the Free Software Foundation
+@@ -45,10 +45,9 @@
+ AUTOHEADER = @AUTOHEADER@
+
+ INSTALL = @INSTALL@
+-INSTALL_PROGRAM = @INSTALL_PROGRAM@
++INSTALL_PROGRAM = @INSTALL_PROGRAM@ $(AM_INSTALL_PROGRAM_FLAGS)
+ INSTALL_DATA = @INSTALL_DATA@
+ INSTALL_SCRIPT = @INSTALL_SCRIPT@
+-INSTALL_STRIP_FLAG =
+ transform = @program_transform_name@
+
+ NORMAL_INSTALL = :
+@@ -132,7 +131,7 @@
+
+ DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST)
+
+-TAR = gtar
++TAR = tar
+ GZIP_ENV = --best
+ DEP_FILES = .deps/canit.P .deps/crctab.P .deps/lrz.P .deps/lsyslog.P \
+ .deps/lsz.P .deps/protname.P .deps/rbsb.P .deps/tcp.P .deps/timing.P \
+@@ -167,8 +166,8 @@
+ $(mkinstalldirs) $(DESTDIR)$(bindir)
+ @list='$(bin_PROGRAMS)'; for p in $$list; do \
+ if test -f $$p; then \
+- echo " $(INSTALL_PROGRAM) $(INSTALL_STRIP_FLAG) $$p $(DESTDIR)$(bindir)/`echo $$p|sed 's/$(EXEEXT)$$//'|sed '$(transform)'|sed 's/$$/$(EXEEXT)/'`"; \
+- $(INSTALL_PROGRAM) $(INSTALL_STRIP_FLAG) $$p $(DESTDIR)$(bindir)/`echo $$p|sed 's/$(EXEEXT)$$//'|sed '$(transform)'|sed 's/$$/$(EXEEXT)/'`; \
++ echo " $(INSTALL_PROGRAM) $$p $(DESTDIR)$(bindir)/`echo $$p|sed 's/$(EXEEXT)$$//'|sed '$(transform)'|sed 's/$$/$(EXEEXT)/'`"; \
++ $(INSTALL_PROGRAM) $$p $(DESTDIR)$(bindir)/`echo $$p|sed 's/$(EXEEXT)$$//'|sed '$(transform)'|sed 's/$$/$(EXEEXT)/'`; \
+ else :; fi; \
+ done
+
+@@ -292,7 +291,7 @@
+ @for file in $(DISTFILES); do \
+ d=$(srcdir); \
+ if test -d $$d/$$file; then \
+- cp -pr $$d/$$file $(distdir)/$$file; \
++ cp -pr $$/$$file $(distdir)/$$file; \
+ else \
+ test -f $(distdir)/$$file \
+ || ln $$d/$$file $(distdir)/$$file 2> /dev/null \
+@@ -353,7 +352,7 @@
+ all-am: Makefile $(ANSI2KNR) $(PROGRAMS) $(HEADERS)
+ all-redirect: all-am
+ install-strip:
+- $(MAKE) $(AM_MAKEFLAGS) INSTALL_STRIP_FLAG=-s install
++ $(MAKE) $(AM_MAKEFLAGS) AM_INSTALL_PROGRAM_FLAGS=-s install
+ installdirs:
+ $(mkinstalldirs) $(DESTDIR)$(bindir)
+
+--- lrzsz-0.12.21.orig/src/lrz.c
++++ lrzsz-0.12.21/src/lrz.c
+@@ -44,7 +44,6 @@
+ #ifndef STRICT_PROTOTYPES
+ extern time_t time();
+ extern char *strerror();
+-extern char *strstr();
+ #endif
+
+ #ifndef HAVE_ERRNO_DECLARATION
+--- lrzsz-0.12.21.orig/src/lsz.c
++++ lrzsz-0.12.21/src/lsz.c
+@@ -53,7 +53,6 @@
+ #ifndef STRICT_PROTOTYPES
+ extern time_t time();
+ extern char *strerror();
+-extern char *strstr();
+ #endif
+
+ #ifndef HAVE_ERRNO_DECLARATION
+--- lrzsz-0.12.21.orig/testsuite/Makefile.in
++++ lrzsz-0.12.21/testsuite/Makefile.in
+@@ -1,4 +1,4 @@
+-# Makefile.in generated automatically by automake 1.4a from Makefile.am
++# Makefile.in generated automatically by automake 1.4 from Makefile.am
+
+ # Copyright (C) 1994, 1995-8, 1999 Free Software Foundation, Inc.
+ # This Makefile.in is free software; the Free Software Foundation
+@@ -46,10 +46,9 @@
+ AUTOHEADER = @AUTOHEADER@
+
+ INSTALL = @INSTALL@
+-INSTALL_PROGRAM = @INSTALL_PROGRAM@
++INSTALL_PROGRAM = @INSTALL_PROGRAM@ $(AM_INSTALL_PROGRAM_FLAGS)
+ INSTALL_DATA = @INSTALL_DATA@
+ INSTALL_SCRIPT = @INSTALL_SCRIPT@
+-INSTALL_STRIP_FLAG =
+ transform = @program_transform_name@
+
+ NORMAL_INSTALL = :
+@@ -103,7 +102,7 @@
+ DIST_COMMON = Makefile.am Makefile.in
+
+
+-TAR = gtar
++TAR = tar
+ GZIP_ENV = --best
+ EXPECT = expect
+ RUNTEST = runtest
+@@ -133,7 +132,7 @@
+ @for file in $(DISTFILES); do \
+ d=$(srcdir); \
+ if test -d $$d/$$file; then \
+- cp -pr $$d/$$file $(distdir)/$$file; \
++ cp -pr $$/$$file $(distdir)/$$file; \
+ else \
+ test -f $(distdir)/$$file \
+ || ln $$d/$$file $(distdir)/$$file 2> /dev/null \
+@@ -192,7 +191,7 @@
+ all-am: Makefile
+ all-redirect: all-am
+ install-strip:
+- $(MAKE) $(AM_MAKEFLAGS) INSTALL_STRIP_FLAG=-s install
++ $(MAKE) $(AM_MAKEFLAGS) AM_INSTALL_PROGRAM_FLAGS=-s install
+ installdirs:
+
+
diff --git a/source/a/minicom/minicom.SlackBuild b/source/a/minicom/minicom.SlackBuild
new file mode 100755
index 00000000..c9249f64
--- /dev/null
+++ b/source/a/minicom/minicom.SlackBuild
@@ -0,0 +1,134 @@
+#!/bin/sh
+
+# Copyright 2008, 2009 Patrick J. Volkerding, Sebeka, Minnesota, USA
+# All rights reserved.
+#
+# Redistribution and use of this script, with or without modification, is
+# permitted provided that the following conditions are met:
+#
+# 1. Redistributions of this script must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# 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.
+
+
+VERSION=2.1
+ARCH=${ARCH:-x86_64}
+BUILD=${BUILD:-3}
+
+CWD=$(pwd)
+TMP=${TMP:-/tmp}
+PKG=$TMP/package-minicom
+
+if [ "$ARCH" = "i486" ]; then
+ SLKCFLAGS="-O2 -march=i486 -mcpu=i686"
+elif [ "$ARCH" = "s390" ]; then
+ SLKCFLAGS="-O2"
+elif [ "$ARCH" = "x86_64" ]; then
+ SLKCFLAGS="-O2 -fPIC"
+fi
+
+rm -rf $PKG
+mkdir -p $TMP $PKG
+
+# minicom
+cd $TMP
+rm -rf minicom-$VERSION
+tar xzvf $CWD/minicom-$VERSION.tar.gz
+cd minicom-$VERSION
+chown -R root:root .
+find . -perm 777 -exec chmod 755 {} \;
+find . -perm 664 -exec chmod 644 {} \;
+# Fix re-declaration of BC in termcap.h
+zcat $CWD/wintcap.diff.gz | patch -p1 --verbose || exit 1
+CFLAGS="$SLKCFLAGS" \
+./configure \
+ --prefix=/usr \
+ --sysconfdir=/etc
+make -j3
+make install DESTDIR=$PKG
+mkdir -p $PKG/etc
+zcat $CWD/minicom.users.gz > $PKG/etc/minicom.users.new
+zcat $CWD/minirc.dfl.gz > $PKG/etc/minirc.dfl.new
+gzip -9 $PKG/usr/man/man?/*.?
+mkdir -p $PKG/usr/doc/minicom-$VERSION
+cp -a \
+ ABOUT-NLS AUTHORS COPYING ChangeLog FILE_ID.DIZ INSTALL NEWS README TODO \
+ doc \
+ $PKG/usr/doc/minicom-$VERSION
+
+# lzrz
+# If autoconf causes failure here (which it probably will),
+# remove it temporarily and the build should work fine...
+cd $TMP
+tar xzvf $CWD/lrzsz_0.12.21.orig.tar.gz
+cd lrzsz-990823
+# Make x86_64 a valid machine type (thanks to Fred Emmott)
+zcat $CWD/config.sub-x86_64.diff.gz | patch -p1 --verbose || exit 1
+zcat $CWD/lrzsz_0.12.21-4.diff.gz | patch -p1 --verbose || exit 1
+chown -R root:root .
+./configure \
+ --prefix=/usr \
+ $ARCH-slackware-linux
+make -j3
+cd src
+cat lrz > $PKG/usr/bin/lrz
+cat lsz > $PKG/usr/bin/lsz
+chmod 755 $PKG/usr/bin/l*z
+cd ../man
+for page in lrz.1 lsz.1 ; do
+ cat $page | gzip -9c > $PKG/usr/man/man1/$page.gz
+done
+echo '.so man1/lrz.1' | gzip -9c > $PKG/usr/man/man1/rz.1.gz
+echo '.so man1/lsz.1' | gzip -9c > $PKG/usr/man/man1/sz.1.gz
+cd ../po
+mkdir -p $PKG/usr/share/locale/de/LC_MESSAGES
+cat de.gmo > $PKG/usr/share/locale/de/LC_MESSAGES/lrzsz.mo
+cd ..
+mkdir -p $PKG/usr/doc/lrzsz-0.12.21
+cp -a ABOUT-NLS AUTHORS COMPATABILITY COPYING INSTALL NEWS README-alpha \
+ README.cvs README.gettext README.isdn4linux README.systems \
+ README.tests THANKS TODO $PKG/usr/doc/lrzsz-0.12.21
+
+
+( cd $PKG
+ ( cd usr/bin ; rm -rf rx )
+ ( cd usr/bin ; ln -sf rz rx )
+ ( cd usr/bin ; rm -rf rb )
+ ( cd usr/bin ; ln -sf rz rb )
+ ( cd usr/bin ; rm -rf sb )
+ ( cd usr/bin ; ln -sf sz sb )
+ ( cd usr/bin ; rm -rf sx )
+ ( cd usr/bin ; ln -sf sz sx )
+ ( cd usr/bin ; rm -rf rz )
+ ( cd usr/bin ; ln -sf lrz rz )
+ ( cd usr/bin ; rm -rf lrb )
+ ( cd usr/bin ; ln -sf lrz lrb )
+ ( cd usr/bin ; rm -rf lrx )
+ ( cd usr/bin ; ln -sf lrz lrx )
+ ( cd usr/bin ; rm -rf sz )
+ ( cd usr/bin ; ln -sf lsz sz )
+ ( cd usr/bin ; rm -rf lsb )
+ ( cd usr/bin ; ln -sf lsz lsb )
+ ( cd usr/bin ; rm -rf lrx )
+ ( cd usr/bin ; ln -sf lsz lrx )
+ find . | xargs file | grep "executable" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
+ find . | xargs file | grep "shared object" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
+)
+mkdir -p $PKG/install
+cat $CWD/slack-desc > $PKG/install/slack-desc
+zcat $CWD/doinst.sh.gz > $PKG/install/doinst.sh
+
+
+cd $PKG
+makepkg -l y -c n $TMP/minicom-$VERSION-$ARCH-$BUILD.txz
+
diff --git a/source/a/minicom/minicom.users b/source/a/minicom/minicom.users
new file mode 100644
index 00000000..509d86f4
--- /dev/null
+++ b/source/a/minicom/minicom.users
@@ -0,0 +1,36 @@
+# $Id: minicom.users,v 1.1.1.1 1999/12/18 11:18:51 misiek Exp $
+# Minicom.users Access file for the minicom program.
+#
+# Format: Either just one username per line, or
+# a username followed by one or more
+# configuration-names. The name of the
+# default configuration is "dfl". The maximum
+# significant line length is 70 characters.
+#
+# Location: The minicom library directory, probably
+# /etc or /var/lib/minicom or whatever.
+#
+# Notes: If you don't install this file in the
+# specified location, everybody will have
+# access to minicom.
+#
+# This doesn't matter if minicom isn't installed
+# setuid root since access will then be based
+# on the permissions set on the serial port.
+#
+
+#
+# Who may use minicom?
+#
+# User [line] [..line]
+#
+
+# Everyone has access to all configurations.
+ALL
+
+## The rest are examples.
+## # Erik only has access to the default configuration
+## erik dfl
+##
+## # minicom has access to the default configuration, and configuration 'tty5'.
+## minicom dfl tty5
diff --git a/source/a/minicom/minirc.dfl b/source/a/minicom/minirc.dfl
new file mode 100644
index 00000000..42e9d8fe
--- /dev/null
+++ b/source/a/minicom/minirc.dfl
@@ -0,0 +1 @@
+# Machine-generated file - use "minicom -s" to change parameters.
diff --git a/source/a/minicom/slack-desc b/source/a/minicom/slack-desc
new file mode 100644
index 00000000..67d1878c
--- /dev/null
+++ b/source/a/minicom/slack-desc
@@ -0,0 +1,19 @@
+# HOW TO EDIT THIS FILE:
+# The "handy ruler" below makes it easier to edit a package description. Line
+# up the first '|' above the ':' following the base package name, and the '|'
+# on the right side marks the last column you can put a character in. You must
+# make exactly 11 lines for the formatting to be correct. It's also
+# customary to leave one space after the ':'.
+
+ |-----handy-ruler------------------------------------------------------|
+minicom: minicom (communications package)
+minicom:
+minicom: Minicom - a full featured menu-driven communications package similar
+minicom: to the DOS program 'Telix'. Also includes sz/rz - utilities used to
+minicom: upload and download files using the Zmodem protocol.
+minicom:
+minicom:
+minicom:
+minicom:
+minicom:
+minicom:
diff --git a/source/a/minicom/wintcap.diff b/source/a/minicom/wintcap.diff
new file mode 100644
index 00000000..40d005b3
--- /dev/null
+++ b/source/a/minicom/wintcap.diff
@@ -0,0 +1,44 @@
+--- minicom-2.1/src/window.c.orig 2003-05-17 00:06:26.000000000 +0400
++++ minicom-2.1/src/window.c 2007-08-26 11:21:04.000000000 +0400
+@@ -62,7 +62,7 @@
+ static char *CS, *SF, *SR, *VB, *BL;
+ static char *VE, *VI, *KS, *KE;
+ static char *CD, *CL, *IC, *DC;
+-static char *BC, *CR, *NL;
++static char *BCs, *CR, *NL;
+ #if ST_LINE
+ static char *TS, *FS, *DS;
+ #endif
+@@ -322,8 +322,8 @@
+ else if (NL != CNULL && x == 0 && x == curx && y == cury + 1)
+ outstr(NL);
+ #endif
+- else if (BC != CNULL && y == cury && x == curx - 1)
+- outstr(BC);
++ else if (BCs != CNULL && y == cury && x == curx - 1)
++ outstr(BCs);
+ else
+ outstr(tgoto(CM, x, y));
+ curx = x;
+@@ -1918,7 +1918,7 @@
+ CL = tgetstr("cl", &_tptr);
+ IC = tgetstr("ic", &_tptr);
+ DC = tgetstr("dc", &_tptr);
+- BC = tgetstr("bc", &_tptr);
++ BCs = tgetstr("bc", &_tptr);
+ CR = tgetstr("cr", &_tptr);
+ NL = tgetstr("nl", &_tptr);
+ AC = tgetstr("ac", &_tptr);
+@@ -1967,10 +1967,10 @@
+ _has_am = tgetflag("am");
+ _mv_standout = tgetflag("ms");
+ if (tgetflag("bs")) {
+- if (BC == CNULL) BC = "\b";
++ if (BCs == CNULL) BCs = "\b";
+ }
+ else
+- BC = CNULL;
++ BCs = CNULL;
+
+ /* Special IBM box-drawing characters */
+ D_UL = 201;
diff --git a/source/a/mkinitrd/README.initrd b/source/a/mkinitrd/README.initrd
new file mode 100644
index 00000000..f027fa27
--- /dev/null
+++ b/source/a/mkinitrd/README.initrd
@@ -0,0 +1,100 @@
+
+Slackware initrd mini HOWTO
+by Patrick Volkerding, volkerdi@slackware.com
+Wed Jun 17 01:49:18 CDT 2009
+
+This document describes how to create and install an initrd, which may be
+required to use the 2.6 kernel. Also see "man mkinitrd".
+
+1. What is an initrd?
+2. Why to I need an initrd?
+3. How do I build the initrd?
+4. Now that I've built an initrd, how do I use it?
+
+
+1. What is an initrd?
+
+Initrd stands for "initial ramdisk". An initial ramdisk is a very small
+Linux filesystem that is loaded into RAM and mounted as the kernel boots,
+and before the main root filesystem is mounted.
+
+2. Why do I need an initrd?
+
+The usual reason to use an initrd is because you need to load kernel
+modules before mounting the root partition. Usually these modules are
+required to support the filesystem used by the root partition (ext3,
+reiserfs, xfs), or perhaps the controller that the hard drive is attached
+to (SCSI, RAID, etc). Essentially, there are so many different options
+available in modern Linux kernels that it isn't practical to try to ship
+many different kernels to try to cover everyone's needs. It's a lot more
+flexible to ship a generic kernel and a set of kernel modules for it.
+
+3. How do I build the initrd?
+
+The easiest way to make the initrd is to use the mkinitrd script included
+in Slackware's mkinitrd package. We'll walk through the process of
+upgrading to the generic 2.6.29.5 Linux kernel using the packages
+found in Slackware's slackware/a/ directory.
+
+First, make sure the kernel, kernel modules, and mkinitrd package are
+installed (the current version numbers might be a little different, so
+this is just an example):
+
+ installpkg kernel-generic-2.6.29.5-i686-1.tgz
+ installpkg kernel-modules-2.6.29.5-i686-1.tgz
+ installpkg mkinitrd-1.1.0-i486-1.tgz
+
+Change into the /boot directory:
+
+ cd /boot
+
+Now you'll want to run "mkinitrd". I'm using reiserfs for my root
+filesystem, and since it's an IDE system the reiserfs module will be
+the only one I need to load:
+
+ mkinitrd -c -k 2.6.29.5 -m reiserfs
+
+This should do two things. First, it will create a directory
+/boot/initrd-tree containing the initrd's filesystem. Then it will
+create an initrd (/boot/initrd.gz) from this tree. If you wanted to,
+you could make some additional changes in /boot/initrd-tree/ and
+then run mkinitrd again without options to rebuild the image. That's
+optional, though, and only advanced users will need to think about that.
+
+Here's another example: Build an initrd image using Linux 2.6.29.5
+kernel modules for a system with an ext3 root partition on /dev/hdb3.
+Note that you need the mbcache, jbd, and ext3 modules to use ext3:
+
+ mkinitrd -c -k 2.6.29.5 -m mbcache:jbd:ext3 -f ext3 -r /dev/hdb3
+
+
+4. Now that I've built an initrd, how do I use it?
+
+Now that you've got an initrd (/boot/initrd.gz), you'll want to load
+it along with the kernel at boot time. If you use LILO for your boot
+loader you'll need to edit /etc/lilo.conf and add a line to load the
+initrd. Here's an example section of lilo.conf showing how this is
+done:
+
+# Linux bootable partition config begins
+image = /boot/vmlinuz-generic-2.6.29.5
+ initrd = /boot/initrd.gz
+ root = /dev/hda6
+ label = Lnx26295
+ read-only
+# Linux bootable partition config ends
+
+The initrd is loaded by the "initrd = /boot/initrd.gz" line.
+Just add the line right below the line for the kernel image you use.
+Save the file, and then run LILO again ('lilo' at the command line).
+You'll need to run lilo every time you edit lilo.conf or rebuild the
+initrd.
+
+Other bootloaders such as syslinux also support the use of an initrd.
+See the documentation for those programs for details on using an
+initrd with them.
+
+
+---------
+
+Have fun!
diff --git a/source/a/mkinitrd/archive/busybox-1.7.2.no-gc-sections.diff b/source/a/mkinitrd/archive/busybox-1.7.2.no-gc-sections.diff
new file mode 100644
index 00000000..e4f64367
--- /dev/null
+++ b/source/a/mkinitrd/archive/busybox-1.7.2.no-gc-sections.diff
@@ -0,0 +1,11 @@
+--- ./Makefile.orig 2007-09-29 18:54:25.000000000 -0500
++++ ./Makefile 2007-11-27 15:35:42.000000000 -0600
+@@ -570,7 +570,7 @@
+ quiet_cmd_busybox__ ?= LINK $@
+ cmd_busybox__ ?= $(srctree)/scripts/trylink $(CC) $(LDFLAGS) \
+ -o $@ -Wl,-Map -Wl,$@.map \
+- -Wl,--warn-common -Wl,--sort-common -Wl,--gc-sections \
++ -Wl,--warn-common -Wl,--sort-common \
+ -Wl,--start-group $(busybox-all) -Wl,--end-group \
+ $(LDLIBS)
+
diff --git a/source/a/mkinitrd/archive/busybox-1.7.2.remove_warning.diff b/source/a/mkinitrd/archive/busybox-1.7.2.remove_warning.diff
new file mode 100644
index 00000000..99257fc7
--- /dev/null
+++ b/source/a/mkinitrd/archive/busybox-1.7.2.remove_warning.diff
@@ -0,0 +1,20 @@
+--- ./applets/applets.c.orig 2007-09-16 13:48:10.000000000 -0500
++++ ./applets/applets.c 2007-10-04 22:07:47.000000000 -0500
+@@ -16,7 +16,7 @@
+ #include "busybox.h"
+
+ /* Apparently uclibc defines __GLIBC__ (compat trick?). Oh well. */
+-#if ENABLE_STATIC && defined(__GLIBC__) && !defined(__UCLIBC__)
++/* #if ENABLE_STATIC && defined(__GLIBC__) && !defined(__UCLIBC__)
+ #warning Static linking against glibc produces buggy executables
+ #warning (glibc does not cope well with ld --gc-sections).
+ #warning See sources.redhat.com/bugzilla/show_bug.cgi?id=3400
+@@ -24,7 +24,7 @@
+ #warning If you still want to do it, remove -Wl,--gc-sections
+ #warning from top-level Makefile and remove this warning.
+ #error Aborting compilation.
+-#endif
++#endif */
+
+
+ /* Declare <applet>_main() */
diff --git a/source/a/mkinitrd/archive/busybox-1.7.2.tar.bz2.sign b/source/a/mkinitrd/archive/busybox-1.7.2.tar.bz2.sign
new file mode 100644
index 00000000..19ac2fab
--- /dev/null
+++ b/source/a/mkinitrd/archive/busybox-1.7.2.tar.bz2.sign
@@ -0,0 +1,18 @@
+-----BEGIN PGP SIGNED MESSAGE-----
+Hash: SHA1
+
+busybox-1.7.2.tar.bz2 released Sun, 30 Sep 2007 01:02:10 +0100
+
+MD5: c91ec9756e2000073a9dd8fa9fc3f89e busybox-1.7.2.tar.bz2
+SHA1: d9c618a7b104af4e70d623b1b6f3bc454405e12b busybox-1.7.2.tar.bz2
+
+To verify this signature, you can obtain my public key
+from http://busybox.net/~vda/vda_pubkey.gpg
+
+-----BEGIN PGP SIGNATURE-----
+Version: GnuPG v1.4.2.2 (GNU/Linux)
+
+iD8DBQFG/ueHR7cMVazJllsRAuBAAJ9r7SuXFQJCm/k0KZp39oDMsqBy7ACffZ9t
+r/kwDWTYEr7doIKcNINt+p0=
+=GHTs
+-----END PGP SIGNATURE-----
diff --git a/source/a/mkinitrd/archive/busybox-dot-config.1.11.2 b/source/a/mkinitrd/archive/busybox-dot-config.1.11.2
new file mode 100644
index 00000000..012350ef
--- /dev/null
+++ b/source/a/mkinitrd/archive/busybox-dot-config.1.11.2
@@ -0,0 +1,855 @@
+#
+# Automatically generated make config: don't edit
+# Busybox version: 1.11.2
+# Tue Sep 23 23:25:46 2008
+#
+CONFIG_HAVE_DOT_CONFIG=y
+
+#
+# Busybox Settings
+#
+
+#
+# General Configuration
+#
+CONFIG_DESKTOP=y
+# CONFIG_FEATURE_ASSUME_UNICODE is not set
+CONFIG_FEATURE_BUFFERS_USE_MALLOC=y
+# CONFIG_FEATURE_BUFFERS_GO_ON_STACK is not set
+# CONFIG_FEATURE_BUFFERS_GO_IN_BSS is not set
+CONFIG_SHOW_USAGE=y
+CONFIG_FEATURE_VERBOSE_USAGE=y
+CONFIG_FEATURE_COMPRESS_USAGE=y
+CONFIG_FEATURE_INSTALLER=y
+CONFIG_LOCALE_SUPPORT=y
+CONFIG_GETOPT_LONG=y
+CONFIG_FEATURE_DEVPTS=y
+# CONFIG_FEATURE_CLEAN_UP is not set
+CONFIG_FEATURE_PIDFILE=y
+CONFIG_FEATURE_SUID=y
+CONFIG_FEATURE_SUID_CONFIG=y
+CONFIG_FEATURE_SUID_CONFIG_QUIET=y
+# CONFIG_SELINUX is not set
+# CONFIG_FEATURE_PREFER_APPLETS is not set
+CONFIG_BUSYBOX_EXEC_PATH="/proc/self/exe"
+CONFIG_FEATURE_SYSLOG=y
+CONFIG_FEATURE_HAVE_RPC=y
+
+#
+# Build Options
+#
+CONFIG_STATIC=y
+# CONFIG_PIE is not set
+# CONFIG_NOMMU is not set
+# CONFIG_BUILD_LIBBUSYBOX is not set
+# CONFIG_FEATURE_INDIVIDUAL is not set
+# CONFIG_FEATURE_SHARED_BUSYBOX is not set
+CONFIG_LFS=y
+CONFIG_CROSS_COMPILER_PREFIX=""
+
+#
+# Debugging Options
+#
+# CONFIG_DEBUG is not set
+# CONFIG_DEBUG_PESSIMIZE is not set
+# CONFIG_WERROR is not set
+CONFIG_NO_DEBUG_LIB=y
+# CONFIG_DMALLOC is not set
+# CONFIG_EFENCE is not set
+CONFIG_INCLUDE_SUSv2=y
+
+#
+# Installation Options
+#
+CONFIG_INSTALL_NO_USR=y
+CONFIG_INSTALL_APPLET_SYMLINKS=y
+# CONFIG_INSTALL_APPLET_HARDLINKS is not set
+# CONFIG_INSTALL_APPLET_SCRIPT_WRAPPERS is not set
+# CONFIG_INSTALL_APPLET_DONT is not set
+# CONFIG_INSTALL_SH_APPLET_SYMLINK is not set
+# CONFIG_INSTALL_SH_APPLET_HARDLINK is not set
+# CONFIG_INSTALL_SH_APPLET_SCRIPT_WRAPPER is not set
+CONFIG_PREFIX="./_install"
+
+#
+# Busybox Library Tuning
+#
+CONFIG_PASSWORD_MINLEN=6
+CONFIG_MD5_SIZE_VS_SPEED=2
+# CONFIG_FEATURE_FAST_TOP is not set
+# CONFIG_FEATURE_ETC_NETWORKS is not set
+CONFIG_FEATURE_EDITING=y
+CONFIG_FEATURE_EDITING_MAX_LEN=1024
+CONFIG_FEATURE_EDITING_VI=y
+CONFIG_FEATURE_EDITING_HISTORY=64
+# CONFIG_FEATURE_EDITING_SAVEHISTORY is not set
+CONFIG_FEATURE_TAB_COMPLETION=y
+# CONFIG_FEATURE_USERNAME_COMPLETION is not set
+CONFIG_FEATURE_EDITING_FANCY_PROMPT=y
+CONFIG_FEATURE_VERBOSE_CP_MESSAGE=y
+CONFIG_FEATURE_COPYBUF_KB=4
+CONFIG_MONOTONIC_SYSCALL=y
+CONFIG_IOCTL_HEX2STR_ERROR=y
+# CONFIG_FEATURE_HWIB is not set
+
+#
+# Applets
+#
+
+#
+# Archival Utilities
+#
+CONFIG_AR=y
+CONFIG_FEATURE_AR_LONG_FILENAMES=y
+CONFIG_BUNZIP2=y
+CONFIG_BZIP2=y
+CONFIG_CPIO=y
+CONFIG_FEATURE_CPIO_O=y
+# CONFIG_DPKG is not set
+# CONFIG_DPKG_DEB is not set
+# CONFIG_FEATURE_DPKG_DEB_EXTRACT_ONLY is not set
+CONFIG_GUNZIP=y
+CONFIG_FEATURE_GUNZIP_UNCOMPRESS=y
+CONFIG_GZIP=y
+CONFIG_RPM2CPIO=y
+# CONFIG_RPM is not set
+# CONFIG_FEATURE_RPM_BZ2 is not set
+CONFIG_TAR=y
+CONFIG_FEATURE_TAR_CREATE=y
+CONFIG_FEATURE_TAR_GZIP=y
+CONFIG_FEATURE_TAR_BZIP2=y
+CONFIG_FEATURE_TAR_LZMA=y
+CONFIG_FEATURE_TAR_COMPRESS=y
+CONFIG_FEATURE_TAR_AUTODETECT=y
+CONFIG_FEATURE_TAR_FROM=y
+CONFIG_FEATURE_TAR_OLDGNU_COMPATIBILITY=y
+# CONFIG_FEATURE_TAR_OLDSUN_COMPATIBILITY is not set
+CONFIG_FEATURE_TAR_GNU_EXTENSIONS=y
+CONFIG_FEATURE_TAR_LONG_OPTIONS=y
+CONFIG_FEATURE_TAR_UNAME_GNAME=y
+CONFIG_UNCOMPRESS=y
+CONFIG_UNLZMA=y
+CONFIG_FEATURE_LZMA_FAST=y
+CONFIG_UNZIP=y
+
+#
+# Common options for cpio and tar
+#
+# CONFIG_FEATURE_DEB_TAR_GZ is not set
+# CONFIG_FEATURE_DEB_TAR_BZ2 is not set
+# CONFIG_FEATURE_DEB_TAR_LZMA is not set
+
+#
+# Coreutils
+#
+CONFIG_BASENAME=y
+CONFIG_CAL=y
+CONFIG_CAT=y
+CONFIG_CATV=y
+CONFIG_CHGRP=y
+CONFIG_CHMOD=y
+CONFIG_CHOWN=y
+CONFIG_CHROOT=y
+CONFIG_CKSUM=y
+CONFIG_COMM=y
+CONFIG_CP=y
+CONFIG_CUT=y
+CONFIG_DATE=y
+CONFIG_FEATURE_DATE_ISOFMT=y
+CONFIG_DD=y
+CONFIG_FEATURE_DD_SIGNAL_HANDLING=y
+CONFIG_FEATURE_DD_IBS_OBS=y
+CONFIG_DF=y
+CONFIG_FEATURE_DF_INODE=y
+CONFIG_DIRNAME=y
+CONFIG_DOS2UNIX=y
+CONFIG_UNIX2DOS=y
+CONFIG_DU=y
+CONFIG_FEATURE_DU_DEFAULT_BLOCKSIZE_1K=y
+CONFIG_ECHO=y
+CONFIG_FEATURE_FANCY_ECHO=y
+CONFIG_ENV=y
+CONFIG_FEATURE_ENV_LONG_OPTIONS=y
+CONFIG_EXPAND=y
+CONFIG_FEATURE_EXPAND_LONG_OPTIONS=y
+CONFIG_EXPR=y
+CONFIG_EXPR_MATH_SUPPORT_64=y
+CONFIG_FALSE=y
+CONFIG_FOLD=y
+CONFIG_HEAD=y
+CONFIG_FEATURE_FANCY_HEAD=y
+CONFIG_HOSTID=y
+CONFIG_ID=y
+CONFIG_INSTALL=y
+CONFIG_FEATURE_INSTALL_LONG_OPTIONS=y
+CONFIG_LENGTH=y
+CONFIG_LN=y
+CONFIG_LOGNAME=y
+CONFIG_LS=y
+CONFIG_FEATURE_LS_FILETYPES=y
+CONFIG_FEATURE_LS_FOLLOWLINKS=y
+CONFIG_FEATURE_LS_RECURSIVE=y
+CONFIG_FEATURE_LS_SORTFILES=y
+CONFIG_FEATURE_LS_TIMESTAMPS=y
+CONFIG_FEATURE_LS_USERNAME=y
+CONFIG_FEATURE_LS_COLOR=y
+CONFIG_FEATURE_LS_COLOR_IS_DEFAULT=y
+CONFIG_MD5SUM=y
+CONFIG_MKDIR=y
+CONFIG_FEATURE_MKDIR_LONG_OPTIONS=y
+CONFIG_MKFIFO=y
+CONFIG_MKNOD=y
+CONFIG_MV=y
+CONFIG_FEATURE_MV_LONG_OPTIONS=y
+CONFIG_NICE=y
+CONFIG_NOHUP=y
+CONFIG_OD=y
+CONFIG_PRINTENV=y
+CONFIG_PRINTF=y
+CONFIG_PWD=y
+CONFIG_READLINK=y
+CONFIG_FEATURE_READLINK_FOLLOW=y
+CONFIG_REALPATH=y
+CONFIG_RM=y
+CONFIG_RMDIR=y
+# CONFIG_FEATURE_RMDIR_LONG_OPTIONS is not set
+CONFIG_SEQ=y
+CONFIG_SHA1SUM=y
+CONFIG_SLEEP=y
+CONFIG_FEATURE_FANCY_SLEEP=y
+CONFIG_SORT=y
+CONFIG_FEATURE_SORT_BIG=y
+CONFIG_SPLIT=y
+CONFIG_FEATURE_SPLIT_FANCY=y
+CONFIG_STAT=y
+CONFIG_FEATURE_STAT_FORMAT=y
+CONFIG_STTY=y
+CONFIG_SUM=y
+CONFIG_SYNC=y
+CONFIG_TAC=y
+CONFIG_TAIL=y
+CONFIG_FEATURE_FANCY_TAIL=y
+CONFIG_TEE=y
+CONFIG_FEATURE_TEE_USE_BLOCK_IO=y
+CONFIG_TEST=y
+CONFIG_FEATURE_TEST_64=y
+CONFIG_TOUCH=y
+CONFIG_TR=y
+CONFIG_FEATURE_TR_CLASSES=y
+CONFIG_FEATURE_TR_EQUIV=y
+CONFIG_TRUE=y
+CONFIG_TTY=y
+CONFIG_UNAME=y
+CONFIG_UNEXPAND=y
+CONFIG_FEATURE_UNEXPAND_LONG_OPTIONS=y
+CONFIG_UNIQ=y
+CONFIG_USLEEP=y
+CONFIG_UUDECODE=y
+CONFIG_UUENCODE=y
+CONFIG_WC=y
+CONFIG_FEATURE_WC_LARGE=y
+CONFIG_WHO=y
+CONFIG_WHOAMI=y
+CONFIG_YES=y
+
+#
+# Common options for cp and mv
+#
+CONFIG_FEATURE_PRESERVE_HARDLINKS=y
+
+#
+# Common options for ls, more and telnet
+#
+CONFIG_FEATURE_AUTOWIDTH=y
+
+#
+# Common options for df, du, ls
+#
+CONFIG_FEATURE_HUMAN_READABLE=y
+
+#
+# Common options for md5sum, sha1sum
+#
+CONFIG_FEATURE_MD5_SHA1_SUM_CHECK=y
+
+#
+# Console Utilities
+#
+CONFIG_CHVT=y
+CONFIG_CLEAR=y
+CONFIG_DEALLOCVT=y
+CONFIG_DUMPKMAP=y
+CONFIG_KBD_MODE=y
+CONFIG_LOADFONT=y
+CONFIG_LOADKMAP=y
+CONFIG_OPENVT=y
+CONFIG_RESET=y
+CONFIG_RESIZE=y
+CONFIG_FEATURE_RESIZE_PRINT=y
+CONFIG_SETCONSOLE=y
+CONFIG_FEATURE_SETCONSOLE_LONG_OPTIONS=y
+CONFIG_SETKEYCODES=y
+CONFIG_SETLOGCONS=y
+
+#
+# Debian Utilities
+#
+CONFIG_MKTEMP=y
+CONFIG_PIPE_PROGRESS=y
+CONFIG_RUN_PARTS=y
+CONFIG_FEATURE_RUN_PARTS_LONG_OPTIONS=y
+CONFIG_FEATURE_RUN_PARTS_FANCY=y
+CONFIG_START_STOP_DAEMON=y
+CONFIG_FEATURE_START_STOP_DAEMON_FANCY=y
+CONFIG_FEATURE_START_STOP_DAEMON_LONG_OPTIONS=y
+CONFIG_WHICH=y
+
+#
+# Editors
+#
+CONFIG_AWK=y
+CONFIG_FEATURE_AWK_MATH=y
+CONFIG_CMP=y
+CONFIG_DIFF=y
+CONFIG_FEATURE_DIFF_BINARY=y
+CONFIG_FEATURE_DIFF_DIR=y
+CONFIG_FEATURE_DIFF_MINIMAL=y
+CONFIG_ED=y
+CONFIG_PATCH=y
+CONFIG_SED=y
+CONFIG_VI=y
+CONFIG_FEATURE_VI_MAX_LEN=1024
+CONFIG_FEATURE_VI_8BIT=y
+CONFIG_FEATURE_VI_COLON=y
+CONFIG_FEATURE_VI_YANKMARK=y
+CONFIG_FEATURE_VI_SEARCH=y
+CONFIG_FEATURE_VI_USE_SIGNALS=y
+CONFIG_FEATURE_VI_DOT_CMD=y
+CONFIG_FEATURE_VI_READONLY=y
+CONFIG_FEATURE_VI_SETOPTS=y
+CONFIG_FEATURE_VI_SET=y
+CONFIG_FEATURE_VI_WIN_RESIZE=y
+CONFIG_FEATURE_VI_OPTIMIZE_CURSOR=y
+CONFIG_FEATURE_ALLOW_EXEC=y
+
+#
+# Finding Utilities
+#
+CONFIG_FIND=y
+CONFIG_FEATURE_FIND_PRINT0=y
+CONFIG_FEATURE_FIND_MTIME=y
+CONFIG_FEATURE_FIND_MMIN=y
+CONFIG_FEATURE_FIND_PERM=y
+CONFIG_FEATURE_FIND_TYPE=y
+CONFIG_FEATURE_FIND_XDEV=y
+CONFIG_FEATURE_FIND_MAXDEPTH=y
+CONFIG_FEATURE_FIND_NEWER=y
+CONFIG_FEATURE_FIND_INUM=y
+CONFIG_FEATURE_FIND_EXEC=y
+CONFIG_FEATURE_FIND_USER=y
+CONFIG_FEATURE_FIND_GROUP=y
+CONFIG_FEATURE_FIND_NOT=y
+CONFIG_FEATURE_FIND_DEPTH=y
+CONFIG_FEATURE_FIND_PAREN=y
+CONFIG_FEATURE_FIND_SIZE=y
+CONFIG_FEATURE_FIND_PRUNE=y
+# CONFIG_FEATURE_FIND_DELETE is not set
+CONFIG_FEATURE_FIND_PATH=y
+CONFIG_FEATURE_FIND_REGEX=y
+# CONFIG_FEATURE_FIND_CONTEXT is not set
+CONFIG_GREP=y
+CONFIG_FEATURE_GREP_EGREP_ALIAS=y
+CONFIG_FEATURE_GREP_FGREP_ALIAS=y
+CONFIG_FEATURE_GREP_CONTEXT=y
+CONFIG_XARGS=y
+CONFIG_FEATURE_XARGS_SUPPORT_CONFIRMATION=y
+CONFIG_FEATURE_XARGS_SUPPORT_QUOTES=y
+CONFIG_FEATURE_XARGS_SUPPORT_TERMOPT=y
+CONFIG_FEATURE_XARGS_SUPPORT_ZERO_TERM=y
+
+#
+# Init Utilities
+#
+CONFIG_INIT=y
+# CONFIG_DEBUG_INIT is not set
+CONFIG_FEATURE_USE_INITTAB=y
+CONFIG_FEATURE_KILL_REMOVED=y
+CONFIG_FEATURE_KILL_DELAY=10
+CONFIG_FEATURE_INIT_SCTTY=y
+CONFIG_FEATURE_INIT_SYSLOG=y
+CONFIG_FEATURE_EXTRA_QUIET=y
+# CONFIG_FEATURE_INIT_COREDUMPS is not set
+# CONFIG_FEATURE_INITRD is not set
+CONFIG_HALT=y
+CONFIG_MESG=y
+
+#
+# Login/Password Management Utilities
+#
+CONFIG_FEATURE_SHADOWPASSWDS=y
+# CONFIG_USE_BB_PWD_GRP is not set
+# CONFIG_USE_BB_SHADOW is not set
+CONFIG_USE_BB_CRYPT=y
+CONFIG_ADDGROUP=y
+CONFIG_FEATURE_ADDUSER_TO_GROUP=y
+CONFIG_DELGROUP=y
+CONFIG_FEATURE_DEL_USER_FROM_GROUP=y
+CONFIG_FEATURE_CHECK_NAMES=y
+CONFIG_ADDUSER=y
+# CONFIG_FEATURE_ADDUSER_LONG_OPTIONS is not set
+CONFIG_DELUSER=y
+CONFIG_GETTY=y
+CONFIG_FEATURE_UTMP=y
+CONFIG_FEATURE_WTMP=y
+CONFIG_LOGIN=y
+# CONFIG_PAM is not set
+CONFIG_LOGIN_SCRIPTS=y
+CONFIG_FEATURE_NOLOGIN=y
+# CONFIG_FEATURE_SECURETTY is not set
+CONFIG_PASSWD=y
+CONFIG_FEATURE_PASSWD_WEAK_CHECK=y
+CONFIG_CRYPTPW=y
+CONFIG_CHPASSWD=y
+CONFIG_SU=y
+CONFIG_FEATURE_SU_SYSLOG=y
+CONFIG_FEATURE_SU_CHECKS_SHELLS=y
+CONFIG_SULOGIN=y
+CONFIG_VLOCK=y
+
+#
+# Linux Ext2 FS Progs
+#
+CONFIG_CHATTR=y
+CONFIG_FSCK=y
+CONFIG_LSATTR=y
+
+#
+# Linux Module Utilities
+#
+CONFIG_DEPMOD=y
+# CONFIG_FEATURE_DEPMOD_PRUNE_FANCY is not set
+CONFIG_FEATURE_DEPMOD_ALIAS=y
+CONFIG_INSMOD=y
+# CONFIG_FEATURE_INSMOD_VERSION_CHECKING is not set
+CONFIG_FEATURE_INSMOD_KSYMOOPS_SYMBOLS=y
+# CONFIG_FEATURE_INSMOD_LOADINKMEM is not set
+# CONFIG_FEATURE_INSMOD_LOAD_MAP is not set
+# CONFIG_FEATURE_INSMOD_LOAD_MAP_FULL is not set
+CONFIG_RMMOD=y
+CONFIG_LSMOD=y
+CONFIG_FEATURE_LSMOD_PRETTY_2_6_OUTPUT=y
+CONFIG_MODPROBE=y
+CONFIG_FEATURE_MODPROBE_MULTIPLE_OPTIONS=y
+CONFIG_FEATURE_MODPROBE_FANCY_ALIAS=y
+CONFIG_FEATURE_MODPROBE_BLACKLIST=y
+
+#
+# Options common to multiple modutils
+#
+CONFIG_FEATURE_CHECK_TAINTED_MODULE=y
+CONFIG_FEATURE_2_4_MODULES=y
+CONFIG_FEATURE_2_6_MODULES=y
+CONFIG_DEFAULT_MODULES_DIR="/lib/modules"
+CONFIG_DEFAULT_DEPMOD_FILE="modules.dep"
+# CONFIG_FEATURE_QUERY_MODULE_INTERFACE is not set
+
+#
+# Linux System Utilities
+#
+CONFIG_DMESG=y
+CONFIG_FEATURE_DMESG_PRETTY=y
+CONFIG_FBSET=y
+CONFIG_FEATURE_FBSET_FANCY=y
+CONFIG_FEATURE_FBSET_READMODE=y
+CONFIG_FDFLUSH=y
+CONFIG_FDFORMAT=y
+CONFIG_FDISK=y
+CONFIG_FDISK_SUPPORT_LARGE_DISKS=y
+CONFIG_FEATURE_FDISK_WRITABLE=y
+# CONFIG_FEATURE_AIX_LABEL is not set
+# CONFIG_FEATURE_SGI_LABEL is not set
+# CONFIG_FEATURE_SUN_LABEL is not set
+CONFIG_FEATURE_OSF_LABEL=y
+CONFIG_FEATURE_FDISK_ADVANCED=y
+# CONFIG_FINDFS is not set
+CONFIG_FREERAMDISK=y
+CONFIG_FSCK_MINIX=y
+CONFIG_MKFS_MINIX=y
+
+#
+# Minix filesystem support
+#
+CONFIG_FEATURE_MINIX2=y
+CONFIG_GETOPT=y
+CONFIG_HEXDUMP=y
+CONFIG_FEATURE_HEXDUMP_REVERSE=y
+CONFIG_HD=y
+CONFIG_HWCLOCK=y
+CONFIG_FEATURE_HWCLOCK_LONG_OPTIONS=y
+CONFIG_FEATURE_HWCLOCK_ADJTIME_FHS=y
+CONFIG_IPCRM=y
+CONFIG_IPCS=y
+CONFIG_LOSETUP=y
+CONFIG_MDEV=y
+CONFIG_FEATURE_MDEV_CONF=y
+CONFIG_FEATURE_MDEV_RENAME=y
+CONFIG_FEATURE_MDEV_RENAME_REGEXP=y
+CONFIG_FEATURE_MDEV_EXEC=y
+CONFIG_FEATURE_MDEV_LOAD_FIRMWARE=y
+CONFIG_MKSWAP=y
+CONFIG_FEATURE_MKSWAP_V0=y
+CONFIG_MORE=y
+CONFIG_FEATURE_USE_TERMIOS=y
+CONFIG_VOLUMEID=y
+CONFIG_FEATURE_VOLUMEID_EXT=y
+CONFIG_FEATURE_VOLUMEID_REISERFS=y
+CONFIG_FEATURE_VOLUMEID_FAT=y
+CONFIG_FEATURE_VOLUMEID_HFS=y
+CONFIG_FEATURE_VOLUMEID_JFS=y
+CONFIG_FEATURE_VOLUMEID_XFS=y
+CONFIG_FEATURE_VOLUMEID_NTFS=y
+CONFIG_FEATURE_VOLUMEID_ISO9660=y
+CONFIG_FEATURE_VOLUMEID_UDF=y
+CONFIG_FEATURE_VOLUMEID_LUKS=y
+CONFIG_FEATURE_VOLUMEID_LINUXSWAP=y
+CONFIG_FEATURE_VOLUMEID_CRAMFS=y
+CONFIG_FEATURE_VOLUMEID_ROMFS=y
+CONFIG_FEATURE_VOLUMEID_SYSV=y
+# CONFIG_FEATURE_VOLUMEID_OCFS2 is not set
+CONFIG_FEATURE_VOLUMEID_LINUXRAID=y
+CONFIG_MOUNT=y
+CONFIG_FEATURE_MOUNT_FAKE=y
+# CONFIG_FEATURE_MOUNT_VERBOSE is not set
+CONFIG_FEATURE_MOUNT_HELPERS=y
+CONFIG_FEATURE_MOUNT_LABEL=y
+CONFIG_FEATURE_MOUNT_NFS=y
+CONFIG_FEATURE_MOUNT_CIFS=y
+CONFIG_FEATURE_MOUNT_FLAGS=y
+CONFIG_FEATURE_MOUNT_FSTAB=y
+CONFIG_PIVOT_ROOT=y
+CONFIG_RDATE=y
+CONFIG_READPROFILE=y
+CONFIG_RTCWAKE=y
+CONFIG_SCRIPT=y
+CONFIG_SETARCH=y
+CONFIG_SWAPONOFF=y
+CONFIG_FEATURE_SWAPON_PRI=y
+CONFIG_SWITCH_ROOT=y
+CONFIG_UMOUNT=y
+CONFIG_FEATURE_UMOUNT_ALL=y
+
+#
+# Common options for mount/umount
+#
+CONFIG_FEATURE_MOUNT_LOOP=y
+CONFIG_FEATURE_MTAB_SUPPORT=y
+
+#
+# Miscellaneous Utilities
+#
+CONFIG_ADJTIMEX=y
+CONFIG_BBCONFIG=y
+CONFIG_CHAT=y
+CONFIG_FEATURE_CHAT_NOFAIL=y
+# CONFIG_FEATURE_CHAT_TTY_HIFI is not set
+CONFIG_FEATURE_CHAT_IMPLICIT_CR=y
+# CONFIG_FEATURE_CHAT_SWALLOW_OPTS is not set
+# CONFIG_FEATURE_CHAT_SEND_ESCAPES is not set
+# CONFIG_FEATURE_CHAT_VAR_ABORT_LEN is not set
+# CONFIG_FEATURE_CHAT_CLR_ABORT is not set
+CONFIG_CHRT=y
+CONFIG_CROND=y
+# CONFIG_DEBUG_CROND_OPTION is not set
+# CONFIG_FEATURE_CROND_CALL_SENDMAIL is not set
+CONFIG_CRONTAB=y
+CONFIG_DC=y
+# CONFIG_DEVFSD is not set
+# CONFIG_DEVFSD_MODLOAD is not set
+# CONFIG_DEVFSD_FG_NP is not set
+# CONFIG_DEVFSD_VERBOSE is not set
+# CONFIG_FEATURE_DEVFS is not set
+CONFIG_EJECT=y
+CONFIG_FEATURE_EJECT_SCSI=y
+CONFIG_FBSPLASH=y
+CONFIG_INOTIFYD=y
+CONFIG_LAST=y
+CONFIG_FEATURE_LAST_SMALL=y
+# CONFIG_FEATURE_LAST_FANCY is not set
+CONFIG_LESS=y
+CONFIG_FEATURE_LESS_MAXLINES=9999999
+CONFIG_FEATURE_LESS_BRACKETS=y
+CONFIG_FEATURE_LESS_FLAGS=y
+CONFIG_FEATURE_LESS_FLAGCS=y
+CONFIG_FEATURE_LESS_MARKS=y
+CONFIG_FEATURE_LESS_REGEXP=y
+CONFIG_HDPARM=y
+CONFIG_FEATURE_HDPARM_GET_IDENTITY=y
+CONFIG_FEATURE_HDPARM_HDIO_SCAN_HWIF=y
+CONFIG_FEATURE_HDPARM_HDIO_UNREGISTER_HWIF=y
+CONFIG_FEATURE_HDPARM_HDIO_DRIVE_RESET=y
+CONFIG_FEATURE_HDPARM_HDIO_TRISTATE_HWIF=y
+CONFIG_FEATURE_HDPARM_HDIO_GETSET_DMA=y
+CONFIG_MAKEDEVS=y
+# CONFIG_FEATURE_MAKEDEVS_LEAF is not set
+CONFIG_FEATURE_MAKEDEVS_TABLE=y
+# CONFIG_MAN is not set
+# CONFIG_MICROCOM is not set
+CONFIG_MOUNTPOINT=y
+CONFIG_MT=y
+CONFIG_RAIDAUTORUN=y
+CONFIG_READAHEAD=y
+CONFIG_RUNLEVEL=y
+CONFIG_RX=y
+CONFIG_SETSID=y
+CONFIG_STRINGS=y
+CONFIG_TASKSET=y
+CONFIG_FEATURE_TASKSET_FANCY=y
+CONFIG_TIME=y
+CONFIG_TTYSIZE=y
+CONFIG_WATCHDOG=y
+
+#
+# Networking Utilities
+#
+CONFIG_FEATURE_IPV6=y
+CONFIG_FEATURE_PREFER_IPV4_ADDRESS=y
+# CONFIG_VERBOSE_RESOLUTION_ERRORS is not set
+CONFIG_ARP=y
+CONFIG_ARPING=y
+CONFIG_BRCTL=y
+# CONFIG_FEATURE_BRCTL_FANCY is not set
+# CONFIG_FEATURE_BRCTL_SHOW is not set
+CONFIG_DNSD=y
+CONFIG_ETHER_WAKE=y
+CONFIG_FAKEIDENTD=y
+CONFIG_FTPGET=y
+CONFIG_FTPPUT=y
+CONFIG_FEATURE_FTPGETPUT_LONG_OPTIONS=y
+CONFIG_HOSTNAME=y
+# CONFIG_HTTPD is not set
+# CONFIG_FEATURE_HTTPD_RANGES is not set
+# CONFIG_FEATURE_HTTPD_USE_SENDFILE is not set
+# CONFIG_FEATURE_HTTPD_RELOAD_CONFIG_SIGHUP is not set
+# CONFIG_FEATURE_HTTPD_SETUID is not set
+# CONFIG_FEATURE_HTTPD_BASIC_AUTH is not set
+# CONFIG_FEATURE_HTTPD_AUTH_MD5 is not set
+# CONFIG_FEATURE_HTTPD_CONFIG_WITH_MIME_TYPES is not set
+# CONFIG_FEATURE_HTTPD_CGI is not set
+# CONFIG_FEATURE_HTTPD_CONFIG_WITH_SCRIPT_INTERPR is not set
+# CONFIG_FEATURE_HTTPD_SET_REMOTE_PORT_TO_ENV is not set
+# CONFIG_FEATURE_HTTPD_ENCODE_URL_STR is not set
+# CONFIG_FEATURE_HTTPD_ERROR_PAGES is not set
+# CONFIG_FEATURE_HTTPD_PROXY is not set
+CONFIG_IFCONFIG=y
+CONFIG_FEATURE_IFCONFIG_STATUS=y
+CONFIG_FEATURE_IFCONFIG_SLIP=y
+CONFIG_FEATURE_IFCONFIG_MEMSTART_IOADDR_IRQ=y
+CONFIG_FEATURE_IFCONFIG_HW=y
+CONFIG_FEATURE_IFCONFIG_BROADCAST_PLUS=y
+CONFIG_IFENSLAVE=y
+CONFIG_IFUPDOWN=y
+CONFIG_IFUPDOWN_IFSTATE_PATH="/var/run/ifstate"
+CONFIG_FEATURE_IFUPDOWN_IP=y
+CONFIG_FEATURE_IFUPDOWN_IP_BUILTIN=y
+# CONFIG_FEATURE_IFUPDOWN_IFCONFIG_BUILTIN is not set
+CONFIG_FEATURE_IFUPDOWN_IPV4=y
+CONFIG_FEATURE_IFUPDOWN_IPV6=y
+CONFIG_FEATURE_IFUPDOWN_MAPPING=y
+CONFIG_FEATURE_IFUPDOWN_EXTERNAL_DHCP=y
+# CONFIG_INETD is not set
+# CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_ECHO is not set
+# CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_DISCARD is not set
+# CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_TIME is not set
+# CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_DAYTIME is not set
+# CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_CHARGEN is not set
+# CONFIG_FEATURE_INETD_RPC is not set
+CONFIG_IP=y
+CONFIG_FEATURE_IP_ADDRESS=y
+CONFIG_FEATURE_IP_LINK=y
+CONFIG_FEATURE_IP_ROUTE=y
+CONFIG_FEATURE_IP_TUNNEL=y
+CONFIG_FEATURE_IP_RULE=y
+CONFIG_FEATURE_IP_SHORT_FORMS=y
+# CONFIG_FEATURE_IP_RARE_PROTOCOLS is not set
+CONFIG_IPADDR=y
+CONFIG_IPLINK=y
+CONFIG_IPROUTE=y
+CONFIG_IPTUNNEL=y
+CONFIG_IPRULE=y
+CONFIG_IPCALC=y
+CONFIG_FEATURE_IPCALC_FANCY=y
+CONFIG_FEATURE_IPCALC_LONG_OPTIONS=y
+CONFIG_NAMEIF=y
+# CONFIG_FEATURE_NAMEIF_EXTENDED is not set
+CONFIG_NC=y
+CONFIG_NC_SERVER=y
+CONFIG_NC_EXTRA=y
+CONFIG_NETSTAT=y
+# CONFIG_FEATURE_NETSTAT_WIDE is not set
+CONFIG_NSLOOKUP=y
+CONFIG_PING=y
+CONFIG_PING6=y
+CONFIG_FEATURE_FANCY_PING=y
+CONFIG_PSCAN=y
+CONFIG_ROUTE=y
+# CONFIG_SENDMAIL is not set
+# CONFIG_FETCHMAIL is not set
+CONFIG_SLATTACH=y
+CONFIG_TELNET=y
+CONFIG_FEATURE_TELNET_TTYPE=y
+CONFIG_FEATURE_TELNET_AUTOLOGIN=y
+CONFIG_TELNETD=y
+CONFIG_FEATURE_TELNETD_STANDALONE=y
+CONFIG_TFTP=y
+# CONFIG_TFTPD is not set
+CONFIG_FEATURE_TFTP_GET=y
+CONFIG_FEATURE_TFTP_PUT=y
+CONFIG_FEATURE_TFTP_BLOCKSIZE=y
+# CONFIG_DEBUG_TFTP is not set
+CONFIG_TRACEROUTE=y
+# CONFIG_FEATURE_TRACEROUTE_VERBOSE is not set
+# CONFIG_FEATURE_TRACEROUTE_SOURCE_ROUTE is not set
+# CONFIG_FEATURE_TRACEROUTE_USE_ICMP is not set
+# CONFIG_APP_UDHCPD is not set
+# CONFIG_APP_DHCPRELAY is not set
+# CONFIG_APP_DUMPLEASES is not set
+# CONFIG_FEATURE_UDHCPD_WRITE_LEASES_EARLY is not set
+CONFIG_DHCPD_LEASES_FILE=""
+# CONFIG_APP_UDHCPC is not set
+# CONFIG_FEATURE_UDHCPC_ARPING is not set
+# CONFIG_FEATURE_UDHCP_PORT is not set
+# CONFIG_FEATURE_UDHCP_DEBUG is not set
+# CONFIG_FEATURE_RFC3397 is not set
+CONFIG_DHCPC_DEFAULT_SCRIPT=""
+CONFIG_UDHCPC_SLACK_FOR_BUGGY_SERVERS=
+CONFIG_VCONFIG=y
+CONFIG_WGET=y
+CONFIG_FEATURE_WGET_STATUSBAR=y
+CONFIG_FEATURE_WGET_AUTHENTICATION=y
+CONFIG_FEATURE_WGET_LONG_OPTIONS=y
+CONFIG_ZCIP=y
+CONFIG_TCPSVD=y
+CONFIG_UDPSVD=y
+
+#
+# Process Utilities
+#
+CONFIG_FREE=y
+CONFIG_FUSER=y
+CONFIG_KILL=y
+CONFIG_KILLALL=y
+CONFIG_KILLALL5=y
+CONFIG_NMETER=y
+CONFIG_PGREP=y
+CONFIG_PIDOF=y
+CONFIG_FEATURE_PIDOF_SINGLE=y
+CONFIG_FEATURE_PIDOF_OMIT=y
+CONFIG_PKILL=y
+CONFIG_PS=y
+CONFIG_FEATURE_PS_WIDE=y
+CONFIG_FEATURE_PS_TIME=y
+# CONFIG_FEATURE_PS_UNUSUAL_SYSTEMS is not set
+CONFIG_RENICE=y
+CONFIG_BB_SYSCTL=y
+CONFIG_TOP=y
+CONFIG_FEATURE_TOP_CPU_USAGE_PERCENTAGE=y
+CONFIG_FEATURE_TOP_CPU_GLOBAL_PERCENTS=y
+CONFIG_FEATURE_TOP_DECIMALS=y
+CONFIG_FEATURE_TOPMEM=y
+CONFIG_UPTIME=y
+CONFIG_WATCH=y
+
+#
+# Shells
+#
+CONFIG_FEATURE_SH_IS_ASH=y
+# CONFIG_FEATURE_SH_IS_HUSH is not set
+# CONFIG_FEATURE_SH_IS_MSH is not set
+# CONFIG_FEATURE_SH_IS_NONE is not set
+CONFIG_ASH=y
+
+#
+# Ash Shell Options
+#
+CONFIG_ASH_BASH_COMPAT=y
+CONFIG_ASH_JOB_CONTROL=y
+CONFIG_ASH_READ_NCHARS=y
+CONFIG_ASH_READ_TIMEOUT=y
+CONFIG_ASH_ALIAS=y
+CONFIG_ASH_MATH_SUPPORT=y
+CONFIG_ASH_MATH_SUPPORT_64=y
+CONFIG_ASH_GETOPTS=y
+CONFIG_ASH_BUILTIN_ECHO=y
+CONFIG_ASH_BUILTIN_PRINTF=y
+CONFIG_ASH_BUILTIN_TEST=y
+CONFIG_ASH_CMDCMD=y
+CONFIG_ASH_MAIL=y
+CONFIG_ASH_OPTIMIZE_FOR_SIZE=y
+CONFIG_ASH_RANDOM_SUPPORT=y
+CONFIG_ASH_EXPAND_PRMT=y
+# CONFIG_HUSH is not set
+# CONFIG_HUSH_HELP is not set
+# CONFIG_HUSH_INTERACTIVE is not set
+# CONFIG_HUSH_JOB is not set
+# CONFIG_HUSH_TICK is not set
+# CONFIG_HUSH_IF is not set
+# CONFIG_HUSH_LOOPS is not set
+# CONFIG_LASH is not set
+# CONFIG_MSH is not set
+
+#
+# Bourne Shell Options
+#
+CONFIG_FEATURE_SH_EXTRA_QUIET=y
+# CONFIG_FEATURE_SH_STANDALONE is not set
+# CONFIG_FEATURE_SH_NOFORK is not set
+CONFIG_CTTYHACK=y
+
+#
+# System Logging Utilities
+#
+CONFIG_SYSLOGD=y
+CONFIG_FEATURE_ROTATE_LOGFILE=y
+CONFIG_FEATURE_REMOTE_LOG=y
+# CONFIG_FEATURE_SYSLOGD_DUP is not set
+CONFIG_FEATURE_IPC_SYSLOG=y
+CONFIG_FEATURE_IPC_SYSLOG_BUFFER_SIZE=16
+CONFIG_LOGREAD=y
+CONFIG_FEATURE_LOGREAD_REDUCED_LOCKING=y
+CONFIG_KLOGD=y
+CONFIG_LOGGER=y
+
+#
+# Runit Utilities
+#
+CONFIG_RUNSV=y
+CONFIG_RUNSVDIR=y
+CONFIG_SV=y
+CONFIG_SVLOGD=y
+CONFIG_CHPST=y
+CONFIG_SETUIDGID=y
+CONFIG_ENVUIDGID=y
+CONFIG_ENVDIR=y
+CONFIG_SOFTLIMIT=y
+# CONFIG_CHCON is not set
+# CONFIG_FEATURE_CHCON_LONG_OPTIONS is not set
+# CONFIG_GETENFORCE is not set
+# CONFIG_GETSEBOOL is not set
+# CONFIG_LOAD_POLICY is not set
+# CONFIG_MATCHPATHCON is not set
+# CONFIG_RESTORECON is not set
+# CONFIG_RUNCON is not set
+# CONFIG_FEATURE_RUNCON_LONG_OPTIONS is not set
+# CONFIG_SELINUXENABLED is not set
+# CONFIG_SETENFORCE is not set
+# CONFIG_SETFILES is not set
+# CONFIG_FEATURE_SETFILES_CHECK_OPTION is not set
+# CONFIG_SETSEBOOL is not set
+# CONFIG_SESTATUS is not set
+
+#
+# Print Utilities
+#
+# CONFIG_LPD is not set
+CONFIG_LPR=y
+# CONFIG_LPQ is not set
diff --git a/source/a/mkinitrd/archive/busybox-dot-config.1.12.0 b/source/a/mkinitrd/archive/busybox-dot-config.1.12.0
new file mode 100644
index 00000000..b462fe9a
--- /dev/null
+++ b/source/a/mkinitrd/archive/busybox-dot-config.1.12.0
@@ -0,0 +1,857 @@
+#
+# Automatically generated make config: don't edit
+# Busybox version: 1.12.0
+# Thu Sep 25 12:38:54 2008
+#
+CONFIG_HAVE_DOT_CONFIG=y
+
+#
+# Busybox Settings
+#
+
+#
+# General Configuration
+#
+CONFIG_DESKTOP=y
+# CONFIG_EXTRA_COMPAT is not set
+# CONFIG_FEATURE_ASSUME_UNICODE is not set
+CONFIG_FEATURE_BUFFERS_USE_MALLOC=y
+# CONFIG_FEATURE_BUFFERS_GO_ON_STACK is not set
+# CONFIG_FEATURE_BUFFERS_GO_IN_BSS is not set
+CONFIG_SHOW_USAGE=y
+CONFIG_FEATURE_VERBOSE_USAGE=y
+CONFIG_FEATURE_COMPRESS_USAGE=y
+CONFIG_FEATURE_INSTALLER=y
+CONFIG_LOCALE_SUPPORT=y
+CONFIG_GETOPT_LONG=y
+CONFIG_FEATURE_DEVPTS=y
+# CONFIG_FEATURE_CLEAN_UP is not set
+CONFIG_FEATURE_PIDFILE=y
+CONFIG_FEATURE_SUID=y
+CONFIG_FEATURE_SUID_CONFIG=y
+CONFIG_FEATURE_SUID_CONFIG_QUIET=y
+# CONFIG_SELINUX is not set
+# CONFIG_FEATURE_PREFER_APPLETS is not set
+CONFIG_BUSYBOX_EXEC_PATH="/proc/self/exe"
+CONFIG_FEATURE_SYSLOG=y
+CONFIG_FEATURE_HAVE_RPC=y
+
+#
+# Build Options
+#
+CONFIG_STATIC=y
+# CONFIG_PIE is not set
+# CONFIG_NOMMU is not set
+# CONFIG_BUILD_LIBBUSYBOX is not set
+# CONFIG_FEATURE_INDIVIDUAL is not set
+# CONFIG_FEATURE_SHARED_BUSYBOX is not set
+CONFIG_LFS=y
+CONFIG_CROSS_COMPILER_PREFIX=""
+
+#
+# Debugging Options
+#
+# CONFIG_DEBUG is not set
+# CONFIG_DEBUG_PESSIMIZE is not set
+# CONFIG_WERROR is not set
+CONFIG_NO_DEBUG_LIB=y
+# CONFIG_DMALLOC is not set
+# CONFIG_EFENCE is not set
+CONFIG_INCLUDE_SUSv2=y
+# CONFIG_PARSE is not set
+
+#
+# Installation Options
+#
+CONFIG_INSTALL_NO_USR=y
+CONFIG_INSTALL_APPLET_SYMLINKS=y
+# CONFIG_INSTALL_APPLET_HARDLINKS is not set
+# CONFIG_INSTALL_APPLET_SCRIPT_WRAPPERS is not set
+# CONFIG_INSTALL_APPLET_DONT is not set
+# CONFIG_INSTALL_SH_APPLET_SYMLINK is not set
+# CONFIG_INSTALL_SH_APPLET_HARDLINK is not set
+# CONFIG_INSTALL_SH_APPLET_SCRIPT_WRAPPER is not set
+CONFIG_PREFIX="./_install"
+
+#
+# Busybox Library Tuning
+#
+CONFIG_PASSWORD_MINLEN=6
+CONFIG_MD5_SIZE_VS_SPEED=2
+# CONFIG_FEATURE_FAST_TOP is not set
+# CONFIG_FEATURE_ETC_NETWORKS is not set
+CONFIG_FEATURE_EDITING=y
+CONFIG_FEATURE_EDITING_MAX_LEN=1024
+CONFIG_FEATURE_EDITING_VI=y
+CONFIG_FEATURE_EDITING_HISTORY=64
+# CONFIG_FEATURE_EDITING_SAVEHISTORY is not set
+CONFIG_FEATURE_TAB_COMPLETION=y
+# CONFIG_FEATURE_USERNAME_COMPLETION is not set
+CONFIG_FEATURE_EDITING_FANCY_PROMPT=y
+CONFIG_FEATURE_VERBOSE_CP_MESSAGE=y
+CONFIG_FEATURE_COPYBUF_KB=4
+CONFIG_MONOTONIC_SYSCALL=y
+CONFIG_IOCTL_HEX2STR_ERROR=y
+# CONFIG_FEATURE_HWIB is not set
+
+#
+# Applets
+#
+
+#
+# Archival Utilities
+#
+# CONFIG_FEATURE_SEAMLESS_LZMA is not set
+CONFIG_FEATURE_SEAMLESS_BZ2=y
+CONFIG_FEATURE_SEAMLESS_GZ=y
+CONFIG_FEATURE_SEAMLESS_Z=y
+CONFIG_AR=y
+CONFIG_FEATURE_AR_LONG_FILENAMES=y
+CONFIG_BUNZIP2=y
+CONFIG_BZIP2=y
+CONFIG_CPIO=y
+CONFIG_FEATURE_CPIO_O=y
+# CONFIG_DPKG is not set
+# CONFIG_DPKG_DEB is not set
+# CONFIG_FEATURE_DPKG_DEB_EXTRACT_ONLY is not set
+CONFIG_GUNZIP=y
+CONFIG_GZIP=y
+CONFIG_RPM2CPIO=y
+# CONFIG_RPM is not set
+CONFIG_TAR=y
+CONFIG_FEATURE_TAR_CREATE=y
+CONFIG_FEATURE_TAR_AUTODETECT=y
+CONFIG_FEATURE_TAR_FROM=y
+CONFIG_FEATURE_TAR_OLDGNU_COMPATIBILITY=y
+# CONFIG_FEATURE_TAR_OLDSUN_COMPATIBILITY is not set
+CONFIG_FEATURE_TAR_GNU_EXTENSIONS=y
+CONFIG_FEATURE_TAR_LONG_OPTIONS=y
+CONFIG_FEATURE_TAR_UNAME_GNAME=y
+CONFIG_UNCOMPRESS=y
+CONFIG_UNLZMA=y
+CONFIG_FEATURE_LZMA_FAST=y
+CONFIG_UNZIP=y
+
+#
+# Coreutils
+#
+CONFIG_BASENAME=y
+CONFIG_CAL=y
+CONFIG_CAT=y
+CONFIG_CATV=y
+CONFIG_CHGRP=y
+CONFIG_CHMOD=y
+CONFIG_CHOWN=y
+CONFIG_CHROOT=y
+CONFIG_CKSUM=y
+CONFIG_COMM=y
+CONFIG_CP=y
+CONFIG_CUT=y
+CONFIG_DATE=y
+CONFIG_FEATURE_DATE_ISOFMT=y
+CONFIG_DD=y
+CONFIG_FEATURE_DD_SIGNAL_HANDLING=y
+CONFIG_FEATURE_DD_IBS_OBS=y
+CONFIG_DF=y
+CONFIG_FEATURE_DF_INODE=y
+CONFIG_DIRNAME=y
+CONFIG_DOS2UNIX=y
+CONFIG_UNIX2DOS=y
+CONFIG_DU=y
+CONFIG_FEATURE_DU_DEFAULT_BLOCKSIZE_1K=y
+CONFIG_ECHO=y
+CONFIG_FEATURE_FANCY_ECHO=y
+CONFIG_ENV=y
+CONFIG_FEATURE_ENV_LONG_OPTIONS=y
+CONFIG_EXPAND=y
+CONFIG_FEATURE_EXPAND_LONG_OPTIONS=y
+CONFIG_EXPR=y
+CONFIG_EXPR_MATH_SUPPORT_64=y
+CONFIG_FALSE=y
+CONFIG_FOLD=y
+CONFIG_HEAD=y
+CONFIG_FEATURE_FANCY_HEAD=y
+CONFIG_HOSTID=y
+CONFIG_ID=y
+CONFIG_INSTALL=y
+CONFIG_FEATURE_INSTALL_LONG_OPTIONS=y
+CONFIG_LENGTH=y
+CONFIG_LN=y
+CONFIG_LOGNAME=y
+CONFIG_LS=y
+CONFIG_FEATURE_LS_FILETYPES=y
+CONFIG_FEATURE_LS_FOLLOWLINKS=y
+CONFIG_FEATURE_LS_RECURSIVE=y
+CONFIG_FEATURE_LS_SORTFILES=y
+CONFIG_FEATURE_LS_TIMESTAMPS=y
+CONFIG_FEATURE_LS_USERNAME=y
+CONFIG_FEATURE_LS_COLOR=y
+CONFIG_FEATURE_LS_COLOR_IS_DEFAULT=y
+CONFIG_MD5SUM=y
+CONFIG_MKDIR=y
+CONFIG_FEATURE_MKDIR_LONG_OPTIONS=y
+CONFIG_MKFIFO=y
+CONFIG_MKNOD=y
+CONFIG_MV=y
+CONFIG_FEATURE_MV_LONG_OPTIONS=y
+CONFIG_NICE=y
+CONFIG_NOHUP=y
+CONFIG_OD=y
+CONFIG_PRINTENV=y
+CONFIG_PRINTF=y
+CONFIG_PWD=y
+CONFIG_READLINK=y
+CONFIG_FEATURE_READLINK_FOLLOW=y
+CONFIG_REALPATH=y
+CONFIG_RM=y
+CONFIG_RMDIR=y
+# CONFIG_FEATURE_RMDIR_LONG_OPTIONS is not set
+CONFIG_SEQ=y
+CONFIG_SHA1SUM=y
+CONFIG_SLEEP=y
+CONFIG_FEATURE_FANCY_SLEEP=y
+# CONFIG_FEATURE_FLOAT_SLEEP is not set
+CONFIG_SORT=y
+CONFIG_FEATURE_SORT_BIG=y
+CONFIG_SPLIT=y
+CONFIG_FEATURE_SPLIT_FANCY=y
+CONFIG_STAT=y
+CONFIG_FEATURE_STAT_FORMAT=y
+CONFIG_STTY=y
+CONFIG_SUM=y
+CONFIG_SYNC=y
+CONFIG_TAC=y
+CONFIG_TAIL=y
+CONFIG_FEATURE_FANCY_TAIL=y
+CONFIG_TEE=y
+CONFIG_FEATURE_TEE_USE_BLOCK_IO=y
+CONFIG_TEST=y
+CONFIG_FEATURE_TEST_64=y
+CONFIG_TOUCH=y
+CONFIG_TR=y
+CONFIG_FEATURE_TR_CLASSES=y
+CONFIG_FEATURE_TR_EQUIV=y
+CONFIG_TRUE=y
+CONFIG_TTY=y
+CONFIG_UNAME=y
+CONFIG_UNEXPAND=y
+CONFIG_FEATURE_UNEXPAND_LONG_OPTIONS=y
+CONFIG_UNIQ=y
+CONFIG_USLEEP=y
+CONFIG_UUDECODE=y
+CONFIG_UUENCODE=y
+CONFIG_WC=y
+CONFIG_FEATURE_WC_LARGE=y
+CONFIG_WHO=y
+CONFIG_WHOAMI=y
+CONFIG_YES=y
+
+#
+# Common options for cp and mv
+#
+CONFIG_FEATURE_PRESERVE_HARDLINKS=y
+
+#
+# Common options for ls, more and telnet
+#
+CONFIG_FEATURE_AUTOWIDTH=y
+
+#
+# Common options for df, du, ls
+#
+CONFIG_FEATURE_HUMAN_READABLE=y
+
+#
+# Common options for md5sum, sha1sum
+#
+CONFIG_FEATURE_MD5_SHA1_SUM_CHECK=y
+
+#
+# Console Utilities
+#
+CONFIG_CHVT=y
+CONFIG_CLEAR=y
+CONFIG_DEALLOCVT=y
+CONFIG_DUMPKMAP=y
+CONFIG_KBD_MODE=y
+CONFIG_LOADFONT=y
+CONFIG_LOADKMAP=y
+CONFIG_OPENVT=y
+CONFIG_RESET=y
+CONFIG_RESIZE=y
+CONFIG_FEATURE_RESIZE_PRINT=y
+CONFIG_SETCONSOLE=y
+CONFIG_FEATURE_SETCONSOLE_LONG_OPTIONS=y
+CONFIG_SETFONT=y
+CONFIG_SETKEYCODES=y
+CONFIG_SETLOGCONS=y
+CONFIG_SHOWKEY=y
+
+#
+# Debian Utilities
+#
+CONFIG_MKTEMP=y
+CONFIG_PIPE_PROGRESS=y
+CONFIG_RUN_PARTS=y
+CONFIG_FEATURE_RUN_PARTS_LONG_OPTIONS=y
+CONFIG_FEATURE_RUN_PARTS_FANCY=y
+CONFIG_START_STOP_DAEMON=y
+CONFIG_FEATURE_START_STOP_DAEMON_FANCY=y
+CONFIG_FEATURE_START_STOP_DAEMON_LONG_OPTIONS=y
+CONFIG_WHICH=y
+
+#
+# Editors
+#
+CONFIG_AWK=y
+CONFIG_FEATURE_AWK_MATH=y
+CONFIG_CMP=y
+CONFIG_DIFF=y
+CONFIG_FEATURE_DIFF_BINARY=y
+CONFIG_FEATURE_DIFF_DIR=y
+CONFIG_FEATURE_DIFF_MINIMAL=y
+CONFIG_ED=y
+CONFIG_PATCH=y
+CONFIG_SED=y
+CONFIG_VI=y
+CONFIG_FEATURE_VI_MAX_LEN=1024
+CONFIG_FEATURE_VI_8BIT=y
+CONFIG_FEATURE_VI_COLON=y
+CONFIG_FEATURE_VI_YANKMARK=y
+CONFIG_FEATURE_VI_SEARCH=y
+CONFIG_FEATURE_VI_USE_SIGNALS=y
+CONFIG_FEATURE_VI_DOT_CMD=y
+CONFIG_FEATURE_VI_READONLY=y
+CONFIG_FEATURE_VI_SETOPTS=y
+CONFIG_FEATURE_VI_SET=y
+CONFIG_FEATURE_VI_WIN_RESIZE=y
+CONFIG_FEATURE_VI_OPTIMIZE_CURSOR=y
+CONFIG_FEATURE_ALLOW_EXEC=y
+
+#
+# Finding Utilities
+#
+CONFIG_FIND=y
+CONFIG_FEATURE_FIND_PRINT0=y
+CONFIG_FEATURE_FIND_MTIME=y
+CONFIG_FEATURE_FIND_MMIN=y
+CONFIG_FEATURE_FIND_PERM=y
+CONFIG_FEATURE_FIND_TYPE=y
+CONFIG_FEATURE_FIND_XDEV=y
+CONFIG_FEATURE_FIND_MAXDEPTH=y
+CONFIG_FEATURE_FIND_NEWER=y
+CONFIG_FEATURE_FIND_INUM=y
+CONFIG_FEATURE_FIND_EXEC=y
+CONFIG_FEATURE_FIND_USER=y
+CONFIG_FEATURE_FIND_GROUP=y
+CONFIG_FEATURE_FIND_NOT=y
+CONFIG_FEATURE_FIND_DEPTH=y
+CONFIG_FEATURE_FIND_PAREN=y
+CONFIG_FEATURE_FIND_SIZE=y
+CONFIG_FEATURE_FIND_PRUNE=y
+# CONFIG_FEATURE_FIND_DELETE is not set
+CONFIG_FEATURE_FIND_PATH=y
+CONFIG_FEATURE_FIND_REGEX=y
+# CONFIG_FEATURE_FIND_CONTEXT is not set
+CONFIG_GREP=y
+CONFIG_FEATURE_GREP_EGREP_ALIAS=y
+CONFIG_FEATURE_GREP_FGREP_ALIAS=y
+CONFIG_FEATURE_GREP_CONTEXT=y
+CONFIG_XARGS=y
+CONFIG_FEATURE_XARGS_SUPPORT_CONFIRMATION=y
+CONFIG_FEATURE_XARGS_SUPPORT_QUOTES=y
+CONFIG_FEATURE_XARGS_SUPPORT_TERMOPT=y
+CONFIG_FEATURE_XARGS_SUPPORT_ZERO_TERM=y
+
+#
+# Init Utilities
+#
+CONFIG_INIT=y
+# CONFIG_DEBUG_INIT is not set
+CONFIG_FEATURE_USE_INITTAB=y
+CONFIG_FEATURE_KILL_REMOVED=y
+CONFIG_FEATURE_KILL_DELAY=10
+CONFIG_FEATURE_INIT_SCTTY=y
+CONFIG_FEATURE_INIT_SYSLOG=y
+CONFIG_FEATURE_EXTRA_QUIET=y
+# CONFIG_FEATURE_INIT_COREDUMPS is not set
+# CONFIG_FEATURE_INITRD is not set
+CONFIG_HALT=y
+CONFIG_MESG=y
+
+#
+# Login/Password Management Utilities
+#
+CONFIG_FEATURE_SHADOWPASSWDS=y
+# CONFIG_USE_BB_PWD_GRP is not set
+# CONFIG_USE_BB_SHADOW is not set
+CONFIG_USE_BB_CRYPT=y
+CONFIG_ADDGROUP=y
+CONFIG_FEATURE_ADDUSER_TO_GROUP=y
+CONFIG_DELGROUP=y
+CONFIG_FEATURE_DEL_USER_FROM_GROUP=y
+CONFIG_FEATURE_CHECK_NAMES=y
+CONFIG_ADDUSER=y
+# CONFIG_FEATURE_ADDUSER_LONG_OPTIONS is not set
+CONFIG_DELUSER=y
+CONFIG_GETTY=y
+CONFIG_FEATURE_UTMP=y
+CONFIG_FEATURE_WTMP=y
+CONFIG_LOGIN=y
+# CONFIG_PAM is not set
+CONFIG_LOGIN_SCRIPTS=y
+CONFIG_FEATURE_NOLOGIN=y
+# CONFIG_FEATURE_SECURETTY is not set
+CONFIG_PASSWD=y
+CONFIG_FEATURE_PASSWD_WEAK_CHECK=y
+CONFIG_CRYPTPW=y
+CONFIG_CHPASSWD=y
+CONFIG_SU=y
+CONFIG_FEATURE_SU_SYSLOG=y
+CONFIG_FEATURE_SU_CHECKS_SHELLS=y
+CONFIG_SULOGIN=y
+CONFIG_VLOCK=y
+
+#
+# Linux Ext2 FS Progs
+#
+CONFIG_CHATTR=y
+CONFIG_FSCK=y
+CONFIG_LSATTR=y
+
+#
+# Linux Module Utilities
+#
+# CONFIG_MODPROBE_SMALL is not set
+# CONFIG_FEATURE_MODPROBE_SMALL_OPTIONS_ON_CMDLINE is not set
+# CONFIG_FEATURE_MODPROBE_SMALL_CHECK_ALREADY_LOADED is not set
+CONFIG_DEPMOD=y
+# CONFIG_FEATURE_DEPMOD_PRUNE_FANCY is not set
+CONFIG_FEATURE_DEPMOD_ALIAS=y
+CONFIG_INSMOD=y
+# CONFIG_FEATURE_INSMOD_VERSION_CHECKING is not set
+CONFIG_FEATURE_INSMOD_KSYMOOPS_SYMBOLS=y
+# CONFIG_FEATURE_INSMOD_LOADINKMEM is not set
+# CONFIG_FEATURE_INSMOD_LOAD_MAP is not set
+# CONFIG_FEATURE_INSMOD_LOAD_MAP_FULL is not set
+CONFIG_RMMOD=y
+CONFIG_LSMOD=y
+CONFIG_FEATURE_LSMOD_PRETTY_2_6_OUTPUT=y
+CONFIG_MODPROBE=y
+CONFIG_FEATURE_MODPROBE_MULTIPLE_OPTIONS=y
+CONFIG_FEATURE_MODPROBE_FANCY_ALIAS=y
+CONFIG_FEATURE_MODPROBE_BLACKLIST=y
+
+#
+# Options common to multiple modutils
+#
+CONFIG_FEATURE_CHECK_TAINTED_MODULE=y
+CONFIG_FEATURE_2_4_MODULES=y
+CONFIG_FEATURE_2_6_MODULES=y
+CONFIG_DEFAULT_MODULES_DIR="/lib/modules"
+CONFIG_DEFAULT_DEPMOD_FILE="modules.dep"
+# CONFIG_FEATURE_QUERY_MODULE_INTERFACE is not set
+
+#
+# Linux System Utilities
+#
+CONFIG_DMESG=y
+CONFIG_FEATURE_DMESG_PRETTY=y
+CONFIG_FBSET=y
+CONFIG_FEATURE_FBSET_FANCY=y
+CONFIG_FEATURE_FBSET_READMODE=y
+CONFIG_FDFLUSH=y
+CONFIG_FDFORMAT=y
+CONFIG_FDISK=y
+CONFIG_FDISK_SUPPORT_LARGE_DISKS=y
+CONFIG_FEATURE_FDISK_WRITABLE=y
+# CONFIG_FEATURE_AIX_LABEL is not set
+# CONFIG_FEATURE_SGI_LABEL is not set
+# CONFIG_FEATURE_SUN_LABEL is not set
+CONFIG_FEATURE_OSF_LABEL=y
+CONFIG_FEATURE_FDISK_ADVANCED=y
+# CONFIG_FINDFS is not set
+CONFIG_FREERAMDISK=y
+CONFIG_FSCK_MINIX=y
+CONFIG_MKFS_MINIX=y
+
+#
+# Minix filesystem support
+#
+CONFIG_FEATURE_MINIX2=y
+CONFIG_GETOPT=y
+CONFIG_HEXDUMP=y
+CONFIG_FEATURE_HEXDUMP_REVERSE=y
+CONFIG_HD=y
+CONFIG_HWCLOCK=y
+CONFIG_FEATURE_HWCLOCK_LONG_OPTIONS=y
+CONFIG_FEATURE_HWCLOCK_ADJTIME_FHS=y
+CONFIG_IPCRM=y
+CONFIG_IPCS=y
+CONFIG_LOSETUP=y
+CONFIG_MDEV=y
+CONFIG_FEATURE_MDEV_CONF=y
+CONFIG_FEATURE_MDEV_RENAME=y
+CONFIG_FEATURE_MDEV_RENAME_REGEXP=y
+CONFIG_FEATURE_MDEV_EXEC=y
+CONFIG_FEATURE_MDEV_LOAD_FIRMWARE=y
+CONFIG_MKSWAP=y
+CONFIG_FEATURE_MKSWAP_V0=y
+CONFIG_MORE=y
+CONFIG_FEATURE_USE_TERMIOS=y
+CONFIG_VOLUMEID=y
+CONFIG_FEATURE_VOLUMEID_EXT=y
+CONFIG_FEATURE_VOLUMEID_REISERFS=y
+CONFIG_FEATURE_VOLUMEID_FAT=y
+CONFIG_FEATURE_VOLUMEID_HFS=y
+CONFIG_FEATURE_VOLUMEID_JFS=y
+CONFIG_FEATURE_VOLUMEID_XFS=y
+CONFIG_FEATURE_VOLUMEID_NTFS=y
+CONFIG_FEATURE_VOLUMEID_ISO9660=y
+CONFIG_FEATURE_VOLUMEID_UDF=y
+CONFIG_FEATURE_VOLUMEID_LUKS=y
+CONFIG_FEATURE_VOLUMEID_LINUXSWAP=y
+CONFIG_FEATURE_VOLUMEID_CRAMFS=y
+CONFIG_FEATURE_VOLUMEID_ROMFS=y
+CONFIG_FEATURE_VOLUMEID_SYSV=y
+# CONFIG_FEATURE_VOLUMEID_OCFS2 is not set
+CONFIG_FEATURE_VOLUMEID_LINUXRAID=y
+CONFIG_MOUNT=y
+CONFIG_FEATURE_MOUNT_FAKE=y
+# CONFIG_FEATURE_MOUNT_VERBOSE is not set
+CONFIG_FEATURE_MOUNT_HELPERS=y
+CONFIG_FEATURE_MOUNT_LABEL=y
+CONFIG_FEATURE_MOUNT_NFS=y
+CONFIG_FEATURE_MOUNT_CIFS=y
+CONFIG_FEATURE_MOUNT_FLAGS=y
+CONFIG_FEATURE_MOUNT_FSTAB=y
+CONFIG_PIVOT_ROOT=y
+CONFIG_RDATE=y
+CONFIG_RDEV=y
+CONFIG_READPROFILE=y
+CONFIG_RTCWAKE=y
+CONFIG_SCRIPT=y
+CONFIG_SETARCH=y
+CONFIG_SWAPONOFF=y
+CONFIG_FEATURE_SWAPON_PRI=y
+CONFIG_SWITCH_ROOT=y
+CONFIG_UMOUNT=y
+CONFIG_FEATURE_UMOUNT_ALL=y
+
+#
+# Common options for mount/umount
+#
+CONFIG_FEATURE_MOUNT_LOOP=y
+CONFIG_FEATURE_MTAB_SUPPORT=y
+
+#
+# Miscellaneous Utilities
+#
+CONFIG_ADJTIMEX=y
+CONFIG_BBCONFIG=y
+CONFIG_CHAT=y
+CONFIG_FEATURE_CHAT_NOFAIL=y
+# CONFIG_FEATURE_CHAT_TTY_HIFI is not set
+CONFIG_FEATURE_CHAT_IMPLICIT_CR=y
+# CONFIG_FEATURE_CHAT_SWALLOW_OPTS is not set
+# CONFIG_FEATURE_CHAT_SEND_ESCAPES is not set
+# CONFIG_FEATURE_CHAT_VAR_ABORT_LEN is not set
+# CONFIG_FEATURE_CHAT_CLR_ABORT is not set
+CONFIG_CHRT=y
+CONFIG_CROND=y
+# CONFIG_DEBUG_CROND_OPTION is not set
+# CONFIG_FEATURE_CROND_CALL_SENDMAIL is not set
+CONFIG_CRONTAB=y
+CONFIG_DC=y
+# CONFIG_DEVFSD is not set
+# CONFIG_DEVFSD_MODLOAD is not set
+# CONFIG_DEVFSD_FG_NP is not set
+# CONFIG_DEVFSD_VERBOSE is not set
+# CONFIG_FEATURE_DEVFS is not set
+CONFIG_EJECT=y
+CONFIG_FEATURE_EJECT_SCSI=y
+CONFIG_FBSPLASH=y
+CONFIG_INOTIFYD=y
+CONFIG_LAST=y
+CONFIG_FEATURE_LAST_SMALL=y
+# CONFIG_FEATURE_LAST_FANCY is not set
+CONFIG_LESS=y
+CONFIG_FEATURE_LESS_MAXLINES=9999999
+CONFIG_FEATURE_LESS_BRACKETS=y
+CONFIG_FEATURE_LESS_FLAGS=y
+CONFIG_FEATURE_LESS_FLAGCS=y
+CONFIG_FEATURE_LESS_MARKS=y
+CONFIG_FEATURE_LESS_REGEXP=y
+CONFIG_HDPARM=y
+CONFIG_FEATURE_HDPARM_GET_IDENTITY=y
+CONFIG_FEATURE_HDPARM_HDIO_SCAN_HWIF=y
+CONFIG_FEATURE_HDPARM_HDIO_UNREGISTER_HWIF=y
+CONFIG_FEATURE_HDPARM_HDIO_DRIVE_RESET=y
+CONFIG_FEATURE_HDPARM_HDIO_TRISTATE_HWIF=y
+CONFIG_FEATURE_HDPARM_HDIO_GETSET_DMA=y
+CONFIG_MAKEDEVS=y
+# CONFIG_FEATURE_MAKEDEVS_LEAF is not set
+CONFIG_FEATURE_MAKEDEVS_TABLE=y
+# CONFIG_MAN is not set
+# CONFIG_MICROCOM is not set
+CONFIG_MOUNTPOINT=y
+CONFIG_MT=y
+CONFIG_RAIDAUTORUN=y
+CONFIG_READAHEAD=y
+CONFIG_RUNLEVEL=y
+CONFIG_RX=y
+CONFIG_SETSID=y
+CONFIG_STRINGS=y
+CONFIG_TASKSET=y
+CONFIG_FEATURE_TASKSET_FANCY=y
+CONFIG_TIME=y
+CONFIG_TTYSIZE=y
+CONFIG_WATCHDOG=y
+
+#
+# Networking Utilities
+#
+CONFIG_FEATURE_IPV6=y
+CONFIG_FEATURE_PREFER_IPV4_ADDRESS=y
+# CONFIG_VERBOSE_RESOLUTION_ERRORS is not set
+CONFIG_ARP=y
+CONFIG_ARPING=y
+CONFIG_BRCTL=y
+# CONFIG_FEATURE_BRCTL_FANCY is not set
+# CONFIG_FEATURE_BRCTL_SHOW is not set
+CONFIG_DNSD=y
+CONFIG_ETHER_WAKE=y
+CONFIG_FAKEIDENTD=y
+CONFIG_FTPGET=y
+CONFIG_FTPPUT=y
+CONFIG_FEATURE_FTPGETPUT_LONG_OPTIONS=y
+CONFIG_HOSTNAME=y
+# CONFIG_HTTPD is not set
+# CONFIG_FEATURE_HTTPD_RANGES is not set
+# CONFIG_FEATURE_HTTPD_USE_SENDFILE is not set
+# CONFIG_FEATURE_HTTPD_RELOAD_CONFIG_SIGHUP is not set
+# CONFIG_FEATURE_HTTPD_SETUID is not set
+# CONFIG_FEATURE_HTTPD_BASIC_AUTH is not set
+# CONFIG_FEATURE_HTTPD_AUTH_MD5 is not set
+# CONFIG_FEATURE_HTTPD_CONFIG_WITH_MIME_TYPES is not set
+# CONFIG_FEATURE_HTTPD_CGI is not set
+# CONFIG_FEATURE_HTTPD_CONFIG_WITH_SCRIPT_INTERPR is not set
+# CONFIG_FEATURE_HTTPD_SET_REMOTE_PORT_TO_ENV is not set
+# CONFIG_FEATURE_HTTPD_ENCODE_URL_STR is not set
+# CONFIG_FEATURE_HTTPD_ERROR_PAGES is not set
+# CONFIG_FEATURE_HTTPD_PROXY is not set
+CONFIG_IFCONFIG=y
+CONFIG_FEATURE_IFCONFIG_STATUS=y
+CONFIG_FEATURE_IFCONFIG_SLIP=y
+CONFIG_FEATURE_IFCONFIG_MEMSTART_IOADDR_IRQ=y
+CONFIG_FEATURE_IFCONFIG_HW=y
+CONFIG_FEATURE_IFCONFIG_BROADCAST_PLUS=y
+CONFIG_IFENSLAVE=y
+CONFIG_IFUPDOWN=y
+CONFIG_IFUPDOWN_IFSTATE_PATH="/var/run/ifstate"
+CONFIG_FEATURE_IFUPDOWN_IP=y
+CONFIG_FEATURE_IFUPDOWN_IP_BUILTIN=y
+# CONFIG_FEATURE_IFUPDOWN_IFCONFIG_BUILTIN is not set
+CONFIG_FEATURE_IFUPDOWN_IPV4=y
+CONFIG_FEATURE_IFUPDOWN_IPV6=y
+CONFIG_FEATURE_IFUPDOWN_MAPPING=y
+CONFIG_FEATURE_IFUPDOWN_EXTERNAL_DHCP=y
+# CONFIG_INETD is not set
+# CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_ECHO is not set
+# CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_DISCARD is not set
+# CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_TIME is not set
+# CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_DAYTIME is not set
+# CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_CHARGEN is not set
+# CONFIG_FEATURE_INETD_RPC is not set
+CONFIG_IP=y
+CONFIG_FEATURE_IP_ADDRESS=y
+CONFIG_FEATURE_IP_LINK=y
+CONFIG_FEATURE_IP_ROUTE=y
+CONFIG_FEATURE_IP_TUNNEL=y
+CONFIG_FEATURE_IP_RULE=y
+CONFIG_FEATURE_IP_SHORT_FORMS=y
+# CONFIG_FEATURE_IP_RARE_PROTOCOLS is not set
+CONFIG_IPADDR=y
+CONFIG_IPLINK=y
+CONFIG_IPROUTE=y
+CONFIG_IPTUNNEL=y
+CONFIG_IPRULE=y
+CONFIG_IPCALC=y
+CONFIG_FEATURE_IPCALC_FANCY=y
+CONFIG_FEATURE_IPCALC_LONG_OPTIONS=y
+CONFIG_NAMEIF=y
+# CONFIG_FEATURE_NAMEIF_EXTENDED is not set
+CONFIG_NC=y
+CONFIG_NC_SERVER=y
+CONFIG_NC_EXTRA=y
+CONFIG_NETSTAT=y
+# CONFIG_FEATURE_NETSTAT_WIDE is not set
+CONFIG_FEATURE_NETSTAT_PRG=y
+CONFIG_NSLOOKUP=y
+CONFIG_PING=y
+CONFIG_PING6=y
+CONFIG_FEATURE_FANCY_PING=y
+CONFIG_PSCAN=y
+CONFIG_ROUTE=y
+# CONFIG_SENDMAIL is not set
+# CONFIG_FETCHMAIL is not set
+CONFIG_SLATTACH=y
+CONFIG_TELNET=y
+CONFIG_FEATURE_TELNET_TTYPE=y
+CONFIG_FEATURE_TELNET_AUTOLOGIN=y
+CONFIG_TELNETD=y
+CONFIG_FEATURE_TELNETD_STANDALONE=y
+CONFIG_TFTP=y
+# CONFIG_TFTPD is not set
+CONFIG_FEATURE_TFTP_GET=y
+CONFIG_FEATURE_TFTP_PUT=y
+CONFIG_FEATURE_TFTP_BLOCKSIZE=y
+# CONFIG_DEBUG_TFTP is not set
+CONFIG_TRACEROUTE=y
+# CONFIG_FEATURE_TRACEROUTE_VERBOSE is not set
+# CONFIG_FEATURE_TRACEROUTE_SOURCE_ROUTE is not set
+# CONFIG_FEATURE_TRACEROUTE_USE_ICMP is not set
+# CONFIG_APP_UDHCPD is not set
+# CONFIG_APP_DHCPRELAY is not set
+# CONFIG_APP_DUMPLEASES is not set
+# CONFIG_FEATURE_UDHCPD_WRITE_LEASES_EARLY is not set
+CONFIG_DHCPD_LEASES_FILE=""
+# CONFIG_APP_UDHCPC is not set
+# CONFIG_FEATURE_UDHCPC_ARPING is not set
+# CONFIG_FEATURE_UDHCP_PORT is not set
+# CONFIG_FEATURE_UDHCP_DEBUG is not set
+# CONFIG_FEATURE_RFC3397 is not set
+CONFIG_DHCPC_DEFAULT_SCRIPT=""
+CONFIG_UDHCPC_SLACK_FOR_BUGGY_SERVERS=
+CONFIG_VCONFIG=y
+CONFIG_WGET=y
+CONFIG_FEATURE_WGET_STATUSBAR=y
+CONFIG_FEATURE_WGET_AUTHENTICATION=y
+CONFIG_FEATURE_WGET_LONG_OPTIONS=y
+CONFIG_ZCIP=y
+CONFIG_TCPSVD=y
+CONFIG_UDPSVD=y
+
+#
+# Process Utilities
+#
+CONFIG_FREE=y
+CONFIG_FUSER=y
+CONFIG_KILL=y
+CONFIG_KILLALL=y
+CONFIG_KILLALL5=y
+CONFIG_NMETER=y
+CONFIG_PGREP=y
+CONFIG_PIDOF=y
+CONFIG_FEATURE_PIDOF_SINGLE=y
+CONFIG_FEATURE_PIDOF_OMIT=y
+CONFIG_PKILL=y
+CONFIG_PS=y
+CONFIG_FEATURE_PS_WIDE=y
+CONFIG_FEATURE_PS_TIME=y
+# CONFIG_FEATURE_PS_UNUSUAL_SYSTEMS is not set
+CONFIG_RENICE=y
+CONFIG_BB_SYSCTL=y
+CONFIG_TOP=y
+CONFIG_FEATURE_TOP_CPU_USAGE_PERCENTAGE=y
+CONFIG_FEATURE_TOP_CPU_GLOBAL_PERCENTS=y
+CONFIG_FEATURE_TOP_DECIMALS=y
+CONFIG_FEATURE_TOPMEM=y
+CONFIG_UPTIME=y
+CONFIG_WATCH=y
+
+#
+# Shells
+#
+CONFIG_FEATURE_SH_IS_ASH=y
+# CONFIG_FEATURE_SH_IS_HUSH is not set
+# CONFIG_FEATURE_SH_IS_MSH is not set
+# CONFIG_FEATURE_SH_IS_NONE is not set
+CONFIG_ASH=y
+
+#
+# Ash Shell Options
+#
+CONFIG_ASH_BASH_COMPAT=y
+CONFIG_ASH_JOB_CONTROL=y
+CONFIG_ASH_READ_NCHARS=y
+CONFIG_ASH_READ_TIMEOUT=y
+CONFIG_ASH_ALIAS=y
+CONFIG_ASH_MATH_SUPPORT=y
+CONFIG_ASH_MATH_SUPPORT_64=y
+CONFIG_ASH_GETOPTS=y
+CONFIG_ASH_BUILTIN_ECHO=y
+CONFIG_ASH_BUILTIN_PRINTF=y
+CONFIG_ASH_BUILTIN_TEST=y
+CONFIG_ASH_CMDCMD=y
+CONFIG_ASH_MAIL=y
+CONFIG_ASH_OPTIMIZE_FOR_SIZE=y
+CONFIG_ASH_RANDOM_SUPPORT=y
+CONFIG_ASH_EXPAND_PRMT=y
+# CONFIG_HUSH is not set
+# CONFIG_HUSH_HELP is not set
+# CONFIG_HUSH_INTERACTIVE is not set
+# CONFIG_HUSH_JOB is not set
+# CONFIG_HUSH_TICK is not set
+# CONFIG_HUSH_IF is not set
+# CONFIG_HUSH_LOOPS is not set
+# CONFIG_HUSH_CASE is not set
+# CONFIG_LASH is not set
+# CONFIG_MSH is not set
+
+#
+# Bourne Shell Options
+#
+CONFIG_FEATURE_SH_EXTRA_QUIET=y
+# CONFIG_FEATURE_SH_STANDALONE is not set
+# CONFIG_FEATURE_SH_NOFORK is not set
+CONFIG_CTTYHACK=y
+
+#
+# System Logging Utilities
+#
+CONFIG_SYSLOGD=y
+CONFIG_FEATURE_ROTATE_LOGFILE=y
+CONFIG_FEATURE_REMOTE_LOG=y
+# CONFIG_FEATURE_SYSLOGD_DUP is not set
+CONFIG_FEATURE_IPC_SYSLOG=y
+CONFIG_FEATURE_IPC_SYSLOG_BUFFER_SIZE=16
+CONFIG_LOGREAD=y
+CONFIG_FEATURE_LOGREAD_REDUCED_LOCKING=y
+CONFIG_KLOGD=y
+CONFIG_LOGGER=y
+
+#
+# Runit Utilities
+#
+CONFIG_RUNSV=y
+CONFIG_RUNSVDIR=y
+CONFIG_SV=y
+CONFIG_SVLOGD=y
+CONFIG_CHPST=y
+CONFIG_SETUIDGID=y
+CONFIG_ENVUIDGID=y
+CONFIG_ENVDIR=y
+CONFIG_SOFTLIMIT=y
+# CONFIG_CHCON is not set
+# CONFIG_FEATURE_CHCON_LONG_OPTIONS is not set
+# CONFIG_GETENFORCE is not set
+# CONFIG_GETSEBOOL is not set
+# CONFIG_LOAD_POLICY is not set
+# CONFIG_MATCHPATHCON is not set
+# CONFIG_RESTORECON is not set
+# CONFIG_RUNCON is not set
+# CONFIG_FEATURE_RUNCON_LONG_OPTIONS is not set
+# CONFIG_SELINUXENABLED is not set
+# CONFIG_SETENFORCE is not set
+# CONFIG_SETFILES is not set
+# CONFIG_FEATURE_SETFILES_CHECK_OPTION is not set
+# CONFIG_SETSEBOOL is not set
+# CONFIG_SESTATUS is not set
+
+#
+# Print Utilities
+#
+# CONFIG_LPD is not set
+CONFIG_LPR=y
+# CONFIG_LPQ is not set
diff --git a/source/a/mkinitrd/archive/busybox-dot-config.1.12.1 b/source/a/mkinitrd/archive/busybox-dot-config.1.12.1
new file mode 100644
index 00000000..5987e050
--- /dev/null
+++ b/source/a/mkinitrd/archive/busybox-dot-config.1.12.1
@@ -0,0 +1,857 @@
+#
+# Automatically generated make config: don't edit
+# Busybox version: 1.12.1
+# Fri Nov 7 10:20:30 2008
+#
+CONFIG_HAVE_DOT_CONFIG=y
+
+#
+# Busybox Settings
+#
+
+#
+# General Configuration
+#
+CONFIG_DESKTOP=y
+# CONFIG_EXTRA_COMPAT is not set
+# CONFIG_FEATURE_ASSUME_UNICODE is not set
+CONFIG_FEATURE_BUFFERS_USE_MALLOC=y
+# CONFIG_FEATURE_BUFFERS_GO_ON_STACK is not set
+# CONFIG_FEATURE_BUFFERS_GO_IN_BSS is not set
+CONFIG_SHOW_USAGE=y
+CONFIG_FEATURE_VERBOSE_USAGE=y
+CONFIG_FEATURE_COMPRESS_USAGE=y
+CONFIG_FEATURE_INSTALLER=y
+CONFIG_LOCALE_SUPPORT=y
+CONFIG_GETOPT_LONG=y
+CONFIG_FEATURE_DEVPTS=y
+# CONFIG_FEATURE_CLEAN_UP is not set
+CONFIG_FEATURE_PIDFILE=y
+CONFIG_FEATURE_SUID=y
+CONFIG_FEATURE_SUID_CONFIG=y
+CONFIG_FEATURE_SUID_CONFIG_QUIET=y
+# CONFIG_SELINUX is not set
+# CONFIG_FEATURE_PREFER_APPLETS is not set
+CONFIG_BUSYBOX_EXEC_PATH="/proc/self/exe"
+CONFIG_FEATURE_SYSLOG=y
+CONFIG_FEATURE_HAVE_RPC=y
+
+#
+# Build Options
+#
+CONFIG_STATIC=y
+# CONFIG_PIE is not set
+# CONFIG_NOMMU is not set
+# CONFIG_BUILD_LIBBUSYBOX is not set
+# CONFIG_FEATURE_INDIVIDUAL is not set
+# CONFIG_FEATURE_SHARED_BUSYBOX is not set
+CONFIG_LFS=y
+CONFIG_CROSS_COMPILER_PREFIX=""
+
+#
+# Debugging Options
+#
+# CONFIG_DEBUG is not set
+# CONFIG_DEBUG_PESSIMIZE is not set
+# CONFIG_WERROR is not set
+CONFIG_NO_DEBUG_LIB=y
+# CONFIG_DMALLOC is not set
+# CONFIG_EFENCE is not set
+CONFIG_INCLUDE_SUSv2=y
+# CONFIG_PARSE is not set
+
+#
+# Installation Options
+#
+CONFIG_INSTALL_NO_USR=y
+CONFIG_INSTALL_APPLET_SYMLINKS=y
+# CONFIG_INSTALL_APPLET_HARDLINKS is not set
+# CONFIG_INSTALL_APPLET_SCRIPT_WRAPPERS is not set
+# CONFIG_INSTALL_APPLET_DONT is not set
+# CONFIG_INSTALL_SH_APPLET_SYMLINK is not set
+# CONFIG_INSTALL_SH_APPLET_HARDLINK is not set
+# CONFIG_INSTALL_SH_APPLET_SCRIPT_WRAPPER is not set
+CONFIG_PREFIX="./_install"
+
+#
+# Busybox Library Tuning
+#
+CONFIG_PASSWORD_MINLEN=6
+CONFIG_MD5_SIZE_VS_SPEED=2
+# CONFIG_FEATURE_FAST_TOP is not set
+# CONFIG_FEATURE_ETC_NETWORKS is not set
+CONFIG_FEATURE_EDITING=y
+CONFIG_FEATURE_EDITING_MAX_LEN=1024
+CONFIG_FEATURE_EDITING_VI=y
+CONFIG_FEATURE_EDITING_HISTORY=64
+# CONFIG_FEATURE_EDITING_SAVEHISTORY is not set
+CONFIG_FEATURE_TAB_COMPLETION=y
+# CONFIG_FEATURE_USERNAME_COMPLETION is not set
+CONFIG_FEATURE_EDITING_FANCY_PROMPT=y
+CONFIG_FEATURE_VERBOSE_CP_MESSAGE=y
+CONFIG_FEATURE_COPYBUF_KB=4
+CONFIG_MONOTONIC_SYSCALL=y
+CONFIG_IOCTL_HEX2STR_ERROR=y
+# CONFIG_FEATURE_HWIB is not set
+
+#
+# Applets
+#
+
+#
+# Archival Utilities
+#
+# CONFIG_FEATURE_SEAMLESS_LZMA is not set
+CONFIG_FEATURE_SEAMLESS_BZ2=y
+CONFIG_FEATURE_SEAMLESS_GZ=y
+CONFIG_FEATURE_SEAMLESS_Z=y
+CONFIG_AR=y
+CONFIG_FEATURE_AR_LONG_FILENAMES=y
+CONFIG_BUNZIP2=y
+CONFIG_BZIP2=y
+CONFIG_CPIO=y
+CONFIG_FEATURE_CPIO_O=y
+# CONFIG_DPKG is not set
+# CONFIG_DPKG_DEB is not set
+# CONFIG_FEATURE_DPKG_DEB_EXTRACT_ONLY is not set
+CONFIG_GUNZIP=y
+CONFIG_GZIP=y
+CONFIG_RPM2CPIO=y
+# CONFIG_RPM is not set
+CONFIG_TAR=y
+CONFIG_FEATURE_TAR_CREATE=y
+CONFIG_FEATURE_TAR_AUTODETECT=y
+CONFIG_FEATURE_TAR_FROM=y
+CONFIG_FEATURE_TAR_OLDGNU_COMPATIBILITY=y
+# CONFIG_FEATURE_TAR_OLDSUN_COMPATIBILITY is not set
+CONFIG_FEATURE_TAR_GNU_EXTENSIONS=y
+CONFIG_FEATURE_TAR_LONG_OPTIONS=y
+CONFIG_FEATURE_TAR_UNAME_GNAME=y
+CONFIG_UNCOMPRESS=y
+CONFIG_UNLZMA=y
+CONFIG_FEATURE_LZMA_FAST=y
+CONFIG_UNZIP=y
+
+#
+# Coreutils
+#
+CONFIG_BASENAME=y
+CONFIG_CAL=y
+CONFIG_CAT=y
+CONFIG_CATV=y
+CONFIG_CHGRP=y
+CONFIG_CHMOD=y
+CONFIG_CHOWN=y
+CONFIG_CHROOT=y
+CONFIG_CKSUM=y
+CONFIG_COMM=y
+CONFIG_CP=y
+CONFIG_CUT=y
+CONFIG_DATE=y
+CONFIG_FEATURE_DATE_ISOFMT=y
+CONFIG_DD=y
+CONFIG_FEATURE_DD_SIGNAL_HANDLING=y
+CONFIG_FEATURE_DD_IBS_OBS=y
+CONFIG_DF=y
+CONFIG_FEATURE_DF_INODE=y
+CONFIG_DIRNAME=y
+CONFIG_DOS2UNIX=y
+CONFIG_UNIX2DOS=y
+CONFIG_DU=y
+CONFIG_FEATURE_DU_DEFAULT_BLOCKSIZE_1K=y
+CONFIG_ECHO=y
+CONFIG_FEATURE_FANCY_ECHO=y
+CONFIG_ENV=y
+CONFIG_FEATURE_ENV_LONG_OPTIONS=y
+CONFIG_EXPAND=y
+CONFIG_FEATURE_EXPAND_LONG_OPTIONS=y
+CONFIG_EXPR=y
+CONFIG_EXPR_MATH_SUPPORT_64=y
+CONFIG_FALSE=y
+CONFIG_FOLD=y
+CONFIG_HEAD=y
+CONFIG_FEATURE_FANCY_HEAD=y
+CONFIG_HOSTID=y
+CONFIG_ID=y
+CONFIG_INSTALL=y
+CONFIG_FEATURE_INSTALL_LONG_OPTIONS=y
+CONFIG_LENGTH=y
+CONFIG_LN=y
+CONFIG_LOGNAME=y
+CONFIG_LS=y
+CONFIG_FEATURE_LS_FILETYPES=y
+CONFIG_FEATURE_LS_FOLLOWLINKS=y
+CONFIG_FEATURE_LS_RECURSIVE=y
+CONFIG_FEATURE_LS_SORTFILES=y
+CONFIG_FEATURE_LS_TIMESTAMPS=y
+CONFIG_FEATURE_LS_USERNAME=y
+CONFIG_FEATURE_LS_COLOR=y
+CONFIG_FEATURE_LS_COLOR_IS_DEFAULT=y
+CONFIG_MD5SUM=y
+CONFIG_MKDIR=y
+CONFIG_FEATURE_MKDIR_LONG_OPTIONS=y
+CONFIG_MKFIFO=y
+CONFIG_MKNOD=y
+CONFIG_MV=y
+CONFIG_FEATURE_MV_LONG_OPTIONS=y
+CONFIG_NICE=y
+CONFIG_NOHUP=y
+CONFIG_OD=y
+CONFIG_PRINTENV=y
+CONFIG_PRINTF=y
+CONFIG_PWD=y
+CONFIG_READLINK=y
+CONFIG_FEATURE_READLINK_FOLLOW=y
+CONFIG_REALPATH=y
+CONFIG_RM=y
+CONFIG_RMDIR=y
+# CONFIG_FEATURE_RMDIR_LONG_OPTIONS is not set
+CONFIG_SEQ=y
+CONFIG_SHA1SUM=y
+CONFIG_SLEEP=y
+CONFIG_FEATURE_FANCY_SLEEP=y
+# CONFIG_FEATURE_FLOAT_SLEEP is not set
+CONFIG_SORT=y
+CONFIG_FEATURE_SORT_BIG=y
+CONFIG_SPLIT=y
+CONFIG_FEATURE_SPLIT_FANCY=y
+CONFIG_STAT=y
+CONFIG_FEATURE_STAT_FORMAT=y
+CONFIG_STTY=y
+CONFIG_SUM=y
+CONFIG_SYNC=y
+CONFIG_TAC=y
+CONFIG_TAIL=y
+CONFIG_FEATURE_FANCY_TAIL=y
+CONFIG_TEE=y
+CONFIG_FEATURE_TEE_USE_BLOCK_IO=y
+CONFIG_TEST=y
+CONFIG_FEATURE_TEST_64=y
+CONFIG_TOUCH=y
+CONFIG_TR=y
+CONFIG_FEATURE_TR_CLASSES=y
+CONFIG_FEATURE_TR_EQUIV=y
+CONFIG_TRUE=y
+CONFIG_TTY=y
+CONFIG_UNAME=y
+CONFIG_UNEXPAND=y
+CONFIG_FEATURE_UNEXPAND_LONG_OPTIONS=y
+CONFIG_UNIQ=y
+CONFIG_USLEEP=y
+CONFIG_UUDECODE=y
+CONFIG_UUENCODE=y
+CONFIG_WC=y
+CONFIG_FEATURE_WC_LARGE=y
+CONFIG_WHO=y
+CONFIG_WHOAMI=y
+CONFIG_YES=y
+
+#
+# Common options for cp and mv
+#
+CONFIG_FEATURE_PRESERVE_HARDLINKS=y
+
+#
+# Common options for ls, more and telnet
+#
+CONFIG_FEATURE_AUTOWIDTH=y
+
+#
+# Common options for df, du, ls
+#
+CONFIG_FEATURE_HUMAN_READABLE=y
+
+#
+# Common options for md5sum, sha1sum
+#
+CONFIG_FEATURE_MD5_SHA1_SUM_CHECK=y
+
+#
+# Console Utilities
+#
+CONFIG_CHVT=y
+CONFIG_CLEAR=y
+CONFIG_DEALLOCVT=y
+CONFIG_DUMPKMAP=y
+CONFIG_KBD_MODE=y
+CONFIG_LOADFONT=y
+CONFIG_LOADKMAP=y
+CONFIG_OPENVT=y
+CONFIG_RESET=y
+CONFIG_RESIZE=y
+CONFIG_FEATURE_RESIZE_PRINT=y
+CONFIG_SETCONSOLE=y
+CONFIG_FEATURE_SETCONSOLE_LONG_OPTIONS=y
+CONFIG_SETFONT=y
+CONFIG_SETKEYCODES=y
+CONFIG_SETLOGCONS=y
+CONFIG_SHOWKEY=y
+
+#
+# Debian Utilities
+#
+CONFIG_MKTEMP=y
+CONFIG_PIPE_PROGRESS=y
+CONFIG_RUN_PARTS=y
+CONFIG_FEATURE_RUN_PARTS_LONG_OPTIONS=y
+CONFIG_FEATURE_RUN_PARTS_FANCY=y
+CONFIG_START_STOP_DAEMON=y
+CONFIG_FEATURE_START_STOP_DAEMON_FANCY=y
+CONFIG_FEATURE_START_STOP_DAEMON_LONG_OPTIONS=y
+CONFIG_WHICH=y
+
+#
+# Editors
+#
+CONFIG_AWK=y
+CONFIG_FEATURE_AWK_MATH=y
+CONFIG_CMP=y
+CONFIG_DIFF=y
+CONFIG_FEATURE_DIFF_BINARY=y
+CONFIG_FEATURE_DIFF_DIR=y
+CONFIG_FEATURE_DIFF_MINIMAL=y
+CONFIG_ED=y
+CONFIG_PATCH=y
+CONFIG_SED=y
+CONFIG_VI=y
+CONFIG_FEATURE_VI_MAX_LEN=1024
+CONFIG_FEATURE_VI_8BIT=y
+CONFIG_FEATURE_VI_COLON=y
+CONFIG_FEATURE_VI_YANKMARK=y
+CONFIG_FEATURE_VI_SEARCH=y
+CONFIG_FEATURE_VI_USE_SIGNALS=y
+CONFIG_FEATURE_VI_DOT_CMD=y
+CONFIG_FEATURE_VI_READONLY=y
+CONFIG_FEATURE_VI_SETOPTS=y
+CONFIG_FEATURE_VI_SET=y
+CONFIG_FEATURE_VI_WIN_RESIZE=y
+CONFIG_FEATURE_VI_OPTIMIZE_CURSOR=y
+CONFIG_FEATURE_ALLOW_EXEC=y
+
+#
+# Finding Utilities
+#
+CONFIG_FIND=y
+CONFIG_FEATURE_FIND_PRINT0=y
+CONFIG_FEATURE_FIND_MTIME=y
+CONFIG_FEATURE_FIND_MMIN=y
+CONFIG_FEATURE_FIND_PERM=y
+CONFIG_FEATURE_FIND_TYPE=y
+CONFIG_FEATURE_FIND_XDEV=y
+CONFIG_FEATURE_FIND_MAXDEPTH=y
+CONFIG_FEATURE_FIND_NEWER=y
+CONFIG_FEATURE_FIND_INUM=y
+CONFIG_FEATURE_FIND_EXEC=y
+CONFIG_FEATURE_FIND_USER=y
+CONFIG_FEATURE_FIND_GROUP=y
+CONFIG_FEATURE_FIND_NOT=y
+CONFIG_FEATURE_FIND_DEPTH=y
+CONFIG_FEATURE_FIND_PAREN=y
+CONFIG_FEATURE_FIND_SIZE=y
+CONFIG_FEATURE_FIND_PRUNE=y
+# CONFIG_FEATURE_FIND_DELETE is not set
+CONFIG_FEATURE_FIND_PATH=y
+CONFIG_FEATURE_FIND_REGEX=y
+# CONFIG_FEATURE_FIND_CONTEXT is not set
+CONFIG_GREP=y
+CONFIG_FEATURE_GREP_EGREP_ALIAS=y
+CONFIG_FEATURE_GREP_FGREP_ALIAS=y
+CONFIG_FEATURE_GREP_CONTEXT=y
+CONFIG_XARGS=y
+CONFIG_FEATURE_XARGS_SUPPORT_CONFIRMATION=y
+CONFIG_FEATURE_XARGS_SUPPORT_QUOTES=y
+CONFIG_FEATURE_XARGS_SUPPORT_TERMOPT=y
+CONFIG_FEATURE_XARGS_SUPPORT_ZERO_TERM=y
+
+#
+# Init Utilities
+#
+CONFIG_INIT=y
+# CONFIG_DEBUG_INIT is not set
+CONFIG_FEATURE_USE_INITTAB=y
+CONFIG_FEATURE_KILL_REMOVED=y
+CONFIG_FEATURE_KILL_DELAY=10
+CONFIG_FEATURE_INIT_SCTTY=y
+CONFIG_FEATURE_INIT_SYSLOG=y
+CONFIG_FEATURE_EXTRA_QUIET=y
+# CONFIG_FEATURE_INIT_COREDUMPS is not set
+# CONFIG_FEATURE_INITRD is not set
+CONFIG_HALT=y
+CONFIG_MESG=y
+
+#
+# Login/Password Management Utilities
+#
+CONFIG_FEATURE_SHADOWPASSWDS=y
+# CONFIG_USE_BB_PWD_GRP is not set
+# CONFIG_USE_BB_SHADOW is not set
+CONFIG_USE_BB_CRYPT=y
+CONFIG_ADDGROUP=y
+CONFIG_FEATURE_ADDUSER_TO_GROUP=y
+CONFIG_DELGROUP=y
+CONFIG_FEATURE_DEL_USER_FROM_GROUP=y
+CONFIG_FEATURE_CHECK_NAMES=y
+CONFIG_ADDUSER=y
+# CONFIG_FEATURE_ADDUSER_LONG_OPTIONS is not set
+CONFIG_DELUSER=y
+CONFIG_GETTY=y
+CONFIG_FEATURE_UTMP=y
+CONFIG_FEATURE_WTMP=y
+CONFIG_LOGIN=y
+# CONFIG_PAM is not set
+CONFIG_LOGIN_SCRIPTS=y
+CONFIG_FEATURE_NOLOGIN=y
+# CONFIG_FEATURE_SECURETTY is not set
+CONFIG_PASSWD=y
+CONFIG_FEATURE_PASSWD_WEAK_CHECK=y
+CONFIG_CRYPTPW=y
+CONFIG_CHPASSWD=y
+CONFIG_SU=y
+CONFIG_FEATURE_SU_SYSLOG=y
+CONFIG_FEATURE_SU_CHECKS_SHELLS=y
+CONFIG_SULOGIN=y
+CONFIG_VLOCK=y
+
+#
+# Linux Ext2 FS Progs
+#
+CONFIG_CHATTR=y
+CONFIG_FSCK=y
+CONFIG_LSATTR=y
+
+#
+# Linux Module Utilities
+#
+# CONFIG_MODPROBE_SMALL is not set
+# CONFIG_FEATURE_MODPROBE_SMALL_OPTIONS_ON_CMDLINE is not set
+# CONFIG_FEATURE_MODPROBE_SMALL_CHECK_ALREADY_LOADED is not set
+CONFIG_DEPMOD=y
+# CONFIG_FEATURE_DEPMOD_PRUNE_FANCY is not set
+CONFIG_FEATURE_DEPMOD_ALIAS=y
+CONFIG_INSMOD=y
+# CONFIG_FEATURE_INSMOD_VERSION_CHECKING is not set
+CONFIG_FEATURE_INSMOD_KSYMOOPS_SYMBOLS=y
+# CONFIG_FEATURE_INSMOD_LOADINKMEM is not set
+# CONFIG_FEATURE_INSMOD_LOAD_MAP is not set
+# CONFIG_FEATURE_INSMOD_LOAD_MAP_FULL is not set
+CONFIG_RMMOD=y
+CONFIG_LSMOD=y
+CONFIG_FEATURE_LSMOD_PRETTY_2_6_OUTPUT=y
+CONFIG_MODPROBE=y
+CONFIG_FEATURE_MODPROBE_MULTIPLE_OPTIONS=y
+CONFIG_FEATURE_MODPROBE_FANCY_ALIAS=y
+CONFIG_FEATURE_MODPROBE_BLACKLIST=y
+
+#
+# Options common to multiple modutils
+#
+CONFIG_FEATURE_CHECK_TAINTED_MODULE=y
+CONFIG_FEATURE_2_4_MODULES=y
+CONFIG_FEATURE_2_6_MODULES=y
+CONFIG_DEFAULT_MODULES_DIR="/lib/modules"
+CONFIG_DEFAULT_DEPMOD_FILE="modules.dep"
+# CONFIG_FEATURE_QUERY_MODULE_INTERFACE is not set
+
+#
+# Linux System Utilities
+#
+CONFIG_DMESG=y
+CONFIG_FEATURE_DMESG_PRETTY=y
+CONFIG_FBSET=y
+CONFIG_FEATURE_FBSET_FANCY=y
+CONFIG_FEATURE_FBSET_READMODE=y
+CONFIG_FDFLUSH=y
+CONFIG_FDFORMAT=y
+CONFIG_FDISK=y
+CONFIG_FDISK_SUPPORT_LARGE_DISKS=y
+CONFIG_FEATURE_FDISK_WRITABLE=y
+# CONFIG_FEATURE_AIX_LABEL is not set
+# CONFIG_FEATURE_SGI_LABEL is not set
+# CONFIG_FEATURE_SUN_LABEL is not set
+CONFIG_FEATURE_OSF_LABEL=y
+CONFIG_FEATURE_FDISK_ADVANCED=y
+CONFIG_FINDFS=y
+CONFIG_FREERAMDISK=y
+CONFIG_FSCK_MINIX=y
+CONFIG_MKFS_MINIX=y
+
+#
+# Minix filesystem support
+#
+CONFIG_FEATURE_MINIX2=y
+CONFIG_GETOPT=y
+CONFIG_HEXDUMP=y
+CONFIG_FEATURE_HEXDUMP_REVERSE=y
+CONFIG_HD=y
+CONFIG_HWCLOCK=y
+CONFIG_FEATURE_HWCLOCK_LONG_OPTIONS=y
+CONFIG_FEATURE_HWCLOCK_ADJTIME_FHS=y
+CONFIG_IPCRM=y
+CONFIG_IPCS=y
+CONFIG_LOSETUP=y
+CONFIG_MDEV=y
+CONFIG_FEATURE_MDEV_CONF=y
+CONFIG_FEATURE_MDEV_RENAME=y
+CONFIG_FEATURE_MDEV_RENAME_REGEXP=y
+CONFIG_FEATURE_MDEV_EXEC=y
+CONFIG_FEATURE_MDEV_LOAD_FIRMWARE=y
+CONFIG_MKSWAP=y
+CONFIG_FEATURE_MKSWAP_V0=y
+CONFIG_MORE=y
+CONFIG_FEATURE_USE_TERMIOS=y
+CONFIG_VOLUMEID=y
+CONFIG_FEATURE_VOLUMEID_EXT=y
+CONFIG_FEATURE_VOLUMEID_REISERFS=y
+CONFIG_FEATURE_VOLUMEID_FAT=y
+CONFIG_FEATURE_VOLUMEID_HFS=y
+CONFIG_FEATURE_VOLUMEID_JFS=y
+CONFIG_FEATURE_VOLUMEID_XFS=y
+CONFIG_FEATURE_VOLUMEID_NTFS=y
+CONFIG_FEATURE_VOLUMEID_ISO9660=y
+CONFIG_FEATURE_VOLUMEID_UDF=y
+CONFIG_FEATURE_VOLUMEID_LUKS=y
+CONFIG_FEATURE_VOLUMEID_LINUXSWAP=y
+CONFIG_FEATURE_VOLUMEID_CRAMFS=y
+CONFIG_FEATURE_VOLUMEID_ROMFS=y
+CONFIG_FEATURE_VOLUMEID_SYSV=y
+# CONFIG_FEATURE_VOLUMEID_OCFS2 is not set
+CONFIG_FEATURE_VOLUMEID_LINUXRAID=y
+CONFIG_MOUNT=y
+CONFIG_FEATURE_MOUNT_FAKE=y
+# CONFIG_FEATURE_MOUNT_VERBOSE is not set
+CONFIG_FEATURE_MOUNT_HELPERS=y
+CONFIG_FEATURE_MOUNT_LABEL=y
+CONFIG_FEATURE_MOUNT_NFS=y
+CONFIG_FEATURE_MOUNT_CIFS=y
+CONFIG_FEATURE_MOUNT_FLAGS=y
+CONFIG_FEATURE_MOUNT_FSTAB=y
+CONFIG_PIVOT_ROOT=y
+CONFIG_RDATE=y
+CONFIG_RDEV=y
+CONFIG_READPROFILE=y
+CONFIG_RTCWAKE=y
+CONFIG_SCRIPT=y
+CONFIG_SETARCH=y
+CONFIG_SWAPONOFF=y
+CONFIG_FEATURE_SWAPON_PRI=y
+CONFIG_SWITCH_ROOT=y
+CONFIG_UMOUNT=y
+CONFIG_FEATURE_UMOUNT_ALL=y
+
+#
+# Common options for mount/umount
+#
+CONFIG_FEATURE_MOUNT_LOOP=y
+CONFIG_FEATURE_MTAB_SUPPORT=y
+
+#
+# Miscellaneous Utilities
+#
+CONFIG_ADJTIMEX=y
+CONFIG_BBCONFIG=y
+CONFIG_CHAT=y
+CONFIG_FEATURE_CHAT_NOFAIL=y
+# CONFIG_FEATURE_CHAT_TTY_HIFI is not set
+CONFIG_FEATURE_CHAT_IMPLICIT_CR=y
+# CONFIG_FEATURE_CHAT_SWALLOW_OPTS is not set
+# CONFIG_FEATURE_CHAT_SEND_ESCAPES is not set
+# CONFIG_FEATURE_CHAT_VAR_ABORT_LEN is not set
+# CONFIG_FEATURE_CHAT_CLR_ABORT is not set
+CONFIG_CHRT=y
+CONFIG_CROND=y
+# CONFIG_DEBUG_CROND_OPTION is not set
+# CONFIG_FEATURE_CROND_CALL_SENDMAIL is not set
+CONFIG_CRONTAB=y
+CONFIG_DC=y
+# CONFIG_DEVFSD is not set
+# CONFIG_DEVFSD_MODLOAD is not set
+# CONFIG_DEVFSD_FG_NP is not set
+# CONFIG_DEVFSD_VERBOSE is not set
+# CONFIG_FEATURE_DEVFS is not set
+CONFIG_EJECT=y
+CONFIG_FEATURE_EJECT_SCSI=y
+CONFIG_FBSPLASH=y
+CONFIG_INOTIFYD=y
+CONFIG_LAST=y
+CONFIG_FEATURE_LAST_SMALL=y
+# CONFIG_FEATURE_LAST_FANCY is not set
+CONFIG_LESS=y
+CONFIG_FEATURE_LESS_MAXLINES=9999999
+CONFIG_FEATURE_LESS_BRACKETS=y
+CONFIG_FEATURE_LESS_FLAGS=y
+CONFIG_FEATURE_LESS_FLAGCS=y
+CONFIG_FEATURE_LESS_MARKS=y
+CONFIG_FEATURE_LESS_REGEXP=y
+CONFIG_HDPARM=y
+CONFIG_FEATURE_HDPARM_GET_IDENTITY=y
+CONFIG_FEATURE_HDPARM_HDIO_SCAN_HWIF=y
+CONFIG_FEATURE_HDPARM_HDIO_UNREGISTER_HWIF=y
+CONFIG_FEATURE_HDPARM_HDIO_DRIVE_RESET=y
+CONFIG_FEATURE_HDPARM_HDIO_TRISTATE_HWIF=y
+CONFIG_FEATURE_HDPARM_HDIO_GETSET_DMA=y
+CONFIG_MAKEDEVS=y
+# CONFIG_FEATURE_MAKEDEVS_LEAF is not set
+CONFIG_FEATURE_MAKEDEVS_TABLE=y
+# CONFIG_MAN is not set
+# CONFIG_MICROCOM is not set
+CONFIG_MOUNTPOINT=y
+CONFIG_MT=y
+CONFIG_RAIDAUTORUN=y
+CONFIG_READAHEAD=y
+CONFIG_RUNLEVEL=y
+CONFIG_RX=y
+CONFIG_SETSID=y
+CONFIG_STRINGS=y
+CONFIG_TASKSET=y
+CONFIG_FEATURE_TASKSET_FANCY=y
+CONFIG_TIME=y
+CONFIG_TTYSIZE=y
+CONFIG_WATCHDOG=y
+
+#
+# Networking Utilities
+#
+CONFIG_FEATURE_IPV6=y
+CONFIG_FEATURE_PREFER_IPV4_ADDRESS=y
+# CONFIG_VERBOSE_RESOLUTION_ERRORS is not set
+CONFIG_ARP=y
+CONFIG_ARPING=y
+CONFIG_BRCTL=y
+# CONFIG_FEATURE_BRCTL_FANCY is not set
+# CONFIG_FEATURE_BRCTL_SHOW is not set
+CONFIG_DNSD=y
+CONFIG_ETHER_WAKE=y
+CONFIG_FAKEIDENTD=y
+CONFIG_FTPGET=y
+CONFIG_FTPPUT=y
+CONFIG_FEATURE_FTPGETPUT_LONG_OPTIONS=y
+CONFIG_HOSTNAME=y
+# CONFIG_HTTPD is not set
+# CONFIG_FEATURE_HTTPD_RANGES is not set
+# CONFIG_FEATURE_HTTPD_USE_SENDFILE is not set
+# CONFIG_FEATURE_HTTPD_RELOAD_CONFIG_SIGHUP is not set
+# CONFIG_FEATURE_HTTPD_SETUID is not set
+# CONFIG_FEATURE_HTTPD_BASIC_AUTH is not set
+# CONFIG_FEATURE_HTTPD_AUTH_MD5 is not set
+# CONFIG_FEATURE_HTTPD_CONFIG_WITH_MIME_TYPES is not set
+# CONFIG_FEATURE_HTTPD_CGI is not set
+# CONFIG_FEATURE_HTTPD_CONFIG_WITH_SCRIPT_INTERPR is not set
+# CONFIG_FEATURE_HTTPD_SET_REMOTE_PORT_TO_ENV is not set
+# CONFIG_FEATURE_HTTPD_ENCODE_URL_STR is not set
+# CONFIG_FEATURE_HTTPD_ERROR_PAGES is not set
+# CONFIG_FEATURE_HTTPD_PROXY is not set
+CONFIG_IFCONFIG=y
+CONFIG_FEATURE_IFCONFIG_STATUS=y
+CONFIG_FEATURE_IFCONFIG_SLIP=y
+CONFIG_FEATURE_IFCONFIG_MEMSTART_IOADDR_IRQ=y
+CONFIG_FEATURE_IFCONFIG_HW=y
+CONFIG_FEATURE_IFCONFIG_BROADCAST_PLUS=y
+CONFIG_IFENSLAVE=y
+CONFIG_IFUPDOWN=y
+CONFIG_IFUPDOWN_IFSTATE_PATH="/var/run/ifstate"
+CONFIG_FEATURE_IFUPDOWN_IP=y
+CONFIG_FEATURE_IFUPDOWN_IP_BUILTIN=y
+# CONFIG_FEATURE_IFUPDOWN_IFCONFIG_BUILTIN is not set
+CONFIG_FEATURE_IFUPDOWN_IPV4=y
+CONFIG_FEATURE_IFUPDOWN_IPV6=y
+CONFIG_FEATURE_IFUPDOWN_MAPPING=y
+CONFIG_FEATURE_IFUPDOWN_EXTERNAL_DHCP=y
+# CONFIG_INETD is not set
+# CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_ECHO is not set
+# CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_DISCARD is not set
+# CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_TIME is not set
+# CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_DAYTIME is not set
+# CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_CHARGEN is not set
+# CONFIG_FEATURE_INETD_RPC is not set
+CONFIG_IP=y
+CONFIG_FEATURE_IP_ADDRESS=y
+CONFIG_FEATURE_IP_LINK=y
+CONFIG_FEATURE_IP_ROUTE=y
+CONFIG_FEATURE_IP_TUNNEL=y
+CONFIG_FEATURE_IP_RULE=y
+CONFIG_FEATURE_IP_SHORT_FORMS=y
+# CONFIG_FEATURE_IP_RARE_PROTOCOLS is not set
+CONFIG_IPADDR=y
+CONFIG_IPLINK=y
+CONFIG_IPROUTE=y
+CONFIG_IPTUNNEL=y
+CONFIG_IPRULE=y
+CONFIG_IPCALC=y
+CONFIG_FEATURE_IPCALC_FANCY=y
+CONFIG_FEATURE_IPCALC_LONG_OPTIONS=y
+CONFIG_NAMEIF=y
+# CONFIG_FEATURE_NAMEIF_EXTENDED is not set
+CONFIG_NC=y
+CONFIG_NC_SERVER=y
+CONFIG_NC_EXTRA=y
+CONFIG_NETSTAT=y
+# CONFIG_FEATURE_NETSTAT_WIDE is not set
+CONFIG_FEATURE_NETSTAT_PRG=y
+CONFIG_NSLOOKUP=y
+CONFIG_PING=y
+CONFIG_PING6=y
+CONFIG_FEATURE_FANCY_PING=y
+CONFIG_PSCAN=y
+CONFIG_ROUTE=y
+# CONFIG_SENDMAIL is not set
+# CONFIG_FETCHMAIL is not set
+CONFIG_SLATTACH=y
+CONFIG_TELNET=y
+CONFIG_FEATURE_TELNET_TTYPE=y
+CONFIG_FEATURE_TELNET_AUTOLOGIN=y
+CONFIG_TELNETD=y
+CONFIG_FEATURE_TELNETD_STANDALONE=y
+CONFIG_TFTP=y
+# CONFIG_TFTPD is not set
+CONFIG_FEATURE_TFTP_GET=y
+CONFIG_FEATURE_TFTP_PUT=y
+CONFIG_FEATURE_TFTP_BLOCKSIZE=y
+# CONFIG_DEBUG_TFTP is not set
+CONFIG_TRACEROUTE=y
+# CONFIG_FEATURE_TRACEROUTE_VERBOSE is not set
+# CONFIG_FEATURE_TRACEROUTE_SOURCE_ROUTE is not set
+# CONFIG_FEATURE_TRACEROUTE_USE_ICMP is not set
+# CONFIG_APP_UDHCPD is not set
+# CONFIG_APP_DHCPRELAY is not set
+# CONFIG_APP_DUMPLEASES is not set
+# CONFIG_FEATURE_UDHCPD_WRITE_LEASES_EARLY is not set
+CONFIG_DHCPD_LEASES_FILE=""
+# CONFIG_APP_UDHCPC is not set
+# CONFIG_FEATURE_UDHCPC_ARPING is not set
+# CONFIG_FEATURE_UDHCP_PORT is not set
+# CONFIG_FEATURE_UDHCP_DEBUG is not set
+# CONFIG_FEATURE_RFC3397 is not set
+CONFIG_DHCPC_DEFAULT_SCRIPT=""
+CONFIG_UDHCPC_SLACK_FOR_BUGGY_SERVERS=
+CONFIG_VCONFIG=y
+CONFIG_WGET=y
+CONFIG_FEATURE_WGET_STATUSBAR=y
+CONFIG_FEATURE_WGET_AUTHENTICATION=y
+CONFIG_FEATURE_WGET_LONG_OPTIONS=y
+CONFIG_ZCIP=y
+CONFIG_TCPSVD=y
+CONFIG_UDPSVD=y
+
+#
+# Process Utilities
+#
+CONFIG_FREE=y
+CONFIG_FUSER=y
+CONFIG_KILL=y
+CONFIG_KILLALL=y
+CONFIG_KILLALL5=y
+CONFIG_NMETER=y
+CONFIG_PGREP=y
+CONFIG_PIDOF=y
+CONFIG_FEATURE_PIDOF_SINGLE=y
+CONFIG_FEATURE_PIDOF_OMIT=y
+CONFIG_PKILL=y
+CONFIG_PS=y
+CONFIG_FEATURE_PS_WIDE=y
+CONFIG_FEATURE_PS_TIME=y
+# CONFIG_FEATURE_PS_UNUSUAL_SYSTEMS is not set
+CONFIG_RENICE=y
+CONFIG_BB_SYSCTL=y
+CONFIG_TOP=y
+CONFIG_FEATURE_TOP_CPU_USAGE_PERCENTAGE=y
+CONFIG_FEATURE_TOP_CPU_GLOBAL_PERCENTS=y
+CONFIG_FEATURE_TOP_DECIMALS=y
+CONFIG_FEATURE_TOPMEM=y
+CONFIG_UPTIME=y
+CONFIG_WATCH=y
+
+#
+# Shells
+#
+CONFIG_FEATURE_SH_IS_ASH=y
+# CONFIG_FEATURE_SH_IS_HUSH is not set
+# CONFIG_FEATURE_SH_IS_MSH is not set
+# CONFIG_FEATURE_SH_IS_NONE is not set
+CONFIG_ASH=y
+
+#
+# Ash Shell Options
+#
+CONFIG_ASH_BASH_COMPAT=y
+CONFIG_ASH_JOB_CONTROL=y
+CONFIG_ASH_READ_NCHARS=y
+CONFIG_ASH_READ_TIMEOUT=y
+CONFIG_ASH_ALIAS=y
+CONFIG_ASH_MATH_SUPPORT=y
+CONFIG_ASH_MATH_SUPPORT_64=y
+CONFIG_ASH_GETOPTS=y
+CONFIG_ASH_BUILTIN_ECHO=y
+CONFIG_ASH_BUILTIN_PRINTF=y
+CONFIG_ASH_BUILTIN_TEST=y
+CONFIG_ASH_CMDCMD=y
+CONFIG_ASH_MAIL=y
+CONFIG_ASH_OPTIMIZE_FOR_SIZE=y
+CONFIG_ASH_RANDOM_SUPPORT=y
+CONFIG_ASH_EXPAND_PRMT=y
+# CONFIG_HUSH is not set
+# CONFIG_HUSH_HELP is not set
+# CONFIG_HUSH_INTERACTIVE is not set
+# CONFIG_HUSH_JOB is not set
+# CONFIG_HUSH_TICK is not set
+# CONFIG_HUSH_IF is not set
+# CONFIG_HUSH_LOOPS is not set
+# CONFIG_HUSH_CASE is not set
+# CONFIG_LASH is not set
+# CONFIG_MSH is not set
+
+#
+# Bourne Shell Options
+#
+CONFIG_FEATURE_SH_EXTRA_QUIET=y
+# CONFIG_FEATURE_SH_STANDALONE is not set
+# CONFIG_FEATURE_SH_NOFORK is not set
+CONFIG_CTTYHACK=y
+
+#
+# System Logging Utilities
+#
+CONFIG_SYSLOGD=y
+CONFIG_FEATURE_ROTATE_LOGFILE=y
+CONFIG_FEATURE_REMOTE_LOG=y
+# CONFIG_FEATURE_SYSLOGD_DUP is not set
+CONFIG_FEATURE_IPC_SYSLOG=y
+CONFIG_FEATURE_IPC_SYSLOG_BUFFER_SIZE=16
+CONFIG_LOGREAD=y
+CONFIG_FEATURE_LOGREAD_REDUCED_LOCKING=y
+CONFIG_KLOGD=y
+CONFIG_LOGGER=y
+
+#
+# Runit Utilities
+#
+CONFIG_RUNSV=y
+CONFIG_RUNSVDIR=y
+CONFIG_SV=y
+CONFIG_SVLOGD=y
+CONFIG_CHPST=y
+CONFIG_SETUIDGID=y
+CONFIG_ENVUIDGID=y
+CONFIG_ENVDIR=y
+CONFIG_SOFTLIMIT=y
+# CONFIG_CHCON is not set
+# CONFIG_FEATURE_CHCON_LONG_OPTIONS is not set
+# CONFIG_GETENFORCE is not set
+# CONFIG_GETSEBOOL is not set
+# CONFIG_LOAD_POLICY is not set
+# CONFIG_MATCHPATHCON is not set
+# CONFIG_RESTORECON is not set
+# CONFIG_RUNCON is not set
+# CONFIG_FEATURE_RUNCON_LONG_OPTIONS is not set
+# CONFIG_SELINUXENABLED is not set
+# CONFIG_SETENFORCE is not set
+# CONFIG_SETFILES is not set
+# CONFIG_FEATURE_SETFILES_CHECK_OPTION is not set
+# CONFIG_SETSEBOOL is not set
+# CONFIG_SESTATUS is not set
+
+#
+# Print Utilities
+#
+# CONFIG_LPD is not set
+CONFIG_LPR=y
+# CONFIG_LPQ is not set
diff --git a/source/a/mkinitrd/archive/busybox-dot-config.1.7.2 b/source/a/mkinitrd/archive/busybox-dot-config.1.7.2
new file mode 100644
index 00000000..5b9c00b4
--- /dev/null
+++ b/source/a/mkinitrd/archive/busybox-dot-config.1.7.2
@@ -0,0 +1,753 @@
+#
+# Automatically generated make config: don't edit
+# Busybox version: 1.7.2
+# Thu Oct 4 22:03:29 2007
+#
+CONFIG_HAVE_DOT_CONFIG=y
+
+#
+# Busybox Settings
+#
+
+#
+# General Configuration
+#
+CONFIG_NITPICK=y
+CONFIG_DESKTOP=y
+CONFIG_FEATURE_BUFFERS_USE_MALLOC=y
+# CONFIG_FEATURE_BUFFERS_GO_ON_STACK is not set
+# CONFIG_FEATURE_BUFFERS_GO_IN_BSS is not set
+CONFIG_SHOW_USAGE=y
+CONFIG_FEATURE_VERBOSE_USAGE=y
+CONFIG_FEATURE_COMPRESS_USAGE=y
+CONFIG_FEATURE_INSTALLER=y
+CONFIG_LOCALE_SUPPORT=y
+CONFIG_GETOPT_LONG=y
+CONFIG_FEATURE_DEVPTS=y
+# CONFIG_FEATURE_CLEAN_UP is not set
+CONFIG_FEATURE_PIDFILE=y
+CONFIG_FEATURE_SUID=y
+CONFIG_FEATURE_SUID_CONFIG=y
+CONFIG_FEATURE_SUID_CONFIG_QUIET=y
+# CONFIG_SELINUX is not set
+# CONFIG_FEATURE_PREFER_APPLETS is not set
+CONFIG_BUSYBOX_EXEC_PATH="/proc/self/exe"
+CONFIG_FEATURE_SYSLOG=y
+CONFIG_FEATURE_HAVE_RPC=y
+
+#
+# Build Options
+#
+CONFIG_STATIC=y
+# CONFIG_BUILD_LIBBUSYBOX is not set
+# CONFIG_FEATURE_FULL_LIBBUSYBOX is not set
+# CONFIG_FEATURE_SHARED_BUSYBOX is not set
+CONFIG_LFS=y
+CONFIG_BUILD_AT_ONCE=y
+
+#
+# Debugging Options
+#
+# CONFIG_DEBUG is not set
+# CONFIG_WERROR is not set
+CONFIG_NO_DEBUG_LIB=y
+# CONFIG_DMALLOC is not set
+# CONFIG_EFENCE is not set
+CONFIG_INCLUDE_SUSv2=y
+
+#
+# Installation Options
+#
+CONFIG_INSTALL_NO_USR=y
+CONFIG_INSTALL_APPLET_SYMLINKS=y
+# CONFIG_INSTALL_APPLET_HARDLINKS is not set
+# CONFIG_INSTALL_APPLET_DONT is not set
+CONFIG_PREFIX="./_install"
+
+#
+# Busybox Library Tuning
+#
+CONFIG_PASSWORD_MINLEN=6
+CONFIG_MD5_SIZE_VS_SPEED=2
+# CONFIG_FEATURE_FAST_TOP is not set
+# CONFIG_FEATURE_ETC_NETWORKS is not set
+CONFIG_FEATURE_EDITING=y
+CONFIG_FEATURE_EDITING_MAX_LEN=1024
+CONFIG_FEATURE_EDITING_FANCY_KEYS=y
+CONFIG_FEATURE_EDITING_VI=y
+CONFIG_FEATURE_EDITING_HISTORY=64
+# CONFIG_FEATURE_EDITING_SAVEHISTORY is not set
+CONFIG_FEATURE_TAB_COMPLETION=y
+# CONFIG_FEATURE_USERNAME_COMPLETION is not set
+CONFIG_FEATURE_EDITING_FANCY_PROMPT=y
+CONFIG_MONOTONIC_SYSCALL=y
+CONFIG_IOCTL_HEX2STR_ERROR=y
+
+#
+# Applets
+#
+
+#
+# Archival Utilities
+#
+CONFIG_AR=y
+CONFIG_FEATURE_AR_LONG_FILENAMES=y
+CONFIG_BUNZIP2=y
+CONFIG_CPIO=y
+# CONFIG_DPKG is not set
+# CONFIG_DPKG_DEB is not set
+# CONFIG_FEATURE_DPKG_DEB_EXTRACT_ONLY is not set
+CONFIG_GUNZIP=y
+CONFIG_FEATURE_GUNZIP_UNCOMPRESS=y
+CONFIG_GZIP=y
+CONFIG_RPM2CPIO=y
+# CONFIG_RPM is not set
+# CONFIG_FEATURE_RPM_BZ2 is not set
+CONFIG_TAR=y
+CONFIG_FEATURE_TAR_CREATE=y
+CONFIG_FEATURE_TAR_BZIP2=y
+CONFIG_FEATURE_TAR_LZMA=y
+CONFIG_FEATURE_TAR_FROM=y
+CONFIG_FEATURE_TAR_GZIP=y
+CONFIG_FEATURE_TAR_COMPRESS=y
+CONFIG_FEATURE_TAR_OLDGNU_COMPATIBILITY=y
+# CONFIG_FEATURE_TAR_OLDSUN_COMPATIBILITY is not set
+CONFIG_FEATURE_TAR_GNU_EXTENSIONS=y
+CONFIG_FEATURE_TAR_LONG_OPTIONS=y
+CONFIG_UNCOMPRESS=y
+CONFIG_UNLZMA=y
+CONFIG_FEATURE_LZMA_FAST=y
+CONFIG_UNZIP=y
+
+#
+# Common options for cpio and tar
+#
+CONFIG_FEATURE_UNARCHIVE_TAPE=y
+# CONFIG_FEATURE_DEB_TAR_GZ is not set
+# CONFIG_FEATURE_DEB_TAR_BZ2 is not set
+# CONFIG_FEATURE_DEB_TAR_LZMA is not set
+
+#
+# Coreutils
+#
+CONFIG_BASENAME=y
+CONFIG_CAL=y
+CONFIG_CAT=y
+CONFIG_CATV=y
+CONFIG_CHGRP=y
+CONFIG_CHMOD=y
+CONFIG_CHOWN=y
+CONFIG_CHROOT=y
+CONFIG_CKSUM=y
+CONFIG_COMM=y
+CONFIG_CP=y
+CONFIG_CUT=y
+CONFIG_DATE=y
+CONFIG_FEATURE_DATE_ISOFMT=y
+CONFIG_DD=y
+CONFIG_FEATURE_DD_SIGNAL_HANDLING=y
+CONFIG_FEATURE_DD_IBS_OBS=y
+CONFIG_DF=y
+CONFIG_DIRNAME=y
+CONFIG_DOS2UNIX=y
+CONFIG_UNIX2DOS=y
+CONFIG_DU=y
+CONFIG_FEATURE_DU_DEFAULT_BLOCKSIZE_1K=y
+CONFIG_ECHO=y
+CONFIG_FEATURE_FANCY_ECHO=y
+CONFIG_ENV=y
+CONFIG_FEATURE_ENV_LONG_OPTIONS=y
+CONFIG_EXPAND=y
+CONFIG_FEATURE_EXPAND_LONG_OPTIONS=y
+CONFIG_EXPR=y
+CONFIG_EXPR_MATH_SUPPORT_64=y
+CONFIG_FALSE=y
+CONFIG_FOLD=y
+CONFIG_HEAD=y
+CONFIG_FEATURE_FANCY_HEAD=y
+CONFIG_HOSTID=y
+CONFIG_ID=y
+CONFIG_INSTALL=y
+CONFIG_FEATURE_INSTALL_LONG_OPTIONS=y
+CONFIG_LENGTH=y
+CONFIG_LN=y
+CONFIG_LOGNAME=y
+CONFIG_LS=y
+CONFIG_FEATURE_LS_FILETYPES=y
+CONFIG_FEATURE_LS_FOLLOWLINKS=y
+CONFIG_FEATURE_LS_RECURSIVE=y
+CONFIG_FEATURE_LS_SORTFILES=y
+CONFIG_FEATURE_LS_TIMESTAMPS=y
+CONFIG_FEATURE_LS_USERNAME=y
+CONFIG_FEATURE_LS_COLOR=y
+CONFIG_FEATURE_LS_COLOR_IS_DEFAULT=y
+CONFIG_MD5SUM=y
+CONFIG_MKDIR=y
+CONFIG_FEATURE_MKDIR_LONG_OPTIONS=y
+CONFIG_MKFIFO=y
+CONFIG_MKNOD=y
+CONFIG_MV=y
+CONFIG_FEATURE_MV_LONG_OPTIONS=y
+CONFIG_NICE=y
+CONFIG_NOHUP=y
+CONFIG_OD=y
+CONFIG_PRINTENV=y
+CONFIG_PRINTF=y
+CONFIG_PWD=y
+CONFIG_READLINK=y
+CONFIG_FEATURE_READLINK_FOLLOW=y
+CONFIG_REALPATH=y
+CONFIG_RM=y
+CONFIG_RMDIR=y
+CONFIG_SEQ=y
+CONFIG_SHA1SUM=y
+CONFIG_SLEEP=y
+CONFIG_FEATURE_FANCY_SLEEP=y
+CONFIG_SORT=y
+CONFIG_FEATURE_SORT_BIG=y
+CONFIG_SPLIT=y
+CONFIG_FEATURE_SPLIT_FANCY=y
+CONFIG_STAT=y
+CONFIG_FEATURE_STAT_FORMAT=y
+CONFIG_STTY=y
+CONFIG_SUM=y
+CONFIG_SYNC=y
+CONFIG_TAIL=y
+CONFIG_FEATURE_FANCY_TAIL=y
+CONFIG_TEE=y
+CONFIG_FEATURE_TEE_USE_BLOCK_IO=y
+CONFIG_TEST=y
+CONFIG_FEATURE_TEST_64=y
+CONFIG_TOUCH=y
+CONFIG_TR=y
+CONFIG_FEATURE_TR_CLASSES=y
+CONFIG_FEATURE_TR_EQUIV=y
+CONFIG_TRUE=y
+CONFIG_TTY=y
+CONFIG_UNAME=y
+CONFIG_UNEXPAND=y
+CONFIG_FEATURE_UNEXPAND_LONG_OPTIONS=y
+CONFIG_UNIQ=y
+CONFIG_USLEEP=y
+CONFIG_UUDECODE=y
+CONFIG_UUENCODE=y
+CONFIG_WC=y
+CONFIG_FEATURE_WC_LARGE=y
+CONFIG_WHO=y
+CONFIG_WHOAMI=y
+CONFIG_YES=y
+
+#
+# Common options for cp and mv
+#
+CONFIG_FEATURE_PRESERVE_HARDLINKS=y
+
+#
+# Common options for ls, more and telnet
+#
+CONFIG_FEATURE_AUTOWIDTH=y
+
+#
+# Common options for df, du, ls
+#
+CONFIG_FEATURE_HUMAN_READABLE=y
+
+#
+# Common options for md5sum, sha1sum
+#
+CONFIG_FEATURE_MD5_SHA1_SUM_CHECK=y
+
+#
+# Console Utilities
+#
+CONFIG_CHVT=y
+CONFIG_CLEAR=y
+CONFIG_DEALLOCVT=y
+CONFIG_DUMPKMAP=y
+CONFIG_LOADFONT=y
+CONFIG_LOADKMAP=y
+CONFIG_OPENVT=y
+CONFIG_RESET=y
+CONFIG_RESIZE=y
+CONFIG_FEATURE_RESIZE_PRINT=y
+CONFIG_SETCONSOLE=y
+CONFIG_FEATURE_SETCONSOLE_LONG_OPTIONS=y
+CONFIG_SETKEYCODES=y
+CONFIG_SETLOGCONS=y
+
+#
+# Debian Utilities
+#
+CONFIG_MKTEMP=y
+CONFIG_PIPE_PROGRESS=y
+CONFIG_RUN_PARTS=y
+CONFIG_FEATURE_RUN_PARTS_LONG_OPTIONS=y
+CONFIG_FEATURE_RUN_PARTS_FANCY=y
+CONFIG_START_STOP_DAEMON=y
+CONFIG_FEATURE_START_STOP_DAEMON_FANCY=y
+CONFIG_FEATURE_START_STOP_DAEMON_LONG_OPTIONS=y
+CONFIG_WHICH=y
+
+#
+# Editors
+#
+CONFIG_AWK=y
+CONFIG_FEATURE_AWK_MATH=y
+CONFIG_CMP=y
+CONFIG_DIFF=y
+CONFIG_FEATURE_DIFF_BINARY=y
+CONFIG_FEATURE_DIFF_DIR=y
+CONFIG_FEATURE_DIFF_MINIMAL=y
+CONFIG_ED=y
+CONFIG_PATCH=y
+CONFIG_SED=y
+CONFIG_VI=y
+CONFIG_FEATURE_VI_MAX_LEN=1024
+CONFIG_FEATURE_VI_COLON=y
+CONFIG_FEATURE_VI_YANKMARK=y
+CONFIG_FEATURE_VI_SEARCH=y
+CONFIG_FEATURE_VI_USE_SIGNALS=y
+CONFIG_FEATURE_VI_DOT_CMD=y
+CONFIG_FEATURE_VI_READONLY=y
+CONFIG_FEATURE_VI_SETOPTS=y
+CONFIG_FEATURE_VI_SET=y
+CONFIG_FEATURE_VI_WIN_RESIZE=y
+CONFIG_FEATURE_VI_OPTIMIZE_CURSOR=y
+CONFIG_FEATURE_ALLOW_EXEC=y
+
+#
+# Finding Utilities
+#
+CONFIG_FIND=y
+CONFIG_FEATURE_FIND_PRINT0=y
+CONFIG_FEATURE_FIND_MTIME=y
+CONFIG_FEATURE_FIND_MMIN=y
+CONFIG_FEATURE_FIND_PERM=y
+CONFIG_FEATURE_FIND_TYPE=y
+CONFIG_FEATURE_FIND_XDEV=y
+CONFIG_FEATURE_FIND_MAXDEPTH=y
+CONFIG_FEATURE_FIND_NEWER=y
+CONFIG_FEATURE_FIND_INUM=y
+CONFIG_FEATURE_FIND_EXEC=y
+CONFIG_FEATURE_FIND_USER=y
+CONFIG_FEATURE_FIND_GROUP=y
+CONFIG_FEATURE_FIND_NOT=y
+CONFIG_FEATURE_FIND_DEPTH=y
+CONFIG_FEATURE_FIND_PAREN=y
+CONFIG_FEATURE_FIND_SIZE=y
+CONFIG_FEATURE_FIND_PRUNE=y
+# CONFIG_FEATURE_FIND_DELETE is not set
+CONFIG_FEATURE_FIND_PATH=y
+CONFIG_FEATURE_FIND_REGEX=y
+# CONFIG_FEATURE_FIND_CONTEXT is not set
+CONFIG_GREP=y
+CONFIG_FEATURE_GREP_EGREP_ALIAS=y
+CONFIG_FEATURE_GREP_FGREP_ALIAS=y
+CONFIG_FEATURE_GREP_CONTEXT=y
+CONFIG_XARGS=y
+CONFIG_FEATURE_XARGS_SUPPORT_CONFIRMATION=y
+CONFIG_FEATURE_XARGS_SUPPORT_QUOTES=y
+CONFIG_FEATURE_XARGS_SUPPORT_TERMOPT=y
+CONFIG_FEATURE_XARGS_SUPPORT_ZERO_TERM=y
+
+#
+# Init Utilities
+#
+CONFIG_INIT=y
+# CONFIG_DEBUG_INIT is not set
+CONFIG_FEATURE_USE_INITTAB=y
+CONFIG_FEATURE_INIT_SCTTY=y
+CONFIG_FEATURE_INIT_SYSLOG=y
+CONFIG_FEATURE_EXTRA_QUIET=y
+# CONFIG_FEATURE_INIT_COREDUMPS is not set
+# CONFIG_FEATURE_INITRD is not set
+CONFIG_HALT=y
+CONFIG_MESG=y
+
+#
+# Login/Password Management Utilities
+#
+CONFIG_FEATURE_SHADOWPASSWDS=y
+# CONFIG_USE_BB_SHADOW is not set
+# CONFIG_USE_BB_PWD_GRP is not set
+CONFIG_ADDGROUP=y
+CONFIG_FEATURE_ADDUSER_TO_GROUP=y
+CONFIG_DELGROUP=y
+CONFIG_FEATURE_DEL_USER_FROM_GROUP=y
+CONFIG_ADDUSER=y
+CONFIG_DELUSER=y
+CONFIG_GETTY=y
+CONFIG_FEATURE_UTMP=y
+CONFIG_FEATURE_WTMP=y
+CONFIG_LOGIN=y
+# CONFIG_PAM is not set
+CONFIG_LOGIN_SCRIPTS=y
+CONFIG_FEATURE_NOLOGIN=y
+# CONFIG_FEATURE_SECURETTY is not set
+CONFIG_PASSWD=y
+CONFIG_FEATURE_PASSWD_WEAK_CHECK=y
+CONFIG_CRYPTPW=y
+CONFIG_CHPASSWD=y
+CONFIG_SU=y
+CONFIG_FEATURE_SU_SYSLOG=y
+CONFIG_FEATURE_SU_CHECKS_SHELLS=y
+CONFIG_SULOGIN=y
+CONFIG_VLOCK=y
+
+#
+# Linux Ext2 FS Progs
+#
+CONFIG_CHATTR=y
+CONFIG_FSCK=y
+CONFIG_LSATTR=y
+
+#
+# Linux Module Utilities
+#
+CONFIG_INSMOD=y
+# CONFIG_FEATURE_INSMOD_VERSION_CHECKING is not set
+CONFIG_FEATURE_INSMOD_KSYMOOPS_SYMBOLS=y
+# CONFIG_FEATURE_INSMOD_LOADINKMEM is not set
+# CONFIG_FEATURE_INSMOD_LOAD_MAP is not set
+# CONFIG_FEATURE_INSMOD_LOAD_MAP_FULL is not set
+CONFIG_RMMOD=y
+CONFIG_LSMOD=y
+CONFIG_FEATURE_LSMOD_PRETTY_2_6_OUTPUT=y
+CONFIG_MODPROBE=y
+CONFIG_FEATURE_MODPROBE_MULTIPLE_OPTIONS=y
+CONFIG_FEATURE_MODPROBE_FANCY_ALIAS=y
+
+#
+# Options common to multiple modutils
+#
+CONFIG_FEATURE_CHECK_TAINTED_MODULE=y
+CONFIG_FEATURE_2_4_MODULES=y
+CONFIG_FEATURE_2_6_MODULES=y
+# CONFIG_FEATURE_QUERY_MODULE_INTERFACE is not set
+
+#
+# Linux System Utilities
+#
+CONFIG_DMESG=y
+CONFIG_FEATURE_DMESG_PRETTY=y
+CONFIG_FBSET=y
+CONFIG_FEATURE_FBSET_FANCY=y
+CONFIG_FEATURE_FBSET_READMODE=y
+CONFIG_FDFLUSH=y
+CONFIG_FDFORMAT=y
+CONFIG_FDISK=y
+CONFIG_FDISK_SUPPORT_LARGE_DISKS=y
+CONFIG_FEATURE_FDISK_WRITABLE=y
+# CONFIG_FEATURE_AIX_LABEL is not set
+# CONFIG_FEATURE_SGI_LABEL is not set
+# CONFIG_FEATURE_SUN_LABEL is not set
+CONFIG_FEATURE_OSF_LABEL=y
+CONFIG_FEATURE_FDISK_ADVANCED=y
+CONFIG_FREERAMDISK=y
+CONFIG_FSCK_MINIX=y
+CONFIG_MKFS_MINIX=y
+
+#
+# Minix filesystem support
+#
+CONFIG_FEATURE_MINIX2=y
+CONFIG_GETOPT=y
+CONFIG_HEXDUMP=y
+CONFIG_HWCLOCK=y
+CONFIG_FEATURE_HWCLOCK_LONG_OPTIONS=y
+CONFIG_FEATURE_HWCLOCK_ADJTIME_FHS=y
+CONFIG_IPCRM=y
+CONFIG_IPCS=y
+CONFIG_LOSETUP=y
+CONFIG_MDEV=y
+CONFIG_FEATURE_MDEV_CONF=y
+CONFIG_FEATURE_MDEV_EXEC=y
+CONFIG_FEATURE_MDEV_LOAD_FIRMWARE=y
+CONFIG_MKSWAP=y
+CONFIG_FEATURE_MKSWAP_V0=y
+CONFIG_MORE=y
+CONFIG_FEATURE_USE_TERMIOS=y
+CONFIG_MOUNT=y
+CONFIG_FEATURE_MOUNT_NFS=y
+CONFIG_FEATURE_MOUNT_CIFS=y
+CONFIG_FEATURE_MOUNT_FLAGS=y
+CONFIG_FEATURE_MOUNT_FSTAB=y
+CONFIG_PIVOT_ROOT=y
+CONFIG_RDATE=y
+CONFIG_READPROFILE=y
+CONFIG_SETARCH=y
+CONFIG_SWAPONOFF=y
+CONFIG_SWITCH_ROOT=y
+CONFIG_UMOUNT=y
+CONFIG_FEATURE_UMOUNT_ALL=y
+
+#
+# Common options for mount/umount
+#
+CONFIG_FEATURE_MOUNT_LOOP=y
+CONFIG_FEATURE_MTAB_SUPPORT=y
+
+#
+# Miscellaneous Utilities
+#
+CONFIG_ADJTIMEX=y
+CONFIG_BBCONFIG=y
+CONFIG_CHRT=y
+CONFIG_CROND=y
+# CONFIG_DEBUG_CROND_OPTION is not set
+# CONFIG_FEATURE_CROND_CALL_SENDMAIL is not set
+CONFIG_CRONTAB=y
+CONFIG_DC=y
+# CONFIG_DEVFSD is not set
+# CONFIG_DEVFSD_MODLOAD is not set
+# CONFIG_DEVFSD_FG_NP is not set
+# CONFIG_DEVFSD_VERBOSE is not set
+# CONFIG_FEATURE_DEVFS is not set
+CONFIG_EJECT=y
+CONFIG_LAST=y
+CONFIG_LESS=y
+CONFIG_FEATURE_LESS_MAXLINES=9999999
+CONFIG_FEATURE_LESS_BRACKETS=y
+CONFIG_FEATURE_LESS_FLAGS=y
+CONFIG_FEATURE_LESS_FLAGCS=y
+CONFIG_FEATURE_LESS_MARKS=y
+CONFIG_FEATURE_LESS_REGEXP=y
+CONFIG_HDPARM=y
+CONFIG_FEATURE_HDPARM_GET_IDENTITY=y
+CONFIG_FEATURE_HDPARM_HDIO_SCAN_HWIF=y
+CONFIG_FEATURE_HDPARM_HDIO_UNREGISTER_HWIF=y
+CONFIG_FEATURE_HDPARM_HDIO_DRIVE_RESET=y
+CONFIG_FEATURE_HDPARM_HDIO_TRISTATE_HWIF=y
+CONFIG_FEATURE_HDPARM_HDIO_GETSET_DMA=y
+CONFIG_MAKEDEVS=y
+# CONFIG_FEATURE_MAKEDEVS_LEAF is not set
+CONFIG_FEATURE_MAKEDEVS_TABLE=y
+CONFIG_MOUNTPOINT=y
+CONFIG_MT=y
+CONFIG_RAIDAUTORUN=y
+CONFIG_READAHEAD=y
+CONFIG_RUNLEVEL=y
+CONFIG_RX=y
+CONFIG_STRINGS=y
+CONFIG_SETSID=y
+CONFIG_TASKSET=y
+CONFIG_FEATURE_TASKSET_FANCY=y
+CONFIG_TIME=y
+CONFIG_TTYSIZE=y
+CONFIG_WATCHDOG=y
+
+#
+# Networking Utilities
+#
+CONFIG_FEATURE_IPV6=y
+# CONFIG_VERBOSE_RESOLUTION_ERRORS is not set
+CONFIG_ARP=y
+CONFIG_ARPING=y
+CONFIG_DNSD=y
+CONFIG_ETHER_WAKE=y
+CONFIG_FAKEIDENTD=y
+CONFIG_FTPGET=y
+CONFIG_FTPPUT=y
+CONFIG_FEATURE_FTPGETPUT_LONG_OPTIONS=y
+CONFIG_HOSTNAME=y
+# CONFIG_HTTPD is not set
+# CONFIG_FEATURE_HTTPD_USE_SENDFILE is not set
+# CONFIG_FEATURE_HTTPD_RELOAD_CONFIG_SIGHUP is not set
+# CONFIG_FEATURE_HTTPD_SETUID is not set
+# CONFIG_FEATURE_HTTPD_BASIC_AUTH is not set
+# CONFIG_FEATURE_HTTPD_AUTH_MD5 is not set
+# CONFIG_FEATURE_HTTPD_CONFIG_WITH_MIME_TYPES is not set
+# CONFIG_FEATURE_HTTPD_CGI is not set
+# CONFIG_FEATURE_HTTPD_CONFIG_WITH_SCRIPT_INTERPR is not set
+# CONFIG_FEATURE_HTTPD_SET_REMOTE_PORT_TO_ENV is not set
+# CONFIG_FEATURE_HTTPD_ENCODE_URL_STR is not set
+# CONFIG_FEATURE_HTTPD_ERROR_PAGES is not set
+CONFIG_IFCONFIG=y
+CONFIG_FEATURE_IFCONFIG_STATUS=y
+CONFIG_FEATURE_IFCONFIG_SLIP=y
+CONFIG_FEATURE_IFCONFIG_MEMSTART_IOADDR_IRQ=y
+CONFIG_FEATURE_IFCONFIG_HW=y
+CONFIG_FEATURE_IFCONFIG_BROADCAST_PLUS=y
+CONFIG_IFUPDOWN=y
+CONFIG_IFUPDOWN_IFSTATE_PATH="/var/run/ifstate"
+CONFIG_FEATURE_IFUPDOWN_IP=y
+CONFIG_FEATURE_IFUPDOWN_IP_BUILTIN=y
+# CONFIG_FEATURE_IFUPDOWN_IFCONFIG_BUILTIN is not set
+CONFIG_FEATURE_IFUPDOWN_IPV4=y
+CONFIG_FEATURE_IFUPDOWN_IPV6=y
+CONFIG_FEATURE_IFUPDOWN_MAPPING=y
+CONFIG_FEATURE_IFUPDOWN_EXTERNAL_DHCP=y
+# CONFIG_INETD is not set
+# CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_ECHO is not set
+# CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_DISCARD is not set
+# CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_TIME is not set
+# CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_DAYTIME is not set
+# CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_CHARGEN is not set
+# CONFIG_FEATURE_INETD_RPC is not set
+CONFIG_IP=y
+CONFIG_FEATURE_IP_ADDRESS=y
+CONFIG_FEATURE_IP_LINK=y
+CONFIG_FEATURE_IP_ROUTE=y
+CONFIG_FEATURE_IP_TUNNEL=y
+CONFIG_FEATURE_IP_RULE=y
+CONFIG_FEATURE_IP_SHORT_FORMS=y
+CONFIG_IPADDR=y
+CONFIG_IPLINK=y
+CONFIG_IPROUTE=y
+CONFIG_IPTUNNEL=y
+CONFIG_IPRULE=y
+CONFIG_IPCALC=y
+CONFIG_FEATURE_IPCALC_FANCY=y
+CONFIG_FEATURE_IPCALC_LONG_OPTIONS=y
+CONFIG_NAMEIF=y
+CONFIG_NC=y
+CONFIG_NC_SERVER=y
+CONFIG_NC_EXTRA=y
+CONFIG_NETSTAT=y
+# CONFIG_FEATURE_NETSTAT_WIDE is not set
+CONFIG_NSLOOKUP=y
+CONFIG_PING=y
+CONFIG_PING6=y
+CONFIG_PSCAN=y
+CONFIG_FEATURE_FANCY_PING=y
+CONFIG_ROUTE=y
+CONFIG_SLATTACH=y
+CONFIG_TELNET=y
+CONFIG_FEATURE_TELNET_TTYPE=y
+CONFIG_FEATURE_TELNET_AUTOLOGIN=y
+CONFIG_TELNETD=y
+CONFIG_FEATURE_TELNETD_STANDALONE=y
+CONFIG_TFTP=y
+CONFIG_FEATURE_TFTP_GET=y
+CONFIG_FEATURE_TFTP_PUT=y
+CONFIG_FEATURE_TFTP_BLOCKSIZE=y
+# CONFIG_DEBUG_TFTP is not set
+CONFIG_TRACEROUTE=y
+# CONFIG_FEATURE_TRACEROUTE_VERBOSE is not set
+# CONFIG_FEATURE_TRACEROUTE_SOURCE_ROUTE is not set
+# CONFIG_FEATURE_TRACEROUTE_USE_ICMP is not set
+# CONFIG_APP_UDHCPD is not set
+# CONFIG_APP_DHCPRELAY is not set
+# CONFIG_APP_DUMPLEASES is not set
+# CONFIG_FEATURE_UDHCPD_WRITE_LEASES_EARLY is not set
+# CONFIG_APP_UDHCPC is not set
+# CONFIG_FEATURE_UDHCP_DEBUG is not set
+# CONFIG_FEATURE_RFC3397 is not set
+CONFIG_VCONFIG=y
+CONFIG_WGET=y
+CONFIG_FEATURE_WGET_STATUSBAR=y
+CONFIG_FEATURE_WGET_AUTHENTICATION=y
+CONFIG_FEATURE_WGET_LONG_OPTIONS=y
+CONFIG_ZCIP=y
+
+#
+# Process Utilities
+#
+CONFIG_FREE=y
+CONFIG_FUSER=y
+CONFIG_KILL=y
+CONFIG_KILLALL=y
+CONFIG_KILLALL5=y
+CONFIG_NMETER=y
+CONFIG_PIDOF=y
+CONFIG_FEATURE_PIDOF_SINGLE=y
+CONFIG_FEATURE_PIDOF_OMIT=y
+CONFIG_PS=y
+CONFIG_FEATURE_PS_WIDE=y
+CONFIG_RENICE=y
+CONFIG_BB_SYSCTL=y
+CONFIG_TOP=y
+CONFIG_FEATURE_TOP_CPU_USAGE_PERCENTAGE=y
+CONFIG_FEATURE_TOP_CPU_GLOBAL_PERCENTS=y
+CONFIG_FEATURE_TOP_DECIMALS=y
+CONFIG_UPTIME=y
+CONFIG_WATCH=y
+
+#
+# Shells
+#
+CONFIG_FEATURE_SH_IS_ASH=y
+# CONFIG_FEATURE_SH_IS_HUSH is not set
+# CONFIG_FEATURE_SH_IS_LASH is not set
+# CONFIG_FEATURE_SH_IS_MSH is not set
+# CONFIG_FEATURE_SH_IS_NONE is not set
+CONFIG_ASH=y
+
+#
+# Ash Shell Options
+#
+CONFIG_ASH_JOB_CONTROL=y
+CONFIG_ASH_READ_NCHARS=y
+CONFIG_ASH_READ_TIMEOUT=y
+CONFIG_ASH_ALIAS=y
+CONFIG_ASH_MATH_SUPPORT=y
+CONFIG_ASH_MATH_SUPPORT_64=y
+CONFIG_ASH_GETOPTS=y
+CONFIG_ASH_BUILTIN_ECHO=y
+CONFIG_ASH_BUILTIN_TEST=y
+CONFIG_ASH_CMDCMD=y
+CONFIG_ASH_MAIL=y
+CONFIG_ASH_OPTIMIZE_FOR_SIZE=y
+CONFIG_ASH_RANDOM_SUPPORT=y
+CONFIG_ASH_EXPAND_PRMT=y
+# CONFIG_HUSH is not set
+# CONFIG_HUSH_HELP is not set
+# CONFIG_HUSH_INTERACTIVE is not set
+# CONFIG_HUSH_JOB is not set
+# CONFIG_HUSH_TICK is not set
+# CONFIG_HUSH_IF is not set
+# CONFIG_HUSH_LOOPS is not set
+# CONFIG_LASH is not set
+# CONFIG_MSH is not set
+
+#
+# Bourne Shell Options
+#
+CONFIG_FEATURE_SH_EXTRA_QUIET=y
+# CONFIG_FEATURE_SH_STANDALONE is not set
+CONFIG_CTTYHACK=y
+
+#
+# System Logging Utilities
+#
+CONFIG_SYSLOGD=y
+CONFIG_FEATURE_ROTATE_LOGFILE=y
+CONFIG_FEATURE_REMOTE_LOG=y
+CONFIG_FEATURE_IPC_SYSLOG=y
+CONFIG_FEATURE_IPC_SYSLOG_BUFFER_SIZE=16
+CONFIG_LOGREAD=y
+CONFIG_FEATURE_LOGREAD_REDUCED_LOCKING=y
+CONFIG_KLOGD=y
+CONFIG_LOGGER=y
+
+#
+# Runit Utilities
+#
+CONFIG_RUNSV=y
+CONFIG_RUNSVDIR=y
+CONFIG_SV=y
+CONFIG_SVLOGD=y
+CONFIG_CHPST=y
+CONFIG_SETUIDGID=y
+CONFIG_ENVUIDGID=y
+CONFIG_ENVDIR=y
+CONFIG_SOFTLIMIT=y
+# CONFIG_CHCON is not set
+# CONFIG_FEATURE_CHCON_LONG_OPTIONS is not set
+# CONFIG_GETENFORCE is not set
+# CONFIG_GETSEBOOL is not set
+# CONFIG_LOAD_POLICY is not set
+# CONFIG_MATCHPATHCON is not set
+# CONFIG_RESTORECON is not set
+# CONFIG_RUNCON is not set
+# CONFIG_FEATURE_RUNCON_LONG_OPTIONS is not set
+# CONFIG_SELINUXENABLED is not set
+# CONFIG_SETENFORCE is not set
+# CONFIG_SETFILES is not set
+# CONFIG_FEATURE_SETFILES_CHECK_OPTION is not set
+
+#
+# ipsvd utilities
+#
+CONFIG_TCPSVD=y
+CONFIG_UDPSVD=y
diff --git a/source/a/mkinitrd/busybox-1.12.1_inotify.diff b/source/a/mkinitrd/busybox-1.12.1_inotify.diff
new file mode 100644
index 00000000..151d16ce
--- /dev/null
+++ b/source/a/mkinitrd/busybox-1.12.1_inotify.diff
@@ -0,0 +1,11 @@
+--- busybox-1.12.1.orig/miscutils/inotifyd.c 2008-11-07 01:39:21.000000000 +0000
++++ busybox-1.12.1/miscutils/inotifyd.c 2008-11-07 01:37:05.000000000 +0000
+@@ -28,7 +28,7 @@
+ */
+
+ #include "libbb.h"
+-#include <linux/inotify.h>
++#include <sys/inotify.h>
+
+ static volatile smallint signalled;
+
diff --git a/source/a/mkinitrd/busybox-dot-config b/source/a/mkinitrd/busybox-dot-config
new file mode 100644
index 00000000..5987e050
--- /dev/null
+++ b/source/a/mkinitrd/busybox-dot-config
@@ -0,0 +1,857 @@
+#
+# Automatically generated make config: don't edit
+# Busybox version: 1.12.1
+# Fri Nov 7 10:20:30 2008
+#
+CONFIG_HAVE_DOT_CONFIG=y
+
+#
+# Busybox Settings
+#
+
+#
+# General Configuration
+#
+CONFIG_DESKTOP=y
+# CONFIG_EXTRA_COMPAT is not set
+# CONFIG_FEATURE_ASSUME_UNICODE is not set
+CONFIG_FEATURE_BUFFERS_USE_MALLOC=y
+# CONFIG_FEATURE_BUFFERS_GO_ON_STACK is not set
+# CONFIG_FEATURE_BUFFERS_GO_IN_BSS is not set
+CONFIG_SHOW_USAGE=y
+CONFIG_FEATURE_VERBOSE_USAGE=y
+CONFIG_FEATURE_COMPRESS_USAGE=y
+CONFIG_FEATURE_INSTALLER=y
+CONFIG_LOCALE_SUPPORT=y
+CONFIG_GETOPT_LONG=y
+CONFIG_FEATURE_DEVPTS=y
+# CONFIG_FEATURE_CLEAN_UP is not set
+CONFIG_FEATURE_PIDFILE=y
+CONFIG_FEATURE_SUID=y
+CONFIG_FEATURE_SUID_CONFIG=y
+CONFIG_FEATURE_SUID_CONFIG_QUIET=y
+# CONFIG_SELINUX is not set
+# CONFIG_FEATURE_PREFER_APPLETS is not set
+CONFIG_BUSYBOX_EXEC_PATH="/proc/self/exe"
+CONFIG_FEATURE_SYSLOG=y
+CONFIG_FEATURE_HAVE_RPC=y
+
+#
+# Build Options
+#
+CONFIG_STATIC=y
+# CONFIG_PIE is not set
+# CONFIG_NOMMU is not set
+# CONFIG_BUILD_LIBBUSYBOX is not set
+# CONFIG_FEATURE_INDIVIDUAL is not set
+# CONFIG_FEATURE_SHARED_BUSYBOX is not set
+CONFIG_LFS=y
+CONFIG_CROSS_COMPILER_PREFIX=""
+
+#
+# Debugging Options
+#
+# CONFIG_DEBUG is not set
+# CONFIG_DEBUG_PESSIMIZE is not set
+# CONFIG_WERROR is not set
+CONFIG_NO_DEBUG_LIB=y
+# CONFIG_DMALLOC is not set
+# CONFIG_EFENCE is not set
+CONFIG_INCLUDE_SUSv2=y
+# CONFIG_PARSE is not set
+
+#
+# Installation Options
+#
+CONFIG_INSTALL_NO_USR=y
+CONFIG_INSTALL_APPLET_SYMLINKS=y
+# CONFIG_INSTALL_APPLET_HARDLINKS is not set
+# CONFIG_INSTALL_APPLET_SCRIPT_WRAPPERS is not set
+# CONFIG_INSTALL_APPLET_DONT is not set
+# CONFIG_INSTALL_SH_APPLET_SYMLINK is not set
+# CONFIG_INSTALL_SH_APPLET_HARDLINK is not set
+# CONFIG_INSTALL_SH_APPLET_SCRIPT_WRAPPER is not set
+CONFIG_PREFIX="./_install"
+
+#
+# Busybox Library Tuning
+#
+CONFIG_PASSWORD_MINLEN=6
+CONFIG_MD5_SIZE_VS_SPEED=2
+# CONFIG_FEATURE_FAST_TOP is not set
+# CONFIG_FEATURE_ETC_NETWORKS is not set
+CONFIG_FEATURE_EDITING=y
+CONFIG_FEATURE_EDITING_MAX_LEN=1024
+CONFIG_FEATURE_EDITING_VI=y
+CONFIG_FEATURE_EDITING_HISTORY=64
+# CONFIG_FEATURE_EDITING_SAVEHISTORY is not set
+CONFIG_FEATURE_TAB_COMPLETION=y
+# CONFIG_FEATURE_USERNAME_COMPLETION is not set
+CONFIG_FEATURE_EDITING_FANCY_PROMPT=y
+CONFIG_FEATURE_VERBOSE_CP_MESSAGE=y
+CONFIG_FEATURE_COPYBUF_KB=4
+CONFIG_MONOTONIC_SYSCALL=y
+CONFIG_IOCTL_HEX2STR_ERROR=y
+# CONFIG_FEATURE_HWIB is not set
+
+#
+# Applets
+#
+
+#
+# Archival Utilities
+#
+# CONFIG_FEATURE_SEAMLESS_LZMA is not set
+CONFIG_FEATURE_SEAMLESS_BZ2=y
+CONFIG_FEATURE_SEAMLESS_GZ=y
+CONFIG_FEATURE_SEAMLESS_Z=y
+CONFIG_AR=y
+CONFIG_FEATURE_AR_LONG_FILENAMES=y
+CONFIG_BUNZIP2=y
+CONFIG_BZIP2=y
+CONFIG_CPIO=y
+CONFIG_FEATURE_CPIO_O=y
+# CONFIG_DPKG is not set
+# CONFIG_DPKG_DEB is not set
+# CONFIG_FEATURE_DPKG_DEB_EXTRACT_ONLY is not set
+CONFIG_GUNZIP=y
+CONFIG_GZIP=y
+CONFIG_RPM2CPIO=y
+# CONFIG_RPM is not set
+CONFIG_TAR=y
+CONFIG_FEATURE_TAR_CREATE=y
+CONFIG_FEATURE_TAR_AUTODETECT=y
+CONFIG_FEATURE_TAR_FROM=y
+CONFIG_FEATURE_TAR_OLDGNU_COMPATIBILITY=y
+# CONFIG_FEATURE_TAR_OLDSUN_COMPATIBILITY is not set
+CONFIG_FEATURE_TAR_GNU_EXTENSIONS=y
+CONFIG_FEATURE_TAR_LONG_OPTIONS=y
+CONFIG_FEATURE_TAR_UNAME_GNAME=y
+CONFIG_UNCOMPRESS=y
+CONFIG_UNLZMA=y
+CONFIG_FEATURE_LZMA_FAST=y
+CONFIG_UNZIP=y
+
+#
+# Coreutils
+#
+CONFIG_BASENAME=y
+CONFIG_CAL=y
+CONFIG_CAT=y
+CONFIG_CATV=y
+CONFIG_CHGRP=y
+CONFIG_CHMOD=y
+CONFIG_CHOWN=y
+CONFIG_CHROOT=y
+CONFIG_CKSUM=y
+CONFIG_COMM=y
+CONFIG_CP=y
+CONFIG_CUT=y
+CONFIG_DATE=y
+CONFIG_FEATURE_DATE_ISOFMT=y
+CONFIG_DD=y
+CONFIG_FEATURE_DD_SIGNAL_HANDLING=y
+CONFIG_FEATURE_DD_IBS_OBS=y
+CONFIG_DF=y
+CONFIG_FEATURE_DF_INODE=y
+CONFIG_DIRNAME=y
+CONFIG_DOS2UNIX=y
+CONFIG_UNIX2DOS=y
+CONFIG_DU=y
+CONFIG_FEATURE_DU_DEFAULT_BLOCKSIZE_1K=y
+CONFIG_ECHO=y
+CONFIG_FEATURE_FANCY_ECHO=y
+CONFIG_ENV=y
+CONFIG_FEATURE_ENV_LONG_OPTIONS=y
+CONFIG_EXPAND=y
+CONFIG_FEATURE_EXPAND_LONG_OPTIONS=y
+CONFIG_EXPR=y
+CONFIG_EXPR_MATH_SUPPORT_64=y
+CONFIG_FALSE=y
+CONFIG_FOLD=y
+CONFIG_HEAD=y
+CONFIG_FEATURE_FANCY_HEAD=y
+CONFIG_HOSTID=y
+CONFIG_ID=y
+CONFIG_INSTALL=y
+CONFIG_FEATURE_INSTALL_LONG_OPTIONS=y
+CONFIG_LENGTH=y
+CONFIG_LN=y
+CONFIG_LOGNAME=y
+CONFIG_LS=y
+CONFIG_FEATURE_LS_FILETYPES=y
+CONFIG_FEATURE_LS_FOLLOWLINKS=y
+CONFIG_FEATURE_LS_RECURSIVE=y
+CONFIG_FEATURE_LS_SORTFILES=y
+CONFIG_FEATURE_LS_TIMESTAMPS=y
+CONFIG_FEATURE_LS_USERNAME=y
+CONFIG_FEATURE_LS_COLOR=y
+CONFIG_FEATURE_LS_COLOR_IS_DEFAULT=y
+CONFIG_MD5SUM=y
+CONFIG_MKDIR=y
+CONFIG_FEATURE_MKDIR_LONG_OPTIONS=y
+CONFIG_MKFIFO=y
+CONFIG_MKNOD=y
+CONFIG_MV=y
+CONFIG_FEATURE_MV_LONG_OPTIONS=y
+CONFIG_NICE=y
+CONFIG_NOHUP=y
+CONFIG_OD=y
+CONFIG_PRINTENV=y
+CONFIG_PRINTF=y
+CONFIG_PWD=y
+CONFIG_READLINK=y
+CONFIG_FEATURE_READLINK_FOLLOW=y
+CONFIG_REALPATH=y
+CONFIG_RM=y
+CONFIG_RMDIR=y
+# CONFIG_FEATURE_RMDIR_LONG_OPTIONS is not set
+CONFIG_SEQ=y
+CONFIG_SHA1SUM=y
+CONFIG_SLEEP=y
+CONFIG_FEATURE_FANCY_SLEEP=y
+# CONFIG_FEATURE_FLOAT_SLEEP is not set
+CONFIG_SORT=y
+CONFIG_FEATURE_SORT_BIG=y
+CONFIG_SPLIT=y
+CONFIG_FEATURE_SPLIT_FANCY=y
+CONFIG_STAT=y
+CONFIG_FEATURE_STAT_FORMAT=y
+CONFIG_STTY=y
+CONFIG_SUM=y
+CONFIG_SYNC=y
+CONFIG_TAC=y
+CONFIG_TAIL=y
+CONFIG_FEATURE_FANCY_TAIL=y
+CONFIG_TEE=y
+CONFIG_FEATURE_TEE_USE_BLOCK_IO=y
+CONFIG_TEST=y
+CONFIG_FEATURE_TEST_64=y
+CONFIG_TOUCH=y
+CONFIG_TR=y
+CONFIG_FEATURE_TR_CLASSES=y
+CONFIG_FEATURE_TR_EQUIV=y
+CONFIG_TRUE=y
+CONFIG_TTY=y
+CONFIG_UNAME=y
+CONFIG_UNEXPAND=y
+CONFIG_FEATURE_UNEXPAND_LONG_OPTIONS=y
+CONFIG_UNIQ=y
+CONFIG_USLEEP=y
+CONFIG_UUDECODE=y
+CONFIG_UUENCODE=y
+CONFIG_WC=y
+CONFIG_FEATURE_WC_LARGE=y
+CONFIG_WHO=y
+CONFIG_WHOAMI=y
+CONFIG_YES=y
+
+#
+# Common options for cp and mv
+#
+CONFIG_FEATURE_PRESERVE_HARDLINKS=y
+
+#
+# Common options for ls, more and telnet
+#
+CONFIG_FEATURE_AUTOWIDTH=y
+
+#
+# Common options for df, du, ls
+#
+CONFIG_FEATURE_HUMAN_READABLE=y
+
+#
+# Common options for md5sum, sha1sum
+#
+CONFIG_FEATURE_MD5_SHA1_SUM_CHECK=y
+
+#
+# Console Utilities
+#
+CONFIG_CHVT=y
+CONFIG_CLEAR=y
+CONFIG_DEALLOCVT=y
+CONFIG_DUMPKMAP=y
+CONFIG_KBD_MODE=y
+CONFIG_LOADFONT=y
+CONFIG_LOADKMAP=y
+CONFIG_OPENVT=y
+CONFIG_RESET=y
+CONFIG_RESIZE=y
+CONFIG_FEATURE_RESIZE_PRINT=y
+CONFIG_SETCONSOLE=y
+CONFIG_FEATURE_SETCONSOLE_LONG_OPTIONS=y
+CONFIG_SETFONT=y
+CONFIG_SETKEYCODES=y
+CONFIG_SETLOGCONS=y
+CONFIG_SHOWKEY=y
+
+#
+# Debian Utilities
+#
+CONFIG_MKTEMP=y
+CONFIG_PIPE_PROGRESS=y
+CONFIG_RUN_PARTS=y
+CONFIG_FEATURE_RUN_PARTS_LONG_OPTIONS=y
+CONFIG_FEATURE_RUN_PARTS_FANCY=y
+CONFIG_START_STOP_DAEMON=y
+CONFIG_FEATURE_START_STOP_DAEMON_FANCY=y
+CONFIG_FEATURE_START_STOP_DAEMON_LONG_OPTIONS=y
+CONFIG_WHICH=y
+
+#
+# Editors
+#
+CONFIG_AWK=y
+CONFIG_FEATURE_AWK_MATH=y
+CONFIG_CMP=y
+CONFIG_DIFF=y
+CONFIG_FEATURE_DIFF_BINARY=y
+CONFIG_FEATURE_DIFF_DIR=y
+CONFIG_FEATURE_DIFF_MINIMAL=y
+CONFIG_ED=y
+CONFIG_PATCH=y
+CONFIG_SED=y
+CONFIG_VI=y
+CONFIG_FEATURE_VI_MAX_LEN=1024
+CONFIG_FEATURE_VI_8BIT=y
+CONFIG_FEATURE_VI_COLON=y
+CONFIG_FEATURE_VI_YANKMARK=y
+CONFIG_FEATURE_VI_SEARCH=y
+CONFIG_FEATURE_VI_USE_SIGNALS=y
+CONFIG_FEATURE_VI_DOT_CMD=y
+CONFIG_FEATURE_VI_READONLY=y
+CONFIG_FEATURE_VI_SETOPTS=y
+CONFIG_FEATURE_VI_SET=y
+CONFIG_FEATURE_VI_WIN_RESIZE=y
+CONFIG_FEATURE_VI_OPTIMIZE_CURSOR=y
+CONFIG_FEATURE_ALLOW_EXEC=y
+
+#
+# Finding Utilities
+#
+CONFIG_FIND=y
+CONFIG_FEATURE_FIND_PRINT0=y
+CONFIG_FEATURE_FIND_MTIME=y
+CONFIG_FEATURE_FIND_MMIN=y
+CONFIG_FEATURE_FIND_PERM=y
+CONFIG_FEATURE_FIND_TYPE=y
+CONFIG_FEATURE_FIND_XDEV=y
+CONFIG_FEATURE_FIND_MAXDEPTH=y
+CONFIG_FEATURE_FIND_NEWER=y
+CONFIG_FEATURE_FIND_INUM=y
+CONFIG_FEATURE_FIND_EXEC=y
+CONFIG_FEATURE_FIND_USER=y
+CONFIG_FEATURE_FIND_GROUP=y
+CONFIG_FEATURE_FIND_NOT=y
+CONFIG_FEATURE_FIND_DEPTH=y
+CONFIG_FEATURE_FIND_PAREN=y
+CONFIG_FEATURE_FIND_SIZE=y
+CONFIG_FEATURE_FIND_PRUNE=y
+# CONFIG_FEATURE_FIND_DELETE is not set
+CONFIG_FEATURE_FIND_PATH=y
+CONFIG_FEATURE_FIND_REGEX=y
+# CONFIG_FEATURE_FIND_CONTEXT is not set
+CONFIG_GREP=y
+CONFIG_FEATURE_GREP_EGREP_ALIAS=y
+CONFIG_FEATURE_GREP_FGREP_ALIAS=y
+CONFIG_FEATURE_GREP_CONTEXT=y
+CONFIG_XARGS=y
+CONFIG_FEATURE_XARGS_SUPPORT_CONFIRMATION=y
+CONFIG_FEATURE_XARGS_SUPPORT_QUOTES=y
+CONFIG_FEATURE_XARGS_SUPPORT_TERMOPT=y
+CONFIG_FEATURE_XARGS_SUPPORT_ZERO_TERM=y
+
+#
+# Init Utilities
+#
+CONFIG_INIT=y
+# CONFIG_DEBUG_INIT is not set
+CONFIG_FEATURE_USE_INITTAB=y
+CONFIG_FEATURE_KILL_REMOVED=y
+CONFIG_FEATURE_KILL_DELAY=10
+CONFIG_FEATURE_INIT_SCTTY=y
+CONFIG_FEATURE_INIT_SYSLOG=y
+CONFIG_FEATURE_EXTRA_QUIET=y
+# CONFIG_FEATURE_INIT_COREDUMPS is not set
+# CONFIG_FEATURE_INITRD is not set
+CONFIG_HALT=y
+CONFIG_MESG=y
+
+#
+# Login/Password Management Utilities
+#
+CONFIG_FEATURE_SHADOWPASSWDS=y
+# CONFIG_USE_BB_PWD_GRP is not set
+# CONFIG_USE_BB_SHADOW is not set
+CONFIG_USE_BB_CRYPT=y
+CONFIG_ADDGROUP=y
+CONFIG_FEATURE_ADDUSER_TO_GROUP=y
+CONFIG_DELGROUP=y
+CONFIG_FEATURE_DEL_USER_FROM_GROUP=y
+CONFIG_FEATURE_CHECK_NAMES=y
+CONFIG_ADDUSER=y
+# CONFIG_FEATURE_ADDUSER_LONG_OPTIONS is not set
+CONFIG_DELUSER=y
+CONFIG_GETTY=y
+CONFIG_FEATURE_UTMP=y
+CONFIG_FEATURE_WTMP=y
+CONFIG_LOGIN=y
+# CONFIG_PAM is not set
+CONFIG_LOGIN_SCRIPTS=y
+CONFIG_FEATURE_NOLOGIN=y
+# CONFIG_FEATURE_SECURETTY is not set
+CONFIG_PASSWD=y
+CONFIG_FEATURE_PASSWD_WEAK_CHECK=y
+CONFIG_CRYPTPW=y
+CONFIG_CHPASSWD=y
+CONFIG_SU=y
+CONFIG_FEATURE_SU_SYSLOG=y
+CONFIG_FEATURE_SU_CHECKS_SHELLS=y
+CONFIG_SULOGIN=y
+CONFIG_VLOCK=y
+
+#
+# Linux Ext2 FS Progs
+#
+CONFIG_CHATTR=y
+CONFIG_FSCK=y
+CONFIG_LSATTR=y
+
+#
+# Linux Module Utilities
+#
+# CONFIG_MODPROBE_SMALL is not set
+# CONFIG_FEATURE_MODPROBE_SMALL_OPTIONS_ON_CMDLINE is not set
+# CONFIG_FEATURE_MODPROBE_SMALL_CHECK_ALREADY_LOADED is not set
+CONFIG_DEPMOD=y
+# CONFIG_FEATURE_DEPMOD_PRUNE_FANCY is not set
+CONFIG_FEATURE_DEPMOD_ALIAS=y
+CONFIG_INSMOD=y
+# CONFIG_FEATURE_INSMOD_VERSION_CHECKING is not set
+CONFIG_FEATURE_INSMOD_KSYMOOPS_SYMBOLS=y
+# CONFIG_FEATURE_INSMOD_LOADINKMEM is not set
+# CONFIG_FEATURE_INSMOD_LOAD_MAP is not set
+# CONFIG_FEATURE_INSMOD_LOAD_MAP_FULL is not set
+CONFIG_RMMOD=y
+CONFIG_LSMOD=y
+CONFIG_FEATURE_LSMOD_PRETTY_2_6_OUTPUT=y
+CONFIG_MODPROBE=y
+CONFIG_FEATURE_MODPROBE_MULTIPLE_OPTIONS=y
+CONFIG_FEATURE_MODPROBE_FANCY_ALIAS=y
+CONFIG_FEATURE_MODPROBE_BLACKLIST=y
+
+#
+# Options common to multiple modutils
+#
+CONFIG_FEATURE_CHECK_TAINTED_MODULE=y
+CONFIG_FEATURE_2_4_MODULES=y
+CONFIG_FEATURE_2_6_MODULES=y
+CONFIG_DEFAULT_MODULES_DIR="/lib/modules"
+CONFIG_DEFAULT_DEPMOD_FILE="modules.dep"
+# CONFIG_FEATURE_QUERY_MODULE_INTERFACE is not set
+
+#
+# Linux System Utilities
+#
+CONFIG_DMESG=y
+CONFIG_FEATURE_DMESG_PRETTY=y
+CONFIG_FBSET=y
+CONFIG_FEATURE_FBSET_FANCY=y
+CONFIG_FEATURE_FBSET_READMODE=y
+CONFIG_FDFLUSH=y
+CONFIG_FDFORMAT=y
+CONFIG_FDISK=y
+CONFIG_FDISK_SUPPORT_LARGE_DISKS=y
+CONFIG_FEATURE_FDISK_WRITABLE=y
+# CONFIG_FEATURE_AIX_LABEL is not set
+# CONFIG_FEATURE_SGI_LABEL is not set
+# CONFIG_FEATURE_SUN_LABEL is not set
+CONFIG_FEATURE_OSF_LABEL=y
+CONFIG_FEATURE_FDISK_ADVANCED=y
+CONFIG_FINDFS=y
+CONFIG_FREERAMDISK=y
+CONFIG_FSCK_MINIX=y
+CONFIG_MKFS_MINIX=y
+
+#
+# Minix filesystem support
+#
+CONFIG_FEATURE_MINIX2=y
+CONFIG_GETOPT=y
+CONFIG_HEXDUMP=y
+CONFIG_FEATURE_HEXDUMP_REVERSE=y
+CONFIG_HD=y
+CONFIG_HWCLOCK=y
+CONFIG_FEATURE_HWCLOCK_LONG_OPTIONS=y
+CONFIG_FEATURE_HWCLOCK_ADJTIME_FHS=y
+CONFIG_IPCRM=y
+CONFIG_IPCS=y
+CONFIG_LOSETUP=y
+CONFIG_MDEV=y
+CONFIG_FEATURE_MDEV_CONF=y
+CONFIG_FEATURE_MDEV_RENAME=y
+CONFIG_FEATURE_MDEV_RENAME_REGEXP=y
+CONFIG_FEATURE_MDEV_EXEC=y
+CONFIG_FEATURE_MDEV_LOAD_FIRMWARE=y
+CONFIG_MKSWAP=y
+CONFIG_FEATURE_MKSWAP_V0=y
+CONFIG_MORE=y
+CONFIG_FEATURE_USE_TERMIOS=y
+CONFIG_VOLUMEID=y
+CONFIG_FEATURE_VOLUMEID_EXT=y
+CONFIG_FEATURE_VOLUMEID_REISERFS=y
+CONFIG_FEATURE_VOLUMEID_FAT=y
+CONFIG_FEATURE_VOLUMEID_HFS=y
+CONFIG_FEATURE_VOLUMEID_JFS=y
+CONFIG_FEATURE_VOLUMEID_XFS=y
+CONFIG_FEATURE_VOLUMEID_NTFS=y
+CONFIG_FEATURE_VOLUMEID_ISO9660=y
+CONFIG_FEATURE_VOLUMEID_UDF=y
+CONFIG_FEATURE_VOLUMEID_LUKS=y
+CONFIG_FEATURE_VOLUMEID_LINUXSWAP=y
+CONFIG_FEATURE_VOLUMEID_CRAMFS=y
+CONFIG_FEATURE_VOLUMEID_ROMFS=y
+CONFIG_FEATURE_VOLUMEID_SYSV=y
+# CONFIG_FEATURE_VOLUMEID_OCFS2 is not set
+CONFIG_FEATURE_VOLUMEID_LINUXRAID=y
+CONFIG_MOUNT=y
+CONFIG_FEATURE_MOUNT_FAKE=y
+# CONFIG_FEATURE_MOUNT_VERBOSE is not set
+CONFIG_FEATURE_MOUNT_HELPERS=y
+CONFIG_FEATURE_MOUNT_LABEL=y
+CONFIG_FEATURE_MOUNT_NFS=y
+CONFIG_FEATURE_MOUNT_CIFS=y
+CONFIG_FEATURE_MOUNT_FLAGS=y
+CONFIG_FEATURE_MOUNT_FSTAB=y
+CONFIG_PIVOT_ROOT=y
+CONFIG_RDATE=y
+CONFIG_RDEV=y
+CONFIG_READPROFILE=y
+CONFIG_RTCWAKE=y
+CONFIG_SCRIPT=y
+CONFIG_SETARCH=y
+CONFIG_SWAPONOFF=y
+CONFIG_FEATURE_SWAPON_PRI=y
+CONFIG_SWITCH_ROOT=y
+CONFIG_UMOUNT=y
+CONFIG_FEATURE_UMOUNT_ALL=y
+
+#
+# Common options for mount/umount
+#
+CONFIG_FEATURE_MOUNT_LOOP=y
+CONFIG_FEATURE_MTAB_SUPPORT=y
+
+#
+# Miscellaneous Utilities
+#
+CONFIG_ADJTIMEX=y
+CONFIG_BBCONFIG=y
+CONFIG_CHAT=y
+CONFIG_FEATURE_CHAT_NOFAIL=y
+# CONFIG_FEATURE_CHAT_TTY_HIFI is not set
+CONFIG_FEATURE_CHAT_IMPLICIT_CR=y
+# CONFIG_FEATURE_CHAT_SWALLOW_OPTS is not set
+# CONFIG_FEATURE_CHAT_SEND_ESCAPES is not set
+# CONFIG_FEATURE_CHAT_VAR_ABORT_LEN is not set
+# CONFIG_FEATURE_CHAT_CLR_ABORT is not set
+CONFIG_CHRT=y
+CONFIG_CROND=y
+# CONFIG_DEBUG_CROND_OPTION is not set
+# CONFIG_FEATURE_CROND_CALL_SENDMAIL is not set
+CONFIG_CRONTAB=y
+CONFIG_DC=y
+# CONFIG_DEVFSD is not set
+# CONFIG_DEVFSD_MODLOAD is not set
+# CONFIG_DEVFSD_FG_NP is not set
+# CONFIG_DEVFSD_VERBOSE is not set
+# CONFIG_FEATURE_DEVFS is not set
+CONFIG_EJECT=y
+CONFIG_FEATURE_EJECT_SCSI=y
+CONFIG_FBSPLASH=y
+CONFIG_INOTIFYD=y
+CONFIG_LAST=y
+CONFIG_FEATURE_LAST_SMALL=y
+# CONFIG_FEATURE_LAST_FANCY is not set
+CONFIG_LESS=y
+CONFIG_FEATURE_LESS_MAXLINES=9999999
+CONFIG_FEATURE_LESS_BRACKETS=y
+CONFIG_FEATURE_LESS_FLAGS=y
+CONFIG_FEATURE_LESS_FLAGCS=y
+CONFIG_FEATURE_LESS_MARKS=y
+CONFIG_FEATURE_LESS_REGEXP=y
+CONFIG_HDPARM=y
+CONFIG_FEATURE_HDPARM_GET_IDENTITY=y
+CONFIG_FEATURE_HDPARM_HDIO_SCAN_HWIF=y
+CONFIG_FEATURE_HDPARM_HDIO_UNREGISTER_HWIF=y
+CONFIG_FEATURE_HDPARM_HDIO_DRIVE_RESET=y
+CONFIG_FEATURE_HDPARM_HDIO_TRISTATE_HWIF=y
+CONFIG_FEATURE_HDPARM_HDIO_GETSET_DMA=y
+CONFIG_MAKEDEVS=y
+# CONFIG_FEATURE_MAKEDEVS_LEAF is not set
+CONFIG_FEATURE_MAKEDEVS_TABLE=y
+# CONFIG_MAN is not set
+# CONFIG_MICROCOM is not set
+CONFIG_MOUNTPOINT=y
+CONFIG_MT=y
+CONFIG_RAIDAUTORUN=y
+CONFIG_READAHEAD=y
+CONFIG_RUNLEVEL=y
+CONFIG_RX=y
+CONFIG_SETSID=y
+CONFIG_STRINGS=y
+CONFIG_TASKSET=y
+CONFIG_FEATURE_TASKSET_FANCY=y
+CONFIG_TIME=y
+CONFIG_TTYSIZE=y
+CONFIG_WATCHDOG=y
+
+#
+# Networking Utilities
+#
+CONFIG_FEATURE_IPV6=y
+CONFIG_FEATURE_PREFER_IPV4_ADDRESS=y
+# CONFIG_VERBOSE_RESOLUTION_ERRORS is not set
+CONFIG_ARP=y
+CONFIG_ARPING=y
+CONFIG_BRCTL=y
+# CONFIG_FEATURE_BRCTL_FANCY is not set
+# CONFIG_FEATURE_BRCTL_SHOW is not set
+CONFIG_DNSD=y
+CONFIG_ETHER_WAKE=y
+CONFIG_FAKEIDENTD=y
+CONFIG_FTPGET=y
+CONFIG_FTPPUT=y
+CONFIG_FEATURE_FTPGETPUT_LONG_OPTIONS=y
+CONFIG_HOSTNAME=y
+# CONFIG_HTTPD is not set
+# CONFIG_FEATURE_HTTPD_RANGES is not set
+# CONFIG_FEATURE_HTTPD_USE_SENDFILE is not set
+# CONFIG_FEATURE_HTTPD_RELOAD_CONFIG_SIGHUP is not set
+# CONFIG_FEATURE_HTTPD_SETUID is not set
+# CONFIG_FEATURE_HTTPD_BASIC_AUTH is not set
+# CONFIG_FEATURE_HTTPD_AUTH_MD5 is not set
+# CONFIG_FEATURE_HTTPD_CONFIG_WITH_MIME_TYPES is not set
+# CONFIG_FEATURE_HTTPD_CGI is not set
+# CONFIG_FEATURE_HTTPD_CONFIG_WITH_SCRIPT_INTERPR is not set
+# CONFIG_FEATURE_HTTPD_SET_REMOTE_PORT_TO_ENV is not set
+# CONFIG_FEATURE_HTTPD_ENCODE_URL_STR is not set
+# CONFIG_FEATURE_HTTPD_ERROR_PAGES is not set
+# CONFIG_FEATURE_HTTPD_PROXY is not set
+CONFIG_IFCONFIG=y
+CONFIG_FEATURE_IFCONFIG_STATUS=y
+CONFIG_FEATURE_IFCONFIG_SLIP=y
+CONFIG_FEATURE_IFCONFIG_MEMSTART_IOADDR_IRQ=y
+CONFIG_FEATURE_IFCONFIG_HW=y
+CONFIG_FEATURE_IFCONFIG_BROADCAST_PLUS=y
+CONFIG_IFENSLAVE=y
+CONFIG_IFUPDOWN=y
+CONFIG_IFUPDOWN_IFSTATE_PATH="/var/run/ifstate"
+CONFIG_FEATURE_IFUPDOWN_IP=y
+CONFIG_FEATURE_IFUPDOWN_IP_BUILTIN=y
+# CONFIG_FEATURE_IFUPDOWN_IFCONFIG_BUILTIN is not set
+CONFIG_FEATURE_IFUPDOWN_IPV4=y
+CONFIG_FEATURE_IFUPDOWN_IPV6=y
+CONFIG_FEATURE_IFUPDOWN_MAPPING=y
+CONFIG_FEATURE_IFUPDOWN_EXTERNAL_DHCP=y
+# CONFIG_INETD is not set
+# CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_ECHO is not set
+# CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_DISCARD is not set
+# CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_TIME is not set
+# CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_DAYTIME is not set
+# CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_CHARGEN is not set
+# CONFIG_FEATURE_INETD_RPC is not set
+CONFIG_IP=y
+CONFIG_FEATURE_IP_ADDRESS=y
+CONFIG_FEATURE_IP_LINK=y
+CONFIG_FEATURE_IP_ROUTE=y
+CONFIG_FEATURE_IP_TUNNEL=y
+CONFIG_FEATURE_IP_RULE=y
+CONFIG_FEATURE_IP_SHORT_FORMS=y
+# CONFIG_FEATURE_IP_RARE_PROTOCOLS is not set
+CONFIG_IPADDR=y
+CONFIG_IPLINK=y
+CONFIG_IPROUTE=y
+CONFIG_IPTUNNEL=y
+CONFIG_IPRULE=y
+CONFIG_IPCALC=y
+CONFIG_FEATURE_IPCALC_FANCY=y
+CONFIG_FEATURE_IPCALC_LONG_OPTIONS=y
+CONFIG_NAMEIF=y
+# CONFIG_FEATURE_NAMEIF_EXTENDED is not set
+CONFIG_NC=y
+CONFIG_NC_SERVER=y
+CONFIG_NC_EXTRA=y
+CONFIG_NETSTAT=y
+# CONFIG_FEATURE_NETSTAT_WIDE is not set
+CONFIG_FEATURE_NETSTAT_PRG=y
+CONFIG_NSLOOKUP=y
+CONFIG_PING=y
+CONFIG_PING6=y
+CONFIG_FEATURE_FANCY_PING=y
+CONFIG_PSCAN=y
+CONFIG_ROUTE=y
+# CONFIG_SENDMAIL is not set
+# CONFIG_FETCHMAIL is not set
+CONFIG_SLATTACH=y
+CONFIG_TELNET=y
+CONFIG_FEATURE_TELNET_TTYPE=y
+CONFIG_FEATURE_TELNET_AUTOLOGIN=y
+CONFIG_TELNETD=y
+CONFIG_FEATURE_TELNETD_STANDALONE=y
+CONFIG_TFTP=y
+# CONFIG_TFTPD is not set
+CONFIG_FEATURE_TFTP_GET=y
+CONFIG_FEATURE_TFTP_PUT=y
+CONFIG_FEATURE_TFTP_BLOCKSIZE=y
+# CONFIG_DEBUG_TFTP is not set
+CONFIG_TRACEROUTE=y
+# CONFIG_FEATURE_TRACEROUTE_VERBOSE is not set
+# CONFIG_FEATURE_TRACEROUTE_SOURCE_ROUTE is not set
+# CONFIG_FEATURE_TRACEROUTE_USE_ICMP is not set
+# CONFIG_APP_UDHCPD is not set
+# CONFIG_APP_DHCPRELAY is not set
+# CONFIG_APP_DUMPLEASES is not set
+# CONFIG_FEATURE_UDHCPD_WRITE_LEASES_EARLY is not set
+CONFIG_DHCPD_LEASES_FILE=""
+# CONFIG_APP_UDHCPC is not set
+# CONFIG_FEATURE_UDHCPC_ARPING is not set
+# CONFIG_FEATURE_UDHCP_PORT is not set
+# CONFIG_FEATURE_UDHCP_DEBUG is not set
+# CONFIG_FEATURE_RFC3397 is not set
+CONFIG_DHCPC_DEFAULT_SCRIPT=""
+CONFIG_UDHCPC_SLACK_FOR_BUGGY_SERVERS=
+CONFIG_VCONFIG=y
+CONFIG_WGET=y
+CONFIG_FEATURE_WGET_STATUSBAR=y
+CONFIG_FEATURE_WGET_AUTHENTICATION=y
+CONFIG_FEATURE_WGET_LONG_OPTIONS=y
+CONFIG_ZCIP=y
+CONFIG_TCPSVD=y
+CONFIG_UDPSVD=y
+
+#
+# Process Utilities
+#
+CONFIG_FREE=y
+CONFIG_FUSER=y
+CONFIG_KILL=y
+CONFIG_KILLALL=y
+CONFIG_KILLALL5=y
+CONFIG_NMETER=y
+CONFIG_PGREP=y
+CONFIG_PIDOF=y
+CONFIG_FEATURE_PIDOF_SINGLE=y
+CONFIG_FEATURE_PIDOF_OMIT=y
+CONFIG_PKILL=y
+CONFIG_PS=y
+CONFIG_FEATURE_PS_WIDE=y
+CONFIG_FEATURE_PS_TIME=y
+# CONFIG_FEATURE_PS_UNUSUAL_SYSTEMS is not set
+CONFIG_RENICE=y
+CONFIG_BB_SYSCTL=y
+CONFIG_TOP=y
+CONFIG_FEATURE_TOP_CPU_USAGE_PERCENTAGE=y
+CONFIG_FEATURE_TOP_CPU_GLOBAL_PERCENTS=y
+CONFIG_FEATURE_TOP_DECIMALS=y
+CONFIG_FEATURE_TOPMEM=y
+CONFIG_UPTIME=y
+CONFIG_WATCH=y
+
+#
+# Shells
+#
+CONFIG_FEATURE_SH_IS_ASH=y
+# CONFIG_FEATURE_SH_IS_HUSH is not set
+# CONFIG_FEATURE_SH_IS_MSH is not set
+# CONFIG_FEATURE_SH_IS_NONE is not set
+CONFIG_ASH=y
+
+#
+# Ash Shell Options
+#
+CONFIG_ASH_BASH_COMPAT=y
+CONFIG_ASH_JOB_CONTROL=y
+CONFIG_ASH_READ_NCHARS=y
+CONFIG_ASH_READ_TIMEOUT=y
+CONFIG_ASH_ALIAS=y
+CONFIG_ASH_MATH_SUPPORT=y
+CONFIG_ASH_MATH_SUPPORT_64=y
+CONFIG_ASH_GETOPTS=y
+CONFIG_ASH_BUILTIN_ECHO=y
+CONFIG_ASH_BUILTIN_PRINTF=y
+CONFIG_ASH_BUILTIN_TEST=y
+CONFIG_ASH_CMDCMD=y
+CONFIG_ASH_MAIL=y
+CONFIG_ASH_OPTIMIZE_FOR_SIZE=y
+CONFIG_ASH_RANDOM_SUPPORT=y
+CONFIG_ASH_EXPAND_PRMT=y
+# CONFIG_HUSH is not set
+# CONFIG_HUSH_HELP is not set
+# CONFIG_HUSH_INTERACTIVE is not set
+# CONFIG_HUSH_JOB is not set
+# CONFIG_HUSH_TICK is not set
+# CONFIG_HUSH_IF is not set
+# CONFIG_HUSH_LOOPS is not set
+# CONFIG_HUSH_CASE is not set
+# CONFIG_LASH is not set
+# CONFIG_MSH is not set
+
+#
+# Bourne Shell Options
+#
+CONFIG_FEATURE_SH_EXTRA_QUIET=y
+# CONFIG_FEATURE_SH_STANDALONE is not set
+# CONFIG_FEATURE_SH_NOFORK is not set
+CONFIG_CTTYHACK=y
+
+#
+# System Logging Utilities
+#
+CONFIG_SYSLOGD=y
+CONFIG_FEATURE_ROTATE_LOGFILE=y
+CONFIG_FEATURE_REMOTE_LOG=y
+# CONFIG_FEATURE_SYSLOGD_DUP is not set
+CONFIG_FEATURE_IPC_SYSLOG=y
+CONFIG_FEATURE_IPC_SYSLOG_BUFFER_SIZE=16
+CONFIG_LOGREAD=y
+CONFIG_FEATURE_LOGREAD_REDUCED_LOCKING=y
+CONFIG_KLOGD=y
+CONFIG_LOGGER=y
+
+#
+# Runit Utilities
+#
+CONFIG_RUNSV=y
+CONFIG_RUNSVDIR=y
+CONFIG_SV=y
+CONFIG_SVLOGD=y
+CONFIG_CHPST=y
+CONFIG_SETUIDGID=y
+CONFIG_ENVUIDGID=y
+CONFIG_ENVDIR=y
+CONFIG_SOFTLIMIT=y
+# CONFIG_CHCON is not set
+# CONFIG_FEATURE_CHCON_LONG_OPTIONS is not set
+# CONFIG_GETENFORCE is not set
+# CONFIG_GETSEBOOL is not set
+# CONFIG_LOAD_POLICY is not set
+# CONFIG_MATCHPATHCON is not set
+# CONFIG_RESTORECON is not set
+# CONFIG_RUNCON is not set
+# CONFIG_FEATURE_RUNCON_LONG_OPTIONS is not set
+# CONFIG_SELINUXENABLED is not set
+# CONFIG_SETENFORCE is not set
+# CONFIG_SETFILES is not set
+# CONFIG_FEATURE_SETFILES_CHECK_OPTION is not set
+# CONFIG_SETSEBOOL is not set
+# CONFIG_SESTATUS is not set
+
+#
+# Print Utilities
+#
+# CONFIG_LPD is not set
+CONFIG_LPR=y
+# CONFIG_LPQ is not set
diff --git a/source/a/mkinitrd/init b/source/a/mkinitrd/init
new file mode 100755
index 00000000..0559932e
--- /dev/null
+++ b/source/a/mkinitrd/init
@@ -0,0 +1,230 @@
+#!/bin/ash
+#
+# /init: init script to load kernel modules from an initramfs
+# This requires that your kernel supports initramfs!!!
+#
+# Copyright 2004 Slackware Linux, Inc., Concord, CA, USA
+# Copyright 2007, 2008 Patrick J. Volkerding, Sebeka, MN, USA
+# All rights reserved.
+#
+# Redistribution and use of this script, with or without modification, is
+# permitted provided that the following conditions are met:
+#
+# 1. Redistributions of this script must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# 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.
+
+
+# With a generic kernel, you need to load the modules needed to mount the
+# root partition. This might mean a SCSI, RAID, or other drive controller
+# module, as well as the module to support the root filesystem. Once the
+# root partition is mounted all the other modules will be available so you
+# don't need to load them here.
+#
+# Config files used by this script:
+#
+# /rootdev Contains the name of the root device, such as: /dev/hda1
+#
+# /rootfs Contains the root filesystem type, such as: xfs
+#
+# /initrd-name Contains the name of the initrd file.
+#
+# Optional:
+# /load_kernel_modules A script that uses insmod to load the desired
+# modules. If this file is not present, all the modules
+# in /lib/modules/`uname -r`/ will be loaded in the usual
+# sorted order. If you need to load the modules in a
+# certain order, or if the modules need extra options,
+# then use a load_kernel_modules script.
+#
+# There's an example in here. To actually use it, you'll
+# need to make it executable:
+#
+# chmod 755 load_kernel_modules
+
+INITRD=`cat /initrd-name`
+ROOTDEV=`cat /rootdev`
+ROOTFS=`cat /rootfs`
+LUKSDEV=`cat /luksdev`
+RESUMEDEV=`cat /resumedev`
+WAIT=`cat /wait-for-root`
+KEYMAP=`cat /keymap`
+
+# Mount /proc and /sys:
+mount -n proc /proc -t proc
+mount -n sysfs /sys -t sysfs
+
+# Parse command line
+for ARG in `cat /proc/cmdline`; do
+ case $ARG in
+ rescue)
+ RESCUE=1
+ ;;
+ root=/dev/*)
+ ROOTDEV=`echo $ARG | cut -f2 -d=`
+ ;;
+ rootfs=*)
+ ROOTFS=`echo $ARG | cut -f2 -d=`
+ ;;
+ luksdev=/dev/*)
+ LUKSDEV=`echo $ARG | cut -f2 -d=`
+ ;;
+ waitforroot=*)
+ WAIT=`echo $ARG | cut -f2 -d=`
+ ;;
+ root=LABEL=*)
+ ROOTDEV=`echo $ARG | cut -f2- -d=`
+ ;;
+ resume=*)
+ RESUMEDEV=`echo $ARG | cut -f2 -d=`
+ ;;
+ 0|1|2|3|4|5|6)
+ RUNLEVEL=$ARG
+ ;;
+ esac
+done
+
+# Load kernel modules:
+if [ ! -d /lib/modules/`uname -r` ]; then
+ echo "No kernel modules found for Linux `uname -r`."
+elif [ -x ./load_kernel_modules ]; then # use load_kernel_modules script:
+ echo "${INITRD}: Loading kernel modules from initrd image:"
+ . ./load_kernel_modules
+else # load modules (if any) in order:
+ if ls /lib/modules/`uname -r`/*.*o 1> /dev/null 2> /dev/null ; then
+ echo "${INITRD}: Loading kernel modules from initrd image:"
+ for module in /lib/modules/`uname -r`/*.*o ; do
+ insmod $module
+ done
+ unset module
+ fi
+fi
+
+# Sometimes the devices needs extra time to be available.
+# root on USB are good example of that.
+sleep $WAIT
+
+# If udevd is available, use it to generate block devices
+# else use mdev to read sysfs and generate the needed devices
+if [ -x /sbin/udevd -a -x /sbin/udevadm ]; then
+ /sbin/udevd --daemon
+ /sbin/udevadm trigger --subsystem-match=block
+ /sbin/udevadm settle --timeout=10
+else
+ mdev -s
+fi
+
+# Load a custom keyboard mapping:
+if [ -n "$KEYMAP" ]; then
+ echo "${INITRD}: Loading '$KEYMAP' keyboard mapping:"
+ tar xzOf /etc/keymaps.tar.gz ${KEYMAP}.bmap | loadkmap
+fi
+
+if [ "$RESCUE" = "" ]; then
+ # Initialize RAID:
+ if [ -x /sbin/mdadm ]; then
+ /sbin/mdadm -E -s >/etc/mdadm.conf
+ /sbin/mdadm -A -s
+ fi
+
+ # Find root device if a label was given:
+ if echo $ROOTDEV | grep -q "LABEL=" ; then
+ ROOTDEV=`findfs $ROOTDEV`
+ fi
+
+ # Make encrypted root partition available:
+ # The useable device will be under /dev/mapper/
+ # Three scenarios for the commandline exist:
+ # 1- ROOTDEV is on a LUKS volume, and LUKSDEV is a real block device
+ # 2- ROOTDEV is on a LVM volume, and LUKSDEV is a real block device
+ # 3- ROOTDEV is on a LUKS volume, and LUKSDEV is on a LVM volume
+ # Case (3) will have to wait until we initialize the LVM.
+ # Test if ROOTDEV is "/dev/someting" or just "something" - the first means
+ # ROOTDEV is on a LVM volume (scenario 2); we don't need to rewrite ROOTDEV.
+ # The second means that ROOTDEV is on a LUKS volume (scenario 1).
+ CRYPTDEV=""
+ if [ -x /sbin/cryptsetup ]; then
+ # If we find a LUKS device now, it is on a real block device:
+ if /sbin/cryptsetup isLuks ${LUKSDEV} 1>/dev/null 2>/dev/null ; then
+ CRYPTDEV=$(basename $ROOTDEV)
+ echo "Unlocking LUKS crypt volume '${CRYPTDEV}' on device '$LUKSDEV':"
+ /sbin/cryptsetup luksOpen ${LUKSDEV} $CRYPTDEV </dev/systty >/dev/systty 2>&1
+ if [ "$CRYPTDEV" == "$ROOTDEV" ]; then # scenario 1
+ ROOTDEV="/dev/mapper/${CRYPTDEV}"
+ fi
+ fi
+ fi
+
+ # Initialize LVM:
+ if [ -x /sbin/vgscan ]; then
+ /sbin/vgscan --mknodes --ignorelockingfailure
+ sleep 10
+ /sbin/vgchange -ay --ignorelockingfailure
+ fi
+
+ # Make encrypted root partition available (scenario 3):
+ # We have to handle cases here where the LUKS volume is created on a LV
+ if [ -x /sbin/cryptsetup ]; then
+ if /sbin/cryptsetup isLuks ${LUKSDEV} 1>/dev/null 2>/dev/null ; then
+ # Only act if we could not open the LUKS device before (i.e. is on a LV):
+ if [ "x$CRYPTDEV" == "x" ]; then
+ echo "Unlocking LUKS crypt volume '${ROOTDEV}' on device '$LUKSDEV':"
+ /sbin/cryptsetup luksOpen ${LUKSDEV} $ROOTDEV </dev/systty >/dev/systty 2>&1
+ ROOTDEV="/dev/mapper/${ROOTDEV}"
+ fi
+ fi
+ fi
+
+ # Resume state from swap
+ if [ "$RESUMEDEV" != "" ]; then
+ if ls -l $RESUMEDEV | grep -q "^l" ; then
+ RESUMEDEV=`ls -l $RESUMEDEV | awk '{ print $NF }'`
+ fi
+ echo "Trying to resume from $RESUMEDEV"
+ RESMAJMIN=`ls -l $RESUMEDEV | tr , : | awk '{ print $5$6 }'`
+ echo $RESMAJMIN > /sys/power/resume
+ fi
+
+ # Switch to real root partition:
+ echo 0x0100 > /proc/sys/kernel/real-root-dev
+ mount -o ro -t $ROOTFS $ROOTDEV /mnt
+
+ if [ ! -r /mnt/sbin/init ]; then
+ echo "ERROR: No /sbin/init found on rootdev (or not mounted). Trouble ahead."
+ echo " You can try to fix it. Type 'exit' when things are done."
+ echo
+ /bin/sh
+ fi
+else
+ echo "RESCUE mode"
+ echo
+ echo " You can try to fix or rescue your system now. If you want"
+ echo " to boot into your fixed system, mount your root filesystem"
+ echo " read-only under /mnt:"
+ echo
+ echo " # mount -o ro -t filesystem root_device /mnt"
+ echo
+ echo " Type 'exit' when things are done."
+ echo
+ /bin/sh
+fi
+
+if ps axc | grep -q udevd ; then
+ killall udevd
+fi
+
+unset ERR
+umount /proc
+umount /sys
+echo "${INITRD}: exiting"
+exec switch_root /mnt /sbin/init $RUNLEVEL
diff --git a/source/a/mkinitrd/mkinitrd b/source/a/mkinitrd/mkinitrd
new file mode 100644
index 00000000..8f77725f
--- /dev/null
+++ b/source/a/mkinitrd/mkinitrd
@@ -0,0 +1,494 @@
+#!/bin/sh
+# Copyright 2004 Slackware Linux, Inc., Concord, CA, USA
+# Copyright 2004 Patrick J. Volkerding, Concord, CA, USA
+# Copyright 2007, 2008, 2009 Patrick J. Volkerding, Sebeka, MN, USA
+# All rights reserved.
+#
+# Redistribution and use of this script, with or without modification, is
+# permitted provided that the following conditions are met:
+#
+# 1. Redistributions of this script must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# 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.
+
+# Modified by Robby Workman <rworkman@slackware.com> 26 November 2007
+# to add support for mkinitrd.conf - No additional license terms added
+# Modified by Alan Hicks <alan@slackware.com> 27 November 2007 to enable
+# passing arguments to kernel modules - No additional license terms added
+# volkerdi - feel free to remove these :)
+# Modified by Eric Hameleers <alien@slackware.com> 3 April 2008
+# to add support custom keymaps - No additional license terms added
+# Modified by Patrick Volkerding <volkerdi@slackware.com> 17 Dec 2008
+# Added support to bail out if kernel modules are requested for a kernel
+# version that is not installed (thanks to Eric Hameleers), be more
+# verbose about showing modules added to the initrd (thanks to
+# Ellington Santos), and if "mount" returns /dev/root as the root device,
+# use readlink to resolve the device pointed to by the /dev/root
+# symlink, changed modprobe to use --ignore-install to avoid catching
+# custom "install" lines and causing /sbin/modprobe to be copied to the
+# initrd (thanks to Ken Milmore).
+# Of course, license terms remain unchanged.
+
+MKINITRD_VERSION=1.3.4
+
+print_usage() {
+ cat << EOF
+Usage: mkinitrd [OPTION]
+
+mkinitrd creates an initial ramdisk (actually an initramfs cpio+gzip
+archive) used to load kernel modules that are needed to mount the
+root filesystem, or other modules that might be needed before the
+root filesystem is available. Other binaries may be added to the
+initrd, and the script is easy to modify. Be creative. :-)
+
+ -F Use the contents of /etc/mkinitrd.conf (optional)
+ If this is used in conjunction with any other options passed
+ on the command line, the command-line options will override
+ the config file options. See mkinitrd.conf(5) for details.
+ -c Clear the existing initrd tree first
+ -f Filesystem to use for root partition (must be used with -r)
+ --help Display this message
+ -h Device to resume from hibernation. Needs to be the name of
+ the swap partition holding the hibernation image.
+ -k Kernel version to use
+ -l Custom keymap to load. Like, 'nl' or 'de-latin1-nodeadkeys'
+ -m A colon (:) delimited list of kernel modules to load.
+ Additional options may be added to use when loading the
+ kernel modules (but in this case the entire list must be
+ wrapped with double quotes). Any dependencies of requested
+ modules will also be added to the initrd.
+ -o Output image (default /boot/initrd.gz)
+ -r Root partition device (must be used with -f)
+ -s Initrd source tree (default /boot/initrd-tree/)
+ -w Time to wait until all disks are detected
+ -C Use cryptsetup to unlock the underlying device of an
+ encrypted root filesystem (must be used with '-r' parameter).
+ Two scenarios are possible. (1) root filesystem was created on the
+ encrypted disk/LVM partition, example:
+ -C /dev/sda2 -r cryptroot
+ where /dev/sda2 is the encrypted partition and
+ the actual root device name in /etc/fstab is:
+ /dev/mapper/cryptroot
+ (2) the encrypted partition contains a LVM volume which holds the
+ root filesystem, example:
+ -C /dev/sda2 -r /dev/vg/root
+ where /dev/sda2 is the encrypted partition and
+ the actual root device name in /etc/fstab is:
+ /dev/vg/root
+ -L Add support for LVM partitions
+ -R Add support for RAID partitions
+ -V Display version number
+
+A simple example: Build an initrd for a reiserfs root partition:
+
+ mkinitrd -c -m reiserfs
+
+Another example: Build an initrd image using Linux 2.6.29.3-smp kernel
+modules for a system with an ext3 root partition on /dev/hdb3:
+
+ mkinitrd -c -k 2.6.29.3-smp -m mbcache:jbd:ext3 -f ext3 -r /dev/hdb3
+
+Note that if you are already logged in with /dev/hdb3 as your /
+partition, and it is running ext3, this command works just the same:
+
+ mkinitrd -c -m ext3
+
+If run without options, mkinitrd will rebuild an initrd image using
+the contents of the $SOURCE_TREE directory, or, if that directory
+does not exist it will be created and populated, and then mkinitrd
+will exit.
+
+EOF
+}
+
+create_new_source_tree() {
+ mkdir -p $SOURCE_TREE
+ # Make sure a kernel module directory exists:
+ mkdir -p $SOURCE_TREE/lib/modules/${KERNEL_VERSION}
+ # Add the initrd-tree skeleton:
+ ( cd $SOURCE_TREE ; tar xzf /usr/share/mkinitrd/initrd-tree.tar.gz )
+ # Make sure we have any block devices that might be needed:
+
+ SLOPPY_DEV_LIST=$(cat /proc/partitions)
+ for device in $SLOPPY_DEV_LIST ; do
+ if [ ! -r $SOURCE_TREE/dev/$device ]; then
+ if [ -b /dev/$device ]; then
+ if [ -L /dev/$device ]; then
+ cp -a --parents $(readlink -e /dev/$device) $SOURCE_TREE
+ fi
+ cp -a --parents /dev/$device $SOURCE_TREE
+ fi
+ fi
+ done
+}
+
+clear_source_tree() {
+ if [ -d "$SOURCE_TREE" ]; then
+ rm -rf $SOURCE_TREE
+ fi
+}
+
+build_initrd_image() {
+ # Make sure we have any block devices that might be needed:
+ SLOPPY_DEV_LIST=$(cat /proc/partitions)
+ for device in $SLOPPY_DEV_LIST ; do
+ if [ ! -r $SOURCE_TREE/dev/$device ]; then
+ if [ -b /dev/$device ]; then
+ if [ -L /dev/$device ]; then
+ cp -a --parents $(readlink -e /dev/$device) $SOURCE_TREE
+ fi
+ cp -a --parents /dev/$device $SOURCE_TREE
+ fi
+ fi
+ done
+ # Wrap the initrd as an initramfs image and move it into place:
+ ( cd $SOURCE_TREE
+ rm -f $OUTPUT_IMAGE
+ find . | cpio -o -H newc | gzip -9c > $OUTPUT_IMAGE
+ )
+}
+
+badconf_file() {
+ # This won't really help with what's *wrong* with the file,
+ # but it will at least give them a clue that there's a problem
+ echo "/etc/mkinitrd.conf is bad or does not exist."
+ echo "If the file does not exist, do not pass -F to mkinitrd."
+ exit 1
+}
+
+# If --help is given, print_usage and exit:
+if echo $* | grep -wq '\--help' ; then
+ print_usage
+ exit 0
+fi
+
+# If -V given, print version and exit:
+if echo $* | grep -wq '\-V' ; then
+ echo "mkinitrd version $MKINITRD_VERSION"
+ exit 0
+fi
+
+# Default values if these aren't previously set.
+# Might be set from config file or by -s and -o options too.
+SOURCE_TREE=${SOURCE_TREE:-/boot/initrd-tree}
+OUTPUT_IMAGE=${OUTPUT_IMAGE:-/boot/initrd.gz}
+KERNEL_VERSION=${KERNEL_VERSION:-"$(uname -r)"}
+
+# Default actions without options:
+if [ -z "$1" ]; then
+ # If the output tree doesn't exist, create it and then exit:
+ if [ ! -d $SOURCE_TREE ]; then
+ echo "Nothing found at location $SOURCE_TREE, so we will create an"
+ echo -n "initrd directory structure there... "
+ create_new_source_tree
+ echo "done."
+ echo
+ echo "Now cd to $SOURCE_TREE and install some modules in your"
+ echo "module directory (lib/modules/${KERNEL_VERSION}). Then see init"
+ echo "for more information (there are a few other files to edit)."
+ echo "Finally, run mkinitrd again once the initrd-tree is ready,"
+ echo "and $OUTPUT_IMAGE will be created from it."
+ echo
+ exit 0
+ else
+ # If the source tree does exist, the default is to build the initrd
+ # image from it and then exit:
+ build_initrd_image
+ echo "$OUTPUT_IMAGE created."
+ echo "Be sure to run lilo again if you use it."
+ exit 0
+ fi
+fi # default no-option actions
+
+# Parse for the use config file option first or else the other command
+# line options can not override /etc/mkinitrd.conf.
+for opt in "$@"; do
+ if [ $opt = "-F" ]; then
+ if [ -e /etc/mkinitrd.conf ]; then
+ . /etc/mkinitrd.conf || badconf_file
+ else
+ badconf_file
+ fi
+ fi
+done
+
+# Parse options:
+while [ ! -z "$1" ]; do
+ case $1 in
+ -c)
+ CLEAR_TREE=1
+ shift
+ ;;
+ -f)
+ ROOTFS="$2"
+ shift 2
+ ;;
+ -h)
+ RESUMEDEV="$2"
+ shift 2
+ ;;
+ -k)
+ KERNEL_VERSION="$2"
+ shift 2
+ ;;
+ -l)
+ KEYMAP="$2"
+ shift 2
+ ;;
+ -m)
+ MODULE_LIST="$2"
+ shift 2
+ ;;
+ -o)
+ OUTPUT_IMAGE="$2"
+ if [ ! "$(echo $OUTPUT_IMAGE | cut -b1)" = "/" ]; then
+ OUTPUT_IMAGE=$(pwd)/$OUTPUT_IMAGE
+ fi
+ shift 2
+ ;;
+ -r)
+ ROOTDEV="$2"
+ shift 2
+ ;;
+ -s)
+ SOURCE_TREE="$2"
+ shift 2
+ ;;
+ -w)
+ WAIT="$2"
+ shift 2
+ ;;
+ -C)
+ CRYPT=1
+ LUKSDEV="$2"
+ shift 2
+ ;;
+ -L)
+ LVM=1
+ shift
+ ;;
+ -R)
+ RAID=1
+ shift
+ ;;
+ *) # unknown, prevent infinite loop
+ shift
+ ;;
+ esac
+done
+
+# If kernel modules are needed but the kernel version is absent, exit now:
+if [ ! -d /lib/modules/$KERNEL_VERSION ]; then
+ echo "ERROR: No /lib/modules/$KERNEL_VERSION kernel modules tree found for kernel \"$KERNEL_VERSION\""
+ exit 1
+fi
+
+# If clearing source tree was requested, do that first
+if [ "$CLEAR_TREE" = "1" ]; then
+ clear_source_tree
+fi
+
+# If there's no $SOURCE_TREE, make one now:
+if [ ! -d "$SOURCE_TREE" ]; then
+ create_new_source_tree
+fi
+
+# If $ROOTDEV and $ROOTFS are not set, assume we want the
+# values for the currently mounted /
+# (unless we find that values are already set in the initrd-tree):
+if [ -z "$ROOTDEV" -a -z "$(cat $SOURCE_TREE/rootdev 2> /dev/null)" ]; then
+ ROOTDEV=$(mount | grep ' on / ' | cut -f 1 -d ' ')
+ if [ "$ROOTDEV" = "/dev/root" ]; then # find real root device
+ ROOTDEV="/dev/$(readlink /dev/root)"
+ fi
+fi
+if [ -z "$ROOTFS" -a -z "$(cat $SOURCE_TREE/rootfs 2> /dev/null)" ]; then
+ ROOTFS=$(mount | grep ' on / ' | cut -f 5 -d ' ')
+fi
+# If needed, write them in the initrd-tree:
+if [ ! -z "$ROOTDEV" ]; then
+ echo $ROOTDEV > $SOURCE_TREE/rootdev
+fi
+if [ ! -z "$ROOTFS" ]; then
+ echo $ROOTFS > $SOURCE_TREE/rootfs
+fi
+
+# If $WAIT is not set, assume we need only one second
+# to have all devices done
+# (unless we find that value is already set in the initrd-tree):
+if [ -z "$WAIT" -a -z "$(cat $SOURCE_TREE/wait-for-root)" ]; then
+ WAIT=1
+fi
+if [ ! -z "$WAIT" ]; then
+ echo $WAIT > $SOURCE_TREE/wait-for-root
+fi
+
+# Useful to know which initrd is running:
+INITRD_NAME=$(basename $OUTPUT_IMAGE)
+echo $INITRD_NAME > $SOURCE_TREE/initrd-name
+
+# Fill /resumedev with the swap partition holding the hibernation image
+if [ ! -z "$RESUMEDEV" ]; then
+ echo $RESUMEDEV > $SOURCE_TREE/resumedev
+fi
+
+# Add custom keymap support if one was given
+if [ ! -z "$KEYMAP" ]; then
+ echo $KEYMAP > $SOURCE_TREE/keymap
+ cp /usr/share/mkinitrd/keymaps.tar.gz $SOURCE_TREE/etc/
+fi
+
+# If LUKSDEV was set in the config file, then we need to set CRYPT=1
+if [ ! -z "$LUKSDEV" ]; then
+ CRYPT=1
+fi
+
+# Include RAID support in initrd
+if [ ! -z "$RAID" ]; then
+ if [ -r /sbin/mdadm ]; then
+ mkdir -p $SOURCE_TREE/sbin
+ cp /sbin/mdadm $SOURCE_TREE/sbin/mdadm
+ chmod 755 $SOURCE_TREE/sbin/mdadm
+ else
+ echo "ERROR: mdadm binary is missing, RAID support not installed"
+ fi
+fi
+
+# Include LVM support in initrd
+if [ ! -z "$LVM" ]; then
+ if [ -f /sbin/lvm.static ]; then
+ mkdir -p $SOURCE_TREE/sbin
+ cp /sbin/lvm.static $SOURCE_TREE/sbin/lvm.static
+ cp /sbin/dmsetup.static $SOURCE_TREE/sbin/dmsetup.static
+ ( cd $SOURCE_TREE/sbin
+ ln -s lvm.static vgchange 2>/dev/null
+ ln -s lvm.static vgscan 2>/dev/null )
+ if [ -z "${MODULE_LIST}" ] ; then
+ MODULE_LIST="dm-mod"
+ elif ! echo ${MODULE_LIST} | grep -q dm-mod ; then
+ MODULE_LIST="$MODULE_LIST:dm-mod"
+ fi
+ else
+ echo "LVM static binary is missing, LVM support isn't installed"
+ fi
+fi
+
+# Include cryptsetup (LUKS) support in initrd
+if [ ! -z "$CRYPT" ]; then
+ if [ -e /sbin/cryptsetup.static ]; then
+ mkdir -p $SOURCE_TREE/sbin
+ cp /sbin/cryptsetup.static $SOURCE_TREE/sbin/cryptsetup.static
+ ( cd $SOURCE_TREE/sbin
+ ln -s cryptsetup.static cryptsetup 2>/dev/null
+ )
+ cat << EOF > $SOURCE_TREE/sbin/udevadm
+#!/bin/sh
+sleep 3
+EOF
+ chmod 0755 $SOURCE_TREE/sbin/udevadm
+
+ if [ -z "${MODULE_LIST}" ] ; then
+ MODULE_LIST="dm-mod"
+ elif ! echo ${MODULE_LIST} | grep -q dm-mod ; then
+ MODULE_LIST="$MODULE_LIST:dm-mod"
+ fi
+ # Write the underlying luks device to the initrd-tree:
+ echo $LUKSDEV > $SOURCE_TREE/luksdev
+ else
+ echo "Cryptsetup static binary is missing, CRYPT support isn't installed"
+ fi
+fi
+
+# Make module directory:
+if [ ! -d $SOURCE_TREE/lib/modules/$KERNEL_VERSION ]; then
+ mkdir -p $SOURCE_TREE/lib/modules/$KERNEL_VERSION
+fi
+
+# If a module list was given, copy the modules into place:
+if [ ! -z "$MODULE_LIST" ]; then
+ if grep -q "#insmod /lib/modules/2.6.18.8-smp/reiserfs.ko" $SOURCE_TREE/load_kernel_modules ; then
+ rm -f $SOURCE_TREE/load_kernel_modules
+ touch $SOURCE_TREE/load_kernel_modules
+ chmod 755 $SOURCE_TREE/load_kernel_modules
+ echo "# This is a script used to load the kernel modules." >> $SOURCE_TREE/load_kernel_modules
+ echo "# To use it, chmod it 755, and then add the insmod" >> $SOURCE_TREE/load_kernel_modules
+ echo "# lines needed to load your modules, like this:" >> $SOURCE_TREE/load_kernel_modules
+ echo >> $SOURCE_TREE/load_kernel_modules
+ fi
+
+ # Count number of modules
+ # This INDEX number gives us an easy way to find individual
+ # modules and their arguments, as well as tells us how many
+ # times to run through the list
+ if ! echo $MODULE_LIST | grep ':' > /dev/null ; then # only 1 module specified
+ INDEX=1
+ else
+ INDEX=1
+ while [ ! "$(echo "$MODULE_LIST" | cut -f $INDEX -d ':' )" = "" ]; do
+ INDEX=$(expr $INDEX + 1)
+ done
+ INDEX=$(expr $INDEX - 1) # Don't include the null value
+ fi
+
+# Wrap everything in a while loop
+i=0
+while [ $i -ne $INDEX ]; do
+ i=$(( $i + 1 ))
+
+ # FULL_MOD is the module plus any arguments (if any)
+ # MODULE is the module name
+ # ARGS is any optional arguments to be passed to the kernel
+ FULL_MOD="$(echo "$MODULE_LIST" | cut -d ':' -f $i)"
+ MODULE="$(echo "$FULL_MOD" | cut -d ' ' -f 1 )"
+ # Test for arguments
+ if echo "$FULL_MOD" | grep ' ' > /dev/null; then
+ ARGS=" $(echo "$FULL_MOD" | cut -d ' ' -f 2- )"
+ else
+ unset ARGS
+ fi
+
+ # Get MODULE deps and prepare insmod lines
+ /sbin/modprobe --set-version $KERNEL_VERSION --show-depends --ignore-install $MODULE 2> /dev/null \
+ | grep "^insmod " | cut -f 2 -d ' ' | while read SRCMOD; do
+
+ if ! grep -q "$SRCMOD" $SOURCE_TREE/load_kernel_modules 2>/dev/null ; then
+ LINE="$(echo "insmod -v $SRCMOD" | sed -e "s/$KERNEL_VERSION/\$(uname -r)/")"
+
+ # Test to see if arguments should be passed
+ # Over-ride the previously defined LINE variable if so
+ if [ "$(basename $SRCMOD .ko)" = "$MODULE" ]; then
+ # SRCMOD and MODULE are same, ARGS can be passed
+ LINE="$LINE$ARGS"
+ fi
+
+ fi
+
+ if ! grep -qx "$LINE" $SOURCE_TREE/load_kernel_modules ; then
+ echo "$LINE" >> $SOURCE_TREE/load_kernel_modules
+ fi
+
+ if cp -a --parents $SRCMOD $SOURCE_TREE 2> /dev/null; then
+ echo "OK: $SRCMOD added."
+ else
+ echo "WARNING: Could not find module \"$SRCMOD\""
+ fi
+
+ done
+
+done
+
+fi
+
+# And finally, build the initrd:
+build_initrd_image
+
diff --git a/source/a/mkinitrd/mkinitrd.8 b/source/a/mkinitrd/mkinitrd.8
new file mode 100644
index 00000000..5fa95721
--- /dev/null
+++ b/source/a/mkinitrd/mkinitrd.8
@@ -0,0 +1,194 @@
+.\" -*- nroff -*-
+.ds g \" empty
+.ds G \" empty
+.\" 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 MKINITRD 8 "04 March 2008" "Slackware Version 12.1"
+.SH NAME
+mkinitrd \- create or rebuilt an initrd (initial ramdisk) using initramfs (simple cpio+gzip).
+.SH SYNOPSIS
+.B mkinitrd
+[
+.B \-F
+]
+[
+.B \-c
+]
+[
+.B \-f filesystem
+]
+[
+.B \-h hibernate_partition
+]
+[
+.B \-k kernel_version
+]
+[
+.B \-m module1:module2:module3...
+]
+[
+.B \-o output_file
+]
+[
+.B \-r root_device
+]
+[
+.B \-s source_tree
+]
+[
+.B \-C crypt_device
+]
+[
+.B \-L
+]
+[
+.B \-R
+]
+[
+.B \-V
+]
+.SH DESCRIPTION
+.B mkinitrd
+is used to build an initial ramdisk. An initial ramdisk is a very small
+set of files that are loaded into RAM and "mounted" (as initramfs doesn't
+actually use a filesystem) as the kernel boots (before the main root
+filesystem is mounted). The usual reason to use an initrd is because
+you need to load kernel modules before mounting the root partition.
+Usually these modules are required to support the filesystem used by the
+root partition (ext3, reiserfs, xfs), or perhaps the controller that the
+hard drive is attached to (SCSI, RAID, etc). Essentially, there are so many
+different options available in modern Linux kernels that it isn't practical
+to try to ship many different kernels to try to cover everyone's needs.
+It's a lot more flexible to ship a generic kernel and a set of kernel
+modules for it.
+.SH OPTIONS
+.TP
+.B \-F
+Use the contents of /etc/mkinitrd.conf as options to mkinitrd (optional).
+If this is used in conjunction with any other options passed on the command
+line, the command-line options will override the config file options.
+.br
+See mkinitrd.conf(5) for details.
+.TP
+.B \-c
+Clear the existing initrd tree (by default in /boot/initrd-tree/) first.
+If this is not done, running mkinitrd will add additional modules to the
+existing initrd.
+.TP
+.B \-f filesystem
+Specify the filesystem to use for the root partition. If this isn't given,
+mount will usually figure it out. This option must be used together with the
+\-r option in order to be beneficial.
+.TP
+.B \--help
+Display a help summary.
+.TP
+.B \-h hibernate_partition
+Specify the swap partition holding the hibernation image.
+.TP
+.B \-k kernel version
+Use kernel modules from the specified kernel version. mkinitrd will look
+for them in /lib/modules/(kernel version).
+.TP
+.B \-l keymap
+Load an alternative keyboard mapping. All supported keyboard mappings
+can be found in /usr/share/mkinitrd/keymaps.tar.gz
+Leave the '.bmap' out when you supply this parameter. E.g. '-l nl' will
+add support for dutch keyboard mapping to the initrd.
+.TP
+.B \-m module list
+This is a list of colon-delimited modules to build into the initrd.
+Any dependencies of requested modules will also be added to the initrd.
+Additional options may be added to use when loading the kernel modules
+(but in this case the entire list must be wrapped with double quotes).
+.TP
+.B \-o output image
+The file to write the initrd to. (default: /boot/initrd.gz)
+.TP
+.B \-r root partition
+Specify the device to be used as the root partition. If this isn't given, the
+kernel default will be used (which is usually fine). This option must be used
+together with the \-f option in order to be beneficial.
+.TP
+.B \-s source tree
+The directory to use as the source for the initrd. (default: /boot/initrd-tree/)
+.TP
+.B \-w
+The -w option specifies how long to wait in seconds before assuming that all the
+drives are spun up and ready to go.
+.TP
+.B \-C
+Use cryptsetup to enable the underlying device of an encrypted root partition.
+Requires '-r' parameter. Two scenarios are possible.
+.br
+(1) root filesystem was created on the encrypted disk/LVM partition, example:
+
+ -C /dev/sda2 -r cryptroot
+
+where /dev/sda2 is the encrypted partition and the actual root device name in /etc/fstab is:
+
+ /dev/mapper/cryptroot
+
+(2) the encrypted partition contains a LVM volume which holds the root filesystem, example:
+
+ -C /dev/sda2 -r /dev/vg/root
+
+where /dev/sda2 is the encrypted partition and the actual root device name in /etc/fstab is:
+
+ /dev/vg/root
+.TP
+.B \-L
+This option adds LVM support to the initrd, if the tools are
+available on the system.
+.TP
+.B \-R
+This option adds RAID support to the initrd, if a static mdadm binary is
+available on the system.
+.TP
+.B \-V
+Display version information and exit.
+.SH EXAMPLES
+A simple example: Build an initrd for a reiserfs root partition:
+
+ mkinitrd -c -m reiserfs
+
+Another example: Build an initrd image using Linux 2.6.24.5 kernel
+modules for a system with an ext3 root partition on /dev/hdb3:
+
+ mkinitrd -c -k 2.6.24.5 -m ext3 -f ext3 -r /dev/hdb3
+
+If run without options, mkinitrd will rebuild an initrd image using
+the contents of the $SOURCE_TREE directory, or, if that directory
+does not exist it will be created and populated, and then mkinitrd
+will exit. These options are handy for building an initrd mostly
+by hand. After creating /boot/initrd-tree/, you can add modules and
+edit files by hand, and then rerun mkinitrd to create the initrd.
+
+Once the initrd is created, you'll need to tell your boot loader
+to load it. If you boot with LILO, you will need to add an initrd
+line to /etc/lilo.conf. Here's a section of lilo.conf that shows
+how to set this up:
+
+ # Linux bootable partition config begins
+ image = /boot/vmlinuz-generic-2.6.24.5
+ initrd = /boot/initrd.gz
+ root = /dev/hda6
+ label = Linux26245
+ read-only
+ # Linux bootable partition config ends
+
+Once you've created the initrd and editing /etc/lilo.conf, you will
+need to run 'lilo' to write out the changed boot block. The next
+time you reboot the initrd should be loaded along with the kernel.
+
+Have fun!
+
+.SH SEE ALSO
+mkinitrd.conf (5)
+
+.SH AUTHOR
+Patrick J. Volkerding <volkerdi@slackware.com>
diff --git a/source/a/mkinitrd/mkinitrd.SlackBuild b/source/a/mkinitrd/mkinitrd.SlackBuild
new file mode 100755
index 00000000..10e70b99
--- /dev/null
+++ b/source/a/mkinitrd/mkinitrd.SlackBuild
@@ -0,0 +1,119 @@
+#!/bin/sh
+
+# Copyright 2007, 2008, 2009 Patrick J. Volkerding, Sebeka, MN, USA
+# All rights reserved.
+#
+# Redistribution and use of this script, with or without modification, is
+# permitted provided that the following conditions are met:
+#
+# 1. Redistributions of this script must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# 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.
+
+
+VERSION=1.3.4
+BB=1.12.1
+ARCH=${ARCH:-x86_64}
+NUMJOBS=${NUMJOBS:--j7}
+BUILD=${BUILD:-3}
+
+CWD=$(pwd)
+TMP=${TMP:-/tmp}
+PKG=$TMP/package-mkinitrd
+
+rm -rf $PKG
+mkdir -p $TMP $PKG
+cd $TMP
+rm -rf busybox-$BB
+tar xvf $CWD/busybox-$BB.tar.bz2 || exit 1
+cd busybox-$BB
+
+#zcat $CWD/busybox-${BB}.remove_warning.diff.gz | patch -p1 --verbose || exit 1
+#zcat $CWD/busybox-${BB}.no-gc-sections.diff.gz | patch -p1 --verbose || exit 1
+# Needed with 2.6.27 kernel:
+zcat $CWD/busybox-1.12.1_inotify.diff.gz | patch -p1 --verbose || exit 1
+
+chown -R root:root .
+sed -e \
+ 's#^CONFIG_PREFIX=.*#CONFIG_PREFIX="'$PKG'/usr/share/mkinitrd/initrd-tree"#' \
+ $CWD/busybox-dot-config > .config
+make oldconfig
+make $NUMJOBS || make || exit 1
+
+mkdir -p $PKG/usr/share/mkinitrd/initrd-tree/{bin,sbin}
+make install || exit 1
+rm -f $PKG/usr/share/mkinitrd/initrd-tree/linuxrc
+
+# Copying additional files:
+cp $CWD/mkinitrd_command_generator.sh $PKG/usr/share/mkinitrd
+chmod 755 $PKG/usr/share/mkinitrd/mkinitrd_command_generator.sh
+cp $CWD/keymaps.tar.gz $PKG/usr/share/mkinitrd
+
+# Zip up the initrd-tree:
+( cd $PKG/usr/share/mkinitrd/initrd-tree
+ tar xf $CWD/_initrd-tree.tar.gz
+ cat $CWD/init > init
+ tar czf ../initrd-tree.tar.gz .
+)
+rm -rf $PKG/usr/share/mkinitrd/initrd-tree
+
+# Add busybox docs:
+mkdir -p $PKG/usr/doc/busybox-$BB
+cp -a AUTHORS INSTALL LICENSE README \
+ $PKG/usr/doc/busybox-$BB
+
+mkdir -p $PKG/sbin
+cat $CWD/mkinitrd > $PKG/sbin/mkinitrd
+chmod 755 $PKG/sbin/mkinitrd
+
+mkdir -p $PKG/usr/man/man{5,8}
+cat $CWD/mkinitrd.8 | gzip -9c > $PKG/usr/man/man8/mkinitrd.8.gz
+cat $CWD/mkinitrd.conf.5 | gzip -9c > $PKG/usr/man/man5/mkinitrd.conf.5.gz
+
+mkdir -p $PKG/etc
+cat $CWD/mkinitrd.conf.sample > $PKG/etc/mkinitrd.conf.sample
+
+mkdir -p $PKG/usr/doc/mkinitrd-$VERSION
+cp -a $CWD/README.initrd $PKG/usr/doc/mkinitrd-$VERSION
+
+( cd $PKG/usr/doc/mkinitrd-$VERSION
+ DATE="$(date)"
+ KERNEL_VERSION="$(uname -r)"
+ PACKAGE_VERSION="$(uname -r | tr - _)"
+ LILO_KERNEL_NAME="$(echo $(uname -r) | tr -d . | tr -d - )"
+ cat README.initrd | sed -e s/@DATE@/"$DATE"/ > README.initrd1
+ cat README.initrd1 | sed -e s/@KERNEL_VERSION@/"$KERNEL_VERSION"/ > README.initrd2
+ cat README.initrd2 | sed -e s/@PACKAGE_VERSION@/"$PACKAGE_VERSION"/ > README.initrd3
+ cat README.initrd3 | sed -e s/@LILO_KERNEL_NAME@/"$LILO_KERNEL_NAME"/ > README.initrd4
+ cat README.initrd4 | sed -e s/@MKINITRD_VERSION@/"$VERSION"/ > README.initrd5
+ cat README.initrd5 | sed -e s/@ARCH@/"$ARCH"/ > README.initrd6
+ cat README.initrd6 | sed -e s/@BUILD@/"$BUILD"/ > README.initrd
+ rm -f README.initrd{1,2,3,4,5,6}
+)
+chmod 644 $PKG/usr/doc/mkinitrd-$VERSION/*
+chown root:root $PKG/usr/doc/mkinitrd-$VERSION/*
+
+mkdir $PKG/boot
+( cd $PKG/boot
+ ln -sf /usr/doc/mkinitrd-$VERSION/README.initrd .
+)
+
+find $PKG | xargs file | grep -e "executable" -e "shared object" \
+ | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
+
+mkdir -p $PKG/install
+cat $CWD/slack-desc > $PKG/install/slack-desc
+
+cd $PKG
+/sbin/makepkg -l y -c n $TMP/mkinitrd-$VERSION-$ARCH-$BUILD.txz
+
diff --git a/source/a/mkinitrd/mkinitrd.conf.5 b/source/a/mkinitrd/mkinitrd.conf.5
new file mode 100644
index 00000000..5890e246
--- /dev/null
+++ b/source/a/mkinitrd/mkinitrd.conf.5
@@ -0,0 +1,174 @@
+.\" mkinitrd.5 Robby Workman <rworkman@slackware.com>
+.\" 25 November 2007 "
+
+.TH MKINITRD.CONF 5 "05 Februrary 2008" "Slackware 12.1"
+.SH NAME
+.B mkinitrd.conf(5)
+.SH SYNOPSIS
+.B mkinitrd.conf - optional configuration file for
+.I mkinitrd(8)
+
+.SH DESCRIPTION
+The
+.I mkinitrd.conf
+file contains options to be passed to
+.I mkinitrd(8)
+on every run if mkinitrd is executed with the -F flag.
+.br
+It is intended as a fast and easy way for the system administrator to
+pass options to mkinitrd without having to type them on each execution.
+
+Options passed to
+.I mkinitrd(8)
+on the command line will override any
+values set in the config file.
+
+.SH OPTIONS AND SYNTAX
+
+All options are in the format of OPTION="value"
+.br
+Unset variables have no effect.
+
+.TP 5
+.I SOURCE_TREE
+This is the location for the initrd's source tree.
+.br
+Defaults to "/boot/initrd-tree"
+
+.TP 5
+.I CLEAR_TREE
+This option specifies whether to clear the initrd source tree prior to
+creating the initrd.
+.br
+This requires a value of either "0" or "1" where 0=no and 1=yes
+.br
+Examples:
+.br
+CLEAR_TREE="0" # Do not clear initrd tree first
+.br
+CLEAR_TREE="1" # Clear initrd tree first
+
+It is recommended to leave this unset and pass "-c" on the command line
+when clearing the tree is desired. Clearing the tree is not desirable
+if you wish to build support for more than one kernel into the initrd
+image.
+
+.TP 5
+.I OUTPUT_IMAGE
+This is the location for the initrd image that is created.
+.br
+Defaults to "/boot/initrd.gz"
+
+.TP 5
+.I KERNEL_VERSION
+This is the kernel version for which the initrd should be created.
+.br
+Defaults to "$(uname -r)"
+
+.TP 5
+.I KEYMAP
+This is the custom keyboard map that should be loaded instead of the
+default 'us' keymap.
+.br
+The file /usr/share/mkinitrd/keymaps.tar.gz contains all possible keymaps
+to choose from (omit the '.bmap' extension in the mkinitrd command)
+.br
+Example: KEYMAP="nl"
+
+.TP 5
+.I MODULE_LIST
+This should be a colon-separated list of modules you wish to be included
+in the initrd image.
+.br
+Example: MODULE_LIST="ext3:mbcache:jbd"
+
+If you have loadtime options that you need to specify when loading kernel
+modules, those can be added here as well.
+.br
+Example: MODULE_LIST="module1:module2 option=1:module3"
+
+.TP 5
+.I LUKSDEV
+When using cryptsetup with an encrypted root partition, use this variable to
+define the *actual* device name of the encrypted root partition and define the
+*mapped* device name as ROOTDEV.
+.br
+For example, if your actual root device name in /etc/fstab is:
+.br
+.I /dev/mapper/cryptroot
+on
+.I /dev/sda2
+
+Then you'll need to set:
+.br
+LUKSDEV="/dev/sda2"
+.br
+ROOTDEV="cryptroot"
+
+.TP 5
+.I ROOTDEV
+The device on which your root filesystem is located.
+.br
+Example: ROOTDEV="/dev/sda2"
+
+If you are using cryptsetup and an encrypted root filesystem, be sure to
+read the option above for LUKSDEV or Bad Things will happen.
+
+.TP 5
+.I ROOTFS
+The filesystem type of your root filesystem
+.br
+Example: ROOTFS="ext3"
+
+.TP 5
+.I RAID
+This option adds the mdadm binary to the initrd to support RAID.
+Additional modules may be required, depending on your kernel
+configuration. If you wish to add LVM support to the initrd, then
+set this to 1; otherwise, leave it unset or set it to 0.
+.br
+Examples:
+.br
+RAID="0" # Do not add RAID support to initrd
+.br
+RAID="1" # Add RAID support to initrd
+
+.TP 5
+.I LVM
+This option adds support for LVM partitions into the initrd.
+If you wish to add LVM support to the initrd, then set this to 1;
+otherwise, leave it unset or set it to 0.
+.br
+Examples:
+.br
+LVM="0" # Do not add LVM support to initrd
+.br
+LVM="1" # Add LVM support to initrd
+
+.TP 5
+.I WAIT
+This defines the time to wait, in seconds, until all disks are detected.
+.br
+This is useful for allowing extra time that might be needed for slow usb disks or systems with large amounts of storage to become ready.
+.br
+If not defined, the default is 1 second.
+
+.TP 5
+.I RESUMEDEV
+The swap partition holding your hibernation image.
+.br
+Example: RESUMEDEV="/dev/sda2"
+
+.SH FILES
+.I /etc/mkinitrd.conf
+.br
+See /etc/mkinitrd.conf.sample
+
+.SH "SEE ALSO"
+.BR mkinitrd "(8)"
+
+.SH BUGS
+None known :-)
+
+.SH MISCELLANEOUS
+Support for mkinitrd.conf was added in mkinitrd-1.3.0
diff --git a/source/a/mkinitrd/mkinitrd.conf.sample b/source/a/mkinitrd/mkinitrd.conf.sample
new file mode 100644
index 00000000..29e56f5f
--- /dev/null
+++ b/source/a/mkinitrd/mkinitrd.conf.sample
@@ -0,0 +1,16 @@
+# mkinitrd.conf.sample
+# See "man mkinitrd.conf" for details on the syntax of this file
+#
+#SOURCE_TREE="/boot/initrd-tree"
+#CLEAR_TREE="0"
+#OUTPUT_IMAGE="/boot/initrd.gz"
+#KERNEL_VERSION="$(uname -r)"
+#KEYMAP="us"
+#MODULE_LIST="ext3"
+#LUKSDEV="/dev/hda1"
+#ROOTDEV="/dev/hda1"
+#ROOTFS="ext3"
+#RESUMEDEV="/dev/hda2"
+#RAID="0"
+#LVM="0"
+#WAIT="1"
diff --git a/source/a/mkinitrd/mkinitrd_command_generator.sh b/source/a/mkinitrd/mkinitrd_command_generator.sh
new file mode 100644
index 00000000..d3cdfb73
--- /dev/null
+++ b/source/a/mkinitrd/mkinitrd_command_generator.sh
@@ -0,0 +1,842 @@
+#!/bin/sh
+# $Id: mkinitrd_command_generator.sh,v 1.40 2008/12/18 23:32:56 eha Exp eha $
+# Copyright 2008, 2009 by Eric Hameleers <alien@slackware.com>, Eindhoven, Netherlands
+# Copyright 2008, 2009 by PiterPUNK <piterpunk@slackware.com>, Sao Paulo, SP, Brazil
+# All rights reserved.
+#
+# 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.
+#
+# THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED 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 AUTHORS AND COPYRIGHT HOLDERS AND THEIR
+# 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.
+# -----------------------------------------------------------------------------
+#
+# Create an initrd which fits the system.
+# Take into account the use of LVM/LUKS/RAID.
+# Find out about any hardware drivers the system may need in an initrd when
+# booting from a generic lightweight kernel.
+#
+# -----------------------------------------------------------------------------
+
+# The script's revision number will be displayed in the help text:
+REV=$( echo "$Revision: 1.40 $" | cut -d' ' -f2 )
+
+# Define some essential parameter values:
+USING_LVM=""
+USING_LUKS=""
+USING_RAID=""
+MLIST=""
+REALDEV="" # The device that contains the LUKS volume
+BASEDEV="" # Lowest level device (raw block device or RAID volume)
+
+FSTAB=${FSTAB:-"/etc/fstab"} # so we can test with alternate fstab files
+
+# These are needed by -c and -i options:
+SOURCE_TREE=${SOURCE_TREE:-"/boot/initrd-tree"}
+CLEAR_TREE=${CLEAR_TREE:-1}
+KEYMAP=${KEYMAP:-"us"}
+WAIT=${WAIT:-1}
+
+# A basic explanation of the commandline parameters:
+basic_usage() {
+ cat <<-EOT
+
+ *** $(basename $0) revision $REV ***
+ Usage:
+ $(basename $0) [ options ] [ kernel_filename ]
+ Options:
+ -a <"additional params"> Additional parameters to pass to mkinitrd.
+ -c | --conf Show a suitable mkinitrd configuration file.
+ -h | --help Show this help.
+ -i | --interactive Navigate through menus instead of using
+ commandline arguments.
+ --longhelp Show more detailed information/examples.
+ -k <kernelversion> Use specific kernel version.
+ -m <"additional mods"> Additional modules to pass to mkinitrd,
+ separated by colons (:).
+ -l | --lilo Only show lilo.conf section
+ (requires a kernel_filename).
+ -r | --run Only show 'mkinitrd' command.
+ EOT
+}
+
+# More of a tutorial here:
+extended_usage() {
+ cat <<-EOT
+
+ This script is useful in situations where you require an initrd image
+ to boot your computer.
+ For instance, when booting a kernel that does not have support for your
+ storage or root filesystem built in (such as the Slackware 'generic'
+ kernels').
+
+ * When you run the script without parameters, it will examine your
+ running system, your current kernel version and will output an example
+ of a 'mkinitrd' commandline that you can use to generate an initrd
+ image containing enough driver support to boot the computer.
+
+ * You can make it more specific: when you add the filename of a kernel
+ as parameter to the script, it will determine the kernel version from
+ that kernel, and also give an example of the lines that you should add
+ to your '/etc/lilo.conf' file.
+
+ * If you want your initrd image to have a custom name instead of the
+ default '/boot/initrd.gz' you can add it as another parameter to the
+ script, as follows:
+
+ $(basename $0) -a "-o /boot/custom.gz"
+
+ The arguments to the '-a' parameter will be used as additional arguments
+ to the 'mkinitrd' command.
+
+ * If you need additional modules in the initrd image, apart from what
+ the script determines, you can pass then to the script using the '-m'
+ parameter as follows:
+
+ $(basename $0) -m "uhci-hcd:usbhid"
+
+ The above example adds support for USB keyboards to the initrd - you
+ may need that if you have encrypted your root partition and need to
+ enter a passphrase using a USB keyboard.
+
+ * Instead of copying and pasting the script's output, you can create
+ an initrd by directly executing the output, like in this example:
+
+ EOT
+
+ echo " \$($(basename $0) --run /boot/vmlinuz-generic-smp-2.6.24.5-smp)"
+
+ cat <<-EOT
+
+ That used the '-r' or '--run' switch to make the script only write
+ the 'mkinitrd' commandline to the terminal.
+
+ * When you want to add a section for a specific kernel to
+ '/etc/lilo.conf' directly, use the '-l' or '--lilo' switch and use a
+ command like in this example:
+
+ EOT
+
+ echo " $(basename $0) --lilo /boot/vmlinuz-generic-smp-2.6.24.5-smp >>/etc/lilo.conf"
+
+ cat <<-EOT
+
+ That command will result in the following lines being added to your
+ '/etc/lilo.conf' file (example for my hardware):
+
+ # Linux bootable partition config begins
+ # initrd created with 'mkinitrd -c -k 2.6.24.5-smp -m ata_generic:pata_amd:mbcache:jbd:ext3 -f ext3 -r /dev/hda7'
+ image = /boot/vmlinuz-generic-smp-2.6.24.5-smp
+ initrd = /boot/initrd.gz
+ root = /dev/hda7
+ label = 2.6.24.5-smp
+ read-only
+ # Linux bootable partition config ends
+
+ The last two examples show how easy it is to configure your computer
+ for the use of an initrd if you need one. The only thing left to do
+ afterwards is running 'lilo'.
+
+ EOT
+}
+
+# Find the device that holds the root partition:
+get_root_device() {
+ if [ -e $FSTAB ]; then
+ RD=$(cat $FSTAB | tr '\t' ' ' | tr -s ' ' | grep ' / ' | cut -f1 -d' ')
+ if [ "$(echo $RD | cut -f1 -d=)" = "LABEL" -o "$(echo $RD | cut -f1 -d=)" = "UUID" ]; then
+ DKEY=$(echo $RD | cut -f1 -d=)
+ # The value can be LABEL=foo or LABEL='foo' or LABEL="foo"
+ DVAL=$(echo $RD | cut -f2 -d= | tr -d "'\042")
+ RD=$(/sbin/blkid | grep -w $DKEY | grep -w $DVAL | cut -f1 -d:)
+ fi
+ else
+ RD=$(grep -m1 "^/dev/.*[[:blank:]]/[[:blank:]]" /proc/mounts | cut -f1 -d' ')
+ fi
+ echo $RD
+}
+
+# Get the root fs information:
+get_rootfs_type() {
+ if $(type vol_id 1>/dev/null 2>&1) ; then
+ vol_id $ROOTDEV | grep ID_FS_TYPE | cut -f2 -d=
+ else
+ # Alternatively, use:
+ cat $FSTAB | tr '\t' ' ' | tr -s ' ' | grep ' / ' | cut -f3 -d' '
+ fi
+}
+
+# Add the module(s) needed for the root filesystem:
+add_rootfs_module() {
+ local FSMOD
+ FSMOD=$(/sbin/modprobe --set-version $KVER --show-depends ${ROOTFS} 2>/dev/null | while read LINE; do
+ echo $(basename $(echo $LINE | cut -d' ' -f2) .ko )
+ done)
+ if [ -n "$FSMOD" ]; then
+ [ -n "$MLIST" ] && echo "$MLIST:$(echo $FSMOD | tr ' ' ':')" \
+ || echo $FSMOD | tr ' ' ':'
+ fi
+}
+
+# Determine the list of kernel modules needed to support the root device:
+determine_blockdev_drivers() {
+ # Walk the /sys tree to find kernel modules that are
+ # required for our storage devices.
+ # Thanks to PiterPUNK for this piece of code.
+ local MLIST
+ MLIST=$(for i in $(find /sys/block -name "device" -exec ls -l {} \; | sed -ne 's:.*/\(devices.*\)/[a-zA-Z]\+[.0-9]\+/.*:/sys/\1:p' | sort -u); do
+ for j in $(find $i -name "modalias"); do
+ /sbin/modprobe --set-version $KVER --show-depends $(cat $j) 2>/dev/null | while read LINE ; do
+ echo $(basename $(echo $LINE | cut -d' ' -f2) .ko )
+ done
+ done
+ done)
+ MLIST=$( echo $MLIST | tr ' ' ':' )
+ echo $MLIST
+}
+
+# Search for USB keyboards:
+function add_usb_keyboard() {
+ local USBMOD
+ if cat /proc/bus/input/devices | sed -e 's/^$/\$/g' | \
+ tr "\n$" " \n" | grep -q " Phys=.*usb.* .*Handlers=.*kbd.*B:"; then
+ USBMOD="usbhid"
+ [ -n "$MLIST" ] && MLIST="$MLIST:$USBMOD" \
+ || MLIST="$USBMOD"
+ fi
+ echo $MLIST
+}
+
+# Determine what USB Host Controller is in use
+function add_usb_hcd() {
+ local USBMOD
+ for i in `ls -Ld /sys/module/*_hcd/drivers/*`; do
+ if ls -L $i | grep -q "[0-9a-f]*:" ; then
+ USBMOD=$( echo $i | cut -f4 -d/ | tr "_" "-")
+ [ -n "$MLIST" ] && MLIST="$MLIST:$USBMOD" \
+ || MLIST="$USBMOD"
+ fi
+ done
+ echo $MLIST
+}
+
+# Is the root partition on a (combination of) LVM/LUKS volume?
+check_luks_lvm_raid() {
+ if $( lvdisplay -c $ROOTDEV 1>/dev/null 2>/dev/null ); then
+ # Our root partition is on a LV:
+ USING_LVM=1
+ # Search the Physical Volume of our Logical Volume:
+ MYVG=$( echo $(lvdisplay -c $ROOTDEV) | cut -d: -f2 )
+ for LINE in $(pvdisplay -c) ; do
+ VG=$(echo $LINE | cut -d: -f2)
+ [ "$VG" = "$MYVG" ] && break
+ done
+ PV=$(echo $LINE | cut -d: -f1)
+ # Check if there is a LUKS device underneath:
+ if $( cryptsetup status $PV 1>/dev/null 2>/dev/null ) ; then
+ # Our root partition's LV is on a LUKS volume:
+ USING_LUKS=1
+ REALDEV=$( cryptsetup status $PV | grep 'device: ' | tr -d ' ' | cut -d: -f2 )
+ BASEDEV=$REALDEV
+ else
+ BASEDEV=$PV
+ fi
+ elif $( cryptsetup status $ROOTDEV 1>/dev/null 2>/dev/null ) ; then
+ # Our root device is on a LUKS volume:
+ USING_LUKS=1
+ REALDEV=$( cryptsetup status $ROOTDEV | grep 'device: ' | tr -d ' ' | cut -d: -f2 )
+ ROOTDEV=$(basename $ROOTDEV)
+ # Check for LVM:
+ for LV in $(lvdisplay -c | tr -d ' ' | cut -f1 -d:) ; do
+ # Note: cryptsetup shows the real device, whereas
+ # lvdisplay requires the /dev/<myvg>/... symlink to the real device.
+ if [ "$(readlink $LV)" = "$REALDEV" ]; then
+ REALDEV=$LV
+ break
+ fi
+ done
+ if $( lvdisplay -c $REALDEV 1>/dev/null 2>/dev/null ); then
+ # Our root partition's LUKS device is on a LV:
+ USING_LVM=1
+ # Search the Physical Volume of our Logical Volume:
+ MYVG=$( echo $(lvdisplay -c $REALDEV) | cut -d: -f2 )
+ for LINE in $(pvdisplay -c) ; do
+ VG=$(echo $LINE | cut -d: -f2)
+ [ "$VG" = "$MYVG" ] && break
+ done
+ PV=$(echo $LINE | cut -d: -f1)
+ BASEDEV=$PV
+ else
+ BASEDEV=$REALDEV
+ fi
+ else
+ BASEDEV=$ROOTDEV
+ fi
+
+ # Finally, we should check if base device is
+ # a real block device or a RAID volume:
+ for MD in $(cat /proc/mdstat | grep -w active | cut -d' ' -f1) ; do
+ if [ "$BASEDEV" = "/dev/$MD" ]; then
+ USING_RAID=1
+ break
+ fi
+ done
+}
+
+# Before we start
+[ -x /bin/id ] && CMD_ID="/bin/id" || CMD_ID="/usr/bin/id"
+if [ "$($CMD_ID -u)" != "0" ]; then
+ echo "You need to be root to run $(basename $0)."
+ exit 1
+fi
+
+# Parse the commandline parameters:
+while [ ! -z "$1" ]; do
+ case $1 in
+ --longhelp)
+ basic_usage
+ extended_usage
+ exit 0
+ ;;
+ -a)
+ MKINIT_PARAMS=$2
+ shift 2
+ ;;
+ -c|--conf)
+ [ -n "$EMIT" ] && { echo "Do not mix incompatible parameters!"; exit 1; }
+ EMIT="conf"
+ shift
+ ;;
+ -h|--help)
+ basic_usage
+ exit 0
+ ;;
+ -i|--interactive)
+ INTERACTIVE=1
+ shift
+ ;;
+ -k)
+ KVER=$2
+ shift 2
+ ;;
+ -m)
+ MKINIT_MODS=$2
+ shift 2
+ ;;
+ -l|--lilo)
+ [ -n "$EMIT" ] && { echo "Do not mix incompatible parameters!"; exit 1; }
+ EMIT="lilo"
+ shift
+ ;;
+ -L|--fromlilo)
+ FROMLILO=1
+ shift
+ ;;
+ -r|--run)
+ [ -n "$EMIT" ] && { echo "Do not mix incompatible parameters!"; exit 1; }
+ EMIT="run"
+ shift
+ ;;
+ -R|--rootdev)
+ ROOTDEV=$2
+ shift 2
+ ;;
+ -*)
+ echo "Unsupported parameter '$1'!"
+ exit 1
+ ;;
+ *) # Everything else but switches (which start with '-') follows:
+ if [ -f $1 ]; then
+ KFILE=$1
+ # Construction of KFILE's full filename:
+ KFILEPATH=$(cd $(dirname $KFILE) && pwd)
+ if [ -L $KFILE ]; then
+ KFILE=$(readlink $KFILE)
+ else
+ KFILE=$(basename $KFILE)
+ fi
+ KFILE=${KFILEPATH}/$KFILE
+ if [ -z "$(file $KFILE | grep 'Linux kernel x86 boot')" ]; then
+ echo "File '$KFILE' does not look like it is a kernel file!"
+ exit 1
+ fi
+ else
+ echo "File $1 not found!"
+ exit 1
+ fi
+ shift
+ ;;
+ esac
+done
+
+# Determine what to show as output (other options may have set EMIT already)
+EMIT=${EMIT:-"all"}
+
+# An EMIT value of 'lilo' requires a kernel filename as script parameter:
+if [ "$EMIT" = "lilo" ]; then
+ if [ -z "$KFILE" ]; then
+ echo "A kernel_filename is required with the '-l|--lilo' option!"
+ exit 1
+ fi
+fi
+
+# Determine kernel version to use,
+# and check if modules for this kernel are actually present:
+if [ -z "$KVER" ]; then
+ if [ -n "$KFILE" ]; then
+ KVER="$(strings $KFILE | grep '(.*@.*) #' | cut -f1 -d' ')"
+ else
+ KVER="$(uname -r)"
+ fi
+fi
+if [ ! -d /lib/modules/$KVER ]; then
+ echo "Modules for kernel $KVER aren't installed."
+ exit 1
+fi
+
+# Determine whether the user passed an alternate filename for the initrd:
+if [ -n "$MKINIT_PARAMS" ]; then
+ SRCHLIST="$MKINIT_PARAMS"
+ for ELEM in $MKINIT_PARAMS ; do
+ SRCHLIST=$(echo $SRCHLIST | cut -d' ' -f2-) # cut ELEM from the list
+ if [ "$ELEM" = "-o" ]; then
+ IMGFILE=$(echo $SRCHLIST | cut -d' ' -f1)
+ break
+ fi
+ done
+fi
+IMGFILE=${IMGFILE:-"/boot/initrd.gz"}
+
+# Get information about the root device / root filesystem:
+ROOTDEV=${ROOTDEV:-$(get_root_device)}
+ROOTFS=$(get_rootfs_type)
+
+# Determine the list of kernel modules needed to support the root device:
+MLIST=$(determine_blockdev_drivers)
+
+# Determine if a USB keyboard is in use and include usbhid to module list
+MLIST=$(add_usb_keyboard)
+
+# If we use any USB module, try to determine the Host Controller
+if echo $MLIST | grep -q "usb"; then
+ MLIST=$(add_usb_hcd)
+fi
+
+# Check what combination of LUKS/LVM/RAID we have to support:
+# This sets values for USING_LUKS, USING_LVM, USING_RAID, REALDEV and BASEDEV.
+check_luks_lvm_raid
+
+# This is the interactive part:
+if [ "$INTERACTIVE" = "1" ]; then
+ if [ "$FROMLILO" != "1" ]; then
+ dialog --stdout --title "WELCOME TO MKINITRD COMMAND GENERATOR" --msgbox "\
+The main goal of this utility is to create a good initrd to \
+fit your needs. It can detect what kernel you are running, \
+what is your root device, root filesystem, if you use encryption, \
+LVM, RAID, etc. \
+\n\n\
+Usually the probed values are OK and they will be the \
+defaults in all subsequent dialogs, but maybe you want \
+to change something. \n\
+If in doubt, leave the defaults." 0 0
+
+ KVER=$( ls -d1 --indicator-style=none /lib/modules/* | \
+ awk -F/ -vVER=$KVER '{
+ if ( VER == $NF ) {
+ ONOFF="on"
+ } else {
+ ONOFF="off"
+ } ; printf("%s \"\" %s\n",$NF,ONOFF) }' | \
+ xargs dialog --stdout --title "CHOOSE KERNEL VERSION" \
+ --default-item $KVER --radiolist "\
+Please, select the kernel version you want to create this initrd for." 0 0 4 )
+ [ -z "$KVER" ] && exit 1
+
+ OLDROOTDEV=$ROOTDEV
+ ROOTDEV=$( dialog --stdout --title "SELECT ROOT DEVICE" --inputbox "\
+Enter your root device. Root device is the one where your '/' filesystem \
+is mounted." 0 0 "$ROOTDEV" )
+ [ -z "$ROOTDEV" ] && exit 1
+
+ # We need to re-check our defaults in case the user changed the default
+ # value for ROOTDEV:
+ [ "$OLDROOTDEV" != "$ROOTDEV" ] && check_luks_lvm_raid
+ ROOTFS=$(get_rootfs_type)
+
+ ROOTFS=$( dialog --stdout --title "SELECT ROOT FILESYSTEM" --inputbox "\
+Enter the type of your root filesystem." 0 0 "$ROOTFS" )
+ [ -z "$ROOTFS" ] && exit 1
+ fi
+
+ MLIST=$(add_rootfs_module)
+
+ LLR=$( dialog --stdout --title "LVM/LUKS/RAID" --checklist "\
+Do you use some of those in your root filesystem? \
+If this is the case, please select one or more options." 12 45 3 \
+"LVM" "Logical Volume Manager" $([ "$USING_LVM" = "1" ] && echo on || echo off) \
+"LUKS" "Linux Unified Key Setup" $([ "$USING_LUKS" = "1" ] && echo on || echo off) \
+"RAID" "Linux Software RAID" $([ "$USING_RAID" = "1" ] && echo on || echo off))
+
+ if [ "$?" != "0" ]; then
+ exit 1
+ fi
+
+ echo $LLR | grep -q LUKS && USING_LUKS="1"
+ echo $LLR | grep -q LVM && USING_LVM="1"
+ echo $LLR | grep -q RAID && USING_RAID="1"
+
+ if [ "$USING_LUKS" = "1" ]; then
+ REALDEV=$( dialog --stdout --title "LUKS ROOT DEVICE" --inputbox "\
+Please, enter your LUKS root device:" 0 0 "$REALDEV" )
+ [ -z "$REALDEV" ] && exit 1
+ fi
+fi
+
+# Step out of the interactive loop for a moment. The next block needs to be
+# executed in all cases.
+
+# We need to 'undouble' the MLIST array. Some people report that walking the
+# /sys tree produces duplicate modules in the list.
+# The awk command elimitates doubles without changing the order:
+MLIST=$( echo $MLIST | tr ':' '\n' | awk '!x[$0]++' | tr '\n' ' ' )
+MLIST=$( echo $MLIST | tr ' ' ':' )
+MLIST=$(echo ${MLIST%:}) # To weed out a trailing ':' which was reported once.
+
+# Back to the interactive part:
+
+if [ "$INTERACTIVE" = "1" ]; then
+ MLIST=$( dialog --stdout --title "INITRD'S MODULE LIST" --inputbox "\
+The list here shows all modules needed to support your root filesystem \
+and boot from it. But you can change the list to use some alternative \
+or additional modules. If you don't know what to do, the default is safe." \
+0 0 "$MLIST" )
+ if [ "$?" != "0" ]; then
+ exit 1
+ fi
+
+ EXTRA=$( dialog --stdout --title "EXTRA CONFIGURATION" --checklist "\
+Now is your chance for some additional configuration. All of these \
+configurations are optional and you can stick to the defaults." 11 72 3 \
+"KEYMAP" "Select keyboard layout (default: US)" \
+ $([ $USING_LUKS = 1 ] && echo on || echo off) \
+"RESUMEDEV" "Select device for 'suspend-to-disk' feature" off \
+"WAIT" "Add delay to allow detection of slow disks at boot" off)
+ if [ "$?" != "0" ]; then
+ exit 1
+ fi
+
+ if echo $EXTRA | grep -q KEYMAP ; then
+ KEYMAP=$( dialog --stdout --title "KEYBOARD LAYOUT SELECTION" \
+ --cancel-label "Skip" \
+ --menu "You may select one of the following keyboard layouts. \
+If you do not select a keyboard map, 'us.map' \
+(the US keyboard layout) is the default. Use the UP/DOWN \
+arrow keys and PageUp/PageDown to scroll \
+through the whole list of choices." \
+22 55 11 \
+"qwerty/us.map" "" \
+"azerty/azerty.map" "" \
+"azerty/be-latin1.map" "" \
+"azerty/fr-latin0.map" "" \
+"azerty/fr-latin1.map" "" \
+"azerty/fr-latin9.map" "" \
+"azerty/fr-old.map" "" \
+"azerty/fr-pc.map" "" \
+"azerty/fr.map" "" \
+"azerty/wangbe.map" "" \
+"azerty/wangbe2.map" "" \
+"dvorak/ANSI-dvorak.map" "" \
+"dvorak/dvorak-l.map" "" \
+"dvorak/dvorak-r.map" "" \
+"dvorak/dvorak.map" "" \
+"dvorak/no-dvorak.map" "" \
+"fgGIod/tr_f-latin5.map" "" \
+"fgGIod/trf-fgGIod.map" "" \
+"olpc/es-olpc.map" "" \
+"olpc/pt-olpc.map" "" \
+"qwerty/bg-cp1251.map" "" \
+"qwerty/bg-cp855.map" "" \
+"qwerty/bg_bds-cp1251.map" "" \
+"qwerty/bg_bds-utf8.map" "" \
+"qwerty/bg_pho-cp1251.map" "" \
+"qwerty/bg_pho-utf8.map" "" \
+"qwerty/br-abnt.map" "" \
+"qwerty/br-abnt2.map" "" \
+"qwerty/br-latin1-abnt2.map" "" \
+"qwerty/br-latin1-us.map" "" \
+"qwerty/by-cp1251.map" "" \
+"qwerty/by.map" "" \
+"qwerty/bywin-cp1251.map" "" \
+"qwerty/cf.map" "" \
+"qwerty/cz-cp1250.map" "" \
+"qwerty/cz-lat2-prog.map" "" \
+"qwerty/cz-lat2.map" "" \
+"qwerty/cz-qwerty.map" "" \
+"qwerty/defkeymap.map" "" \
+"qwerty/defkeymap_V1.0.map" "" \
+"qwerty/dk-latin1.map" "" \
+"qwerty/dk.map" "" \
+"qwerty/emacs.map" "" \
+"qwerty/emacs2.map" "" \
+"qwerty/es-cp850.map" "" \
+"qwerty/es.map" "" \
+"qwerty/et-nodeadkeys.map" "" \
+"qwerty/et.map" "" \
+"qwerty/fi-latin1.map" "" \
+"qwerty/fi-latin9.map" "" \
+"qwerty/fi-old.map" "" \
+"qwerty/fi.map" "" \
+"qwerty/gr-pc.map" "" \
+"qwerty/gr.map" "" \
+"qwerty/hu101.map" "" \
+"qwerty/il-heb.map" "" \
+"qwerty/il-phonetic.map" "" \
+"qwerty/il.map" "" \
+"qwerty/is-latin1-us.map" "" \
+"qwerty/is-latin1.map" "" \
+"qwerty/it-ibm.map" "" \
+"qwerty/it.map" "" \
+"qwerty/it2.map" "" \
+"qwerty/jp106.map" "" \
+"qwerty/kazakh.map" "" \
+"qwerty/kyrgyz.map" "" \
+"qwerty/la-latin1.map" "" \
+"qwerty/lt.baltic.map" "" \
+"qwerty/lt.l4.map" "" \
+"qwerty/lt.map" "" \
+"qwerty/mk-cp1251.map" "" \
+"qwerty/mk-utf.map" "" \
+"qwerty/mk.map" "" \
+"qwerty/mk0.map" "" \
+"qwerty/nl.map" "" \
+"qwerty/nl2.map" "" \
+"qwerty/no-latin1.map" "" \
+"qwerty/no.map" "" \
+"qwerty/pc110.map" "" \
+"qwerty/pl.map" "" \
+"qwerty/pl1.map" "" \
+"qwerty/pl2.map" "" \
+"qwerty/pl3.map" "" \
+"qwerty/pl4.map" "" \
+"qwerty/pt-latin1.map" "" \
+"qwerty/pt-latin9.map" "" \
+"qwerty/pt.map" "" \
+"qwerty/ro.map" "" \
+"qwerty/ro_std.map" "" \
+"qwerty/ru-cp1251.map" "" \
+"qwerty/ru-ms.map" "" \
+"qwerty/ru-yawerty.map" "" \
+"qwerty/ru.map" "" \
+"qwerty/ru1.map" "" \
+"qwerty/ru2.map" "" \
+"qwerty/ru3.map" "" \
+"qwerty/ru4.map" "" \
+"qwerty/ru_win.map" "" \
+"qwerty/ruwin_alt-CP1251.map" "" \
+"qwerty/ruwin_alt-KOI8-R.map" "" \
+"qwerty/ruwin_alt-UTF-8.map" "" \
+"qwerty/ruwin_cplk-CP1251.map" "" \
+"qwerty/ruwin_cplk-KOI8-R.map" "" \
+"qwerty/ruwin_cplk-UTF-8.map" "" \
+"qwerty/ruwin_ct_sh-CP1251.map" "" \
+"qwerty/ruwin_ct_sh-KOI8-R.map" "" \
+"qwerty/ruwin_ct_sh-UTF-8.map" "" \
+"qwerty/ruwin_ctrl-CP1251.map" "" \
+"qwerty/ruwin_ctrl-KOI8-R.map" "" \
+"qwerty/ruwin_ctrl-UTF-8.map" "" \
+"qwerty/se-fi-ir209.map" "" \
+"qwerty/se-fi-lat6.map" "" \
+"qwerty/se-ir209.map" "" \
+"qwerty/se-lat6.map" "" \
+"qwerty/se-latin1.map" "" \
+"qwerty/sk-prog-qwerty.map" "" \
+"qwerty/sk-qwerty.map" "" \
+"qwerty/speakup-jfw.map" "" \
+"qwerty/speakupmap.map" "" \
+"qwerty/sr-cy.map" "" \
+"qwerty/sv-latin1.map" "" \
+"qwerty/tr_q-latin5.map" "" \
+"qwerty/tralt.map" "" \
+"qwerty/trf.map" "" \
+"qwerty/trq.map" "" \
+"qwerty/ttwin_alt-UTF-8.map.gz" "" \
+"qwerty/ttwin_cplk-UTF-8.map.gz" "" \
+"qwerty/ttwin_ct_sh-UTF-8.map.gz" "" \
+"qwerty/ttwin_ctrl-UTF-8.map.gz" "" \
+"qwerty/ua-cp1251.map.gz" "" \
+"qwerty/ua-utf-ws.map" "" \
+"qwerty/ua-utf.map" "" \
+"qwerty/ua-ws.map" "" \
+"qwerty/ua.map" "" \
+"qwerty/uk.map" "" \
+"qwerty/us-acentos.map" "" \
+"qwerty/us.map" "" \
+"qwertz/croat.map" "" \
+"qwertz/cz-us-qwertz.map" "" \
+"qwertz/cz.map" "" \
+"qwertz/de-latin1-nodeadkeys.map" "" \
+"qwertz/de-latin1.map" "" \
+"qwertz/de.map" "" \
+"qwertz/de_CH-latin1.map" "" \
+"qwertz/fr_CH-latin1.map" "" \
+"qwertz/fr_CH.map" "" \
+"qwertz/hu.map" "" \
+"qwertz/sg-latin1-lk450.map" "" \
+"qwertz/sg-latin1.map" "" \
+"qwertz/sg.map" "" \
+"qwertz/sk-prog-qwertz.map" "" \
+"qwertz/sk-qwertz.map" "" \
+"qwertz/slovene.map" "" )
+ [ -n "$KEYMAP" ] && KEYMAP=$(basename $KEYMAP .map)
+ fi
+
+ if echo $EXTRA | grep -q RESUMEDEV ; then
+ # Print information about swap partitions:
+ FREERAM=$(free -k | grep "^Mem:" | tr -s ' ' | cut -d' ' -f2)
+ SWPINFO=""
+ for SWPDEV in $(grep -w swap $FSTAB | cut -d' ' -f1) ; do
+ SWPINFO="$SWPINFO $SWPDEV Linux swap partition $(fdisk -s $SWPDEV) KB \\n"
+ [ $(fdisk -s $SWPDEV) -gt $FREERAM ] && RESUMEDEV=$SWPDEV
+ done
+ FREERAM=$(free -m | grep "^Mem:" | tr -s ' ' | cut -d' ' -f2)
+ RESUMEDEV=$( dialog --stdout --no-collapse --title "HIBERNATE RESUME DEVICE" --inputbox "\
+When using suspend-to-disk feature (hibernate), your computer's RAM is copied \
+to a swap device when it shuts down. The kernel will resume from that RAM \
+image at boot. This means that the swap partition must not be smaller than \
+the amount of RAM you have ($FREERAM MB). \n\
+$SWPINFO \n\
+Please specify a swap partition to be used for hibernation:" \
+0 0 "$RESUMEDEV")
+ [ -z "$RESUMEDEV" ] && exit 1
+ fi
+
+ if echo $EXTRA | grep -q WAIT ; then
+ WAIT=$( dialog --stdout --title "WAIT FOR ROOT DEVICE" --inputbox "\
+Some block devices are too slow to be detected properly at boot. USB storage \
+devices and some disk arrays have this 'feature'. To make your machine \
+boot properly, you can add some delay here, to wait until all your disks are \
+probed and detected. The time is in seconds:" 0 0 "$WAIT")
+ [ -z "$WAIT" ] && exit 1
+ fi
+
+ IMGFILE=$( dialog --stdout --title "INITRD IMAGE NAME" --inputbox "\
+Enter your initrd image filename." 0 0 "$IMGFILE" )
+ [ -z "$IMGFILE" ] && exit 1
+
+else
+ MLIST=$(add_rootfs_module)
+fi
+
+# Add any modules passed along on the commandline:
+if [ -n "$MKINIT_MODS" ]; then
+ [ -n "$MLIST" ] && MLIST="$MLIST:$(echo $MKINIT_MODS | tr ' ' ':')" \
+ || MLIST="$(echo $MKINIT_MODS | tr ' ' ':')"
+fi
+
+# Constructing the mkinitrd command:
+MKINIT="mkinitrd -c -k $KVER -f $ROOTFS -r $ROOTDEV"
+
+# If we have a module list, add them:
+if ! [ -z "$MLIST" -o "$MLIST" = ":" ]; then
+ MKINIT="$MKINIT -m $MLIST"
+fi
+
+# Deal with LUKS/LVM/RAID:
+if [ "$USING_LUKS" = "1" ]; then
+ MKINIT="$MKINIT -C $REALDEV"
+fi
+if [ "$USING_LVM" = "1" ]; then
+ MKINIT="$MKINIT -L"
+fi
+if [ "$USING_RAID" = "1" ]; then
+ MKINIT="$MKINIT -R"
+fi
+
+if [ -n "$RESUMEDEV" ]; then
+ # Add hibernation partition:
+ MKINIT="$MKINIT -h $RESUMEDEV"
+fi
+if [ -n "$KEYMAP" -a "$KEYMAP" != "us" ]; then
+ # Add non-us keyboard mapping:
+ MKINIT="$MKINIT -l $KEYMAP"
+fi
+if [ -n "$WAIT" -a $WAIT -ne 1 ]; then
+ # Add non-default wait time:
+ MKINIT="$MKINIT -w $WAIT"
+fi
+if ! echo "$MKINIT_PARAMS" | grep -q ' -o ' ; then
+ # Add non-default output filename:
+ MKINIT="$MKINIT -o $IMGFILE"
+fi
+if [ -n "$MKINIT_PARAMS" ]; then
+ # Add user-supplied additional parameters:
+ MKINIT="$MKINIT $MKINIT_PARAMS"
+fi
+
+# Notify the user:
+if [ "$EMIT" = "all" ]; then
+ cat <<-EOT
+ #
+ # $(basename $0) revision $REV
+ #
+ # This script will now make a recommendation about the command to use
+ # in case you require an initrd image to boot a kernel that does not
+ # have support for your storage or root filesystem built in
+ # (such as the Slackware 'generic' kernels').
+ # A suitable 'mkinitrd' command will be:
+
+ $MKINIT
+ EOT
+elif [ "$EMIT" = "run" ]; then
+ echo "$MKINIT"
+elif [ "$EMIT" = "conf" ]; then
+ cat <<-EOT
+ SOURCE_TREE="$SOURCE_TREE"
+ CLEAR_TREE="$CLEAR_TREE"
+ OUTPUT_IMAGE="$IMGFILE"
+ KERNEL_VERSION="$KVER"
+ KEYMAP="$KEYMAP"
+ MODULE_LIST="$(echo $MLIST | cut -f2 -d\ )"
+ LUKSDEV="$REALDEV"
+ ROOTDEV="$ROOTDEV"
+ ROOTFS="$ROOTFS"
+ RESUMEDEV="$RESUMEDEV"
+ RAID="$USING_RAID"
+ LVM="$USING_LVM"
+ WAIT="$WAIT"
+ EOT
+fi
+
+if [ -n "$KFILE" ]; then
+ if [ "$EMIT" = "all" ]; then
+ cat <<-EOT
+ # An entry in 'etc/lilo.conf' for kernel '$KFILE' would look like this:
+ EOT
+ fi
+ if [ "$EMIT" = "all" -o "$EMIT" = "lilo" ]; then
+ # Compensate for the syntax used for the LUKS-on-LVM case:
+ [ "$(basename $ROOTDEV)" = "$ROOTDEV" ] && BASE="/dev/mapper/" || BASE=""
+ cat <<-EOT
+ # Linux bootable partition config begins
+ # initrd created with '$MKINIT'
+ image = $KFILE
+ initrd = $IMGFILE
+ root = $BASE$ROOTDEV
+ label = $KVER
+ read-only
+ # Linux bootable partition config ends
+ EOT
+ fi
+fi
diff --git a/source/a/mkinitrd/mkinitrd_kernelcheck.diff b/source/a/mkinitrd/mkinitrd_kernelcheck.diff
new file mode 100644
index 00000000..e1302f54
--- /dev/null
+++ b/source/a/mkinitrd/mkinitrd_kernelcheck.diff
@@ -0,0 +1,15 @@
+--- mkinitrd.orig 2008-11-30 15:35:58.000000000 +0100
++++ mkinitrd 2008-12-11 11:16:37.000000000 +0100
+@@ -277,6 +277,12 @@
+ esac
+ done
+
++# If kernel modules are needed but the kernel version is absent, exit now:
++if [ ! -d /lib/modules/$KERNEL_VERSION ]; then
++ echo "No modules tree found for kernel \"$KERNEL_VERSION\""
++ exit 1
++fi
++
+ # If clearing source tree was requested, do that first
+ if [ "$CLEAR_TREE" = "1" ]; then
+ clear_source_tree
diff --git a/source/a/mkinitrd/slack-desc b/source/a/mkinitrd/slack-desc
new file mode 100644
index 00000000..49d1a764
--- /dev/null
+++ b/source/a/mkinitrd/slack-desc
@@ -0,0 +1,19 @@
+# HOW TO EDIT THIS FILE:
+# The "handy ruler" below makes it easier to edit a package description. Line
+# up the first '|' above the ':' following the base package name, and the '|' on
+# the right side marks the last column you can put a character in. You must make
+# exactly 11 lines for the formatting to be correct. It's also customary to
+# leave one space after the ':'.
+
+ |-----handy-ruler------------------------------------------------------|
+mkinitrd: mkinitrd (make an initial ramdisk)
+mkinitrd:
+mkinitrd: mkinitrd is a script to create an initial ramdisk that is loaded at
+mkinitrd: the same time as the kernel. The initial ramdisk may be responsible
+mkinitrd: for loading kernel modules (such a filesystem or SCSI controller
+mkinitrd: module) that are needed to mount the root filesystem.
+mkinitrd:
+mkinitrd: The "initrd" is implemented as an initramfs. See the kernel
+mkinitrd: documentation for more information on this, if you are interested.
+mkinitrd:
+mkinitrd:
diff --git a/source/a/module-init-tools/doinst.sh b/source/a/module-init-tools/doinst.sh
new file mode 100644
index 00000000..41ff1d75
--- /dev/null
+++ b/source/a/module-init-tools/doinst.sh
@@ -0,0 +1,22 @@
+config() {
+ NEW="$1"
+ OLD="$(dirname $NEW)/$(basename $NEW .new)"
+ # If there's no config file by that name, mv it over:
+ if [ ! -r $OLD ]; then
+ mv $NEW $OLD
+ elif [ "$(cat $OLD | md5sum)" = "$(cat $NEW | md5sum)" ]; then # toss the redundant copy
+ rm $NEW
+ fi
+ # Otherwise, we leave the .new copy for the admin to consider...
+}
+config etc/modprobe.conf.new
+
+# Retain legacy behavior by tossing a symlink in /etc/modprobe.d/:
+# Note that the plan is to eliminate /etc/modprobe.conf and
+# /etc/modules.conf in the long run, so you may wish to remove the
+# link and move your actual file into /etc/modprobe.d/ if you want
+# to keep it instead of going with smaller chunks in there...
+if [ -r etc/modprobe.conf ]; then
+ ( cd etc/modprobe.d ; ln -s ../modprobe.conf . 2> /dev/null )
+fi
+
diff --git a/source/a/module-init-tools/modprobe.favor.etc.modprobe.d.diff b/source/a/module-init-tools/modprobe.favor.etc.modprobe.d.diff
new file mode 100644
index 00000000..1565d93a
--- /dev/null
+++ b/source/a/module-init-tools/modprobe.favor.etc.modprobe.d.diff
@@ -0,0 +1,27 @@
+diff -Nur module-init-tools-3.6.old/doc/modprobe.conf.sgml module-init-tools-3.6.new/doc/modprobe.conf.sgml
+--- module-init-tools-3.6.old/doc/modprobe.conf.sgml 2009-02-04 01:45:24.000000000 -0600
++++ module-init-tools-3.6.new/doc/modprobe.conf.sgml 2009-02-08 01:42:05.097637263 -0600
+@@ -35,7 +35,9 @@
+ <para>Because the <command>modprobe</command> command can add or
+ remove extra more than one module, due to module dependencies,
+ we need a method of specifying what options are to be used with
+- those modules. <filename>/etc/modprobe.conf</filename> (or, if that does not exist, all files under the <filename>/etc/modprobe.d</filename> directory) specifies
++ those modules. All of the files under the <filename>/etc/modprobe.d/</filename>
++ directory are used, or if that directory does not exist, the
++ <filename>/etc/modprobe.conf</filename> file specifies
+ those options, as required. It can also be used to create
+ convenient aliases: alternate names for a module. Finally, it
+ can override the normal <command>modprobe</command> behavior
+diff -Nur module-init-tools-3.6.old/modprobe.c module-init-tools-3.6.new/modprobe.c
+--- module-init-tools-3.6.old/modprobe.c 2009-02-04 01:45:24.000000000 -0600
++++ module-init-tools-3.6.new/modprobe.c 2009-02-08 01:42:05.099636402 -0600
+@@ -1366,8 +1366,8 @@
+
+ static const char *default_configs[] =
+ {
+- "/etc/modprobe.conf",
+ "/etc/modprobe.d",
++ "/etc/modprobe.conf",
+ };
+
+ static void read_toplevel_config(const char *filename,
diff --git a/source/a/module-init-tools/modprobe.ignore_some_suffixes.diff b/source/a/module-init-tools/modprobe.ignore_some_suffixes.diff
new file mode 100644
index 00000000..24967f0b
--- /dev/null
+++ b/source/a/module-init-tools/modprobe.ignore_some_suffixes.diff
@@ -0,0 +1,43 @@
+diff -Nur module-init-tools-3.6.old/modprobe.c module-init-tools-3.6.new/modprobe.c
+--- module-init-tools-3.6.old/modprobe.c 2009-02-04 01:45:24.000000000 -0600
++++ module-init-tools-3.6.new/modprobe.c 2009-02-08 01:40:24.143637295 -0600
+@@ -38,6 +38,7 @@
+ #include <asm/unistd.h>
+ #include <sys/wait.h>
+ #include <syslog.h>
++#include <regex.h>
+
+ #define streq(a,b) (strcmp((a),(b)) == 0)
+ #define ARRAY_SIZE(x) (sizeof(x) / sizeof((x)[0]))
+@@ -1275,6 +1276,20 @@
+ return 1;
+ }
+
++/* Let's exclude a few file extensions */
++static int valid_file_name(const char *filename)
++{
++ static regex_t *re = NULL;
++
++ if (!re) {
++ re = NOFAIL(malloc(sizeof(regex_t)));
++ if (regcomp(re, "(^(\\.|\\.\\.)|\\.(new|orig|bak)$)",
++ REG_EXTENDED|REG_NOSUB) != 0)
++ fatal("regcomp failed: %s\n", strerror(errno));
++ }
++ return regexec(re, filename, 0, NULL, 0);
++}
++
+ /* Simple format, ignore lines starting with #, one command per line.
+ Returns true or false. */
+ static int read_config(const char *filename,
+@@ -1294,7 +1309,10 @@
+ if (dir) {
+ struct dirent *i;
+ while ((i = readdir(dir)) != NULL) {
++ /* Removed this line:
+ if (!streq(i->d_name,".") && !streq(i->d_name,"..")
++ and replaced with this one: */
++ if (valid_file_name(i->d_name)
+ && config_filter(i->d_name)) {
+ char sub[strlen(filename) + 1
+ + strlen(i->d_name) + 1];
diff --git a/source/a/module-init-tools/modprobe.no_sys_check.diff b/source/a/module-init-tools/modprobe.no_sys_check.diff
new file mode 100644
index 00000000..90e9a7d1
--- /dev/null
+++ b/source/a/module-init-tools/modprobe.no_sys_check.diff
@@ -0,0 +1,51 @@
+http://bugs.gentoo.org/258442
+
+From 1a55ee5297b883ea4b43cdf74ad890873ebe966c Mon Sep 17 00:00:00 2001
+From: Mike Frysinger <vapier@gentoo.org>
+Date: Fri, 13 Feb 2009 02:21:10 -0500
+Subject: [PATCH] modprobe: remove pointless /sys requirement
+
+When modprobe was converted from parsing /proc to parsing /sys, it was not
+a straight conversion. Instead, a "sanity" check was added early on where
+modprobe would simply abort doing anything useful if /sys isn't mounted.
+Unfortunately, this makes modprobe fairly unusable. Considering the
+kernel itself can invoke modprobe before userspace gets a chance to start
+the init process (and actually mount /sys), we end up with a chicken and
+egg issue. Which gets even worse when the kernel keeps running modprobe
+over and over and the boot output fills up with:
+modprobe: FATAL: /sys is not mounted.
+modprobe: FATAL: /sys is not mounted.
+modprobe: FATAL: /sys is not mounted.
+modprobe: FATAL: /sys is not mounted.
+modprobe: FATAL: /sys is not mounted.
+modprobe: FATAL: /sys is not mounted.
+
+Since modprobe itself is already written to handle the case where it
+cannot figure out whether a given module is loaded (and so was able to run
+perfectly fine without /proc being mounted), the check is wholly useless.
+
+Signed-off-by: Mike Frysinger <vapier@gentoo.org>
+---
+ modprobe.c | 5 -----
+ 1 files changed, 0 insertions(+), 5 deletions(-)
+
+diff --git a/modprobe.c b/modprobe.c
+index 022004c..110204b 100644
+--- a/modprobe.c
++++ b/modprobe.c
+@@ -1522,11 +1522,6 @@ static void handle_module(const char *modname,
+ const char *cmdline_opts,
+ int flags)
+ {
+- struct stat finfo;
+-
+- if (stat("/sys/module", &finfo) < 0)
+- fatal("/sys is not mounted.\n");
+-
+ if (list_empty(todo_list)) {
+ const char *command;
+
+--
+1.6.1.3
+
+
diff --git a/source/a/module-init-tools/module-init-tools.SlackBuild b/source/a/module-init-tools/module-init-tools.SlackBuild
new file mode 100755
index 00000000..d69b43bc
--- /dev/null
+++ b/source/a/module-init-tools/module-init-tools.SlackBuild
@@ -0,0 +1,122 @@
+#!/bin/sh
+
+# Copyright 2008, 2009 Patrick J. Volkerding, Sebeka, MN, USA
+# All rights reserved.
+#
+# Redistribution and use of this script, with or without modification, is
+# permitted provided that the following conditions are met:
+#
+# 1. Redistributions of this script must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# 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.
+
+
+VERSION=3.6
+ARCH=${ARCH:-x86_64}
+BUILD=${BUILD:-2}
+
+NUMJOBS=${NUMJOBS:--j7}
+
+CWD=$(pwd)
+TMP=${TMP:-/tmp}
+PKG=$TMP/package-module-init-tools
+
+rm -rf $PKG
+mkdir -p $TMP $PKG
+
+cd $TMP
+rm -rf module-init-tools-$VERSION
+tar xvf $CWD/module-init-tools-$VERSION.tar.bz2 || exit 1
+cd module-init-tools-$VERSION || exit 1
+chown -R root:root .
+find . \
+ \( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \
+ -exec chmod 755 {} \; -o \
+ \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
+ -exec chmod 644 {} \;
+
+# Look for /etc/modprobe.d/ first rather than bailing on the idea if
+# /etc/modprobe.conf exists. IMHO, this is a better default behavior
+# because it allows /etc/modprobe.conf to remain behind if something
+# still looks there, and allows a smoother transition towards using
+# /etc/modprobe.d/ instead.
+zcat $CWD/modprobe.favor.etc.modprobe.d.diff.gz | patch -p1 --verbose || exit 1
+
+# Exclude *.{old,new,bak} files (and a few others that obviously aren't
+# valid for this... Thanks to Marco d'Itri for the patch that it's based on
+zcat $CWD/modprobe.ignore_some_suffixes.diff.gz | patch -p1 --verbose || exit 1
+
+# We get (pointless) errors in early stages of the boot if modprobe checks for
+# a mounted /sys before it actually gets mounted:
+zcat $CWD/modprobe.no_sys_check.diff.gz | patch -p1 --verbose || exit 1
+
+# Using --bindir=/sbin to make lsmod go there too
+CFLAGS= \
+./configure \
+ --prefix=/ \
+ --bindir=/sbin \
+ --docdir=/usr/doc/module-init-tools-$VERSION \
+ --mandir=/usr/man \
+ --enable-zlib \
+ --build=$ARCH-slackware-linux
+
+make $NUMJOBS || make || exit 1
+make install DESTDIR=$PKG || exit 1
+
+# We don't need this
+rm -f $PKG/sbin/generate-modprobe.conf
+
+# Links lsmod into /bin
+mkdir -p $PKG/bin
+( cd $PKG/bin ; ln -sf /sbin/lsmod . )
+
+# Add manpage symlink for modprobe.d
+( cd $PKG/usr/man/man5
+ if [ -f modprobe.conf.5 -a ! -e modprobe.d.5 ]; then
+ ln -sf modprobe.conf.5 modprobe.d.5
+ fi
+)
+
+# Compress manpages
+( cd $PKG/usr/man
+ find . -type f -exec gzip -9 {} \;
+ for i in $(find . -type l) ; do ln -s $(readlink $i).gz $i.gz ; rm $i ; done
+)
+
+mkdir -p $PKG/etc/modprobe.d/
+cat << EOF > $PKG/etc/modprobe.conf.new
+# /etc/modprobe.conf (old location for Linux 2.6+ config)
+#
+# The use of this config file is deprecated.
+# Instead, create files in the /etc/modprobe.d/ directory
+# containing modprobe options.
+#
+# For more information, see "man modprobe.conf".
+EOF
+
+find $PKG | xargs file | grep -e "executable" -e "shared object" | grep ELF \
+ | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
+
+mkdir -p $PKG/usr/doc/module-init-tools-$VERSION
+# Most of these are out of date
+cp -a \
+ AUTHORS CODING COPYING FAQ HACKING INSTALL NEWS README TODO \
+ $PKG/usr/doc/module-init-tools-$VERSION
+
+mkdir -p $PKG/install
+cat $CWD/slack-desc > $PKG/install/slack-desc
+zcat $CWD/doinst.sh.gz > $PKG/install/doinst.sh
+
+cd $PKG
+/sbin/makepkg -l y -c n $TMP/module-init-tools-$VERSION-$ARCH-$BUILD.txz
+
diff --git a/source/a/module-init-tools/slack-desc b/source/a/module-init-tools/slack-desc
new file mode 100644
index 00000000..2f0ca331
--- /dev/null
+++ b/source/a/module-init-tools/slack-desc
@@ -0,0 +1,19 @@
+# HOW TO EDIT THIS FILE:
+# The "handy ruler" below makes it easier to edit a package description. Line
+# up the first '|' above the ':' following the base package name, and the '|'
+# on the right side marks the last column you can put a character in. You must
+# make exactly 11 lines for the formatting to be correct. It's also
+# customary to leave one space after the ':'.
+
+ |-----handy-ruler------------------------------------------------------|
+module-init-tools: module-init-tools (kernel module utilities)
+module-init-tools:
+module-init-tools: Utilities to load and unload kernel modules. These are used on Linux
+module-init-tools: to load extra drivers or other features into the running kernel.
+module-init-tools:
+module-init-tools:
+module-init-tools:
+module-init-tools:
+module-init-tools:
+module-init-tools:
+module-init-tools:
diff --git a/source/a/mt-st/mt-st.SlackBuild b/source/a/mt-st/mt-st.SlackBuild
new file mode 100755
index 00000000..cbf44ec2
--- /dev/null
+++ b/source/a/mt-st/mt-st.SlackBuild
@@ -0,0 +1,82 @@
+#!/bin/sh
+
+# Copyright 2008, 2009 Patrick J. Volkerding, Sebeka, Minnesota, USA
+# All rights reserved.
+#
+# Redistribution and use of this script, with or without modification, is
+# permitted provided that the following conditions are met:
+#
+# 1. Redistributions of this script must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# 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.
+
+
+VERSION=${VERSION:-0.9b}
+ARCH=${ARCH:-x86_64}
+BUILD=${BUILD:-2}
+
+CWD=$(pwd)
+TMP=${TMP:-/tmp}
+PKG=$TMP/package-mt-st
+
+rm -rf $PKG
+mkdir -p $TMP $PKG
+
+cd $TMP
+rm -rf mt-st-$VERSION
+tar xzvf $CWD/mt-st-$VERSION.tar.gz
+cd mt-st-$VERSION
+
+zcat $CWD/mt-st.config.diff.gz | patch -p1 --verbose || exit 1
+zcat $CWD/mt-st.man.diff.gz | patch -p1 --verbose || exit 1
+zcat $CWD/mt-st.sdlt.diff.gz | patch -p1 --verbose || exit 1
+
+chown -R root:root .
+find . \
+ \( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \
+ -exec chmod 755 {} \; -o \
+ \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
+ -exec chmod 644 {} \;
+
+sed -i -e 's#<linux/qic117.h>#"qic117.h"#' mtio.h || exit 1
+make || exit 1
+
+strip mt stinit
+mkdir -p $PKG/bin
+cat mt > $PKG/bin/mt-st
+chmod 755 $PKG/bin/mt-st
+( cd $PKG/bin ; ln -sf mt-st mt )
+mkdir -p $PKG/sbin
+cat stinit > $PKG/sbin/stinit
+chmod 755 $PKG/sbin/stinit
+mkdir -p $PKG/usr/man/man{1,8}
+cat mt.1 | gzip -9c > $PKG/usr/man/man1/mt-st.1.gz
+cat stinit.8 | gzip -9c > $PKG/usr/man/man8/stinit.8.gz
+
+( cd $PKG
+ find . | xargs file | grep "executable" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
+ find . | xargs file | grep "shared object" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
+)
+
+mkdir -p $PKG/usr/doc/mt-st-$VERSION
+cp -a \
+ COPYING README* *.lsm stinit.def.examples \
+ $PKG/usr/doc/mt-st-$VERSION
+
+mkdir -p $PKG/install
+cat $CWD/slack-desc > $PKG/install/slack-desc
+
+# Build the package:
+cd $PKG
+makepkg -l y -c n $TMP/mt-st-$VERSION-$ARCH-$BUILD.txz
+
diff --git a/source/a/mt-st/mt-st.config.diff b/source/a/mt-st/mt-st.config.diff
new file mode 100644
index 00000000..756261b1
--- /dev/null
+++ b/source/a/mt-st/mt-st.config.diff
@@ -0,0 +1,172 @@
+--- mt-st-0.8/stinit.def.examples.configfiles 2002-09-23 19:02:21.000000000 +0200
++++ mt-st-0.8/stinit.def.examples 2005-04-07 08:21:01.732633520 +0200
+@@ -56,3 +56,169 @@
+ mode3 blocksize=0 density=1 # 800 bpi
+ }
+
++# DLT2000 / 2000XT
++manufacturer="QUANTUM" model = "DLT2000" {
++scsi2logical=1
++can-bsr
++auto-lock=0
++two-fms=0
++drive-buffering=1
++buffer-writes
++read-ahead=1
++async-writes=1
++can-partitions=0
++fast-mteom=1
++#
++# If your stinit supports the timeouts:
++timeout=3600 # 1 hour
++long-timeout=14400 # 4 hours
++#
++mode1 blocksize=0 density=0x81 # 10GB + compression on DLTtape III, 15+ with DLTtape IIIXT in 2000XT
++mode2 blocksize=0 density=0x80 # 10GB, no compression on DLTtape III, 15 with DLTtape IIIXT in 2000XT
++mode3 blocksize=0 density=0x18 # 6GB, compression not available, on DLTtape III
++mode4 blocksize=0 density=0x17 #2.6GB, compression not available, on DLTtape III
++}
++
++# DLT4000
++manufacturer="QUANTUM" model = "DLT4000" {
++scsi2logical=1
++can-bsr
++auto-lock=0
++two-fms=0
++drive-buffering=1
++buffer-writes
++read-ahead=1
++async-writes=1
++can-partitions=0
++fast-mteom=1
++#
++# If your stinit supports the timeouts:
++timeout=3600 # 1 hour
++long-timeout=14400 # 4 hours
++#
++# Drive is backwards compatible, use older modes (e.g. from above) as required
++mode1 blocksize=0 density=0x83 # 20GB + compression
++mode2 blocksize=0 density=0x82 # 20GB, no compression
++mode3 blocksize=0 density=0x81 # 10GB + compression (DLT2000 mode) with DLTtape III, 15+ with DLTtape IIIXT in 2000XT
++mode4 blocksize=0 density=0x80 # 10GB, no compression (DLT2000 mode) with DLTtape III, 15 with DLTtape IIIXT in 2000XT
++}
++
++# DLT7000
++manufacturer="QUANTUM" model = "DLT7000" {
++scsi2logical=1
++can-bsr
++auto-lock=0
++two-fms=0
++drive-buffering=1
++buffer-writes
++read-ahead=1
++async-writes=1
++can-partitions=0
++fast-mteom=1
++#
++# If your stinit supports the timeouts:
++timeout=3600 # 1 hour
++long-timeout=14400 # 4 hours
++#
++# Drive is backwards compatible, use older modes (e.g. from above) as required.
++mode1 blocksize=0 density=0x85 # 35GB + compression
++mode2 blocksize=0 density=0x84 # 35GB, no compression
++mode3 blocksize=0 density=0x83 # 20GB + compression (DLT4000 mode)
++mode4 blocksize=0 density=0x82 # 20GB, no compression (DLT4000 mode)
++}
++
++# DLT8000
++manufacturer="QUANTUM" model = "DLT8000" {
++scsi2logical=1
++can-bsr=1
++auto-lock=0
++two-fms=0
++drive-buffering=1
++buffer-writes
++read-ahead=1
++async-writes=1
++can-partitions=0
++fast-mteom=1
++#
++# If your stinit supports the timeouts:
++timeout=3600 # 1 hour
++long-timeout=14400 # 4 hours
++#
++# Drive is backwards compatible to DLT7000, use older modes (e.g. from above) as required. Modes <10GB (<0x19) not supported!
++mode1 blocksize=0 density=0x89 # 40GB + compression
++mode2 blocksize=0 density=0x88 # 40GB, no compression
++mode3 blocksize=0 density=0x85 # 35GB + compression (DLT7000 mode)
++mode4 blocksize=0 density=0x84 # 35GB, no compression (DLT7000 mode)
++}
++
++
++# SDLT220
++manufacturer="QUANTUM" model = "SuperDLT1" {
++scsi2logical=1
++can-bsr=1
++auto-lock=0
++two-fms=0
++drive-buffering=1
++buffer-writes
++read-ahead=1
++async-writes=1
++can-partitions=0
++fast-mteom=1
++#
++# If your stinit supports the timeouts:
++timeout=3600 # 1 hour
++long-timeout=14400 # 4 hours
++#
++# Drive is backwards read compatible to DLT4000/7000/8000. Mode settings are only required for writing, so no need to define any other modes here.
++mode1 blocksize=0 density=0x48 compression=1 # 110 GB + compression
++mode2 blocksize=0 density=0x48 compression=0 # 110 GB, no ompression
++}
++
++# SDLT320
++manufacturer="QUANTUM" model = "SDLT320" {
++scsi2logical=1
++can-bsr=1
++auto-lock=0
++two-fms=0
++drive-buffering=1
++buffer-writes
++read-ahead=1
++async-writes=1
++can-partitions=0
++fast-mteom=1
++#
++# If your stinit supports the timeouts:
++timeout=3600 # 1 hour
++long-timeout=14400 # 4 hours
++#
++# Drive is backwards write compatible to SDLT220 and read compatible to DLT4000/7000/8000. Mode settings are only required for writing, so we need only the SDL220/320 modes here
++mode1 blocksize=0 density=0x49 compression=1 # 160 GB + compression
++mode2 blocksize=0 density=0x49 compression=0 # 160 GB, no ompression
++mode3 blocksize=0 density=0x48 compression=1 # 110 GB + compression
++mode4 blocksize=0 density=0x48 compression=0 # 110 GB, no ompression
++}
++
++# SDLT600
++manufacturer="QUANTUM" model = "SDLT600" {
++scsi2logical=1
++can-bsr=1
++auto-lock=0
++two-fms=0
++drive-buffering=1
++buffer-writes
++read-ahead=1
++async-writes=1
++can-partitions=0
++fast-mteom=1
++#
++# If your stinit supports the timeouts:
++timeout=3600 # 1 hour
++long-timeout=14400 # 4 hours
++#
++# Drive is backwards read compatible to SDLT220/320 and VS160. Mode settings are only required for writing, so we need only the native SDLT600 mode here.
++mode1 blocksize=0 density=0x4a compression=1 # 300 GB + compression
++mode2 blocksize=0 density=0x4a compression=0 # 300 GB, no ompression
++mode3 blocksize=0 density=0x4a compression=1 # 300 GB + compression
++mode4 blocksize=0 density=0x4a compression=0 # 300 GB, no ompression
++}
++
diff --git a/source/a/mt-st/mt-st.man.diff b/source/a/mt-st/mt-st.man.diff
new file mode 100644
index 00000000..d22acefc
--- /dev/null
+++ b/source/a/mt-st/mt-st.man.diff
@@ -0,0 +1,31 @@
+--- mt-st-0.9b/mt.1.manfix 2005-08-21 20:53:50.000000000 +0200
++++ mt-st-0.9b/mt.1 2005-10-25 12:13:43.000000000 +0200
+@@ -48,20 +48,22 @@
+ files.
+ The tape is positioned on the first block of the next file.
+ .IP fsfm
+-Forward space
++Forward space past
+ .I count
+-files.
+-The tape is positioned on the last block of the previous file.
++file marks, then backward space one file record.
++This leaves the tape positioned on the last block of the file that is count-1
++files past the current file.
+ .IP bsf
+ Backward space
+ .I count
+ files.
+ The tape is positioned on the last block of the previous file.
+ .IP bsfm
+-Backward space
++Backward space past
+ .I count
+-files.
+-The tape is positioned on the first block of the next file.
++file marks, then forward space one file record.
++This leaves the tape positioned on the first block of the file that is count-1
++files before the current file.
+ .IP asf
+ The tape is positioned at the beginning of the
+ .I count
diff --git a/source/a/mt-st/mt-st.sdlt.diff b/source/a/mt-st/mt-st.sdlt.diff
new file mode 100644
index 00000000..8dd9fa9f
--- /dev/null
+++ b/source/a/mt-st/mt-st.sdlt.diff
@@ -0,0 +1,11 @@
+--- mt-st-0.7/mt.c.orig Sat Feb 22 14:48:09 2003
++++ mt-st-0.7/mt.c Sat Feb 22 14:50:21 2003
+@@ -220,6 +220,8 @@
+ {0x41, "DLT 40GB"},
+ {0x45, "QIC-3095-MC (TR-4)"},
+ {0x47, "TR-5"},
++ {0x48, "Quantum SDLT220"},
++ {0x49, "Quantum SDLT320"},
+ {0x80, "DLT 15GB uncomp. or Ecrix"},
+ {0x81, "DLT 15GB compressed"},
+ {0x82, "DLT 20GB uncompressed"},
diff --git a/source/a/mt-st/slack-desc b/source/a/mt-st/slack-desc
new file mode 100644
index 00000000..dda83093
--- /dev/null
+++ b/source/a/mt-st/slack-desc
@@ -0,0 +1,19 @@
+# HOW TO EDIT THIS FILE:
+# The "handy ruler" below makes it easier to edit a package description. Line
+# up the first '|' above the ':' following the base package name, and the '|'
+# on the right side marks the last column you can put a character in. You must
+# make exactly 11 lines for the formatting to be correct. It's also
+# customary to leave one space after the ':'.
+
+ |-----handy-ruler------------------------------------------------------|
+mt-st: mt-st (controls magnetic tape drive operation)
+mt-st:
+mt-st: This mt originates from BSD NET-2. Some Linux SCSI tape-specific
+mt-st: ioctls have been added to the original source and the man page has
+mt-st: been updated. Although this mt program is tailored for SCSI tape, it
+mt-st: can also be used with the QIC-02 driver and hopefully with other Linux
+mt-st: tape drivers using the same ioctls (some of the commands may not work
+mt-st: with all drivers).
+mt-st:
+mt-st:
+mt-st:
diff --git a/source/a/mtx/mtx.SlackBuild b/source/a/mtx/mtx.SlackBuild
new file mode 100755
index 00000000..c17d1176
--- /dev/null
+++ b/source/a/mtx/mtx.SlackBuild
@@ -0,0 +1,88 @@
+#!/bin/bash
+
+# Copyright 2009 Patrick J. Volkerding, Sebeka, MN, USA
+# All rights reserved.
+#
+# Redistribution and use of this script, with or without modification, is
+# permitted provided that the following conditions are met:
+#
+# 1. Redistributions of this script must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# 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.
+
+
+# mtx.SlackBuild
+# Package mtx for Slackware
+# mozes@slackware.com
+# ftp://ftp.badtux.net/pub/storage/mtx
+
+PACKAGE=mtx
+VERSION=1.3.9
+ARCH=${ARCH:-x86_64}
+BUILD=${BUILD:-2}
+
+CWD=$(pwd)
+TMP=${TMP:-/tmp}
+PKG=$TMP/package-$PACKAGE
+
+rm -rf $PKG
+mkdir -p $TMP $PKG
+
+# Extract source:
+cd $TMP
+rm -rf $PACKAGE-*
+tar zxvvf $CWD/$PACKAGE-$VERSION.tar.gz
+cd $PACKAGE-$VERSION || exit 1
+
+chown -R root:root .
+find . \
+ \( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \
+ -exec chmod 755 {} \; -o \
+ \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
+ -exec chmod 644 {} \;
+
+# Configure:
+./configure \
+ --prefix=/usr \
+ --build=$ARCH-slackware-linux \
+ --host=$ARCH-slackware-linux \
+ --target=$ARCH-slackware-linux || exit 1
+
+# Avoid looking in the Kernel source:
+sed -i 's?-I/usr/src/linux/include? ?g' Makefile
+
+# Build:
+make || exit 1
+
+# Install into package:
+mkdir -pm755 $PKG/{install,usr/{sbin,doc/$PACKAGE-$VERSION,man/man1}}
+install -m755 scsitape tapeinfo mtx loaderinfo $PKG/usr/sbin
+install -m644 *.1 $PKG/usr/man/man1
+gzip -9 $PKG/usr/man/man1/*
+
+# Strip:
+( cd $PKG
+ find . | xargs file | grep "executable" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
+ find . | xargs file | grep "shared object" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
+)
+
+# Copy docs:
+cp -fa mtx.doc CHANGES COMPATABILITY FAQ LICENSE README TODO \
+ $PKG/usr/doc/$PACKAGE-$VERSION
+
+# Install package description:
+install -m644 $CWD/slack-desc $PKG/install
+
+# Build the package:
+cd $PKG
+makepkg -l y -c n $TMP/$PACKAGE-$VERSION-$ARCH-$BUILD.txz
diff --git a/source/a/mtx/slack-desc b/source/a/mtx/slack-desc
new file mode 100644
index 00000000..901abb3d
--- /dev/null
+++ b/source/a/mtx/slack-desc
@@ -0,0 +1,19 @@
+# HOW TO EDIT THIS FILE:
+# The "handy ruler" below makes it easier to edit a package description. Line
+# up the first '|' above the ':' following the base package name, and the '|'
+# on the right side marks the last column you can put a character in. You must
+# make exactly 11 lines for the formatting to be correct. It's also
+# customary to leave one space after the ':'.
+
+ |-----handy-ruler------------------------------------------------------|
+mtx: mtx (Controls tape autochangers)
+mtx:
+mtx: The MTX program controls the robotic mechanism in autoloaders and
+mtx: tape libraries such as the HP SureStore DAT 40x6, Exabyte EZ-17, and
+mtx: Exabyte 220.
+mtx:
+mtx: This program is also reported to work with a variety of other tape
+mtx: libraries and autochangers from Tandberg/Overland, Breece Hill, HP,
+mtx: Seagate, Dell and Quantum.
+mtx:
+mtx:
diff --git a/source/a/ncompress/ncompress-4.2.4-bssUnderflow.patch b/source/a/ncompress/ncompress-4.2.4-bssUnderflow.patch
new file mode 100644
index 00000000..0ae7ec59
--- /dev/null
+++ b/source/a/ncompress/ncompress-4.2.4-bssUnderflow.patch
@@ -0,0 +1,13 @@
+--- ncompress-4.2.4/compress42.c.bssUnderflow 2006-08-10 11:40:03.000000000 +0200
++++ ncompress-4.2.4/compress42.c 2006-08-10 11:40:31.000000000 +0200
+@@ -1689,6 +1689,10 @@
+
+ if (oldcode == -1)
+ {
++ if (code >= 256) {
++ fprintf(stderr, "uncompress: corrupt input\n");
++ abort_compress();
++ }
+ outbuf[outpos++] = (char_type)(finchar = (int)(oldcode = code));
+ continue;
+ }
diff --git a/source/a/ncompress/ncompress-4.2.4-endians.patch b/source/a/ncompress/ncompress-4.2.4-endians.patch
new file mode 100644
index 00000000..fdc96622
--- /dev/null
+++ b/source/a/ncompress/ncompress-4.2.4-endians.patch
@@ -0,0 +1,11 @@
+--- ncompress-4.2.4/compress42.c.endians 2006-09-19 13:53:58.000000000 +0200
++++ ncompress-4.2.4/compress42.c 2006-09-19 13:57:54.000000000 +0200
+@@ -432,7 +432,7 @@
+
+ union bytes
+ {
+- long word;
++ int word;
+ struct
+ {
+ #if BYTEORDER == 4321
diff --git a/source/a/ncompress/ncompress.2GB.diff b/source/a/ncompress/ncompress.2GB.diff
new file mode 100644
index 00000000..8c545caf
--- /dev/null
+++ b/source/a/ncompress/ncompress.2GB.diff
@@ -0,0 +1,11 @@
+--- ncompress-4.2.4/compress42.c.2GB 2004-07-14 12:16:19.000000000 -0400
++++ ncompress-4.2.4/compress42.c 2004-07-14 12:16:59.000000000 -0400
+@@ -1329,7 +1329,7 @@
+ REG11 int boff;
+ REG12 int n_bits;
+ REG13 int ratio;
+- REG14 long checkpoint;
++ REG14 unsigned long long checkpoint;
+ REG15 code_int extcode;
+ union
+ {
diff --git a/source/a/ncompress/ncompress.SlackBuild b/source/a/ncompress/ncompress.SlackBuild
new file mode 100755
index 00000000..e8b1c68f
--- /dev/null
+++ b/source/a/ncompress/ncompress.SlackBuild
@@ -0,0 +1,81 @@
+#!/bin/sh
+
+# Copyright 2005-2009 Patrick J. Volkerding, Sebeka, Minnesota, USA
+# All rights reserved.
+#
+# Redistribution and use of this script, with or without modification, is
+# permitted provided that the following conditions are met:
+#
+# 1. Redistributions of this script must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# 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.
+
+VERSION=4.2.4
+ARCH=${ARCH:-x86_64}
+BUILD=${BUILD:-1}
+
+CWD=$(pwd)
+TMP=${TMP:-/tmp}
+PKG=$TMP/package-ncompress
+
+rm -rf $PKG
+mkdir -p $TMP $PKG
+
+cd $TMP
+rm -rf ncompress-${VERSION}
+tar xzf $CWD/ncompress-${VERSION}.tar.gz
+cd ncompress-${VERSION}
+chown -R root:root .
+find . \
+ \( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \
+ -exec chmod 755 {} \; -o \
+ \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
+ -exec chmod 644 {} \;
+
+zcat $CWD/ncompress.make.diff.gz | patch -p1 --verbose || exit 1
+zcat $CWD/ncompress.lfs2.diff.gz | patch -p1 --verbose || exit 1
+zcat $CWD/ncompress.filenamelen.diff.gz | patch -p1 --verbose || exit 1
+zcat $CWD/ncompress.2GB.diff.gz | patch -p1 --verbose || exit 1
+zcat $CWD/ncompress.zerobyteforce.diff.gz | patch -p1 --verbose || exit 1
+zcat $CWD/ncompress-${VERSION}-bssUnderflow.patch.gz | patch -p1 --verbose || exit 1
+zcat $CWD/ncompress-${VERSION}-endians.patch.gz | patch -p1 --verbose || exit 1
+
+make ENDIAN=4321 || exit 1
+mkdir -p $PKG/usr/bin
+cat compress > $PKG/usr/bin/compress
+chmod 755 $PKG/usr/bin/compress
+( cd $PKG/usr/bin ; ln -sf compress uncompress )
+mkdir $PKG/bin
+( cd $PKG/bin ; ln -sf /usr/bin/compress compress )
+( cd $PKG/bin ; ln -sf compress uncompress )
+mkdir -p $PKG/usr/man/man1
+cat compress.1 | gzip -9c > $PKG/usr/man/man1/compress.1.gz
+echo '.so man1/compress.1' | gzip -9c > $PKG/usr/man/man1/uncompress.1.gz
+mkdir -p $PKG/usr/doc/ncompress-${VERSION}
+cp -a \
+ Acknowleds LZW.INFO README \
+ $PKG/usr/doc/ncompress-${VERSION}
+
+# Strip everything for good measure:
+( cd $PKG
+ find . | xargs file | grep "executable" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
+ find . | xargs file | grep "shared object" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
+)
+
+mkdir -p $PKG/install
+cat $CWD/slack-desc > $PKG/install/slack-desc
+
+# Build the package:
+cd $PKG
+makepkg -l y -c n $TMP/ncompress-$VERSION-$ARCH-$BUILD.txz
+
diff --git a/source/a/ncompress/ncompress.filenamelen.diff b/source/a/ncompress/ncompress.filenamelen.diff
new file mode 100644
index 00000000..67676c7a
--- /dev/null
+++ b/source/a/ncompress/ncompress.filenamelen.diff
@@ -0,0 +1,98 @@
+--- ncompress-4.2.4/compress42.c.filenamelen Wed Nov 21 12:19:38 2001
++++ ncompress-4.2.4/compress42.c Wed Nov 21 12:20:03 2001
+@@ -140,6 +140,7 @@
+ #include <sys/types.h>
+ #include <sys/stat.h>
+ #include <errno.h>
++#include <string.h>
+
+ #ifdef DIRENT
+ # include <dirent.h>
+@@ -213,7 +214,7 @@
+ # define OBUFSIZ BUFSIZ /* Default output buffer size */
+ #endif
+
+-#define MAXPATHLEN 1024 /* MAXPATHLEN - maximum length of a pathname we allow */
++#define MAXPATHLEN PATH_MAX /* MAXPATHLEN - maximum length of a pathname we allow */
+ #define SIZE_INNER_LOOP 256 /* Size of the inter (fast) compress loop */
+
+ /* Defines for third byte of header */
+@@ -641,13 +642,11 @@
+ } ;
+ #endif
+
+-void main ARGS((int,char **));
+ void Usage ARGS((void));
+ void comprexx ARGS((char **));
+ void compdir ARGS((char *));
+ void compress ARGS((int,int));
+ void decompress ARGS((int,int));
+-char *rindex ARGS((char *,int));
+ void read_error ARGS((void));
+ void write_error ARGS((void));
+ void abort_compress ARGS((void));
+@@ -694,13 +693,15 @@
+ * deterministic, and can be done on the fly. Thus, the decompression
+ * procedure needs no input table, but tracks the way the table was built.
+ */
+-void
++int
+ main(argc, argv)
+ REG1 int argc;
+ REG2 char *argv[];
+ {
+ REG3 char **filelist;
+ REG4 char **fileptr;
++ int i;
++
+
+ if (fgnd_flag = (signal(SIGINT, SIG_IGN) != SIG_IGN))
+ signal(SIGINT, (SIG_TYPE)abort_compress);
+@@ -714,7 +715,14 @@
+ nomagic = 1; /* Original didn't have a magic number */
+ #endif
+
+- filelist = fileptr = (char **)malloc(argc*sizeof(char *));
++ for(i=0;i<argc;i++){
++ if(strlen(argv[i])>(MAXPATHLEN-1)){
++ fprintf(stderr,"Filename too long\n");
++ exit(1);
++ }
++ }
++
++ filelist = fileptr = (char **)malloc(argc*sizeof(char *));
+ *filelist = NULL;
+
+ if((progname = rindex(argv[0], '/')) != 0)
+@@ -853,8 +861,9 @@
+ else
+ decompress(0, 1);
+ }
+-
++
+ exit((exit_code== -1) ? 1:exit_code);
++ return 0;
+ }
+
+ void
+@@ -1801,20 +1810,6 @@
+ write_error();
+ }
+
+-char *
+-rindex(s, c) /* For those who don't have it in libc.a */
+- REG1 char *s;
+- REG2 int c;
+- {
+- char *p;
+-
+- for (p = NULL; *s; s++)
+- if (*s == (char)c)
+- p = s;
+-
+- return(p);
+- }
+-
+ void
+ read_error()
+ {
diff --git a/source/a/ncompress/ncompress.lfs2.diff b/source/a/ncompress/ncompress.lfs2.diff
new file mode 100644
index 00000000..9da42eb5
--- /dev/null
+++ b/source/a/ncompress/ncompress.lfs2.diff
@@ -0,0 +1,52 @@
+--- ncompress-4.2.4/compress42.c.lfs 2002-06-19 19:19:33.000000000 -0400
++++ ncompress-4.2.4/compress42.c 2002-06-19 19:20:48.000000000 -0400
+@@ -130,6 +130,7 @@
+ * Add variable bit length output.
+ *
+ */
++#include <unistd.h>
+ #include <stdio.h>
+ #include <fcntl.h>
+ #include <ctype.h>
+@@ -168,30 +169,6 @@
+ # define SIG_TYPE void (*)()
+ #endif
+
+-#ifndef NOFUNCDEF
+- extern void *malloc LARGS((int));
+- extern void free LARGS((void *));
+-#ifndef _IBMR2
+- extern int open LARGS((char const *,int,...));
+-#endif
+- extern int close LARGS((int));
+- extern int read LARGS((int,void *,int));
+- extern int write LARGS((int,void const *,int));
+- extern int chmod LARGS((char const *,int));
+- extern int unlink LARGS((char const *));
+- extern int chown LARGS((char const *,int,int));
+- extern int utime LARGS((char const *,struct utimbuf const *));
+- extern char *strcpy LARGS((char *,char const *));
+- extern char *strcat LARGS((char *,char const *));
+- extern int strcmp LARGS((char const *,char const *));
+- extern unsigned strlen LARGS((char const *));
+- extern void *memset LARGS((void *,char,unsigned int));
+- extern void *memcpy LARGS((void *,void const *,unsigned int));
+- extern int atoi LARGS((char const *));
+- extern void exit LARGS((int));
+- extern int isatty LARGS((int));
+-#endif
+-
+ #define MARK(a) { asm(" .globl M.a"); asm("M.a:"); }
+
+ #ifdef DEF_ERRNO
+@@ -535,8 +512,8 @@
+ char ofname[MAXPATHLEN]; /* Output filename */
+ int fgnd_flag = 0; /* Running in background (SIGINT=SIGIGN) */
+
+-long bytes_in; /* Total number of byte from input */
+-long bytes_out; /* Total number of byte to output */
++long long bytes_in; /* Total number of byte from input */
++long long bytes_out; /* Total number of byte to output */
+
+ /*
+ * 8086 & 80286 Has a problem with array bigger than 64K so fake the array
diff --git a/source/a/ncompress/ncompress.make.diff b/source/a/ncompress/ncompress.make.diff
new file mode 100644
index 00000000..2a0acc1c
--- /dev/null
+++ b/source/a/ncompress/ncompress.make.diff
@@ -0,0 +1,60 @@
+--- ncompress-4.2.4/Makefile.orig Thu Oct 31 10:38:46 1996
++++ ncompress-4.2.4/Makefile Thu Oct 31 10:39:12 1996
+@@ -0,0 +1,57 @@
++# Makefile generated by build.
++
++# C complier
++CC=cc $(RPM_OPT_FLAGS)
++
++# Install directory for binarys
++BINDIR=/usr/bin
++
++# Install directory for manual
++MANDIR=/usr/man/man1
++
++# compiler options:
++# options is a collection of:
++#
++# -DAMIGA=1 Amiga support.
++# -DNOFUNCDEF=1 Disable libary function definitions in
++# compress42.c
++# -DDIRENT=1 Use dirent.h
++# -DSYSDIR=1 Use sys/dir.h
++# -DLSTAT=1 Use lstat for finding symlinks.
++# -DUTIME_H=1 Use utime.h
++# -DUSERMEM=<size> Availble memory for compress (default 800k).
++# -DREGISTERS=<nbr> Number of registers (default 2).
++# -DIBUFSIZ=<size> Input buffer size (default BUFSIZ).
++# -DOBUFSIZ=<size> Output buffer size (default BUFSIZ)
++# -DBYTEORDER=<order> Byte order (default: unknown).
++# -DNOALLIGN=1 Data word allignment (default: yes).
++# -DDEF_ERRNO=1 Define error (not defined in errno.h).
++# -DMAXSEG_64K=1 -BITS=16 Support segment processsor like 80286.
++#
++options= -DDIRENT=1 -DSYSDIR=1 -DUTIME_H=1 -DUSERMEM=800000 -DREGISTERS=20 -DIBUFSIZ=1024 -DOBUFSIZ=1024 -DBYTEORDER=$(ENDIAN)
++
++# libary options
++LBOPT=
++
++
++compress: Makefile compress42.c patchlevel.h
++ $(CC) -o compress $(options) "-DCOMPILE_DATE=\"`date`\"" compress42.c
++
++install: compress
++ [ -f $(BINDIR)/compress ] && \
++ { rm -f $(BINDIR)/compress.old ; \
++ mv $(BINDIR)/compress $(BINDIR)/compress.old ; }
++ rm -f $(BINDIR)/uncompress $(BINDIR)/zcat
++ cp compress $(BINDIR)/compress
++ strip $(BINDIR)/compress
++ rm -f $(BINDIR)/uncompress
++ ln $(BINDIR)/compress $(BINDIR)/uncompress
++ rm -f $(BINDIR)/zcat
++ ln -f $(BINDIR)/compress $(BINDIR)/zcat
++ cp zcmp zdiff zmore $(BINDIR)/.
++ chmod 0755 $(BINDIR)/compress $(BINDIR)/zcmp $(BINDIR)/zdiff $(BINDIR)/zmore
++ cp compress.1 zcmp.1 zmore.1 $(MANDIR)/.
++ chmod 0644 $(MANDIR)/compress.1 $(MANDIR)/zcmp.1 $(MANDIR)/zmore.1
++
++cleanup:
++ rm -f compress compress.def comp.log
diff --git a/source/a/ncompress/ncompress.zerobyteforce.diff b/source/a/ncompress/ncompress.zerobyteforce.diff
new file mode 100644
index 00000000..465d67e3
--- /dev/null
+++ b/source/a/ncompress/ncompress.zerobyteforce.diff
@@ -0,0 +1,24 @@
+--- ncompress-4.2.4/compress42.c.zerobyteforce 2006-04-14 14:18:28.000000000 +0200
++++ ncompress-4.2.4/compress42.c 2006-04-14 14:20:15.000000000 +0200
+@@ -1145,10 +1145,12 @@
+ if (fdout != 1 && close(fdout))
+ write_error();
+
+- if (bytes_in == 0)
++ if ( (bytes_in == 0) && (force == 0 ) )
+ {
+ if (remove_ofname)
+ {
++ if(!quiet)
++ fprintf(stderr, "No compression -- %s unchanged\n", ifname);
+ if (unlink(ofname)) /* Remove input file */
+ {
+ fprintf(stderr, "\nunlink error (ignored) ");
+@@ -1157,6 +1159,7 @@
+ }
+
+ remove_ofname = 0;
++ exit_code = 2;
+ }
+ }
+ else
diff --git a/source/a/ncompress/slack-desc b/source/a/ncompress/slack-desc
new file mode 100644
index 00000000..24bfa022
--- /dev/null
+++ b/source/a/ncompress/slack-desc
@@ -0,0 +1,19 @@
+# HOW TO EDIT THIS FILE:
+# The "handy ruler" below makes it easier to edit a package description. Line
+# up the first '|' above the ':' following the base package name, and the '|'
+# on the right side marks the last column you can put a character in. You must
+# make exactly 11 lines for the formatting to be correct. It's also
+# customary to leave one space after the ':'.
+
+ |-----handy-ruler------------------------------------------------------|
+ncompress: ncompress (the classic *nix compression utility)
+ncompress:
+ncompress: Compress reduces the size of the named files using adaptive Lempel-Ziv
+ncompress: coding. Whenever possible, each file is replaced by one with the
+ncompress: extension .Z, while keeping the same ownership modes, access and
+ncompress: modification times. If no files are specified, the standard input is
+ncompress: compressed to the standard output. Compressed files can be restored
+ncompress: to their original form using uncompress or zcat.
+ncompress:
+ncompress:
+ncompress:
diff --git a/source/a/ntfs-3g/10-ntfs-3g-policy.fdi b/source/a/ntfs-3g/10-ntfs-3g-policy.fdi
new file mode 100644
index 00000000..baaf8159
--- /dev/null
+++ b/source/a/ntfs-3g/10-ntfs-3g-policy.fdi
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<deviceinfo version="0.2">
+ <device>
+ <match key="volume.fstype" string="ntfs">
+ <match key="@block.storage_device:storage.hotpluggable" bool="true">
+ <merge key="volume.fstype" type="string">ntfs-3g</merge>
+ <merge key="volume.policy.mount_filesystem" type="string">ntfs-3g</merge>
+ <append key="volume.mount.valid_options" type="strlist">locale=</append>
+ </match>
+ </match>
+ </device>
+</deviceinfo>
diff --git a/source/a/ntfs-3g/ntfs-3g.SlackBuild b/source/a/ntfs-3g/ntfs-3g.SlackBuild
new file mode 100755
index 00000000..2883d4fb
--- /dev/null
+++ b/source/a/ntfs-3g/ntfs-3g.SlackBuild
@@ -0,0 +1,105 @@
+#!/bin/sh
+
+# Slackware build script for ntfs-3g
+
+# Copyright (c) 2008, Antonio Hernandez Blas <hba.nihilismus@gmail.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.
+#
+# 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.
+
+# Modified by Robby Workman <rworkman@slackware.com>
+# Modified by Patrick Volkerding <volkerdi@slackware.com>
+# Modified by Eric Hameleers <alien@slackware.com>
+
+PRGNAM=ntfs-3g
+VERSION=${VERSION:-2009.4.4}
+ARCH=${ARCH:-x86_64}
+BUILD=${BUILD:-1}
+
+NUMJOBS=${NUMJOBS:-" -j7 "}
+
+if [ "$ARCH" = "i486" ]; then
+ SLKCFLAGS="-O2 -march=i486 -mtune=i686"
+ LIBDIRSUFFIX=""
+elif [ "$ARCH" = "i686" ]; then
+ SLKCFLAGS="-O2 -march=i686 -mtune=i686"
+ LIBDIRSUFFIX=""
+elif [ "$ARCH" = "x86_64" ]; then
+ SLKCFLAGS="-O2 -fPIC"
+ LIBDIRSUFFIX="64"
+fi
+
+CWD=$(pwd)
+TMP=${TMP:-/tmp}
+PKG=$TMP/package-$PRGNAM
+
+rm -rf $PKG
+mkdir -p $TMP $PKG
+cd $TMP || exit 1
+rm -rf $PRGNAM-$VERSION
+tar xvf $CWD/$PRGNAM-$VERSION.tar.bz2 || exit 1
+cd $PRGNAM-$VERSION || exit 1
+chown -R root:root .
+find . \
+ \( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \
+ -exec chmod 755 {} \; -o \
+ \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
+ -exec chmod 644 {} \;
+
+CFLAGS="$SLKCFLAGS" \
+CXXFLAGS="$SLKCFLAGS" \
+./configure \
+ --prefix=/usr \
+ --libdir=/usr/lib${LIBDIRSUFFIX} \
+ --mandir=/usr/man \
+ --bindir=/bin \
+ --sbindir=/sbin \
+ --docdir=/usr/doc/$PRGNAM-$VERSION \
+ --with-fuse=internal \
+ --disable-ldconfig \
+ --enable-static=no \
+ --build=${ARCH}-slackware-linux \
+ || exit 1
+
+make $NUMJOBS || make || exit 1
+make install DESTDIR=$PKG || exit 1
+
+# Add the HAL fdi file so that automount uses "ntfs-3g" as filesystem type
+mkdir -p $PKG/usr/share/hal/fdi/policy/10osvendor
+cat $CWD/10-ntfs-3g-policy.fdi \
+ > $PKG/usr/share/hal/fdi/policy/10osvendor/10-ntfs-3g-policy.fdi
+
+find $PKG | xargs file | grep -e "executable" -e "shared object" | grep ELF \
+ | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
+
+( cd $PKG/usr/man
+ find . -type f -exec gzip -9 {} \;
+ for i in $(find . -type l) ; do ln -s $( readlink $i ).gz $i.gz ; rm $i ; done
+)
+
+rm -rf $PKG/usr/share/doc
+mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
+cp -a \
+ AUTHORS COPYING* CREDITS INSTALL NEWS README* \
+ $PKG/usr/doc/$PRGNAM-$VERSION
+
+mkdir -p $PKG/install
+cat $CWD/slack-desc > $PKG/install/slack-desc
+
+cd $PKG
+/sbin/makepkg -l y -c n $TMP/$PRGNAM-$VERSION-$ARCH-$BUILD.txz
+
diff --git a/source/a/ntfs-3g/slack-desc b/source/a/ntfs-3g/slack-desc
new file mode 100644
index 00000000..353695bb
--- /dev/null
+++ b/source/a/ntfs-3g/slack-desc
@@ -0,0 +1,19 @@
+# HOW TO EDIT THIS FILE:
+# The "handy ruler" below makes it easier to edit a package description. Line
+# up the first '|' above the ':' following the base package name, and the '|'
+# on the right side marks the last column you can put a character in. You must
+# make exactly 11 lines for the formatting to be correct. It's also
+# customary to leave one space after the ':'.
+
+ |-----handy-ruler-----------------------------------------------------|
+ntfs-3g: ntfs-3g (NTFS read-write filesystem driver)
+ntfs-3g:
+ntfs-3g: The NTFS-3G driver is an open source, freely available NTFS driver
+ntfs-3g: for Linux with read and write support. It provides safe and fast
+ntfs-3g: handling of the Windows XP, Windows Server 2003, Windows 2000 and
+ntfs-3g: Windows Vista file systems. Most POSIX file system operations are
+ntfs-3g: supported, with the exception of full file ownership and access
+ntfs-3g: rights support.
+ntfs-3g:
+ntfs-3g: Homepage for the ntfs-3g project: http://www.ntfs-3g.org
+ntfs-3g:
diff --git a/source/a/patch/patch.SlackBuild b/source/a/patch/patch.SlackBuild
new file mode 100755
index 00000000..fb0c06d9
--- /dev/null
+++ b/source/a/patch/patch.SlackBuild
@@ -0,0 +1,64 @@
+#!/bin/sh
+
+# Copyright 2005-2009 Patrick J. Volkerding, Sebeka, Minnesota, USA
+# All rights reserved.
+#
+# Redistribution and use of this script, with or without modification, is
+# permitted provided that the following conditions are met:
+#
+# 1. Redistributions of this script must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# 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.
+
+VERSION=2.5.4
+ARCH=${ARCH:-x86_64}
+BUILD=${BUILD:-1}
+
+CWD=$(pwd)
+TMP=${TMP:-/tmp}
+PKG=$TMP/package-patch
+
+rm -rf $PKG
+mkdir -p $TMP $PKG
+
+cd $TMP
+rm -rf patch-${VERSION}
+tar xzvf $CWD/patch-${VERSION}.tar.gz
+cd patch-${VERSION}
+chown -R root:root .
+mkdir -p $PKG/usr/doc/patch-${VERSION}
+cp -a AUTHORS COPYING NEWS README $PKG/usr/doc/patch-${VERSION}
+chmod 644 $PKG/usr/doc/patch-${VERSION}/*
+./configure \
+ --prefix=/usr \
+ $ARCH-slackware-linux
+make CFLAGS=-O2 || exit 1
+mkdir -p $PKG/usr/bin
+cat patch > $PKG/usr/bin/patch
+chmod 755 $PKG/usr/bin/patch
+mkdir -p $PKG/usr/man/man1
+cat patch.man | gzip -9c > $PKG/usr/man/man1/patch.1.gz
+
+# Strip everything for good measure:
+( cd $PKG
+ find . | xargs file | grep "executable" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
+ find . | xargs file | grep "shared object" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
+)
+
+mkdir -p $PKG/install
+cat $CWD/slack-desc > $PKG/install/slack-desc
+
+# Build the package:
+cd $PKG
+makepkg -l y -c n $TMP/patch-$VERSION-$ARCH-$BUILD.txz
+
diff --git a/source/a/patch/slack-desc b/source/a/patch/slack-desc
new file mode 100644
index 00000000..5ddba89b
--- /dev/null
+++ b/source/a/patch/slack-desc
@@ -0,0 +1,19 @@
+# HOW TO EDIT THIS FILE:
+# The "handy ruler" below makes it easier to edit a package description. Line
+# up the first '|' above the ':' following the base package name, and the '|'
+# on the right side marks the last column you can put a character in. You must
+# make exactly 11 lines for the formatting to be correct. It's also
+# customary to leave one space after the ':'.
+
+ |-----handy-ruler------------------------------------------------------|
+patch: patch (apply a diff file to an original file or files)
+patch:
+patch: Patch is a utility used to apply diffs (or patches) to files, which
+patch: are usually source code.
+patch:
+patch: Larry Wall wrote the original version of patch. Paul Eggert removed
+patch: patch's arbitrary limits; added support for binary files, setting
+patch: file times, and deleting files; and made it conform better to POSIX.
+patch: Other contributors include Wayne Davison, who added unidiff support,
+patch: and David MacKenzie, who added configuration and backup support.
+patch:
diff --git a/source/a/pciutils/pciutils.SlackBuild b/source/a/pciutils/pciutils.SlackBuild
new file mode 100755
index 00000000..183c7add
--- /dev/null
+++ b/source/a/pciutils/pciutils.SlackBuild
@@ -0,0 +1,106 @@
+#!/bin/sh
+
+# Copyright 2008, 2009 Patrick J. Volkerding, Sebeka, MN, USA
+# All rights reserved.
+#
+# Redistribution and use of this script, with or without modification, is
+# permitted provided that the following conditions are met:
+#
+# 1. Redistributions of this script must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# 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.
+
+
+VERSION=${VERSION:-3.1.3}
+ARCH=${ARCH:-x86_64}
+BUILD=${BUILD:-1}
+
+NUMJOBS=${NUMJOBS:--j6}
+
+CWD=$(pwd)
+TMP=${TMP:-/tmp}
+PKG=$TMP/package-pciutils
+
+if [ "$ARCH" = "i486" ]; then
+ SLKCFLAGS="-O2 -march=i486 -mtune=i686"
+ LIBDIRSUFFIX=""
+elif [ "$ARCH" = "x86_64" ]; then
+ SLKCFLAGS="-O2 -fPIC"
+ LIBDIRSUFFIX="64"
+else
+ SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
+fi
+
+rm -rf $PKG
+mkdir -p $TMP $PKG
+cd $TMP
+rm -rf pciutils-$VERSION
+tar xvf $CWD/pciutils-$VERSION.tar.bz2 || exit 1
+cd pciutils-$VERSION
+
+chown -R root:root .
+find . \
+ \( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \
+ -exec chmod 755 {} \; -o \
+ \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
+ -exec chmod 644 {} \;
+
+# Fetch the latest pci.ids:
+rm -f pci.ids
+sh update-pciids.sh
+# Now fix the update-pciids script and preinstall it before 'make install'
+# decides that it knows best
+zcat $CWD/pciutils.ids.dest.diff.gz | patch -p1 --verbose || exit 1
+mkdir -p $PKG/usr/sbin
+cat update-pciids.sh > $PKG/usr/sbin/update-pciids
+chmod 755 $PKG/usr/sbin/update-pciids
+
+make \
+ PREFIX=/usr \
+ SBINDIR=/sbin \
+ LIBDIR=/usr/lib${LIBDIRSUFFIX} \
+ MANDIR=/usr/man \
+ OPT="$SLKCFLAGS" \
+ $NUMJOBS || exit 1
+
+make install install-lib \
+ PREFIX=/usr \
+ SBINDIR=/sbin \
+ LIBDIR=/usr/lib${LIBDIRSUFFIX} \
+ MANDIR=/usr/man \
+ DESTDIR=$PKG
+
+# Do not compress pci.ids - hal-0.5.11 needs it uncompressed
+( cd $PKG/usr/share ; gzip -d pci.ids.gz )
+# Remove the update-pciids script that 'make install' placed
+rm -f $PKG/sbin/update-pciids
+
+( cd $PKG/usr/man
+ find . -type f -exec gzip -9 {} \;
+ for i in $( find . -type l ) ; do ln -s $( readlink $i ).gz $i.gz ; rm $i ; done
+)
+
+find $PKG | xargs file | grep -e "executable" -e "shared object" \
+ | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
+
+mkdir -p $PKG/usr/doc/pciutils-$VERSION
+cp -a \
+ ChangeLog README TODO \
+ $PKG/usr/doc/pciutils-$VERSION
+
+mkdir -p $PKG/install
+cat $CWD/slack-desc > $PKG/install/slack-desc
+
+cd $PKG
+/sbin/makepkg -l y -c n $TMP/pciutils-$VERSION-$ARCH-$BUILD.txz
diff --git a/source/a/pciutils/pciutils.ids.dest.diff b/source/a/pciutils/pciutils.ids.dest.diff
new file mode 100644
index 00000000..98d152c2
--- /dev/null
+++ b/source/a/pciutils/pciutils.ids.dest.diff
@@ -0,0 +1,14 @@
+diff -Nur pciutils-3.1.3.orig/update-pciids.sh pciutils-3.1.3/update-pciids.sh
+--- pciutils-3.1.3.orig/update-pciids.sh 2008-11-10 17:11:51.000000000 -0600
++++ pciutils-3.1.3/update-pciids.sh 2009-07-29 02:23:53.102308103 -0500
+@@ -3,8 +3,8 @@
+ [ "$1" = "-q" ] && quiet=true || quiet=false
+
+ set -e
+-SRC="http://pciids.sourceforge.net/v2.2/pci.ids"
+-DEST=pci.ids
++SRC="http://pciids.sourceforge.net/pci.ids"
++DEST=/usr/share/pci.ids
+ PCI_COMPRESSED_IDS=
+ GREP=grep
+
diff --git a/source/a/pciutils/pciutils.url b/source/a/pciutils/pciutils.url
new file mode 100644
index 00000000..e77494b5
--- /dev/null
+++ b/source/a/pciutils/pciutils.url
@@ -0,0 +1,2 @@
+#ftp://atrey.karlin.mff.cuni.cz/pub/linux/pci/
+ftp.kernel.org:/pub/software/utils/pciutils/
diff --git a/source/a/pciutils/slack-desc b/source/a/pciutils/slack-desc
new file mode 100644
index 00000000..913f9646
--- /dev/null
+++ b/source/a/pciutils/slack-desc
@@ -0,0 +1,19 @@
+# HOW TO EDIT THIS FILE:
+# The "handy ruler" below makes it easier to edit a package description. Line
+# up the first '|' above the ':' following the base package name, and the '|'
+# on the right side marks the last column you can put a character in. You must
+# make exactly 11 lines for the formatting to be correct. It's also
+# customary to leave one space after the ':'.
+
+ |-----handy-ruler------------------------------------------------------|
+pciutils: pciutils (PCI utilities)
+pciutils:
+pciutils: lspci displays detailed information about all PCI buses and devices
+pciutils: in the system, replacing the original /proc/pci interface.
+pciutils:
+pciutils: setpci allows reading from and writing to PCI device configuration
+pciutils: registers. For example, you can adjust the latency timers with it.
+pciutils:
+pciutils: See the manual pages for more details.
+pciutils:
+pciutils:
diff --git a/source/a/pcmciautils/config/60-pcmcia.rules b/source/a/pcmciautils/config/60-pcmcia.rules
new file mode 100644
index 00000000..677da01b
--- /dev/null
+++ b/source/a/pcmciautils/config/60-pcmcia.rules
@@ -0,0 +1,22 @@
+# PCMCIA devices:
+#
+# Very few CIS firmware entries (which we use for matching)
+# are so broken that we need to read out random bytes of it
+# instead of the manufactor, card or product ID. Then the
+# matching is done in userspace.
+ACTION=="add", SUBSYSTEM=="pcmcia", ENV{MODALIAS}=="?*", \
+ RUN+="/sbin/pcmcia-check-broken-cis"
+
+# However, the "weak" matching by func_id is only allowed _after_ modprobe
+# returns, so that "strong" matches have a higher priority.
+ACTION=="add", SUBSYSTEM=="pcmcia", ENV{MODALIAS}=="?*", \
+ RUN+="/bin/sh -c 'echo 1 > /sys/$DEVPATH/allow_func_id_match'"
+
+# PCMCIA sockets:
+#
+# modprobe the pcmcia bus module so that 16-bit PCMCIA devices work
+ACTION=="add", SUBSYSTEM=="pcmcia_socket", RUN+="/sbin/modprobe pcmcia"
+
+# if this is a PCMCIA socket which needs a resource database,
+# pcmcia-socket-startup sets it up
+ACTION=="add", SUBSYSTEM=="pcmcia_socket", RUN+="/sbin/pcmcia-socket-startup"
diff --git a/source/a/pcmciautils/config/config.opts b/source/a/pcmciautils/config/config.opts
new file mode 100644
index 00000000..5b8d5faf
--- /dev/null
+++ b/source/a/pcmciautils/config/config.opts
@@ -0,0 +1,71 @@
+#
+# Local PCMCIA Configuration File
+#
+#----------------------------------------------------------------------
+#
+# System resources available for PCMCIA cards
+#
+# NOTE: these settings have no effect on resources assigned to a
+# CardBus bridge device itself; this file only affects resources
+# assigned to cards. Also, interrupt settings here will only affect
+# ISA bus interrupts assigned to 16-bit cards. PCI interrupts
+# generally can't be reconfigured.
+#
+# With the kernel PCMCIA subsystem, these settings also have no effect
+# at all on resources used for 32-bit CardBus cards. Those are set by
+# the PCI hotplug subsystem.
+#
+
+# These are the official ports to use from pcmcia-cs:
+#include port 0x100-0x4ff, port 0x800-0x8ff, port 0xc00-0xcff
+# However, ports 0x810-0x81f hurt on some DELL machines and
+# ports 0x3b0-0x3df hurt on some FSC machines, so we use this port
+# list instead:
+include port 0x100-0x3af, port 0x3e0-0x4ff, port 0xc00-0xcff
+
+include memory 0xc0000-0xfffff
+include memory 0xa0000000-0xa0ffffff, memory 0x60000000-0x60ffffff
+
+# High port numbers do not always work...
+# include port 0x1000-0x17ff
+
+# Extra port range for IBM Token Ring
+include port 0xa00-0xaff
+
+# Resources we should not use, even if they appear to be available
+
+# First built-in serial port
+exclude irq 4
+# Second built-in serial port
+#exclude irq 3
+# First built-in parallel port
+exclude irq 7
+
+#----------------------------------------------------------------------
+
+# Examples of options for loadable modules
+
+# To fix sluggish network with IBM ethernet adapter...
+#module "pcnet_cs" opts "mem_speed=600"
+
+# Options for IBM Token Ring adapters
+#module "ibmtr_cs" opts "mmiobase=0xd0000 srambase=0xd4000"
+
+# Options for Raylink/WebGear driver: uncomment only one line...
+# These are the default settings for use with the WebGear Windows driver:
+#module "ray_cs" opts "essid=NETWORK_NAME hop_dwell=128 beacon_period=256 translate=0"
+# Generic ad-hoc network
+#module "ray_cs" opts "essid=ADHOC_ESSID hop_dwell=128 beacon_period=256 translate=1"
+# Infrastructure network for older cards
+#module "ray_cs" opts "net_type=1 essid=ESSID1"
+# Infrastructure network for WebGear
+#module "ray_cs" opts "net_type=1 essid=ESSID1 translate=1 hop_dwell=128 beacon_period=256"
+
+# Options for WaveLAN/IEEE driver (AccessPoint mode)...
+#module "wvlan_cs" opts "station_name=MY_PC"
+# Options for WaveLAN/IEEE driver (ad-hoc mode)...
+#module "wvlan_cs" opts "port_type=3 channel=1 station_name=MY_PC"
+
+# Options for Xircom Netwave driver...
+#module "netwave_cs" opts "domain=0x100 scramble_key=0x0"
+
diff --git a/source/a/pcmciautils/config/rc.pcmcia b/source/a/pcmciautils/config/rc.pcmcia
new file mode 100755
index 00000000..1f21be84
--- /dev/null
+++ b/source/a/pcmciautils/config/rc.pcmcia
@@ -0,0 +1,65 @@
+#!/bin/sh
+#
+# rc.pcmcia: Script to initialize PCMCIA subsystem.
+# Based in an example found in cardmgr-to-pcmciautils.txt
+# and in Slackware rc.pcmcia found in pcmcia-cs package.
+#
+
+# Set this to the driver to use, one of:
+# probe, yenta_socket, i82365, i82092, pd6729, tcic, etc.
+#
+DRIVER=probe
+DRIVER_OPTS=
+
+case "$1" in
+ start)
+ echo "Starting PCMCIA services:"
+ fgrep -q pcmcia /proc/devices
+ if [ $? -ne 0 ] ; then
+ if [ "$DRIVER" = "probe" ]; then
+ echo " <Probing for PCIC: edit /etc/rc.d/rc.pcmcia>"
+ for DRV in yenta_socket i82365 tcic ; do
+ /sbin/modprobe $DRV > /dev/null 2>&1
+ /sbin/pccardctl status | grep -q Socket && break
+ /sbin/modprobe -r $DRV > /dev/null 2>&1
+ done
+ else
+ echo " <Loading PCIC: $DRIVER>"
+ /sbin/modprobe $DRIVER $DRIVER_OPTS > /dev/null 2>&1
+ fi
+ /sbin/modprobe pcmcia > /dev/null 2>&1 # just in case it's not auto-loaded
+ else
+ echo " <PCIC already loaded>"
+ fi
+ ;;
+
+ stop)
+ echo -n "Shutting down PCMCIA services: "
+ echo -n "cards "
+ /sbin/pccardctl eject
+ MODULES=`/sbin/lsmod | grep "pcmcia " | awk '{print $4}' | tr , ' '`
+ for i in $MODULES ; do
+ echo -n "$i "
+ /sbin/modprobe -r $i > /dev/null 2>&1
+ done
+ echo -n "pcmcia "
+ /sbin/modprobe -r pcmcia > /dev/null 2>&1
+ if [ "$DRIVER" = "probe" ]; then
+ for DRV in yenta_socket i82365 tcic ; do
+ grep -qw $DRV /proc/modules && modprobe -r $DRV && \
+ echo -n "$DRV " && break
+ done
+ else
+ /sbin/modprobe -r $DRIVER > /dev/null 2>&1
+ fi
+ echo -n "rsrc_nonstatic "
+ /sbin/modprobe -r rsrc_nonstatic > /dev/null 2>&1
+ echo "pcmcia_core"
+ /sbin/modprobe -r pcmcia_core > /dev/null 2>&1
+ ;;
+
+ restart)
+ $0 stop
+ $0 start
+ ;;
+esac
diff --git a/source/a/pcmciautils/doinst.sh b/source/a/pcmciautils/doinst.sh
new file mode 100644
index 00000000..d01ddb5c
--- /dev/null
+++ b/source/a/pcmciautils/doinst.sh
@@ -0,0 +1,13 @@
+config() {
+ NEW="$1"
+ OLD="$(dirname $NEW)/$(basename $NEW .new)"
+ # If there's no config file by that name, mv it over:
+ if [ ! -r $OLD ]; then
+ mv $NEW $OLD
+ elif [ "$(cat $OLD | md5sum)" = "$(cat $NEW | md5sum)" ]; then # toss the redundant copy
+ rm $NEW
+ fi
+ # Otherwise, we leave the .new copy for the admin to consider...
+}
+config etc/rc.d/rc.pcmcia.new
+config etc/pcmcia/config.opts.new
diff --git a/source/a/pcmciautils/pcmciautils.SlackBuild b/source/a/pcmciautils/pcmciautils.SlackBuild
new file mode 100755
index 00000000..dcf70895
--- /dev/null
+++ b/source/a/pcmciautils/pcmciautils.SlackBuild
@@ -0,0 +1,113 @@
+#!/bin/sh
+
+# Slackware build script for pcmciautils
+
+# Copyright 2008, 2009 Patrick J. Volkerding, Sebeka, MN, USA
+# All rights reserved.
+#
+# Redistribution and use of this script, with or without modification, is
+# permitted provided that the following conditions are met:
+#
+# 1. Redistributions of this script must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# 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.
+
+
+VERSION=${VERSION:-015}
+ARCH=${ARCH:-x86_64}
+# parallel build will cause an error building ccdv:
+NUMJOBS=${NUMJOBS:-" -j1 "}
+BUILD=${BUILD:-2}
+
+CWD=$(pwd)
+TMP=${TMP:-/tmp}
+PKG=$TMP/package-pcmciautils
+
+rm -rf $PKG
+mkdir -p $TMP $PKG
+cd $TMP
+rm -rf pcmciautils-$VERSION
+tar xvf $CWD/pcmciautils-$VERSION.tar.bz2
+cd pcmciautils-$VERSION
+chown -R root.root .
+find . \
+ \( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \
+ -exec chmod 755 {} \; -o \
+ \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
+ -exec chmod 644 {} \;
+
+make $NUMJOBS || make || exit 1
+make install DESTDIR=$PKG || exit 1
+
+( cd $PKG
+ find . | xargs file | grep "executable" | grep ELF | cut -f 1 -d : | \
+ xargs strip --strip-unneeded 2> /dev/null
+ find . | xargs file | grep "shared object" | grep ELF | cut -f 1 -d : | \
+ xargs strip --strip-unneeded 2> /dev/null
+)
+
+# Add some firmware:
+( cd $PKG
+ tar xvf $CWD/cis-cs-3.2.8.tar.gz
+ chown -R root:root lib
+)
+
+rm -rf $PKG/etc/*
+mkdir -p $PKG/etc/pcmcia $PKG/etc/rc.d $PKG/lib/udev/rules.d
+
+cp -a $CWD/config/rc.pcmcia $PKG/etc/rc.d/rc.pcmcia.new
+chown root:root $PKG/etc/rc.d/rc.pcmcia.new
+chmod 0755 $PKG/etc/rc.d/rc.pcmcia.new
+
+cp -a $CWD/config/config.opts $PKG/etc/pcmcia/config.opts.new
+chown root:root $PKG/etc/pcmcia/config.opts.new
+chmod 0644 $PKG/etc/pcmcia/config.opts.new
+
+cp -a udev/60-pcmcia.rules $PKG/lib/udev/rules.d/60-pcmcia.rules
+chown root:root $PKG/lib/udev/rules.d/60-pcmcia.rules
+chmod 0644 $PKG/lib/udev/rules.d/60-pcmcia.rules
+
+# Create some symlinks that the udev rules file wants
+( cd $PKG/lib/udev
+ ln -s ../../sbin/pcmcia-check-broken-cis .
+ ln -s ../../sbin/pcmcia-socket-startup .
+)
+
+mv $PKG/usr/share/man $PKG/usr
+rmdir $PKG/usr/share
+
+# Compress and if needed symlink the man pages:
+if [ -d $PKG/usr/man ]; then
+ ( cd $PKG/usr/man
+ for manpagedir in $(find . -type d -name "man*") ; do
+ ( cd $manpagedir
+ for eachpage in $( find . -type l -maxdepth 1) ; do
+ ln -s $( readlink $eachpage ).gz $eachpage.gz
+ rm $eachpage
+ done
+ gzip -9 *.?
+ )
+ done
+ )
+fi
+
+mkdir -p $PKG/usr/doc/pcmciautils-$VERSION
+cp COPYING* $PKG/usr/doc/pcmciautils-$VERSION
+
+mkdir $PKG/install
+zcat $CWD/doinst.sh.gz > $PKG/install/doinst.sh
+cat $CWD/slack-desc > $PKG/install/slack-desc
+
+cd $PKG
+/sbin/makepkg -l y -c n $TMP/pcmciautils-$VERSION-$ARCH-$BUILD.txz
+
diff --git a/source/a/pcmciautils/slack-desc b/source/a/pcmciautils/slack-desc
new file mode 100644
index 00000000..c9958af8
--- /dev/null
+++ b/source/a/pcmciautils/slack-desc
@@ -0,0 +1,19 @@
+# HOW TO EDIT THIS FILE:
+# The "handy ruler" below makes it easier to edit a package description. Line
+# up the first '|' above the ':' following the base package name, and the '|' on
+# the right side marks the last column you can put a character in. You must make
+# exactly 11 lines for the formatting to be correct. It's also customary to
+# leave one space after the ':'.
+
+ |-----handy-ruler-------------------------------------------------------|
+pcmciautils: pcmciautils (Utilities for using PCMCIA cards with 2.6+ kernels)
+pcmciautils:
+pcmciautils: This package provides PCMCIA tools that replace the pcmcia-cs tools
+pcmciautils: used with the 2.4.x Linux kernel. PCMCIA cards are commonly used
+pcmciautils: in laptops to provide expanded capabilities such as network
+pcmciautils: connections, modems, increased memory, and more.
+pcmciautils:
+pcmciautils:
+pcmciautils:
+pcmciautils:
+pcmciautils:
diff --git a/source/a/pkgtools/manpages/explodepkg.8 b/source/a/pkgtools/manpages/explodepkg.8
new file mode 100644
index 00000000..3e11fddc
--- /dev/null
+++ b/source/a/pkgtools/manpages/explodepkg.8
@@ -0,0 +1,41 @@
+.\" -*- nroff -*-
+.ds g \" empty
+.ds G \" empty
+.\" 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 EXPLODEPKG 8 "21 May 1994" "Slackware Version 2.0.0"
+.SH NAME
+explodepkg \- Extract the contents of a tar+compression package (such as a Slackware
+software package) in the current directory.
+.SH SYNOPSIS
+.B explodepkg
+.BI package
+.BI [
+.BI package2,
+.BI package3,
+.BI ...
+.BI ]
+.SH DESCRIPTION
+.B explodepkg
+uncompresses and untars Slackware *.tgz (or .tbz, .tlz, .txz) packages (or any archive
+that was created by
+compressing a tarfile with one of the supported compression utilities) in the current directory. It is not usually
+used to install packages, since it doesn't execute the installation scripts
+in ./install or ./var/log/setup. The primary use for
+.B explodepkg
+is in package maintenance - exploding a package in a subdirectory, making fixes
+to it or upgrading the software, and then building the updated package with
+.B makepkg.
+.SH AUTHOR
+Patrick J. Volkerding <volkerdi@slackware.com>
+.SH "SEE ALSO"
+.BR tar(1),
+.BR gzip(1),
+.BR installpkg(8),
+.BR makepkg(8),
+.BR pkgtool(8),
+.BR upgradepkg(8)
diff --git a/source/a/pkgtools/manpages/installpkg.8 b/source/a/pkgtools/manpages/installpkg.8
new file mode 100644
index 00000000..2d77f10e
--- /dev/null
+++ b/source/a/pkgtools/manpages/installpkg.8
@@ -0,0 +1,91 @@
+.\" -*- nroff -*-
+.ds g \" empty
+.ds G \" empty
+.\" 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 INSTALLPKG 8 "22 Nov 2001" "Slackware Version 8.1.0"
+.SH NAME
+installpkg \- install Slackware packages.
+.SH SYNOPSIS
+.B installpkg
+[
+.B \--warn
+]
+[
+.B \--md5sum
+]
+[
+.B \--root /otherroot
+]
+[
+.B \--infobox
+]
+[
+.B \--menu
+]
+[
+.B \--ask
+]
+[
+.B \--priority ADD|REC|OPT|SKP
+]
+[
+.B \--tagfile /somedir/tagfile
+]
+.BI packagename
+[
+.B packagename2 ...
+]
+.SH DESCRIPTION
+.B installpkg
+installs single or multiple *.tgz (or .tbz, .tlz, .txz) binary packages designed
+for use with the Slackware Linux distribution onto your system.
+.SH OPTIONS
+.TP
+.B \--warn packagename
+Generate a report to the standard output about which files and directories
+would be removed or overwritten if you install the package, but do not
+actually install it.
+.TP
+.B \--md5sum packagename
+Record the package md5sum in the metadata written in /var/log/packages.
+.TP
+.B \--root /otherroot
+Install using a location other than / (the default) as the root of the
+filesystem to install on. In the example given, use /otherroot instead. Setting
+the ROOT environment variable does the same thing.
+.TP
+.B \--infobox
+Use /bin/dialog to display an informational dialog as the package is installed.
+Primarily used when installpkg is called from other scripts.
+.TP
+.B \--menu
+Use /bin/dialog to display a menu asking the user if they would like to install the
+package(s) or not. Generally used when installpkg is called from other scripts.
+.TP
+.B \--ask
+Used with -menu mode. When selected, always ask if a package should be
+installed regardless of what the package's priority is.
+.TP
+.B \--priority ADD|REC|OPT|SKP
+When installing with the \-menu option, package priority levels (found in the file
+"tagfile" in the package directory) are used to automatically install (ADD) or
+skip (SKP) a package, or to suggest recommended (REC) or optional (OPT) to the user
+if a menu is displayed. If a priority is set on the command line, it will override
+the values set in the tagfile for the entire package list.
+.TP
+.B \--tagfile /somedir/tagfile
+Specify a different file to use for package priorities (in this example, /somedir/tagfile
+will be used). The default is "tagfile" in the package's directory.
+.SH AUTHOR
+Patrick J. Volkerding <volkerdi@slackware.com>
+.SH "SEE ALSO"
+.BR makepkg(8),
+.BR removepkg(8),
+.BR explodepkg(8),
+.BR pkgtool(8),
+.BR upgradepkg(8)
diff --git a/source/a/pkgtools/manpages/makepkg.8 b/source/a/pkgtools/manpages/makepkg.8
new file mode 100644
index 00000000..b280ce51
--- /dev/null
+++ b/source/a/pkgtools/manpages/makepkg.8
@@ -0,0 +1,135 @@
+.\" -*- nroff -*-
+.ds g \" empty
+.ds G \" empty
+.\" 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 MAKEPKG 8 "21 May 1994" "Slackware Version 2.0.0"
+.SH NAME
+makepkg \- make Slackware packages.
+.SH SYNOPSIS
+.B makepkg
+[
+.B -l, --linkadd y|n
+]
+[
+.B -c, --chown y|n
+]
+.BI packagename
+.SH DESCRIPTION
+.B makepkg
+creates a new Slackware compatible package.
+The package is constructed using the contents of the current directory and
+all subdirectories. If symbolic links exist, they will be converted to script
+code to recreate them when the package is installed. This code will be
+appended to the primary installation script
+.B ( install/doinst.sh )
+, or, if that script does not exist it will be created with those contents.
+The package will be written out to the file
+.BI packagename
+which should be the full name, including the extension. This is usually .tgz,
+but .tbz, .tlz, and .txz are also accepted. The proper compression utility
+(gzip, bzip2, lzma, or xz) needs to be installed on the machine.
+.SH OPTIONS
+.TP
+.B \-l, --linkadd y|n
+If y, add any symbolic links found to the install script (doinst.sh) and
+delete them. This is the recommended action. If this option is not used,
+makepkg will prompt if symbolic links are found.
+.TP
+.B \-p, --prepend
+If this option is given, then any symbolic links added to doinst.sh will be
+prepended to the existing script. This is useful for packages that contain
+shared libraries that need to be linked first because programs will use them
+later in the doinst.sh script.
+.TP
+.B \-c, --chown y|n
+If y, makepkg will reset all directory permissions to 755 and ownership to root:root.
+In general, you should have the permissions and ownerships worked out yourself, so
+relying on setting this option to y is somewhat sloppy. It is not the default. If an
+option is not provided, makepkg will prompt.
+.SH INSTALLATION SCRIPTS
+There are 3 types of installation scripts supported in the Slackware package
+system.
+.TP
+The first is the
+.B primary
+installation script. This is found in the subdirectory
+.B ./install
+and must have the name
+.B doinst.sh
+in order to be recognized. This ( and other install scripts ) should be written
+using the basic Bourne shell syntax recognized by the
+.B ash
+shell, since this is the shell that will be used to execute the script when
+installing from a Slackware install floppy. This is a common trap - beware of
+using
+.B bash
+syntax extensions, because the script will work fine when installed from the
+hard drive, but will bomb out when installed from floppy. If the package is
+for personal use, this isn't a problem. Be careful, though, if you plan to
+share your package with other users. The
+.B primary installation script
+is executed immediately after the package is installed with
+.B installpkg, pkgtool,
+or
+.B setup.
+.TP
+The second type of script is the
+.B configuration
+script. This is found in the subdirectory
+.B ./var/log/setup
+and must have a name that starts with
+.B setup.
+in order to be recongnized. An example is the timezone script:
+.B /var/log/setup/setup.timeconfig.
+These scripts are executed during the
+.B CONFIGURE
+phase of
+.B setup,
+and are re-executed each time the user runs the
+.B CONFIGURE
+option from
+.B setup
+from then on.
+Typically, the user will go through this phase of setup following the
+installation of all the packages. Anything that needs to be interactive
+should go in one of these scripts to avoid halting the package installation
+process during
+.B setup.
+.TP
+The third type of script is the
+.B onlyonce
+script. Like the name suggests, these are executed only once after the package
+is installed, in contrast to the standard
+.B configuration
+script. These scripts are also found in the
+.B ./var/log/setup
+directory and must have a name that starts with
+.B setup.,
+but in addition the name must contain the string
+.B onlyonce.
+An example might be a script with the name
+.B /var/log/setup/setup.onlyonce.testscript
+.SH PACKAGE FORMAT
+.B makepkg
+uses GNU tar plus GNU gzip to create its packages. A simple way to
+extract the contents of a package (without executing the installation
+scripts, of course) is to use a command like this:
+.TP
+explodepkg package.tgz
+.TP
+Or, something like this:
+.TP
+gzip -dc package.tgz | tar xvvf -
+.SH AUTHOR
+Patrick J. Volkerding <volkerdi@slackware.com>
+.SH "SEE ALSO"
+.BR installpkg(8),
+.BR explodepkg(8),
+.BR removepkg(8),
+.BR pkgtool(8),
+.BR upgradepkg(8)
diff --git a/source/a/pkgtools/manpages/pkgtool.8 b/source/a/pkgtools/manpages/pkgtool.8
new file mode 100644
index 00000000..56e39217
--- /dev/null
+++ b/source/a/pkgtools/manpages/pkgtool.8
@@ -0,0 +1,95 @@
+.\" -*- nroff -*-
+.ds g \" empty
+.ds G \" empty
+.\" 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 PKGTOOL 8 "24 Nov 1995" "Slackware Version 3.1.0"
+.SH NAME
+pkgtool \- software package maintenance tool.
+.SH SYNOPSIS
+.B pkgtool
+.LP
+.B pkgtool
+[
+.B --sets #a#b#c#
+]
+[
+.B --source_mounted
+]
+[
+.B --ignore_tagfiles
+]
+[
+.B --tagfile tagfile
+]
+[
+.B --source_dir directory
+]
+[
+.B --target_dir directory
+]
+[
+.B --source_device device
+]
+.SH DESCRIPTION
+.B pkgtool
+is a menu-driven package maintenance tool provided with the Slackware Linux
+distribution. It allows the user to install, remove, or view
+software packages through an interactive
+system. Pkgtool can also be used to re-run the menu-driven scripts normally
+executed at the end of a Slackware installation. This is useful for doing
+basic reconfiguration (like changing the mouse type).
+.SH OPTIONS
+Most users will not want to use any options when running
+.B pkgtool.
+These are generally used only when
+.B pkgtool
+is run during the initial system installation.
+Feel free to try them, but be careful.
+.TP
+.B \--sets #A#B#C#
+Install the disk sets A, B, C. Seperate the disk set names by '#' symbols.
+.TP
+.B \--source_mounted
+When this flag is present,
+.B pkgtool
+will not attempt to unmount and remount the source device with each disk.
+.TP
+.B \--ignore_tagfiles
+When this flag is present,
+.B pkgtool
+will install every package encountered no matter what the tagfiles say.
+.TP
+.B \--tagfile tagfile
+This flag is used to specify from the command line which tagfile should be
+used for the installation.
+.TP
+.B \--source_dir directory
+Used when installing multiple packages from disk sets. This is the directory
+in which the subdirectories for each disk are found. This isn't used when
+installing from floppy.
+.TP
+.B \--target_dir directory
+The directory where the target root directory is located. This is '/' when
+installing on the hard drive, or typically '/mnt' when installing from an
+install disk.
+.TP
+.B \--source_device device
+The source device to install from. This is not used if you've provided the
+.B \--source_mounted
+flag. It's usually used when installing from floppy, as in:
+ \--source_device /dev/fd0u1440
+or
+ \--source_device /dev/fd1h1200.
+.SH AUTHOR
+Patrick J. Volkerding <volkerdi@slackware.com>
+.SH "SEE ALSO"
+.BR makepkg(8),
+.BR explodepkg(8),
+.BR installpkg(8),
+.BR removepkg(8),
+.BR upgradepkg(8)
diff --git a/source/a/pkgtools/manpages/removepkg.8 b/source/a/pkgtools/manpages/removepkg.8
new file mode 100644
index 00000000..3bd8bf7a
--- /dev/null
+++ b/source/a/pkgtools/manpages/removepkg.8
@@ -0,0 +1,108 @@
+.\" -*- nroff -*-
+.ds g \" empty
+.ds G \" empty
+.\" 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 REMOVEPKG 8 "23 Nov 2001" "Slackware Version 8.1.0"
+.SH NAME
+removepkg \- remove Slackware packages.
+.SH SYNOPSIS
+.B removepkg
+.BI packagename
+.LP
+[
+.B ROOT=/mnt
+]
+.B removepkg
+[
+.B \-copy
+]
+[
+.B \-keep
+]
+[
+.B \-preserve
+]
+[
+.B \-warn
+]
+.BI packagename
+.SH DESCRIPTION
+.B removepkg
+removes a previously installed Slackware package, while writing a progress
+report to the standard output. A package may be specified either by the
+full package name (as you'd see listed in /var/log/packages/), or by the
+base package name. For example, the package foo-1.0-i486-1.tgz may be removed
+with any of the following commands:
+
+removepkg foo-1.0-i486-1.tgz (also recognized: .tbz, .tlz, .txz)
+
+removepkg foo-1.0-i486-1
+
+removepkg foo.tgz
+
+removepkg foo
+
+When deleting files,
+.B removepkg
+will analyze the contents of the other packages installed on your system, and
+will only delete the files that are unique to the package being removed.
+Similarly, the installation scripts for all the other packages will be
+considered when deciding whether or not to delete symbolic links from the
+package.
+.LP
+Removing a package (as well as installing one) can be a dangerous undertaking.
+For this reason, there is the
+.B \-warn
+option available. When you use this,
+.B removepkg
+will not actually remove any files or links, but will output a detailed report
+of what it would do if you actually did remove the package. It's suggested that
+you do this (and maybe pipe the output to
+.B less
+) before removing packages to make sure you've backed up anything that might
+be important.
+.LP
+When removing a package, it's original file index will be moved from
+/var/log/packages to /var/log/removed_packages. Likewise, it's installation
+script will be moved from /var/log/scripts to /var/log/removed_scripts.
+.SH OPTIONS
+.TP
+.B \-warn packagename
+Generate a report to the standard output about which files and directories
+would be removed, but does not actually remove the package.
+.TP
+.B \-preserve packagename
+If specified, the complete package subtree is reconstructed in
+/var/log/setup/tmp/preserved_packages/packagename.
+.TP
+.B \-copy packagename
+Construct a copy of the package under /var/log/setup/tmp/preserved_packages/packagename,
+but don't remove it. (same effect as \-warn \-preserve)
+.TP
+.B \-keep
+Save the intermediate files created by removepkg (delete_list,
+required_files, uniq_list, del_link_list, required_links,
+required_list). Mostly useful for debugging purposes.
+.SH " "
+It's possible to remove a package from a filesystem
+other than / by supplying
+.B removepkg
+with a
+.B ROOT
+environment variable:
+.TP
+.B ROOT=/mnt removepkg package
+
+.SH AUTHORS
+Patrick J. Volkerding <volkerdi@slackware.com>,
+with enhancements by Christian Franke <c.franke@acm.org>
+.SH "SEE ALSO"
+.BR installpkg(8),
+.BR makepkg(8),
+.BR pkgtool(8),
+.BR upgradepkg(8)
diff --git a/source/a/pkgtools/manpages/setup.8-deprecated b/source/a/pkgtools/manpages/setup.8-deprecated
new file mode 100644
index 00000000..53397422
--- /dev/null
+++ b/source/a/pkgtools/manpages/setup.8-deprecated
@@ -0,0 +1,120 @@
+.\" -*- nroff -*-
+.ds g \" empty
+.ds G \" empty
+.\" 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 SETUP 8 "21 May 1994" "Slackware Version 2.0.0"
+.SH NAME
+setup \- Slackware system setup tool.
+.SH SYNOPSIS
+.B setup
+.LP
+.SH DESCRIPTION
+.B setup
+is the system installation and setup tool provided with the Slackware Linux
+distribution.
+.LP
+.B setup
+is usually used to install software packages from your hard drive, a CD,
+NFS, or floppy disks. It is also a frontend for
+.B pkgtool
+and many configuration scripts that come with various packages, such as the
+scripts which allow you to install LILO, configure your timezone, set your
+keyboard fonts, make bootdisks, and many other tasks.
+.SH OPTIONS
+.TP
+.B HELP
+Read the
+.B setup
+help file.
+.TP
+.B KEYMAP
+Change your keyboard map to one of many international and specialized keymaps
+available.
+.B NOTE:
+This change will not become permanent unless you go through the
+.B CONFIGURE option.
+.TP
+.B MAKE TAGS
+This allows you to write out custom tagfiles. A
+.B tagfile
+is a list of package names followed by one of these tags:
+.B ADD
+(required),
+.B SKP
+(skip),
+.B REC
+(recommended) or,
+.B OPT
+(optional). These allow you to completely automate your software installation.
+You can either put these files on the first disk of each disk series
+(optionally using a custom 3 character extension), or in a custom location
+altogether, such as on a floppy disk in ./a1, ./ap1, ./d1, ..., directories.
+The format of a line in a
+.B tagfile
+is like this:
+.LP
+package:
+.B TAG
+.TP
+.B SOURCE
+Select your source media, such as hard disk, NFS, CD, or floppy. You should
+select installation from a directory if your CD or NFS directory has already
+been mounted, as it probably is if you're using
+.B setup
+on your hard drive.
+.TP
+.B TARGET
+Select your target directory. For testing purposes, you may install the
+packages to a directory other than '/'. Don't expect them to run from there,
+though.
+.TP
+.B DISK SETS
+Select the disk sets you want to install. You can also install custom disk
+sets by tagging the
+.B CUS
+selection. The disk sets must be Slackware-like: they require the diskxxx?
+index on each disk, such as diskxyz1 for the first disk of the XYZ series.
+On the last disk there must be a file called
+.B install.end
+to signal the end of the disk series.
+.TP
+.B INSTALL
+Once you've gone through
+.B SOURCE
+and
+.B DISK SETS
+( and possibly
+.B TARGET
+), then you select this choice to go on with the software installation. You'll
+be asked what type of tagfiles you want to use and then
+.B pkgtool
+will be called to install the software.
+.TP
+.B CONFIGURE
+This option runs through several scripts that configure various aspects of your
+Linux system. These might include LILO installation, timezone configuration,
+and other things.
+.TP
+.B PKGTOOL
+This option calls the
+.B pkgtool(8)
+utility for you.
+.TP
+.B EXIT
+Exit the
+.B setup
+program.
+.SH AUTHOR
+Patrick J. Volkerding <volkerdi@slackware.com>
+.SH "SEE ALSO"
+.BR makepkg(8),
+.BR installpkg(8),
+.BR explodepkg(8),
+.BR removepkg(8),
+.BR pkgtool(8),
+.BR upgradepkg(8)
diff --git a/source/a/pkgtools/manpages/upgradepkg.8 b/source/a/pkgtools/manpages/upgradepkg.8
new file mode 100644
index 00000000..8ca7811b
--- /dev/null
+++ b/source/a/pkgtools/manpages/upgradepkg.8
@@ -0,0 +1,98 @@
+.\" -*- nroff -*-
+.ds g \" empty
+.ds G \" empty
+.\" 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 UPGRADEPKG 8 "31 May 2002" "Slackware Version 8.1.0"
+.SH NAME
+upgradepkg \- upgrade Slackware packages.
+.SH SYNOPSIS
+.B upgradepkg
+[
+.B --dry-run
+]
+[
+.B --install-new
+]
+[
+.B --reinstall
+]
+[
+.B --verbose
+]
+.BI newpackagename
+.BI [ newpackagename2 ]
+.LP
+.B upgradepkg
+[
+.B --dry-run
+]
+[
+.B --install-new
+]
+[
+.B --reinstall
+]
+[
+.B --verbose
+]
+.BI oldpackagename%newpackagename
+.BI [ old2%new2 ]
+.SH DESCRIPTION
+.B upgradepkg
+upgrades a Slackware package from an older version to a
+newer one. It does this by
+.B INSTALLING
+the new package onto the system, and then
+.B REMOVING
+any files from the old package that aren't in the new package.
+If the old and new packages have the same name, a single argument is all that
+is required. If the packages have different names, supply the name of the
+old package followed by a percent symbol (%), then the name of the new package.
+Do not add any extra whitespace between pairs of old/new package names.
+
+If upgradepkg finds more than one installed package matching the old package's
+name, it will remove them all.
+.TP
+To upgrade in a directory other than / (such as /mnt):
+.TP
+ROOT=/mnt upgradepkg package.tgz (or .tbz, .tlz, .txz)
+.SH OPTIONS
+.TP
+.B \--dry-run
+Output a report about which packages would be installed or upgraded
+but don't actually perform the upgrades.
+.TP
+.B \--install-new
+Normally upgradepkg only upgrades packages that are already installed on the system, and
+will skip any packages that do not already have a version installed.
+If
+.B --install-new
+is specified, the behavior is modified to install new packages in addition to upgrading
+existing ones.
+.TP
+.B \--reinstall
+Upgradepkg usually skips packages if the exact same package
+(matching name, version, arch, and build number) is already installed on the system.
+Use the --reinstall option if you want to upgrade all packages even if the same
+version is already installed.
+.TP
+.B \--verbose
+Show all the gory details of the upgrade.
+.SH BUGS
+Before upgrading a package, save any configuration files (such as in /etc)
+that you wish to keep. Sometimes these will be preserved, but it depends on
+the package structure. If you want to force new versions of the config files
+to be installed, remove the old ones manually prior to running upgradepkg.
+.SH AUTHOR
+Patrick J. Volkerding <volkerdi@slackware.com>
+.SH "SEE ALSO"
+.BR makepkg(8),
+.BR installpkg(8),
+.BR removepkg(8),
+.BR explodepkg(8),
+.BR pkgtool(8)
diff --git a/source/a/pkgtools/obsolete-scripts/README b/source/a/pkgtools/obsolete-scripts/README
new file mode 100644
index 00000000..3e0060de
--- /dev/null
+++ b/source/a/pkgtools/obsolete-scripts/README
@@ -0,0 +1,5 @@
+This directory contains retired installation scripts.
+
+setup.90.modem-device is obsolete since udev will overwrite any
+existing devices or links in /dev.
+
diff --git a/source/a/pkgtools/obsolete-scripts/setup.90.modem-device b/source/a/pkgtools/obsolete-scripts/setup.90.modem-device
new file mode 100644
index 00000000..a1c5993a
--- /dev/null
+++ b/source/a/pkgtools/obsolete-scripts/setup.90.modem-device
@@ -0,0 +1,44 @@
+#!/bin/sh
+#BLURB="Select modem device"
+TMP=/var/log/setup/tmp
+T_PX="$1"
+if [ ! -d $TMP ]; then
+ mkdir -p $TMP
+fi
+
+dialog --title "MODEM CONFIGURATION" --menu "This part of the configuration \
+process will create a /dev/modem link pointing to the callout device (ttyS0, \
+ttyS1, ttyS2, ttyS3) representing your default modem. You \
+can change this link \
+later if you move your modem to a different port. If your modem is a PCI card, \
+it will probably use /dev/ttyS4 or higher. \
+Please select the callout \
+device which you would like to use for your modem:" 22 68 9 \
+"no modem" "do not set a /dev/modem link" \
+"/dev/ttyS0" "(COM1: under DOS)" \
+"/dev/ttyS1" "(COM2: under DOS)" \
+"/dev/ttyS2" "(COM3: under DOS)" \
+"/dev/ttyS3" "(COM4: under DOS)" \
+"/dev/ttyS4" "PCI modem" \
+"/dev/ttyS5" "PCI modem" \
+"/dev/ttyS6" "PCI modem" \
+"/dev/ttyS7" "PCI modem" \
+"/dev/ttyS8" "PCI modem" \
+"/dev/ttyS9" "PCI modem" \
+"/dev/ttyS10" "PCI modem" \
+"/dev/ttyS11" "PCI modem" \
+"/dev/ttyS12" "PCI modem" \
+"/dev/ttyS13" "PCI modem" \
+"/dev/ttyS14" "PCI modem" \
+"/dev/ttyS15" "PCI modem" \
+2> $TMP/callout
+
+if [ $? = 0 ]; then
+ MODEM_DEVICE="`cat $TMP/callout`"
+ if [ ! "$MODEM_DEVICE" = "no modem" ]; then
+ MODEM_DEVICE=`basename $MODEM_DEVICE`
+ ( cd $T_PX/dev ; ln -sf $MODEM_DEVICE modem )
+ fi
+fi
+rm -f $TMP/callout
+
diff --git a/source/a/pkgtools/pkgtools.SlackBuild b/source/a/pkgtools/pkgtools.SlackBuild
new file mode 100755
index 00000000..da70e19f
--- /dev/null
+++ b/source/a/pkgtools/pkgtools.SlackBuild
@@ -0,0 +1,78 @@
+#!/bin/sh
+# Copyright 2005, 2006, 2007, 2008, 2009 Patrick J. Volkerding, Sebeka, MN, USA
+# All rights reserved.
+#
+# Redistribution and use of this script, with or without modification, is
+# permitted provided that the following conditions are met:
+#
+# 1. Redistributions of this script must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# 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.
+
+# Set initial variables:
+CWD=`pwd`
+if [ "$TMP" = "" ]; then
+ TMP=/tmp
+fi
+PKG=$TMP/package-pkgtools
+
+# *** UPDATE THESE WITH EACH BUILD:
+VERSION=13.0
+ARCH=${ARCH:-noarch}
+BUILD=3
+
+if [ ! -d $TMP ]; then
+ mkdir -p $TMP # location to build the source
+fi
+rm -rf $PKG
+mkdir -p $PKG
+
+# Install Slackware script manpages:
+( cd $CWD/manpages
+ mkdir -p $PKG/usr/man/man8
+ for page in explodepkg.8 installpkg.8 makepkg.8 upgradepkg.8 pkgtool.8 \
+ removepkg.8 ; do
+ cat $page | gzip -9c > $PKG/usr/man/man8/$page.gz
+ done
+)
+
+# Install Slackware scripts:
+( cd $CWD/scripts
+ # Install the core Slackware package tools:
+ mkdir -p $PKG/sbin
+ for file in explodepkg installpkg makebootdisk makepkg pkgtool removepkg upgradepkg ; do
+ cp -a $CWD/scripts/$file $PKG/sbin
+ done
+ chown root:root $PKG/sbin/*
+ chmod 755 $PKG/sbin/*
+ # These scripts are used during the installation:
+ mkdir -p $PKG/var/log/setup/tmp
+ chmod 700 $PKG/var/log/setup/tmp
+ for file in setup.* ; do
+ cp -a $file $PKG/var/log/setup
+ done
+ chown root:root $PKG/var/log/setup/setup.*
+ chmod 755 $PKG/var/log/setup/setup.*
+)
+
+mkdir -p $PKG/install
+cat $CWD/slack-desc > $PKG/install/slack-desc
+
+# Build the package:
+cd $PKG
+makepkg -l y -c n $TMP/pkgtools-$VERSION-$ARCH-$BUILD.tgz
+
+echo
+echo "HEY -- did you remember to update the version numbers in the setup scripts?"
+echo
+
diff --git a/source/a/pkgtools/scripts/explodepkg b/source/a/pkgtools/scripts/explodepkg
new file mode 100644
index 00000000..a113b085
--- /dev/null
+++ b/source/a/pkgtools/scripts/explodepkg
@@ -0,0 +1,97 @@
+#!/bin/sh
+# Copyright 1994, 1998, 2000 Patrick Volkerding, Concord, CA, USA
+# Copyright 2001, 2003 Slackware Linux, Inc., Concord, CA, USA
+# Copyright 2007, 2009 Patrick Volkerding, Sebeka, MN, USA
+# All rights reserved.
+#
+# Redistribution and use of this script, with or without modification, is
+# permitted provided that the following conditions are met:
+#
+# 1. Redistributions of this script must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# 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.
+
+TAR=tar-1.13
+$TAR --help 1> /dev/null 2> /dev/null
+if [ ! $? = 0 ]; then
+ TAR=tar
+fi
+if [ ! "`LC_MESSAGES=C $TAR --version`" = "tar (GNU tar) 1.13
+
+Copyright (C) 1988, 92,93,94,95,96,97,98, 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.
+
+Written by John Gilmore and Jay Fenlason." ]; then
+ echo "WARNING: pkgtools are unstable with tar > 1.13."
+ echo " You should provide a \"tar-1.13\" in your \$PATH."
+ sleep 5
+fi
+
+if [ $# = 0 ]; then
+ cat << EOF
+Usage: explodepkg package_name [package_name2, ...]
+
+Explodes a Slackware compatible software package
+(or any tar+{gzip,bzip2,lzma,xz archive) in the current directory.
+Equivalent to (for each package listed):
+
+ ( umask 000 ; cat package_name | COMPRESSOR -dc | tar xzvf package_name )
+
+Note: This should only be used for debugging or examining packages, not for
+installing them. It doesn't execute installation scripts or update the package
+indexes in /var/log/packages and /var/log/scripts.
+
+EOF
+fi
+
+# Main loop:
+for PKG in $* ; do
+ echo "Exploding package $PKG in current directory:"
+ # Determine extension:
+ packageext="$( echo $PKG | rev | cut -f 1 -d . | rev)"
+ # Determine compression utility:
+ case $packageext in
+ 'tgz' )
+ packagecompression=gzip
+ ;;
+ 'gz' )
+ packagecompression=gzip
+ ;;
+ 'tbz' )
+ packagecompression=bzip2
+ ;;
+ 'bz2' )
+ packagecompression=bzip2
+ ;;
+ 'tlz' )
+ packagecompression=lzma
+ ;;
+ 'lzma' )
+ packagecompression=lzma
+ ;;
+ 'txz' )
+ packagecompression=xz
+ ;;
+ 'xz' )
+ packagecompression=xz
+ ;;
+ esac
+ ( umask 000 ; cat $PKG | $packagecompression -dc | $TAR xvf - 2> /dev/null )
+ if [ -r install/doinst.sh ]; then
+ echo
+ echo "An installation script was detected in ./install/doinst.sh, but"
+ echo "was not executed."
+ fi
+done
+
diff --git a/source/a/pkgtools/scripts/installpkg b/source/a/pkgtools/scripts/installpkg
new file mode 100644
index 00000000..31bb0b71
--- /dev/null
+++ b/source/a/pkgtools/scripts/installpkg
@@ -0,0 +1,568 @@
+#!/bin/sh
+# Copyright 1994, 1998, 2000 Patrick Volkerding, Concord, CA, USA
+# Copyright 2001, 2003 Slackware Linux, Inc., Concord, CA, USA
+# Copyright 2007, 2009 Patrick Volkerding, Sebeka, MN, USA
+# All rights reserved.
+#
+# Redistribution and use of this script, with or without modification, is
+# permitted provided that the following conditions are met:
+#
+# 1. Redistributions of this script must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# 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.
+#
+# Sat Apr 25 21:18:53 UTC 2009
+# Converted to use new pkgbase() function to remove pathname and
+# valid package extensions.
+#
+# Sat Apr 4 22:58:06 CDT 2009
+# Support additional compression formats if the supporting utilities exist:
+# .tbz - bzip2
+# .tlz - lzma
+# .txz - xz (also LZMA)
+# And of course, .tgz (gzip) is not going anywhere. :-) <volkerdi>
+# Add command switches to determine the uncompressed package size even if
+# that will slow things down, and to add the package's md5sum to the
+# metadata stored in /var/log/packages/.
+#
+# Fri Dec 21 17:21:35 CST 2007
+# Added a patch from Johnny Morano to work around package removal issues
+# caused by packages that do not comply with FHS combined with a grep
+# regex error in installpkg. Any package with a single-letter top-
+# level directory could not be removed.
+#
+# Shortened some of the top-line dialog output to avoid overflowing the
+# textbox (needed as some of the packages, especially in X, have very
+# long base package names now). <pjv>
+#
+# Sun Nov 26 12:38:25 CST 1995
+# Added patch from Glenn Moloney <glenn@physics.unimelb.edu.au> to allow
+# packages to be installed to directories other than /.
+#
+# Wed Mar 18 15:15:51 CST 1998
+# Changed $TMP directory to /var/log/setup/tmp, and chmod'ed it 700 to close
+# some security holes.
+
+# Return a package name that has been stripped of the dirname portion
+# and any of the valid extensions (only):
+pkgbase() {
+ PKGEXT=$(echo $1 | rev | cut -f 1 -d . | rev)
+ case $PKGEXT in
+ 'tgz' )
+ PKGRETURN=$(basename $1 .tgz)
+ ;;
+ 'tbz' )
+ PKGRETURN=$(basename $1 .tbz)
+ ;;
+ 'tlz' )
+ PKGRETURN=$(basename $1 .tlz)
+ ;;
+ 'txz' )
+ PKGRETURN=$(basename $1 .txz)
+ ;;
+ *)
+ PKGRETURN=$(basename $1)
+ ;;
+ esac
+ echo $PKGRETURN
+}
+
+# If installpkg encounters a problem, it will return a non-zero error code.
+# If it finds more than one problem (i.e. with a list of packages) you'll only
+# hear about the most recent one. :)
+# 1 = tar returned error code
+# 2 = corrupt compression envelope
+# 3 = does not end in .tgz
+# 4 = no such file
+# 5 = external compression utility missing
+# 99 = user abort from menu mode
+EXITSTATUS=0
+
+# Do not store md5sums by default:
+MD5SUM=0
+
+# So that we know what to expect...
+umask 022
+TAR=tar-1.13
+$TAR --help 1> /dev/null 2> /dev/null
+if [ ! $? = 0 ]; then
+ TAR=tar
+fi
+if [ ! "$(LC_MESSAGES=C $TAR --version)" = "tar (GNU tar) 1.13
+
+Copyright (C) 1988, 92,93,94,95,96,97,98, 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.
+
+Written by John Gilmore and Jay Fenlason." ]; then
+ echo "WARNING: pkgtools are unstable with tar > 1.13."
+ echo " You should provide a \"tar-1.13\" in your \$PATH."
+ sleep 5
+fi
+
+usage() {
+ cat << EOF
+Usage: installpkg [options] <package_filename>
+
+Installpkg is used to install a .t{gz,bz,lz,xz} package like this:
+ installpkg slackware-package-1.0.0-i486-1.tgz (or .tbz, .tlz, .txz)
+
+options: --warn (warn if files will be overwritten, but do not install)
+ --root /mnt (install someplace else, like /mnt)
+ --infobox (use dialog to draw an info box)
+ --menu (confirm package installation with a menu, unless
+ the priority is [required] or ADD)
+ --ask (used with menu mode: always ask if a package should be
+ installed regardless of what the package's priority is)
+ --priority ADD|REC|OPT|SKP (provide a priority for the entire
+ package list to use instead of the priority in the
+ tagfile)
+ --tagfile /somedir/tagfile (specify a different file to use
+ for package priorities. The default is "tagfile" in
+ the package's directory)
+ --md5sum (record the package's md5sum in the metadata file)
+
+EOF
+}
+
+# Eliminate whitespace function:
+crunch() {
+ while read FOO ; do
+ echo $FOO
+ done
+}
+
+package_name() {
+ STRING=$(pkgbase $1)
+ # Check for old style package name with one segment:
+ if [ "$(echo $STRING | cut -f 1 -d -)" = "$(echo $STRING | cut -f 2 -d -)" ]; then
+ echo $STRING
+ else # has more than one dash delimited segment
+ # Count number of segments:
+ INDEX=1
+ while [ ! "$(echo $STRING | cut -f $INDEX -d -)" = "" ]; do
+ INDEX=$(expr $INDEX + 1)
+ done
+ INDEX=$(expr $INDEX - 1) # don't include the null value
+ # If we don't have four segments, return the old-style (or out of spec) package name:
+ if [ "$INDEX" = "2" -o "$INDEX" = "3" ]; then
+ echo $STRING
+ else # we have four or more segments, so we'll consider this a new-style name:
+ NAME=$(expr $INDEX - 3)
+ NAME="$(echo $STRING | cut -f 1-$NAME -d -)"
+ echo $NAME
+ # cruft for later ;)
+ #VER=$(expr $INDEX - 2)
+ #VER="$(echo $STRING | cut -f $VER -d -)"
+ #ARCH=$(expr $INDEX - 1)
+ #ARCH="$(echo $STRING | cut -f $ARCH -d -)"
+ #BUILD="$(echo $STRING | cut -f $INDEX -d -)"
+ fi
+ fi
+}
+
+# Parse options:
+MODE=install # standard text-mode
+while [ 0 ]; do
+ if [ "$1" = "-warn" -o "$1" = "--warn" ]; then
+ MODE=warn
+ shift 1
+ elif [ "$1" = "-md5sum" -o "$1" = "--md5sum" ]; then
+ MD5SUM=1
+ shift 1
+ elif [ "$1" = "-infobox" -o "$1" = "--infobox" ]; then
+ MODE=infobox
+ shift 1
+ elif [ "$1" = "-menu" -o "$1" = "--menu" ]; then
+ MODE=menu
+ shift 1
+ elif [ "$1" = "-ask" -o "$1" = "--ask" ]; then
+ ALWAYSASK="yes"
+ shift 1
+ elif [ "$1" = "-tagfile" -o "$1" = "--tagfile" ]; then
+ if [ -r "$2" ]; then
+ USERTAGFILE="$2"
+ elif [ -r "$(pwd)/$2" ]; then
+ USERTAGFILE="$(pwd)/$2"
+ else
+ usage
+ exit
+ fi
+ shift 2
+ elif [ "$1" = "-priority" -o "$1" = "--priority" ]; then
+ if [ "$2" = "" ]; then
+ usage
+ exit
+ fi
+ USERPRIORITY="$2"
+ shift 2
+ elif [ "$1" = "-root" -o "$1" = "--root" ]; then
+ if [ "$2" = "" ]; then
+ usage
+ exit
+ fi
+ ROOT="$2"
+ shift 2
+ else
+ break
+ fi
+done
+
+# Set the prefix for the package database directories (packages, scripts).
+ADM_DIR="$ROOT/var/log"
+# If the directories don't exist, "initialize" the package database:
+for PKGDBDIR in packages removed_packages removed_scripts scripts setup ; do
+ if [ ! -d $ADM_DIR/$PKGDBDIR ]; then
+ rm -rf $ADM_DIR/$PKGDBDIR # make sure it's not a symlink or something stupid
+ mkdir -p $ADM_DIR/$PKGDBDIR
+ chmod 755 $ADM_DIR/$PKGDBDIR
+ fi
+done
+
+# Make sure there's a proper temp directory:
+TMP=$ADM_DIR/setup/tmp
+# If the $TMP directory doesn't exist, create it:
+if [ ! -d $TMP ]; then
+ rm -rf $TMP # make sure it's not a symlink or something stupid
+ mkdir -p $TMP
+ chmod 700 $TMP # no need to leave it open
+fi
+
+# usage(), exit if called with no arguments:
+if [ $# = 0 ]; then
+ usage;
+ exit
+fi
+
+# If -warn mode was requested, produce the output and then exit:
+if [ "$MODE" = "warn" ]; then
+ while [ -f "$1" ]; do
+ echo "#### Scanning the contents of $1..."
+ mkdir -p $TMP/scan$$
+ # Determine extension:
+ packageext="$( echo $1 | rev | cut -f 1 -d . | rev)"
+ # Determine compressor utility:
+ case $packageext in
+ 'tgz' )
+ packagecompression=gzip
+ ;;
+ 'tbz' )
+ packagecompression=bzip2
+ ;;
+ 'tlz' )
+ packagecompression=lzma
+ ;;
+ 'txz' )
+ packagecompression=xz
+ ;;
+ esac
+ ( cd $TMP/scan$$ ; $packagecompression -dc | $TAR xf - install ) < $1 2> /dev/null
+ if [ -r $TMP/scan$$/install/doinst.sh ]; then
+ if cat $TMP/scan$$/install/doinst.sh | grep ' rm -rf ' 1>/dev/null 2>/dev/null ; then
+ cat $TMP/scan$$/install/doinst.sh | grep ' rm -rf ' > $TMP/scan$$/install/delete
+ echo "The following locations will be completely WIPED OUT to allow symbolic"
+ echo "links to be made. (We're talking 'rm -rf') These locations may be files,"
+ echo "or entire directories. Be sure you've backed up anything at these"
+ echo "locations that you want to save before you install this package:"
+ cat $TMP/scan$$/install/delete | cut -f 3,7 -d ' ' | tr ' ' '/'
+ fi
+ if [ -d $TMP/scan$$ ]; then
+ ( cd $TMP/scan$$ ; rm -rf install ) 2> /dev/null
+ ( cd $TMP ; rmdir scan$$ ) 2> /dev/null
+ fi
+ fi
+ echo "The following files will be overwritten when installing this package."
+ echo "Be sure they aren't important before you install this package:"
+ ( $packagecompression -dc | $TAR tvvf - ) < $1 | grep -v 'drwx'
+ echo
+ shift 1
+ done
+ exit
+fi
+
+# Main loop:
+for package in $* ; do
+
+ # Simple package integrity check:
+ if [ ! -f $package ]; then
+ EXITSTATUS=4
+ if [ "$MODE" = "install" ]; then
+ echo "Cannot install $package: file not found"
+ fi
+ continue;
+ fi
+
+ # "shortname" isn't really THAT short...
+ # it's just the full name without ".t{gz,bz,lz,xz}"
+ shortname="$(pkgbase $package)"
+ packagedir="$(dirname $package)"
+ # This is the base package name, used for grepping tagfiles and descriptions:
+ packagebase="$(package_name $shortname)"
+
+ # Reject package if it does not end in '.t{gz,bz,lz,xz}':
+ if [ "$shortname" = "$(basename $package)" ]; then
+ EXITSTATUS=3
+ if [ "$MODE" = "install" ]; then
+ echo "Cannot install $package: file does not end in .tgz, .tbz, .tlz, or .txz"
+ fi
+ continue;
+ fi
+
+ # Determine extension:
+ packageext="$(echo $package | rev | cut -f 1 -d . | rev)"
+
+ # Determine compressor utility:
+ case $packageext in
+ 'tgz' )
+ packagecompression=gzip
+ ;;
+ 'tbz' )
+ packagecompression=bzip2
+ ;;
+ 'tlz' )
+ packagecompression=lzma
+ ;;
+ 'txz' )
+ packagecompression=xz
+ ;;
+ esac
+
+ # Test presence of external compression utility:
+ if ! $packagecompression --help 1> /dev/null 2> /dev/null ; then
+ EXITSTATUS=5
+ if [ "$MODE" = "install" ]; then
+ echo "Cannot install $package: external compression utility $packagecompression missing"
+ fi
+ continue;
+ fi
+
+ # Determine package's priority:
+ unset PRIORITY
+ if [ "$USERTAGFILE" = "" ]; then
+ TAGFILE="$packagedir/tagfile"
+ else
+ TAGFILE="$USERTAGFILE"
+ fi
+ if [ ! -r "$TAGFILE" ]; then
+ TAGFILE=/dev/null
+ fi
+ if grep "^$packagebase:" "$TAGFILE" | grep ADD > /dev/null 2> /dev/null ; then
+ PRIORITY="ADD"
+ elif grep "^$packagebase:" "$TAGFILE" | grep REC > /dev/null 2> /dev/null ; then
+ PRIORITY="REC"
+ elif grep "^$packagebase:" "$TAGFILE" | grep OPT > /dev/null 2> /dev/null ; then
+ PRIORITY="OPT"
+ elif grep "^$packagebase:" "$TAGFILE" | grep SKP > /dev/null 2> /dev/null ; then
+ PRIORITY="SKP"
+ fi
+ if [ "$PRIORITY" = "ADD" ]; then
+ PMSG="[ADD]"
+ elif [ "$PRIORITY" = "REC" ]; then
+ PMSG="[REC]"
+ elif [ "$PRIORITY" = "OPT" ]; then
+ PMSG="[OPT]"
+ elif [ "$PRIORITY" = "SKP" ]; then
+ PMSG="[SKP]"
+ else
+ PMSG=""
+ fi
+
+ # If a tagfile wants this package to be skipped, do that now before
+ # wasting any more CPU on it:
+ if [ "$PRIORITY" = "SKP" -a ! "$ALWAYSASK" = "yes" ]; then
+ continue # next package
+ fi
+
+ # Figure out some package information, like the compressed and uncompressed
+ # sizes, and where to find the package description:
+ COMPRESSED="$(du -s $package | cut -f 1)K"
+ DESCRIPTION=""
+ # First check for .txt file next to the package, since this is faster:
+ if grep "^$packagebase:" "$packagedir/$shortname.txt" 1> /dev/null 2> /dev/null ; then
+ DESCRIPTION="$packagedir/$shortname.txt"
+ elif grep "^$shortname:" "$packagedir/$shortname.txt" 1> /dev/null 2> /dev/null ; then
+ DESCRIPTION="$packagedir/$shortname.txt"
+ fi
+
+ # Test tarball integrity and get uncompressed package size:
+ if [ "$MODE" = "install" ]; then
+ echo "Verifying package $(basename $package)."
+ fi
+ cat $package | $packagecompression -dc | dd 2> $TMP/tmpsize$$ | $TAR tf - 1> $TMP/tmplist$$ 2> /dev/null
+ TARERROR=$?
+ if [ ! "$TARERROR" = "0" ]; then
+ EXITSTATUS=1 # tar file corrupt
+ if [ "$MODE" = "install" ]; then
+ echo "Unable to install $package: tar archive is corrupt (tar returned error code $TARERROR)"
+ fi
+ rm -f $TMP/tmplist$$ $TMP/tmpsize$$
+ continue
+ fi
+ UNCOMPRESSED="$(expr $(cat $TMP/tmpsize$$ | head -n 1 | cut -f 1 -d +) / 2)K"
+ rm -f $TMP/tmpsize$$
+
+ # If we still don't have a package description, look inside the package.
+ # This requires a costly untar.
+ if [ "$DESCRIPTION" = "" ]; then
+ mkdir -p $TMP/scan$$
+ ( cd $TMP/scan$$ ; $packagecompression -dc | $TAR xf - install ) < $package 2> /dev/null
+ if grep "^$packagebase:" "$TMP/scan$$/install/slack-desc" 1> /dev/null 2> /dev/null ; then
+ DESCRIPTION="$TMP/scan$$/install/slack-desc"
+ elif grep "^$shortname:" "$TMP/scan$$/install/slack-desc" 1> /dev/null 2> /dev/null ; then
+ DESCRIPTION="$TMP/scan$$/install/slack-desc"
+ fi
+ fi
+
+ if [ "$DESCRIPTION" = "" ]; then
+ #echo "WARNING NO SLACK-DESC"
+ DESCRIPTION="/dev/null"
+ fi
+
+ # Gather package infomation into a temporary file:
+ cat $DESCRIPTION | grep "^$packagebase:" | cut -f 2- -d : | cut -b2- 1> $TMP/tmpmsg$$ 2> /dev/null
+ if [ "$shortname" != "$packagebase" ]; then
+ cat $DESCRIPTION | grep "^$shortname:" | cut -f 2- -d : | cut -b2- 1>> $TMP/tmpmsg$$ 2> /dev/null
+ fi
+ # Adjust the length here. This allows a slack-desc to be any size up to 13 lines instead of fixed at 11.
+ LENGTH=$(cat $TMP/tmpmsg$$ | wc -l)
+ while [ $LENGTH -lt 12 ]; do
+ echo >> $TMP/tmpmsg$$
+ LENGTH=$(expr $LENGTH + 1)
+ done
+ echo "Size: Compressed: ${COMPRESSED}, uncompressed: ${UNCOMPRESSED}." >> $TMP/tmpmsg$$
+ # For recent versions of dialog it is necessary to add \n to the end of each line
+ # or it will remove repeating spaces and mess up our careful formatting:
+ cat << EOF > $TMP/controlns$$
+\n
+\n
+\n
+\n
+\n
+\n
+\n
+\n
+\n
+\n
+\n
+\n
+\n
+EOF
+ paste -d "" $TMP/tmpmsg$$ $TMP/controlns$$ > $TMP/pasted$$
+ rm -f $TMP/controlns$$
+ mv $TMP/pasted$$ $TMP/tmpmsg$$
+ # Emit information to the console:
+ if [ "$MODE" = "install" ]; then
+ if [ "$PMSG" = "" ]; then
+ echo "Installing package $(basename $package):"
+ else
+ echo "Installing package $(basename $package) $PMSG:"
+ fi
+ echo "PACKAGE DESCRIPTION:"
+ cat $DESCRIPTION | grep "^$packagebase:" | uniq | sed "s/^$packagebase:/#/g"
+ if [ "$shortname" != "$packagebase" ]; then
+ cat $DESCRIPTION | grep "^$shortname:" | uniq | sed "s/^$shortname:/#/g"
+ fi
+ elif [ "$MODE" = "infobox" ]; then # install infobox package
+ dialog --title "Installing package $shortname $PMSG" --infobox "$(cat $TMP/tmpmsg$$)" 0 0
+ elif [ "$MODE" = "menu" -a "$PRIORITY" = "ADD" -a ! "$ALWAYSASK" = "yes" ]; then # ADD overrides menu mode unless -ask was used
+ dialog --title "Installing package $shortname $PMSG" --infobox "$(cat $TMP/tmpmsg$$)" 0 0
+ elif [ "$MODE" = "menu" -a "$USERPRIORITY" = "ADD" ]; then # install no matter what $PRIORITY
+ dialog --title "Installing package $shortname $PMSG" --infobox "$(cat $TMP/tmpmsg$$)" 0 0
+ else # we must need a full menu:
+ dialog --title "Package Name: $shortname $PMSG" --menu "$(cat $TMP/tmpmsg$$)" 0 0 3 \
+ "Yes" "Install package $shortname" \
+ "No" "Do not install package $shortname" \
+ "Quit" "Abort software installation completely" 2> $TMP/reply$$
+ if [ ! $? = 0 ]; then
+ echo "No" > $TMP/reply$$
+ fi
+ REPLY="$(cat $TMP/reply$$)"
+ rm -f $TMP/reply$$ $TMP/tmpmsg$$
+ if [ "$REPLY" = "Quit" ]; then
+ exit 99 # EXIT STATUS 99 = ABORT!
+ elif [ "$REPLY" = "No" ]; then
+ continue # skip the package
+ fi
+ fi
+
+ # Make sure there are no symbolic links sitting in the way of
+ # incoming package files:
+ cat $TMP/tmplist$$ | grep -v "/$" | while read file ; do
+ if [ -L "$ROOT/$file" ]; then
+ rm -f "$ROOT/$file"
+ fi
+ done
+ rm -f $TMP/tmplist$$
+
+ # Write the package file database entry and install the package:
+ echo "PACKAGE NAME: $shortname" > $ADM_DIR/packages/$shortname
+ echo "COMPRESSED PACKAGE SIZE: $COMPRESSED" >> $ADM_DIR/packages/$shortname
+ echo "UNCOMPRESSED PACKAGE SIZE: $UNCOMPRESSED" >> $ADM_DIR/packages/$shortname
+ echo "PACKAGE LOCATION: $package" >> $ADM_DIR/packages/$shortname
+ # Record the md5sum if that's a selected option:
+ if [ $MD5SUM = 1 ]; then
+ echo "PACKAGE MD5SUM: $(md5sum $package | cut -f 1 -d ' ')" >> $ADM_DIR/packages/$shortname
+ fi
+ echo "PACKAGE DESCRIPTION:" >> $ADM_DIR/packages/$shortname
+ cat $DESCRIPTION | grep "^$packagebase:" >> $ADM_DIR/packages/$shortname 2> /dev/null
+ if [ "$shortname" != "$packagebase" ]; then
+ cat $DESCRIPTION | grep "^$shortname:" >> $ADM_DIR/packages/$shortname 2> /dev/null
+ fi
+ echo "FILE LIST:" >> $ADM_DIR/packages/$shortname
+ ( cd $ROOT/ ; $packagecompression -dc | $TAR -xlUpvf - ) < $package >> $TMP/$shortname 2> /dev/null
+ if [ "$(cat $TMP/$shortname | grep '^\./' | wc -l | tr -d ' ')" = "1" ]; then
+ # Good. We have a package that meets the Slackware spec.
+ cat $TMP/$shortname >> $ADM_DIR/packages/$shortname
+ else
+ # Some dumb bunny built a package with something other than makepkg. Bad!
+ # Oh well. Bound to happen. Par for the course. Fix it and move on...
+ echo "WARNING: Package has not been created with 'makepkg'"
+ echo './' >> $ADM_DIR/packages/$shortname
+ cat $TMP/$shortname >> $ADM_DIR/packages/$shortname
+ fi
+ rm -f $TMP/$shortname
+
+ # It's a good idea to make sure those newly installed libraries
+ # are properly activated for use:
+ if [ -x /sbin/ldconfig ]; then
+ /sbin/ldconfig
+ fi
+
+ if [ -f $ROOT/install/doinst.sh ]; then
+ if [ "$MODE" = "install" ]; then
+ echo "Executing install script for $(basename $package)."
+ fi
+ ( cd $ROOT/ ; sh install/doinst.sh -install; )
+ fi
+ # Clean up the mess...
+ if [ -d $ROOT/install ]; then
+ if [ -r $ROOT/install/doinst.sh ]; then
+ cp $ROOT/install/doinst.sh $ADM_DIR/scripts/$shortname
+ chmod 755 $ADM_DIR/scripts/$shortname
+ fi
+ # /install/doinst.sh and /install/slack-* are reserved locations for the package system.
+ ( cd $ROOT/install ; rm -f doinst.sh slack-* 1> /dev/null 2>&1 )
+ rmdir $ROOT/install 1> /dev/null 2>&1
+ fi
+ # If we used a scan directory, get rid of it:
+ if [ -d "$TMP/scan$$" ]; then
+ rm -rf "$TMP/scan$$"
+ fi
+ rm -f $TMP/tmpmsg$$ $TMP/reply$$
+ if [ "$MODE" = "install" ]; then
+ echo "Package $(basename $package) installed."
+ echo
+ fi
+done
+
+exit $EXITSTATUS
diff --git a/source/a/pkgtools/scripts/makebootdisk b/source/a/pkgtools/scripts/makebootdisk
new file mode 100644
index 00000000..86b843a8
--- /dev/null
+++ b/source/a/pkgtools/scripts/makebootdisk
@@ -0,0 +1,444 @@
+#!/bin/sh
+# Copyright 1995, 1998, 2002, 2005 Patrick Volkerding, Moorhead, Minnesota USA
+# All rights reserved.
+#
+# Redistribution and use of this script, with or without modification, is
+# permitted provided that the following conditions are met:
+#
+# 1. Redistributions of this script must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# 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.
+#
+
+if [ ! "$UID" = "0" ]; then
+ echo "You need to be root to run this script."
+ exit 1
+fi
+
+# Was a kernel specified on the command line?
+if [ -r "$1" ]; then
+ KERNEL=$1
+ KMSG="Using kernel $KERNEL"
+else
+ KMSG="No kernel selected yet"
+fi
+
+# Make sure there's a proper temp directory:
+TMP=/var/log/setup/tmp
+# If the $TMP directory doesn't exist, create it:
+if [ ! -d $TMP ]; then
+ rm -rf $TMP # make sure it's not a symlink or something stupid
+ mkdir -p $TMP
+ chmod 700 $TMP # no need to leave it open
+fi
+
+ROOT_DEVICE="`mount | grep ' on / ' | cut -f 1 -d ' '`"
+
+if mount | grep ' on / ' | grep umsdos 1> /dev/null 2> /dev/null ; then
+ MOUNT="read-write"
+else
+ MOUNT="read-only"
+fi
+
+make_root_device() {
+# Make a device:
+makedev() {
+ if [ ! -b $1 ]; then
+ mknod $1 b $2 $3
+ chown root.disk $1
+ chmod 640 $1
+ fi
+}
+
+# Make ide device
+# make ide major minor hd1 hd2 (2 base devs for major)
+make_ide() {
+ # Handle base devices:
+ if [ "$2" = "0" ]; then
+ makedev $TMP/lilo/dev/$3 $1 $2
+ return 0
+ elif [ "$2" = "64" ]; then
+ makedev $TMP/lilo/dev/$4 $1 $2
+ return 0
+ fi
+ # Must be a partition:
+ if [ "`expr $2 / 64`" = "0" ]; then
+ DEV=$3
+ NUM=$2
+ else
+ DEV=$4
+ NUM=`expr $2 - 64`
+ fi
+ makedev $TMP/lilo/dev/$DEV$NUM $1 $2
+}
+
+# Make SCSI device
+make_scsi() {
+ # find drive # 0 - 15
+ DRV=`expr $1 / 16`
+ NUM=`expr $1 % 16`
+ if [ "$NUM" = "0" ]; then
+ NUM=""
+ fi
+ if [ "$DRV" = "0" ]; then
+ makedev $TMP/lilo/dev/sda$NUM 8 $1
+ elif [ "$DRV" = "1" ]; then
+ makedev $TMP/lilo/dev/sdb$NUM 8 $1
+ elif [ "$DRV" = "2" ]; then
+ makedev $TMP/lilo/dev/sdc$NUM 8 $1
+ elif [ "$DRV" = "3" ]; then
+ makedev $TMP/lilo/dev/sdd$NUM 8 $1
+ elif [ "$DRV" = "4" ]; then
+ makedev $TMP/lilo/dev/sde$NUM 8 $1
+ elif [ "$DRV" = "5" ]; then
+ makedev $TMP/lilo/dev/sdf$NUM 8 $1
+ elif [ "$DRV" = "6" ]; then
+ makedev $TMP/lilo/dev/sdg$NUM 8 $1
+ elif [ "$DRV" = "7" ]; then
+ makedev $TMP/lilo/dev/sdh$NUM 8 $1
+ elif [ "$DRV" = "8" ]; then
+ makedev $TMP/lilo/dev/sdi$NUM 8 $1
+ elif [ "$DRV" = "9" ]; then
+ makedev $TMP/lilo/dev/sdj$NUM 8 $1
+ elif [ "$DRV" = "10" ]; then
+ makedev $TMP/lilo/dev/sdk$NUM 8 $1
+ elif [ "$DRV" = "11" ]; then
+ makedev $TMP/lilo/dev/sdl$NUM 8 $1
+ elif [ "$DRV" = "12" ]; then
+ makedev $TMP/lilo/dev/sdm$NUM 8 $1
+ elif [ "$DRV" = "13" ]; then
+ makedev $TMP/lilo/dev/sdn$NUM 8 $1
+ elif [ "$DRV" = "14" ]; then
+ makedev $TMP/lilo/dev/sdo$NUM 8 $1
+ elif [ "$DRV" = "15" ]; then
+ makedev $TMP/lilo/dev/sdp$NUM 8 $1
+ fi
+}
+
+if cat /proc/partitions | grep / 1> /dev/null 2> /dev/null ; then # new
+ cat /proc/partitions | grep / | while read line ; do
+ SMASHED_LINE=$line
+ MAJOR=`echo $SMASHED_LINE | cut -f 1 -d ' '`
+ MINOR=`echo $SMASHED_LINE | cut -f 2 -d ' '`
+ if [ "$MAJOR" = "3" ]; then
+ make_ide $MAJOR $MINOR hda hdb
+ elif [ "$MAJOR" = "8" ]; then
+ make_scsi $MINOR
+ elif [ "$MAJOR" = "22" ]; then
+ make_ide $MAJOR $MINOR hdc hdd
+ elif [ "$MAJOR" = "33" ]; then
+ make_ide $MAJOR $MINOR hde hdf
+ elif [ "$MAJOR" = "34" ]; then
+ make_ide $MAJOR $MINOR hdg hdh
+ elif [ "$MAJOR" = "56" ]; then
+ make_ide $MAJOR $MINOR hdi hdj
+ fi
+ done
+else # old format
+ cat /proc/partitions | grep d | while read line ; do
+ SMASHED_LINE=$line
+ MAJOR=`echo $SMASHED_LINE | cut -f 1 -d ' '`
+ MINOR=`echo $SMASHED_LINE | cut -f 2 -d ' '`
+ DEVNAME=`echo $SMASHED_LINE | cut -f 4 -d ' '`
+ makedev $TMP/lilo/dev/$DEVNAME $MAJOR $MINOR
+ done
+fi
+}
+
+choose_kernel() {
+while [ 0 ]; do # input loop
+cat << EOF > $TMP/tmpmsg
+
+Some possible paths to kernels are these:
+
+/boot/vmlinuz
+/usr/src/linux/arch/i386/boot/bzImage
+/usr/src/linux/arch/i386/boot/zImage
+/vmlinuz
+
+Put the path to the kernel you want to use in the box below.
+
+EOF
+
+ dialog --title "CHOOSE KERNEL" --inputbox "`cat $TMP/tmpmsg`" \
+ 16 72 "/boot/vmlinuz" 2> $TMP/return
+ if [ ! $? = 0 ]; then
+ exit
+ fi
+
+ KERNEL="`cat $TMP/return`"
+
+ if [ ! -r "$KERNEL" ]; then
+ dialog --title "NOT FOUND!" --msgbox "$KERNEL" 5 60
+ continue
+ fi
+ KMSG="Using kernel $KERNEL"
+break
+done
+}
+
+format_disk() {
+ # If anyone still uses 1.2 MB, you'll have to uncomment this.
+ # It's no longer a default option.
+ #FDEV=/dev/fd0h1200
+ #FDEV=/dev/fd0u1400
+ FDEV=/dev/fd0u1680
+ if [ "$FDEV" = "/dev/fd0u1680" ]; then
+ dialog --title "Formatting /dev/fd0u1680" --infobox \
+ "Formatting /dev/fd0, 1.68 megabytes." 3 42
+ elif [ "$FDEV" = "/dev/fd0u1400" ]; then
+ dialog --title "Formatting /dev/fd0u1440" --infobox \
+ "Formatting /dev/fd0, 1.44 megabytes." 3 42
+ elif [ "$FDEV" = "/dev/fd0h1200" ]; then
+ dialog --title "Formatting /dev/fd0h1200" --infobox \
+ "Formatting /dev/fd0, 1.2 megabytes." 3 42
+ fi
+ fdformat $FDEV 1> /dev/null 2> /dev/null
+ if [ ! $? = 0 ]; then
+ dialog --title "ERROR: FLOPPY FORMAT FAILED" --msgbox "The attempt to format the floppy \
+disk in /dev/fd0 has failed, probably due to bad media. Please try again with a \
+different disk. If that doesn't work, perhaps the drive needs cleaning." 0 0
+ return 1
+ fi
+}
+
+DEFAULT_ITEM="syslinux"
+
+while [ 0 ]; do # menu loop
+ dialog --title "MAKE BOOT FLOPPY FROM KERNEL" \
+--default-item $DEFAULT_ITEM \
+--backtitle "$KMSG" --menu "This menu allows you to make a SYSLINUX bootdisk \
+from a compiled kernel. The SYSLINUX bootloader has the advantage of \
+using a FAT filesystem making it easy to replace the kernel later. \
+Which option would you like?" 12 67 2 \
+"syslinux" "Make a SYSLINUX bootdisk" \
+"exit" "Exit this program" 2> $TMP/return
+ if [ ! $? = 0 ]; then
+ break;
+ fi
+ REPLY=`cat $TMP/return`
+ rm -f $TMP/return
+ if [ "$REPLY" = "simple" ]; then # make simple bootdisk
+ if [ "$KERNEL" = "" ]; then
+ choose_kernel
+ fi
+ kernel_size=`du -Lk $KERNEL | cut -f1`
+ if [ "$kernel_size" -gt "1023" ]; then
+cat << EOF > $TMP/tmpmsg
+
+The kernel $KERNEL is $kernel_size K (which is
+more than 1023 Kb in size), so it probably won't
+boot standalone on the floppy. Use the 'syslinux'
+method instead.
+
+EOF
+ dialog --title "KERNEL TOO BIG!" --msgbox "`cat $TMP/tmpmsg`" 10 60
+ continue
+ fi
+ dialog --title "BOOT DISK CREATION" --backtitle "$KMSG" --yesno \
+"\n\
+Now put a formatted floppy in your boot drive. \n\
+This will be made into your Linux boot disk. Use this to\n\
+boot Linux until LILO has been configured to boot from\n\
+the hard drive.\n\n\
+Any data on the target disk will be destroyed.\n\n\
+YES creates the disk, NO aborts.\n" 14 62
+ if [ $? = 0 ]; then
+ format_disk
+ dialog --title "CREATING DISK" --infobox "Creating boot disk from $KERNEL..." 5 72
+ dd if=$KERNEL of=/dev/fd0 2> /dev/null
+ rdev /dev/fd0 $ROOT_DEVICE
+ rdev -v /dev/fd0 -1
+ if [ "$MOUNT" = "read-only" ]; then
+ rdev -R /dev/fd0 1
+ else
+ rdev -R /dev/fd0 0
+ fi
+ fi
+ elif [ "$REPLY" = "syslinux" ]; then # make syslinux bootdisk
+ DEFAULT_ITEM="exit"
+ if [ "$KERNEL" = "" ]; then
+ choose_kernel
+ fi
+ dialog --title "CREATING SYSLINUX BOOTDISK IN /dev/fd0" --backtitle "$KMSG" --yesno "Now put a \
+floppy in your boot drive. This will be made into a SYSLINUX \
+bootdisk that you can use to start your Linux system. Any data on the \
+target disk will be destroyed. YES creates the disk, NO aborts." 8 62
+ if [ $? = 0 ]; then # make the disk
+ format_disk
+ if [ ! $? = 0 ]; then
+ continue
+ fi
+ dialog --title "CREATING BOOT FLOPPY" --infobox "Creating SYSLINUX bootdisk for \
+$ROOT_DEVICE in /dev/fd0." 3 64
+ mkdosfs -F 12 /dev/fd0u1680 1680 1> /dev/null 2> /dev/null
+ if [ ! -d $TMP/bootdisk ]; then
+ mkdir $TMP/bootdisk
+ fi
+ mount -t vfat /dev/fd0 $TMP/bootdisk 1> /dev/null 2> /dev/null
+ cp $KERNEL $TMP/bootdisk/vmlinuz
+ ## This avoids a syslinux-1.72 bug, and doesn't seem to hurt anything:
+ #dd if=/dev/zero bs=1k count=1 >> $TMP/bootdisk/vmlinuz 2> /dev/null
+ if [ ! "$?" = "0" ]; then
+ dialog --title "ERROR COPYING KERNEL TO FLOPPY" \
+ --msgbox "Sorry, but there was an error copying the kernel to the \
+floppy disk. Possibly the kernel is too large to fit the disk. \
+This program will now exit." 0 0
+ umount /dev/fd0
+ rm -rf $TMP/bootdisk
+ exit 1
+ fi
+ cat << EOF > $TMP/bootdisk/message.txt
+
+Welcome to the 09Slackware07 Linux custom bootdisk!
+
+By default, this disk boots a root Linux partition on $ROOT_DEVICE when you
+hit ENTER. If you'd like to boot some other partition, use a command like
+this on the prompt below:
+
+ mount root=/dev/sda1 ro
+
+Where "/dev/sda1" is the partition you want to boot, and "ro" specifies that
+the partition should be initially mounted as read-only. If you wish to mount
+the partition read-write, use "rw" instead. To set the video console mode,
+use the vga= parameter (press F1 to see a table). You may also add any other
+kernel parameters you might need depending on your hardware, and which
+drivers are included in your kernel.
+
+EOF
+ cat << EOF > $TMP/bootdisk/syslinux.cfg
+default vmlinuz ramdisk_size=7000 root=$ROOT_DEVICE vga=normal ro
+prompt 1
+timeout 6000
+display message.txt
+F1 f1.txt
+F2 message.txt
+#F3 f3.txt
+#F4 f4.txt
+#F5 f5.txt
+#F6 f6.txt
+#F7 f7.txt
+label mount
+ kernel vmlinuz
+ append ramdisk_size=7000 root=$ROOT_DEVICE vga=normal ro
+label ramdisk
+ kernel vmlinuz
+ append vmlinuz ramdisk_size=7000 root=/dev/fd0u1440 vga=normal rw
+EOF
+ cat << EOF > $TMP/bootdisk/f1.txt
+ STANDARD MODES:
+ To make the kernel prompt for standard video modes use: vga=ask
+
+ FRAMEBUFFER MODES:
+ To get the kernel to start in VESA framebuffer mode, you need to pass it
+ a vga= init string on the "boot:" prompt. Here's a table:
+
+ Colors 640x480 800x600 1024x768 1280x1024 1600x1200
+ --------+---------------------------------------------
+ 256 | 769 771 773 775 796
+ 32,768 | 784 787 790 793 797
+ 65,536 | 785 788 791 794 798
+ 16.8M | 786 789 792 795 799
+
+ ...such as this for 1024x768x64k:
+ vga=791
+
+ F2 returns to the previous page.
+
+EOF
+ umount /dev/fd0
+ syslinux-nomtools -s /dev/fd0
+ rm -r $TMP/bootdisk
+ fi
+ elif [ "$REPLY" = "lilo" ]; then # make lilo bootdisk
+ DEFAULT_ITEM="exit"
+ if [ ! -x "`type -path lilo`" ]; then
+cat << EOF > $TMP/tmpmsg
+
+You don't have 'lilo' installed on the system.
+I guess you didn't install the lilo package.
+
+EOF
+ dialog --title "LILO NOT FOUND" --msgbox "`cat $TMP/tmpmsg`" 8 60
+ continue
+ fi
+ if [ "$KERNEL" = "" ]; then
+ choose_kernel
+ fi
+ dialog --title "CREATING LILO BOOTDISK IN /dev/fd0" --backtitle "$KMSG" --yesno "Now put a \
+floppy in your boot drive. This will be made into a LILO \
+bootdisk that you can use to start your Linux system. Any data on the \
+target disk will be destroyed. YES creates the disk, NO aborts." 8 62
+ if [ $? = 0 ]; then # make the disk
+ format_disk
+ DEV=/dev/fd0u1680
+ mknod_fd="-m 0640 $TMP/lilo$DEV b 2 44"
+ dialog --infobox "Creating LILO bootdisk from $KERNEL for $ROOT_DEVICE..." 4 60
+ mke2fs -q -m 0 -i 4096 $DEV 1> /dev/null 2> /dev/null || exit 1
+ if [ ! -d $TMP/lilo ]; then
+ mkdir -p $TMP/lilo
+ fi
+ mount -t ext2 $DEV $TMP/lilo 1> /dev/null || exit 1
+ rmdir $TMP/lilo/lost+found
+ cp $KERNEL $TMP/lilo/vmlinuz || exit 1
+ mkdir $TMP/lilo/dev
+ make_root_device
+ mknod -m 0640 $TMP/lilo/dev/fd0 b 2 0
+ mknod -m 0640 $TMP/lilo/dev/fd1 b 2 1
+ mknod $mknod_fd
+ mknod -m 0666 $TMP/lilo/dev/null c 1 3
+ mkdir $TMP/lilo/etc
+ cat << EOF > $TMP/lilo/etc/lilo.conf
+boot = $DEV
+message=/boot/message
+backup=/dev/null
+prompt
+image = /vmlinuz
+ label = mount
+ ramdisk = 0
+ root = $ROOT_DEVICE
+ vga = normal
+ $MOUNT
+EOF
+ mkdir $TMP/lilo/boot
+ cp -a /boot/chain.b $TMP/lilo/boot
+ if [ -f /boot/boot-text.b ]; then
+ cp -a /boot/boot-text.b $TMP/lilo/boot/boot.b
+ else
+ cp -a /boot/boot.b $TMP/lilo/boot
+ fi
+ cat << EOF > $TMP/lilo/boot/message
+
+Welcome to the Slackware Linux custom LILO bootdisk!
+
+By default, this disk boots a root Linux partition on $ROOT_DEVICE when
+you hit ENTER. If you'd like to boot some other partition, use a command
+like this on the LILO prompt below:
+
+ mount root=/dev/sda1 ro
+
+Where "/dev/sda1" is the partition you want to boot, and "ro" specifies that
+the partition should be initially mounted as read-only. If you which to mount
+the partition read-write, use "rw" instead. You may also add any other kernel
+parameters you might need depending on your hardware, and which drivers are
+included in your kernel.
+
+EOF
+ lilo -r $TMP/lilo > /dev/null
+ umount $TMP/lilo
+ rm -rf $TMP/lilo
+ fi
+ elif [ "$REPLY" = "exit" ]; then
+ break;
+ fi
+done
diff --git a/source/a/pkgtools/scripts/makepkg b/source/a/pkgtools/scripts/makepkg
new file mode 100644
index 00000000..e6805476
--- /dev/null
+++ b/source/a/pkgtools/scripts/makepkg
@@ -0,0 +1,347 @@
+#!/bin/sh
+# Copyright 1994, 1998, 2008 Patrick Volkerding, Moorhead, Minnesota USA
+# Copyright 2003 Slackware Linux, Inc. Concord, CA USA
+# Copyright 2009 Patrick J. Volkerding, Sebeka, MN, USA
+# All rights reserved.
+#
+# Redistribution and use of this script, with or without modification, is
+# permitted provided that the following conditions are met:
+#
+# 1. Redistributions of this script must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# 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.
+#
+# Sun Apr 5 21:23:26 CDT 2009
+# Support .tgz, .tbz, .tlz, and .txz packages. <volkerdi>
+#
+# Wed Mar 18 15:32:33 CST 1998
+# Patched to avoid possible symlink attacks in /tmp.
+
+CWD=$(pwd)
+
+TAR=tar-1.13
+umask 022
+$TAR --help 1> /dev/null 2> /dev/null
+if [ ! $? = 0 ]; then
+ TAR=tar
+fi
+if [ ! "$(LC_MESSAGES=C $TAR --version)" = "tar (GNU tar) 1.13
+
+Copyright (C) 1988, 92,93,94,95,96,97,98, 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.
+
+Written by John Gilmore and Jay Fenlason." ]; then
+ echo "WARNING: pkgtools are unstable with tar > 1.13."
+ echo " You should provide a \"tar-1.13\" in your \$PATH."
+ sleep 5
+fi
+
+make_install_script() {
+ COUNT=1
+ LINE="$(sed -n "$COUNT p" $1)"
+ while [ ! "$LINE" = "" ]; do
+ LINKGOESIN="$(echo "$LINE" | cut -f 1 -d " ")"
+ LINKGOESIN="$(dirname $LINKGOESIN)"
+ LINKNAMEIS="$(echo "$LINE" | cut -f 1 -d ' ')"
+ LINKNAMEIS="$(basename "$LINKNAMEIS")"
+ LINKPOINTSTO="$(echo "$LINE" | cut -f 3 -d ' ')"
+ echo "( cd $LINKGOESIN ; rm -rf $LINKNAMEIS )"
+ echo "( cd $LINKGOESIN ; ln -sf $LINKPOINTSTO $LINKNAMEIS )"
+ COUNT=$(expr $COUNT + 1)
+ LINE="$(sed -n "$COUNT p" $1)"
+ done
+}
+
+usage() {
+ cat << EOF
+
+Usage: makepkg package_name.tgz
+ (or: package_name.tbz, package_name.tlz, package_name.txz)
+
+Makes a Slackware compatible package containing the contents of the current
+and all subdirectories. If symbolic links exist, they will be removed and
+an installation script will be made to recreate them later. This script will
+be called "install/doinst.sh". You may add any of your own ash-compatible
+shell scripts to this file and rebuild the package if you wish.
+
+options: -l, --linkadd y|n (moves symlinks into doinst.sh: recommended)
+ -p, --prepend (prepend rather than append symlinks to an existing
+ doinst.sh. Useful to link libraries needed by
+ programs in the doinst.sh script)
+ -c, --chown y|n (resets all permissions to root:root 755
+ - not generally recommended)
+
+If these options are not set, makepkg will prompt as appropriate.
+EOF
+}
+
+TMP=/tmp # This can be a hole, but I'm going to be careful about file
+ # creation in there, so don't panic. :^)
+
+# Parse options
+while [ 0 ]; do
+ if [ "$1" = "--linkadd" -o "$1" = "-l" ]; then
+ if [ "$2" = "y" ]; then
+ LINKADD=y
+ elif [ "$2" = "n" ]; then
+ LINKADD=n
+ else
+ usage
+ exit 2
+ fi
+ shift 2
+ elif [ "$1" = "--chown" -o "$1" = "-c" ]; then
+ if [ "$2" = "y" ]; then
+ CHOWN=y
+ elif [ "$2" = "n" ]; then
+ CHOWN=n
+ else
+ usage
+ exit 2
+ fi
+ shift 2
+ elif [ "$1" = "-p" -o "$1" = "--prepend" ]; then
+ PREPEND=y
+ shift 1
+ elif [ "$1" = "-h" -o "$1" = "-H" -o "$1" = "--help" -o $# = 0 ]; then
+ usage
+ exit 0
+ else
+ break
+ fi
+done
+
+PACKAGE_NAME="$1"
+TARGET_NAME="$(dirname $PACKAGE_NAME)"
+PACKAGE_NAME="$(basename $PACKAGE_NAME)"
+
+# Identify package extension:
+if [ ! "$(basename $PACKAGE_NAME .tgz)" = "$PACKAGE_NAME" ]; then
+ EXTENSION="tgz"
+elif [ ! "$(basename $PACKAGE_NAME .tar.gz)" = "$PACKAGE_NAME" ]; then
+ # .tar.compression is also supported, although the resulting "packages" will
+ # not be installable by installpkg without the correct 3 letter extension
+ # instead.
+ EXTENSION="tar.gz"
+elif [ ! "$(basename $PACKAGE_NAME .tbz)" = "$PACKAGE_NAME" ]; then
+ EXTENSION="tbz"
+elif [ ! "$(basename $PACKAGE_NAME .tar.bz2)" = "$PACKAGE_NAME" ]; then
+ EXTENSION="tar.bz2"
+elif [ ! "$(basename $PACKAGE_NAME .tlz)" = "$PACKAGE_NAME" ]; then
+ EXTENSION="tlz"
+elif [ ! "$(basename $PACKAGE_NAME .tar.lzma)" = "$PACKAGE_NAME" ]; then
+ EXTENSION="tar.lzma"
+elif [ ! "$(basename $PACKAGE_NAME .txz)" = "$PACKAGE_NAME" ]; then
+ EXTENSION="txz"
+elif [ ! "$(basename $PACKAGE_NAME .tar.xz)" = "$PACKAGE_NAME" ]; then
+ EXTENSION="tar.xz"
+else
+ EXTENSION="$(echo $PACKAGE_NAME | rev | cut -f 1 -d . | rev)"
+ echo "ERROR: Package extension .$EXTENSION is not supported."
+ exit 1
+fi
+
+TAR_NAME="$(basename $PACKAGE_NAME .$EXTENSION)"
+
+# Sanity check -- we can't make the package in the current directory:
+if [ "$CWD" = "$TARGET_NAME" -o "." = "$TARGET_NAME" ]; then
+ echo "ERROR: Can't make output package in current directory."
+ exit 2
+fi
+
+# Make sure external compression utility is available:
+case $EXTENSION in
+'tgz' | 'tar.gz' )
+ if ! which gzip 1> /dev/null 2> /dev/null ; then
+ echo "ERROR: gzip compression utility not found in \$PATH."
+ exit 3
+ fi
+ ;;
+'tbz' | 'tar.bz2' )
+ if ! which bzip2 1> /dev/null 2> /dev/null ; then
+ echo "ERROR: bzip2 compression utility not found in \$PATH."
+ exit 3
+ fi
+ ;;
+'tlz' | 'tar.lzma' )
+ if ! which lzma 1> /dev/null 2> /dev/null ; then
+ echo "ERROR: lzma compression utility not found in \$PATH."
+ exit 3
+ fi
+ ;;
+'txz' | 'tar.xz' )
+ if ! which xz 1> /dev/null 2> /dev/null ; then
+ echo "ERROR: xz compression utility not found in \$PATH."
+ exit 3
+ fi
+ ;;
+esac
+
+echo
+echo "Slackware package maker, version 3.14159."
+echo
+echo "Searching for symbolic links:"
+# Get rid of possible pre-existing trouble:
+INST=$(mktemp $TMP/makepkg.XXXXXX)
+# This requires the ls from coreutils-5.0 (or newer):
+find . -type l -exec ls -l --time-style=long-iso {} \; | while read foo ; do echo $foo ; done | cut -f 8- -d ' ' | cut -b3- | tee $INST
+if [ ! "$(cat $INST)" = "" ]; then
+ echo
+ echo "Making symbolic link creation script:"
+ make_install_script $INST | tee doinst.sh
+fi
+echo
+if [ ! "$(cat $INST)" = "" ]; then
+ if [ -r install/doinst.sh ]; then
+ echo "Unless your existing installation script already contains the code"
+ echo "to create these links, you should append these lines to your existing"
+ echo "install script. Now's your chance. :^)"
+ echo
+ echo "Would you like to add this stuff to the existing install script and"
+ echo -n "remove the symbolic links ([y]es, [n]o)? "
+ else
+ echo "It is recommended that you make these lines your new installation script."
+ echo
+ echo "Would you like to make this stuff the install script for this package"
+ echo -n "and remove the symbolic links ([y]es, [n]o)? "
+ fi
+ if [ ! "$LINKADD" ]; then
+ read LINKADD;
+ echo
+ else
+ echo $LINKADD
+ echo
+ fi
+ if [ "$LINKADD" = "y" ]; then
+ if [ -r install/doinst.sh ]; then
+ UPDATE="t"
+ if [ "$PREPEND" = "y" ]; then
+ touch install/doinst.sh
+ mv install/doinst.sh install/doinst.sh.shipped
+ cat doinst.sh > install/doinst.sh
+ echo "" >> install/doinst.sh
+ cat install/doinst.sh.shipped >> install/doinst.sh
+ rm -f install/doinst.sh.shipped
+ else
+ cat doinst.sh >> install/doinst.sh
+ fi
+ else
+ mkdir -p install
+ cat doinst.sh > install/doinst.sh
+ fi
+ echo
+ echo "Removing symbolic links:"
+ find . -type l -exec rm -v {} \;
+ echo
+ if [ "$UPDATE" = "t" ]; then
+ if [ "$PREPEND" = "y" ]; then
+ echo "Updating your ./install/doinst.sh (prepending symlinks)..."
+ else
+ echo "Updating your ./install/doinst.sh..."
+ fi
+ else
+ echo "Creating your new ./install/doinst.sh..."
+ fi
+ fi
+else
+ echo "No symbolic links were found, so we won't make an installation script."
+ echo "You can make your own later in ./install/doinst.sh and rebuild the"
+ echo "package if you like."
+fi
+rm -f doinst.sh $INST
+echo
+echo "This next step is optional - you can set the directories in your package"
+echo "to some sane permissions. If any of the directories in your package have"
+echo "special permissions, then DO NOT reset them here!"
+echo
+echo "Would you like to reset all directory permissions to 755 (drwxr-xr-x) and"
+echo -n "directory ownerships to root.root ([y]es, [n]o)? "
+if [ ! "$CHOWN" ]; then
+ read CHOWN;
+ echo
+else
+ echo $CHOWN
+ echo
+fi
+if [ "$CHOWN" = "y" ]; then
+ find . -type d -exec chmod -v 755 {} \;
+ find . -type d -exec chown -v root.root {} \;
+fi
+
+echo "Creating Slackware package: ${TARGET_NAME}/${TAR_NAME}.${EXTENSION}"
+echo
+rm -f ${TARGET_NAME}/${TAR_NAME}.${EXTENSION}
+case $EXTENSION in
+'tgz' | 'tar.gz' )
+ $TAR cvf - . | gzip -9c > ${TARGET_NAME}/${TAR_NAME}.${EXTENSION}
+ ERRCODE=$?
+ if [ ! $? = 0 ]; then
+ echo "ERROR: gzip returned error code $? -- makepkg failed."
+ fi
+ ;;
+'tbz' | 'tar.bz2' )
+ $TAR cvf - . | bzip2 -9c > ${TARGET_NAME}/${TAR_NAME}.${EXTENSION}
+ ERRCODE=$?
+ if [ ! $ERRCODE = 0 ]; then
+ echo "ERROR: bzip2 returned error code $ERRCODE -- makepkg failed."
+ fi
+ ;;
+'tlz' | 'tar.lzma' )
+ $TAR cvf - . | lzma -c > ${TARGET_NAME}/${TAR_NAME}.${EXTENSION}
+ ERRCODE=$?
+ if [ ! $ERRCODE = 0 ]; then
+ echo "ERROR: lzma returned error code $ERRCODE -- makepkg failed."
+ fi
+ ;;
+'txz' | 'tar.xz' )
+ $TAR cvf - . | xz -c > ${TARGET_NAME}/${TAR_NAME}.${EXTENSION}
+ ERRCODE=$?
+ if [ ! $ERRCODE = 0 ]; then
+ echo "ERROR: xz returned error code $ERRCODE -- makepkg failed."
+ fi
+ ;;
+esac
+
+# Warn of zero-length files:
+find . -type f -size 0c | while read file ; do
+ echo "WARNING: zero length file $(echo $file | cut -b3-)"
+done
+
+# Warn of corrupt or empty gzip files:
+find . -type f -name '*.gz' | while read file ; do
+ if ! gzip -t $file 1> /dev/null 2> /dev/null ; then
+ echo "WARNING: gzip test failed on $(echo $file | cut -b3-)"
+ else
+ if [ "$(gzip -l $file | tail -n 1 | tr -s ' ' | cut -f 3 -d ' ')" -eq 0 ]; then
+ echo "WARNING: $(echo $file | cut -b3-) is an empty gzipped file"
+ fi
+ fi
+done
+
+# Some more handy warnings:
+if [ -d usr/share/man ]; then
+ echo "WARNING: /usr/share/man (with possibly not gzipped man pages) detected"
+fi
+
+if [ -d usr/share/info ]; then
+ echo "WARNING: /usr/share/info (with possibly not gzipped info pages) detected"
+fi
+
+if find . | grep site_perl 1> /dev/null ; then
+ echo "WARNING: site_perl directory detected (this is fine for a local package build)"
+fi
+
+echo
+echo "Slackware package ${TARGET_NAME}/${TAR_NAME}.${EXTENSION} created."
+echo
diff --git a/source/a/pkgtools/scripts/pkgtool b/source/a/pkgtools/scripts/pkgtool
new file mode 100644
index 00000000..6191e36e
--- /dev/null
+++ b/source/a/pkgtools/scripts/pkgtool
@@ -0,0 +1,754 @@
+#!/bin/sh
+#
+# Copyright 1993, 1994, 1995, 1996, 1997,
+# 1998, 1999 Patrick Volkerding, Moorhead, MN USA
+# Copyright 2001, 2004 Slackware Linux, Inc., Concord, CA USA
+# All rights reserved.
+# Copyright 2007, 2009 Patrick Volkerding, Sebeka, MN, USA
+#
+# Redistribution and use of this script, with or without modification, is
+# permitted provided that the following conditions are met:
+#
+# 1. Redistributions of this script must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# 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.
+#
+
+# Sat Apr 25 21:18:53 UTC 2009
+# Converted to use new pkgbase() function to remove pathname and
+# valid package extensions.
+#
+# Wed Oct 31 16:28:46 CDT 2007
+# * Thanks to Gabriele Inghirami for a patch allowing this script to work
+# with much larger numbers of installed packages.
+# Wed, 27 Apr 1994 00:06:50 -0700 (PDT)
+# * Optimization by David Hinds.
+# Sun Oct 24 23:11:40 BST 2004
+# * Further optimisations by Jim Hawkins <jawkins@armedslack.org>
+# - dramatically improved the speed of the "View" option
+# Thu Nov 04 12:19:56 BST 2004
+# * More optimisations by Jim Hawkins
+# - improved "Remove" speed in a similar manner to "View"
+# Wed Jan 12 16:53:48 GMT 2005
+# * Fixed quoting bug thanks to Lasse Collin
+# Wed Jan 26 23:06:22 GMT 2005
+# * Fix for non-standard package descriptions by Jim Hawkins
+
+# Return a package name that has been stripped of the dirname portion
+# and any of the valid extensions (only):
+pkgbase() {
+ PKGEXT=$(echo $1 | rev | cut -f 1 -d . | rev)
+ case $PKGEXT in
+ 'tgz' )
+ PKGRETURN=$(basename $1 .tgz)
+ ;;
+ 'tbz' )
+ PKGRETURN=$(basename $1 .tbz)
+ ;;
+ 'tlz' )
+ PKGRETURN=$(basename $1 .tlz)
+ ;;
+ 'txz' )
+ PKGRETURN=$(basename $1 .txz)
+ ;;
+ *)
+ PKGRETURN=$(basename $1)
+ ;;
+ esac
+ echo $PKGRETURN
+}
+
+SOURCE_DIR=/var/log/mount
+ASK="tagfiles"
+if [ -L /bin/chmod -a -L /bin/chown ]; then # probably on the bootdisk using busybox
+ TARGET_DIR=/mnt
+ TMP=/mnt/var/log/setup/tmp
+ if mount | grep "on /mnt" 1> /dev/null 2>&1 ; then # good
+ true
+ else # bad
+ echo
+ echo
+ echo "You can't run pkgtool from the rootdisk until you've mounted your Linux"
+ echo "partitions beneath /mnt. Here are some examples of this:"
+ echo
+ echo "If your root partition is /dev/hda1, and is using ext2fs, you would type:"
+ echo "mount /dev/hda1 /mnt -t ext2"
+ echo
+ echo "Then, supposing your /usr partition is /dev/hda2, you must do this:"
+ echo "mount /dev/hda2 /mnt/usr -t ext2"
+ echo
+ echo "Please mount your Linux partitions and then run pkgtool again."
+ echo
+ exit
+ fi
+else
+ TARGET_DIR=/
+ TMP=/var/log/setup/tmp
+fi
+if [ ! -d $TMP ]; then
+ mkdir -p $TMP
+ chmod 700 $TMP
+ fi
+ADM_DIR=$TARGET_DIR/var/log
+LOG=$TMP/PKGTOOL.REMOVED
+
+# remove whitespace
+crunch() {
+ while read FOO ; do
+ echo $FOO
+ done
+}
+
+package_name() {
+ STRING=$(pkgbase $1)
+ # Check for old style package name with one segment:
+ if [ "$(echo $STRING | cut -f 1 -d -)" = "$(echo $STRING | cut -f 2 -d -)" ]; then
+ echo $STRING
+ else # has more than one dash delimited segment
+ # Count number of segments:
+ INDEX=1
+ while [ ! "$(echo $STRING | cut -f $INDEX -d -)" = "" ]; do
+ INDEX=$(expr $INDEX + 1)
+ done
+ INDEX=$(expr $INDEX - 1) # don't include the null value
+ # If we don't have four segments, return the old-style (or out of spec) package name:
+ if [ "$INDEX" = "2" -o "$INDEX" = "3" ]; then
+ echo $STRING
+ else # we have four or more segments, so we'll consider this a new-style name:
+ NAME=$(expr $INDEX - 3)
+ NAME="$(echo $STRING | cut -f 1-$NAME -d -)"
+ echo $NAME
+ # cruft for later ;)
+ #VER=$(expr $INDEX - 2)
+ #VER="$(echo $STRING | cut -f $VER -d -)"
+ #ARCH=$(expr $INDEX - 1)
+ #ARCH="$(echo $STRING | cut -f $ARCH -d -)"
+ #BUILD="$(echo $STRING | cut -f $INDEX -d -)"
+ fi
+ fi
+}
+
+remove_packages() {
+ for pkg_name in $(cat $TMP/return | tr -d "\042")
+ do
+ if [ -r $ADM_DIR/packages/$pkg_name ]; then
+ dialog --title "PACKAGE REMOVAL IN PROGRESS" --cr-wrap --infobox \
+"\nRemoving package $pkg_name.\n\
+\n\
+Since each file must be checked \
+against the contents of every other installed package to avoid wiping out \
+areas of overlap, this process can take quite some time. If you'd like to \
+watch the progress, flip over to another virtual console and type:\n\
+\n\
+tail -f $TMP/PKGTOOL.REMOVED\n" 13 60
+ export ROOT=$TARGET_DIR
+ removepkg $pkg_name >> $LOG 2> /dev/null
+ else
+ echo "No such package: $pkg_name. Can't remove." >> $LOG
+ fi
+ done
+}
+
+create_list_of_installed_packages()
+{
+ FILES=$(ls $ADM_DIR/packages)
+ if [ -n "$FILES" ]; then
+ cd $ADM_DIR/packages
+ { grep '^PACKAGE DESCRIPTION:$' -Z -H -m1 -A1 $FILES; echo; } \
+ | sed -n 'h;n;/\x00/{h;n;};x;s/ */ /g;s/ $//;s/[\"`$]/\\&/g
+ s/\(.*\)\x00\([^:]*:\)\? *\(.*\)/ "\1" "\3" "View information about package \1" \\/;p' > $TMP/list_of_installed_packages \
+
+ fi
+}
+
+ create_list_of_files_to_remove ()
+{
+FILES=$(ls $ADM_DIR/packages)
+ if [ -n "$FILES" ]; then
+ cd $ADM_DIR/packages
+ { grep '^PACKAGE DESCRIPTION:$' -Z -H -m1 -A1 $FILES; echo; } \
+ | sed -n 'h;n;/\x00/{h;n;};x;s/ */ /g;s/ $//;s/[\"`$]/\\&/g
+ s/\(.*\)\x00\([^:]*:\)\? *\(.*\)/ "\1" "\3" off "Select\/Unselect removing package \1" \\/;p' > $TMP/temporary_list \
+
+ fi
+}
+
+# Here, we read the list of arguments passed to the pkgtool script.
+if [ $# -gt 0 ]; then # there are arguments to the command
+ while [ $# -gt 0 ]; do
+ case "$1" in
+ -sets | --sets)
+ DISK_SETS=$(echo $2 | tr "[A-Z]" "[a-z]") ; shift 2 ;;
+ -source_mounted | --source-mounted)
+ SOURCE_MOUNTED="always" ; shift 1 ;;
+ -ignore_tagfiles | --ignore-tagfiles)
+ ASK="never" ; shift 1 ;;
+ -tagfile | --tagfile)
+ USETAG=$2 ; shift 2 ;;
+ -source_dir | --source_dir)
+ SOURCE_DIR=$2 ; shift 2 ;;
+ -target_dir | --target_dir)
+ TARGET_DIR=$2
+ ADM_DIR=$TARGET_DIR/var/log
+ shift 2 ;;
+ -source_device | --source_device)
+ SOURCE_DEVICE=$2 ; shift 2 ;;
+ esac
+ done
+else # there were no arguments, so we'll get the needed information from the
+ # user and then go on.
+ CMD_START="true"
+ rm -f $TMP/SeT*
+ while [ 0 ]; do
+ dialog --title "Slackware Package Tool (pkgtool version 13.0)" \
+--menu "\nWelcome to the Slackware package tool.\n\
+\nWhich option would you like?\n" 17 75 7 \
+"Current" "Install packages from the current directory" \
+"Other" "Install packages from some other directory" \
+"Floppy" "Install packages from floppy disks" \
+"Remove" "Remove packages that are currently installed" \
+"View" "View the list of files contained in a package" \
+"Setup" "Choose Slackware installation scripts to run again" \
+"Exit" "Exit Pkgtool" 2> $TMP/reply
+ if [ ! $? = 0 ]; then
+ rm -f $TMP/reply
+ dialog --clear
+ exit
+ fi
+ REPLY="$(cat $TMP/reply)"
+ rm -f $TMP/reply
+ if [ "$REPLY" = "Exit" ]; then
+ dialog --clear
+ exit
+ fi
+ if [ "$REPLY" = "Setup" ]; then
+ echo 'dialog --title "SELECT SYSTEM SETUP SCRIPTS" --item-help --checklist \
+ "Please use the spacebar to select the setup scripts to run. Hit enter when you \
+are done selecting to run the scripts." 17 70 9 \' > $TMP/setupscr
+ for script in $ADM_DIR/setup/setup.* ; do
+ BLURB=$(grep '#BLURB' $script | cut -b8-)
+ if [ "$BLURB" = "" ]; then
+ BLURB="\"\""
+ fi
+ echo " \"$(basename $script | cut -f2- -d .)\" $BLURB \"no\" $BLURB \\" >> $TMP/setupscr
+ done
+ echo "2> $TMP/return" >> $TMP/setupscr
+ . $TMP/setupscr
+ if [ ! "$(cat $TMP/return)" = "" ]; then
+ # Run each script:
+ for script in $(cat $TMP/return) ; do
+ scrpath=$ADM_DIR/setup/setup.$(echo $script | tr -d \")
+ rootdevice="$(mount | head -n 1 | cut -f 1 -d ' ')"
+ ( COLOR=on ; cd $TARGET_DIR ; . $scrpath / $rootdevice )
+ done
+ fi
+ rm -f $TMP/return $TMP/setupscr
+ continue
+ fi # end Setup
+
+ if [ "$REPLY" = "View" ]; then
+create_list_of_installed_packages
+ DEFITEM=""
+ export DEFITEM
+ #dialog --title "SCANNING" --infobox "Please wait while \
+#Pkgtool scans your system to determine which packages you have \
+#installed and prepares a list for you." 0 0
+ (
+ echo 'dialog $DEFITEM --item-help --menu "Please select the package you wish to view." 17 68 10 \
+ --file $TMP/list_of_installed_packages \'
+ echo "2> $TMP/return"
+ ) > $TMP/viewscr
+ while [ 0 ]; do
+ . $TMP/viewscr
+ if [ ! "$(cat $TMP/return)" = "" ]; then
+ DEFITEM="--default-item $(cat $TMP/return)"
+ dialog --title "CONTENTS OF PACKAGE: $(cat $TMP/return)" --no-shadow --textbox "$ADM_DIR/packages/$(cat $TMP/return)" \
+ 0 0 2> /dev/null
+ else
+ break
+ fi
+ done
+ rm -f $TMP/return $TMP/viewscr $TMP/tmpmsg $TMP/list_of_installed_packages
+ # This will clean up after most defective packages:
+ chmod 755 /
+ chmod 1777 /tmp
+ continue
+ fi
+
+ if [ "$REPLY" = "Remove" ]; then
+ #dialog --title "SCANNING" --infobox "Please wait while Pkgtool scans \
+#your system to determine which packages you have installed and prepares \
+#a list for you." 0 0
+ # end section
+ (
+create_list_of_files_to_remove #call the function to create a list of installed packages
+ cat << EOF
+dialog --title "SELECT PACKAGES TO REMOVE" --item-help --checklist \
+"Please select the \
+packages you wish to Remove. Use the \
+spacebar to select packages to delete, and the UP/DOWN arrow keys to \
+scroll up and down through the entire list." 20 75 11 \
+--file $TMP/temporary_list \\
+EOF
+ echo "2> $TMP/return"
+ ) > $TMP/rmscript
+ if [ -L $LOG -o -r $LOG ]; then
+ rm -f $LOG
+ fi
+ cat /dev/null > $LOG
+ chmod 600 $LOG
+ chmod 700 $TMP/rmscript
+ export ADM_DIR;
+ $TMP/rmscript
+ remove_packages
+ if [ "$(cat $TMP/PKGTOOL.REMOVED)" = "" ]; then
+ rm -f $TMP/PKGTOOL.REMOVED
+ dialog --title "NO PACKAGES REMOVED" --msgbox "Hit OK to return \
+to the main menu." 5 40
+ else
+ dialog --title "PACKAGE REMOVAL COMPLETE" --msgbox "The packages have \
+been removed. A complete log of the files that were removed has been created \
+in $TMP: PKGTOOL.REMOVED." 0 0
+ fi
+ rm -f $TMP/rmscript $TMP/return $TMP/tmpmsg $TMP/SeT* $TMP/temporary_list
+ chmod 755 /
+ chmod 1777 /tmp
+# No, return to the main menu:
+# exit
+ elif [ "$REPLY" = "Floppy" ]; then
+ dialog --title "SELECT FLOPPY DRIVE" --menu "Which floppy drive would \
+you like to install from?" \
+11 70 4 \
+"/dev/fd0u1440" "1.44 MB first floppy drive" \
+"/dev/fd1u1440" "1.44 MB second floppy drive" \
+"/dev/fd0h1200" "1.2 MB first floppy drive" \
+"/dev/fd1h1200" "1.2 MB second floppy drive" 2> $TMP/wdrive
+ if [ $? = 1 ]; then
+ dialog --clear
+ exit
+ fi
+ SOURCE_DEVICE="$(cat $TMP/wdrive)"
+ rm -f $TMP/wdrive
+ cat << EOF > $TMP/tmpmsg
+
+Enter the names of any disk sets you would like to install.
+Separate the sets with a space, like this: a b oi x
+
+To install packages from one disk, hit [enter] without typing
+anything.
+
+EOF
+ dialog --title "SOFTWARE SELECTION" --inputbox "$(cat $TMP/tmpmsg)" 13 70 2> $TMP/sets
+ DISK_SETS="$(cat $TMP/sets)"
+ rm -f $TMP/sets
+ if [ "$DISK_SETS" = "" ]; then
+ DISK_SETS="disk"
+ else
+ DISK_SETS=$(echo $DISK_SETS | sed 's/ /#/g')
+ DISK_SETS="#$DISK_SETS"
+ fi
+ break;
+ elif [ "$REPLY" = "Other" ]; then
+ dialog --title "SELECT SOURCE DIRECTORY" --inputbox "Please enter the name of the directory that you wish to \
+install packages from:" 10 50 2> $TMP/pkgdir
+ if [ $? = 1 ]; then
+ rm -f $TMP/pkgdir $TMP/SeT*
+ dialog --clear
+ exit
+ fi
+ SOURCE_DIR="$(cat $TMP/pkgdir)"
+ SOURCE_MOUNTED="always"
+ DISK_SETS="disk"
+ chmod 755 $TARGET_DIR
+ chmod 1777 $TARGET_DIR/tmp
+ rm -f $TMP/pkgdir
+ if [ ! -d $SOURCE_DIR ]; then
+ dialog --title "DIRECTORY NOT FOUND" --msgbox "The directory you want to \
+install from ($SOURCE_DIR) \
+does not seem to exist. Please check the directory and then try again." \
+10 50
+ dialog --clear
+ exit
+ fi
+ break;
+ else # installing from current directory
+ SOURCE_MOUNTED="always"
+ SOURCE_DIR="$PWD"
+ DISK_SETS="disk"
+ chmod 755 $TARGET_DIR
+ chmod 1777 $TARGET_DIR/tmp
+ break;
+ fi
+ done
+fi
+if [ "$DISK_SETS" = "disk" ]; then
+ ASK="always"
+fi
+
+mount_the_source() {
+ # is the source supposed to be mounted already?
+ if [ "$SOURCE_MOUNTED" = "always" ]; then
+ # The source should already be mounted, so we test it
+ if [ ! -d $SOURCE_DIR ]; then # the directory is missing
+ cat << EOF > $TMP/tmpmsg
+
+Your source device cannot be accessed properly.
+
+Please be sure that it is mounted on $SOURCE_DIR,
+and that the Slackware disks are found in subdirectories
+of $SOURCE_DIR like specified.
+
+EOF
+ dialog --title "MOUNT ERROR" --msgbox "$(cat $TMP/tmpmsg)" 11 67
+ rm -f $TMP/tmpmsg
+ exit 1;
+ fi
+ return 0;
+ fi
+ dialog --title "INSERT DISK" --menu "Please insert disk $1 and \
+press ENTER to continue." \
+11 50 3 \
+"Continue" "Continue with the installation" \
+"Skip" "Skip the current disk series" \
+"Quit" "Abort the installation process" 2> $TMP/reply
+ if [ ! $? = 0 ]; then
+ REPLY="Quit"
+ else
+ REPLY="$(cat $TMP/reply)"
+ fi
+ rm -f $TMP/reply
+ if [ "$REPLY" = "Skip" ]; then
+ return 1;
+ fi
+ if [ "$REPLY" = "Quit" ]; then
+ dialog --title "ABORTING" --msgbox "Aborting software installation." 5 50
+ chmod 755 $TARGET_DIR
+ chmod 1777 $TARGET_DIR/tmp
+ exit 1;
+ fi;
+ # Old line:
+ # mount -r -t msdos $SOURCE_DEVICE $SOURCE_DIR
+ # New ones: (thanks to Andy Schwierskott!)
+ go_on=y
+ not_successfull_mounted=1
+ while [ "$go_on" = y -a "$not_successfull_mounted" = 1 ]; do
+ mount -r -t msdos $SOURCE_DEVICE $SOURCE_DIR
+ not_successfull_mounted=$?
+ if [ "$not_successfull_mounted" = 1 ]; then
+ mount_answer=x
+ while [ "$mount_answer" != "y" -a "$mount_answer" != "q" ] ; do
+ dialog --title "MOUNT PROBLEM" --menu "Media was not successfully \
+mounted! Do you want to \
+retry, or quit?" 10 60 2 \
+"Yes" "Try to mount the disk again" \
+"No" "No, abort." 2> $TMP/mntans
+ mount_answer="$(cat $TMP/mntans)"
+ rm -f $TMP/mntans
+ if [ "$mount_answer" = "Yes" ]; then
+ mount_answer="y"
+ else
+ mount_answer="q"
+ fi
+ done
+ go_on=$mount_answer
+ fi
+ done
+ test $not_successfull_mounted = 0
+}
+
+umount_the_source() {
+ if [ ! "$SOURCE_MOUNTED" = "always" ]; then
+ umount $SOURCE_DEVICE 1> /dev/null 2>&1
+ fi;
+}
+
+install_disk() {
+ mount_the_source $1
+ if [ $? = 1 ]; then
+ umount_the_source;
+ return 1;
+ fi
+ CURRENT_DISK_NAME="$1"
+ PACKAGE_DIR=$SOURCE_DIR
+ if [ "$SOURCE_MOUNTED" = "always" -a ! "$DISK_SETS" = "disk" ]; then
+ PACKAGE_DIR=$PACKAGE_DIR/$1
+ fi
+
+ # If this directory is missing or contains no *.t?z files, bail.
+ if [ ! -d $PACKAGE_DIR ]; then
+ return 1
+ fi
+ if ! ls $PACKAGE_DIR/*.t?z 1> /dev/null 2> /dev/null ; then
+ return 1
+ fi
+
+ #
+ # look for tagfile for this series and copy into $TMP/tagfile
+ #
+ touch $TMP/tagfile
+ if [ ! "$DISK_SETS" = "disk" ]; then
+ if [ -r $TMP/SeTtagext ]; then
+ if [ -r $PACKAGE_DIR/tagfile$(cat $TMP/SeTtagext) ]; then
+ cat $PACKAGE_DIR/tagfile$(cat $TMP/SeTtagext) >> $TMP/tagfile
+ else
+ if [ -r $PACKAGE_DIR/tagfile ]; then
+ cat $PACKAGE_DIR/tagfile >> $TMP/tagfile
+ fi
+ fi
+
+ #
+ # Do we need to follow a custom path to the tagfiles?
+ #
+ elif [ -r $TMP/SeTtagpath ]; then
+ custom_path=$(cat $TMP/SeTtagpath)
+ short_path=$(basename $PACKAGE_DIR)
+
+ # If tagfile exists at the specified custom path, copy it over.
+ if [ -r $custom_path/$short_path/tagfile ]; then
+ cat $custom_path/$short_path/tagfile >> $TMP/tagfile
+
+ else # well, I guess we'll use the default one then.
+ if [ -r $PACKAGE_DIR/tagfile ]; then
+ cat $PACKAGE_DIR/tagfile >> $TMP/tagfile
+ fi
+ fi
+ #
+ # We seem to be testing for this too often... maybe this code should
+ # be optimized a little...
+ #
+ elif [ -r $PACKAGE_DIR/tagfile ]; then
+ cat $PACKAGE_DIR/tagfile >> $TMP/tagfile
+ fi
+
+ #
+ # Execute menus if in QUICK mode:
+ #
+ if [ -r $TMP/SeTQUICK -a -r $PACKAGE_DIR/maketag ]; then
+ if [ ! "$MAKETAG" = "" -a -r $PACKAGE_DIR/$MAKETAG ]; then # use alternate maketag
+ sh $PACKAGE_DIR/$MAKETAG
+ else
+ sh $PACKAGE_DIR/maketag
+ fi
+ if [ -r $TMP/SeTnewtag ]; then
+ mv $TMP/SeTnewtag $TMP/tagfile
+ fi
+ fi
+
+ #
+ # Protect tagfile from hacker attack:
+ #
+ if [ -r $TMP/tagfile ]; then
+ chmod 600 $TMP/tagfile
+ fi
+
+ fi # ! "$DISK_SETS" = "disk"
+
+ # It's possible that the tagfile was specified on the command line. If that's
+ # the case, then we'll just override whatever we figured out up above.
+ if [ ! "$USETAG" = "" ]; then
+ cat $USETAG > $TMP/tagfile
+ fi
+
+ # If there's a catalog file present, use it to check for missing files.
+ # If not, forget about that and install whatever's there.
+ if [ "$1" = "single_disk" -o -r $PACKAGE_DIR/disk$1 -o -r $PACKAGE_DIR/package-list.txt ]; then
+ if [ -r $PACKAGE_DIR/package-list.txt ]; then
+ CATALOG_FILE=$PACKAGE_DIR/package-list.txt
+ else
+ CATALOG_FILE=$(basename $PACKAGE_DIR/disk*);
+ fi
+ if [ -r $PACKAGE_DIR/$CATALOG_FILE -a ! -d $PACKAGE_DIR/$CATALOG_FILE ]; then
+ if grep CONTENTS: $PACKAGE_DIR/$CATALOG_FILE 1> /dev/null 2>&1 ; then
+ # First we check for missing packages...
+ for PKGTEST in $(grep "^CONTENTS:" $PACKAGE_DIR/$CATALOG_FILE | cut -f2- -d : 2> /dev/null) ; do
+ # This is not a perfect test. (say emacs is missing but emacs-nox is not)
+ if ls $PACKAGE_DIR/$PKGTEST*.t?z 1> /dev/null 2> /dev/null ; then # found something like it
+ true
+ else
+ cat << EOF > $TMP/tmpmsg
+
+WARNING!!!
+
+While looking through your index file ($CATALOG_FILE),
+I noticed that you might be missing a package:
+
+$PKGTEST-\*-\*-\*.t?z
+
+that is supposed to be on this disk (disk $1). You may go
+on with the installation if you wish, but if this is a
+crucial file I'm making no promises that your machine will
+boot.
+
+EOF
+ dialog --title "FILE MISSING FROM YOUR DISK" --msgbox \
+"$(cat $TMP/tmpmsg)" 17 67
+ fi
+ done # checking for missing packages
+ # Now we test for extra packages:
+ ALLOWED="$(grep CONTENTS: $PACKAGE_DIR/$CATALOG_FILE | cut -b10- 2> /dev/null)"
+ for PACKAGE_FILENAME in $PACKAGE_DIR/*.t?z; do
+ BASE=$(pkgbase $PACKAGE_FILENAME)
+ BASE="$(package_name $BASE)"
+ if echo $ALLOWED | grep $BASE 1> /dev/null 2>&1 ; then
+ true
+ else
+ cat << EOF > $TMP/tmpmsg
+
+WARNING!!!
+
+While looking through your index file ($CATALOG_FILE),
+I noticed that you have this extra package:
+
+($BASE.t?z)
+
+that I don't recognize. Please be sure this package is
+really supposed to be here, and is not left over from an
+old version of Slackware. Sometimes this can happen at the
+archive sites.
+
+EOF
+ dialog --title "EXTRA FILE FOUND ON YOUR DISK" \
+--msgbox "$(cat $TMP/tmpmsg)" 17 67
+ rm -f $TMP/tmpmsg
+ fi
+ done
+ fi
+ fi
+ fi # check for missing/extra packages
+
+ # Install the packages:
+ for PACKAGE_FILENAME in $PACKAGE_DIR/*.t?z; do
+ if [ "$PACKAGE_FILENAME" = "$PACKAGE_DIR/*.t?z" ]; then
+ continue;
+ fi
+ if [ "$ASK" = "never" ]; then # install the package
+ installpkg -root $TARGET_DIR -infobox -tagfile $TMP/tagfile $PACKAGE_FILENAME
+ ERROR=$?
+ elif [ "$ASK" = "tagfiles" ]; then
+ installpkg -root $TARGET_DIR -menu -tagfile $TMP/tagfile $PACKAGE_FILENAME
+ ERROR=$?
+ else # ASK should be = always here, and that's how we'll treat it
+ installpkg -root $TARGET_DIR -menu -ask -tagfile $TMP/tagfile $PACKAGE_FILENAME
+ ERROR=$?
+ fi
+ # Check for abort:
+ if [ "$ERROR" = "99" ]; then
+ umount_the_source;
+ chmod 755 $TARGET_DIR
+ chmod 1777 $TARGET_DIR/tmp
+ exit 1;
+ fi
+ done
+ OUTTAHERE="false"
+ if [ -r $PACKAGE_DIR/install.end ]; then
+ OUTTAHERE="true"
+ fi
+ umount_the_source;
+ if [ "$OUTTAHERE" = "true" ]; then
+ return 1;
+ fi
+}
+
+install_disk_set() { # accepts one argument: the series name in lowercase.
+ SERIES_NAME=$1
+ CURRENT_DISK_NUMBER="1";
+ while [ 0 ]; do
+ # Don't start numbering the directories until 2:
+ if [ $CURRENT_DISK_NUMBER = 1 ]; then
+ DISKTOINSTALL=$SERIES_NAME
+ else
+ DISKTOINSTALL=$SERIES_NAME$CURRENT_DISK_NUMBER
+ fi
+ install_disk $DISKTOINSTALL
+ if [ ! $? = 0 ]; then # install.end was found, or the user chose
+ # to quit installing packages.
+ return 0;
+ fi
+ CURRENT_DISK_NUMBER=$(expr $CURRENT_DISK_NUMBER + 1)
+ done;
+}
+
+# /* main() */ ;)
+if [ "$DISK_SETS" = "disk" ]; then
+ install_disk single_disk;
+ ASK="always"
+else
+ touch $TMP/tagfile
+ chmod 600 $TMP/tagfile
+ if echo $DISK_SETS | grep "#a#" 1> /dev/null 2>&1; then
+ A_IS_NEEDED="true"
+ else
+ A_IS_NEEDED="false"
+ fi
+ while [ 0 ];
+ do
+ while [ 0 ]; # strip leading '#'s
+ do
+ if [ "$(echo $DISK_SETS | cut -b1)" = "#" ]; then
+ DISK_SETS="$(echo $DISK_SETS | cut -b2-)"
+ else
+ break;
+ fi
+ done
+ if [ "$A_IS_NEEDED" = "true" ]; then
+ cat << EOF > $TMP/tmpmsg
+
+--- Installing package series ==>a<==
+
+EOF
+ dialog --infobox "$(cat $TMP/tmpmsg)" 5 45
+ sleep 1
+ rm -f $TMP/tmpmsg
+ install_disk_set a;
+ A_IS_NEEDED="false"
+ fi
+ count="1"
+ if [ "$(echo $DISK_SETS | cut -b$count)" = "" ]; then
+ break; # we be done here :^)
+ else
+ count="2"
+ while [ 0 ]; do
+ if [ "$(echo $DISK_SETS | cut -b$count)" = "" -o "$(echo $DISK_SETS | cut -b$count)" = "#" ]; then
+ count="$(expr $count - 1)"
+ break;
+ else
+ count="$(expr $count + 1)"
+ fi
+ done
+ fi
+ diskset="$(echo $DISK_SETS | cut -b1-$count)"
+ count="$(expr $count + 1)"
+ DISK_SETS="$(echo $DISK_SETS | cut -b$count-)"
+ if [ "$diskset" = "a" ]; then
+ continue; # we expect this to be done elsewhere
+ fi
+ cat << EOF > $TMP/tmpmsg
+
+Installing package series ==>$diskset<==
+
+EOF
+ dialog --infobox "$(cat $TMP/tmpmsg)" 5 45
+ sleep 1
+ rm -f $TMP/tmpmsg
+ install_disk_set $diskset;
+ done
+fi
+
+if [ "$DISK_SETS" = "disk" -o "$CMD_START" = "true" ]; then
+ if [ -r $TMP/tagfile ]; then
+ rm $TMP/tagfile
+ fi
+ dialog --clear
+fi
+chmod 755 $TARGET_DIR $TARGET_DIR/var $TARGET_DIR/usr
+chmod 1777 $TARGET_DIR/tmp
diff --git a/source/a/pkgtools/scripts/removepkg b/source/a/pkgtools/scripts/removepkg
new file mode 100644
index 00000000..8b5a911d
--- /dev/null
+++ b/source/a/pkgtools/scripts/removepkg
@@ -0,0 +1,430 @@
+#!/bin/sh
+# Slackware remove package script
+#
+# Sat Apr 25 21:18:53 UTC 2009 (12.34567890b)
+# Converted to use new pkgbase() function to remove pathname and
+# valid package extensions.
+#
+# Revision 12.34567890 Sun Apr 5 20:59:32 CDT 2009 <volkerdi>
+# - Support packages with the extensions: .tgz, .tbz, .tlz, .txz
+#
+# Revision 1.9 Wed Oct 31 14:04:28 CDT 2007 volkerding
+# - Fix problem removing packages with a large number of fields.
+# Thanks to Niki Kovacs for noticing this, and to Piter Punk
+# for the patch.
+# - Use LC_ALL=C locale, which is much faster with "sort".
+# Thanks to Tsomi.
+# - Don't try to remove any package that starts with '-'. This
+# is not a proper package name (usually a typo), and results
+# in the package database being broken. Thanks to Jef Oliver.
+# - Patched cat_except() to allow the last Slackware package on
+# a partition to be removed (using ROOT=, of course)
+# Thanks to Selkfoster for the patch, and to everyone else who
+# proposed solutions before. This issue really wasn't given
+# the highest priority before, but I figured while I'm in here...
+#
+# Revision 1.8 Thu Nov 22 14:00:13 PST 2001 volkerding Rel $
+# - Move $TMP underneath $ROOT
+# - Understand the idea of a base package name, so that packages
+# can be removed with any of these notations:
+# removepkg foo-1.0-i386-1.tgz
+# removepkg foo-1.0-i386-1
+# removepkg foo.tgz
+# removepkg foo
+#
+# Revision 1.7 2001/03/30 12:36:28 volkerding
+# - Strip extra ".tgz" from input names.
+#
+# Revision 1.6 1999/03/25 18:26:41 volkerding
+# - Use external $ROOT variable, like installpkg.
+#
+# Revision 1.5.1 1998/03/18 15:37:28 volkerding
+# - Since removepkg is always run by root, the temp directory has been
+# moved from /tmp to a private directory to avoid symlink attacks from
+# malicious users.
+#
+# Revision 1.5 1997/06/26 12:09:53 franke
+# - Fixed old bug in TRIGGER regex setting
+# - -preserve/-copy options now preserve non-unique files
+# and empty directories also
+#
+# Revision 1.4 1997/06/09 13:21:36 franke
+# - Package file preserve (-preserve, -copy) added.
+# - Don't execute "rm -rf" lines from doinst.sh, removing links explicit.
+# - Warning on no longer existing files added.
+# - Warning on files changed after package installation added.
+# - Intermediate file preserve (-keep) added.
+# - Check for required files/links now done on a combined list.
+# - Write access to /var/log/{packages,scripts} no longer necessary for -warn.
+#
+# Revision 1.3 1997/06/08 13:03:05 franke
+# Merged with revision 1.1.1.1
+#
+# Revision 1.2 1996/06/01 20:04:26 franke
+# Delete empty directories & formated manual pages added
+#
+# Revision 1.1.1.1 1995/12/18 21:20:42 volkerding
+# Original Version from Slackware 3.1
+#
+# Revision 1.1 1995/06/05 22:49:11 volkerding
+# Original Version from Slackware 3.0
+#
+
+# Copyright 1994, 1995, 1998 Patrick Volkerding, Moorhead, Minnesota USA
+# Copyright 2001, Slackware Linux, Inc., Concord, CA USA
+# Copyright 2009 Patrick J. Volkerding, Sebeka, MN, USA
+# All rights reserved.
+#
+# Redistribution and use of this script, with or without modification, is
+# permitted provided that the following conditions are met:
+#
+# 1. Redistributions of this script must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# 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.
+#
+
+# Return a package name that has been stripped of the dirname portion
+# and any of the valid extensions (only):
+pkgbase() {
+ PKGEXT=$(echo $1 | rev | cut -f 1 -d . | rev)
+ case $PKGEXT in
+ 'tgz' )
+ PKGRETURN=$(basename $1 .tgz)
+ ;;
+ 'tbz' )
+ PKGRETURN=$(basename $1 .tbz)
+ ;;
+ 'tlz' )
+ PKGRETURN=$(basename $1 .tlz)
+ ;;
+ 'txz' )
+ PKGRETURN=$(basename $1 .txz)
+ ;;
+ *)
+ PKGRETURN=$(basename $1)
+ ;;
+ esac
+ echo $PKGRETURN
+}
+
+# This makes "sort" run much faster:
+export LC_ALL=C
+
+# Make sure there's a proper temp directory:
+TMP=$ROOT/var/log/setup/tmp
+# If the $TMP directory doesn't exist, create it:
+if [ ! -d $TMP ]; then
+ rm -rf $TMP # make sure it's not a symlink or something stupid
+ mkdir -p $TMP
+ chmod 700 $TMP # no need to leave it open
+fi
+ADM_DIR=$ROOT/var/log
+PRES_DIR=$TMP/preserved_packages
+
+# This simple cat_except() should be used on the installer,
+# since the busybox "find" can't handle the complex find
+# syntax:
+#cat_except() {
+# ( cd "$1" && cat $(ls * | sed "/^$2\$/d"))
+#}
+
+# This version of cat_except() allows the last package to be
+# removed when ROOT= is used:
+cat_except() {
+ ( cd "$1" && \
+ if [ $(find . -type f -maxdepth 1 | wc -l) -ne 1 ]; then
+ cat $(find . -type f -maxdepth 1 | grep -v "$2")
+ fi
+ )
+}
+
+extract_links() {
+ sed -n 's,^( *cd \([^ ;][^ ;]*\) *; *rm -rf \([^ )][^ )]*\) *) *$,\1/\2,p'
+}
+
+preserve_file() {
+ if [ "$PRESERVE" = "true" ]; then
+ F="$(basename "$1")"
+ D="$(dirname "$1")"
+ if [ ! -d "$PRES_DIR/$PKGNAME/$D" ]; then
+ mkdir -p "$PRES_DIR/$PKGNAME/$D" || return 1
+ fi
+ cp -p "$ROOT/$D/$F" "$PRES_DIR/$PKGNAME/$D" || return 1
+ fi
+ return 0
+}
+
+preserve_dir() {
+ if [ "$PRESERVE" = "true" ]; then
+ if [ ! -d "$PRES_DIR/$PKGNAME/$1" ]; then
+ mkdir -p "$PRES_DIR/$PKGNAME/$1" || return 1
+ fi
+ fi
+ return 0
+}
+
+keep_files() {
+ while read FILE ; do
+ if [ ! -d "$ROOT/$FILE" ]; then
+ if [ -r "$ROOT/$FILE" ]; then
+ echo " --> $ROOT/$FILE was found in another package. Skipping."
+ preserve_file "$FILE"
+ else
+ if [ "$(echo $FILE | cut -b1-8)" != "install/" ]; then
+ echo "WARNING: Nonexistent $ROOT/$FILE was found in another package. Skipping."
+ fi
+ fi
+ else
+ preserve_dir "$FILE"
+ fi
+ done
+}
+
+keep_links() {
+ while read LINK ; do
+ if [ -L "$ROOT/$LINK" ]; then
+ echo " --> $ROOT/$LINK (symlink) was found in another package. Skipping."
+ else
+ echo "WARNING: Nonexistent $ROOT/$LINK (symlink) was found in another package. Skipping."
+ fi
+ done
+}
+
+delete_files() {
+ while read FILE ; do
+ if [ ! -d "$ROOT/$FILE" ]; then
+ if [ -r "$ROOT/$FILE" ]; then
+ if [ "$ROOT/$FILE" -nt "$ADM_DIR/packages/$PKGNAME" ]; then
+ echo "WARNING: $ROOT/$FILE changed after package installation."
+ fi
+ if [ ! "$WARN" = "true" ]; then
+ echo " --> Deleting $ROOT/$FILE"
+ preserve_file "$FILE" && rm -f "$ROOT/$FILE"
+ else
+ echo " --> $ROOT/$FILE would be deleted"
+ preserve_file "$FILE"
+ fi
+ else
+ echo " --> $ROOT/$FILE no longer exists. Skipping."
+ fi
+ else
+ preserve_dir "$FILE"
+ fi
+ done
+}
+
+delete_links() {
+ while read LINK ; do
+ if [ -L "$ROOT/$LINK" ]; then
+ if [ ! "$WARN" = "true" ]; then
+ echo " --> Deleting symlink $ROOT/$LINK"
+ rm -f $ROOT/$LINK
+ else
+ echo " --> $ROOT/$LINK (symlink) would be deleted"
+ fi
+ else
+ echo " --> $ROOT/$LINK (symlink) no longer exists. Skipping."
+ fi
+ done
+}
+
+delete_dirs() {
+ sort -r | \
+ while read DIR ; do
+ if [ -d "$ROOT/$DIR" ]; then
+ if [ ! "$WARN" = "true" ]; then
+ if [ $(ls -a "$ROOT/$DIR" | wc -l) -eq 2 ]; then
+ echo " --> Deleting empty directory $ROOT/$DIR"
+ rmdir "$ROOT/$DIR"
+ else
+ echo "WARNING: Unique directory $ROOT/$DIR contains new files"
+ fi
+ else
+ echo " --> $ROOT/$DIR (dir) would be deleted if empty"
+ fi
+ fi
+ done
+}
+
+delete_cats() {
+ sed -n 's,/man\(./[^/]*$\),/cat\1,p' | \
+ while read FILE ; do
+ if [ -f "$ROOT/$FILE" ]; then
+ if [ ! "$WARN" = "true" ]; then
+ echo " --> Deleting $ROOT/$FILE (fmt man page)"
+ rm -f $ROOT/$FILE
+ else
+ echo " --> $ROOT/$FILE (fmt man page) would be deleted"
+ fi
+ fi
+ done
+}
+
+package_name() {
+ STRING=$(pkgbase $1)
+ # If we don't do this, commands run later will take the '-' to be an option
+ # and will destroy the package database. Packages should not contain spaces
+ # in them. Normally this type of problem results from a command line typo.
+ if [ "$(echo $STRING | cut -b 1)" = "-" ]; then
+ STRING="malformed-package-name-detected"
+ fi
+ # Check for old style package name with one segment:
+ if [ "$(echo $STRING | cut -f 1 -d -)" = "$(echo $STRING | cut -f 2 -d -)" ]; then
+ echo $STRING
+ else # has more than one dash delimited segment
+ # Count number of segments:
+ INDEX=1
+ while [ ! "$(echo $STRING | cut -f $INDEX -d -)" = "" ]; do
+ INDEX=$(expr $INDEX + 1)
+ done
+ INDEX=$(expr $INDEX - 1) # don't include the null value
+ # If we don't have four segments, return the old-style (or out of spec) package name:
+ if [ "$INDEX" = "2" -o "$INDEX" = "3" ]; then
+ echo $STRING
+ else # we have four or more segments, so we'll consider this a new-style name:
+ NAME=$(expr $INDEX - 3)
+ NAME="$(echo $STRING | cut -f 1-$NAME -d -)"
+ echo $NAME
+ # cruft for later ;)
+ #VER=$(expr $INDEX - 2)
+ #VER="$(echo $STRING | cut -f $VER -d -)"
+ #ARCH=$(expr $INDEX - 1)
+ #ARCH="$(echo $STRING | cut -f $ARCH -d -)"
+ #BUILD="$(echo $STRING | cut -f $INDEX -d -)"
+ fi
+ fi
+}
+
+# Conversion to 'comm' utility by Mark Wisdom.
+# is pretty nifty! :^)
+remove_packages() {
+ for PKGLIST in $*
+ do
+ PKGNAME=$(pkgbase $PKGLIST)
+ echo
+ # If we don't have a package match here, then we will attempt to find
+ # a package using the long name format (name-version-arch-build) for
+ # which the base package name was given. On a properly-managed machine,
+ # there should only be one package installed with a given basename, but
+ # we don't enforce this policy. If there's more than one, only one will
+ # be removed. If you want to remove them all, you'll need to run
+ # removepkg again until it removes all the same-named packages.
+ if [ ! -e $ADM_DIR/packages/$PKGNAME ]; then
+ SHORT="$(package_name $PKGNAME)"
+ for long_package in $ADM_DIR/packages/${PKGNAME}* ; do
+ if [ "$SHORT" = "$(package_name $long_package)" ]; then
+ PKGNAME="$(basename $long_package)"
+ fi
+ done
+ fi
+
+ if [ ! -e $ADM_DIR/packages/$PKGNAME ]; then
+ long_package=$(ls -1 $ADM_DIR/packages/${PKGNAME}* | grep -m 1 "${PKGNAME}-[^-]*-[^-]*-[^-]*$")
+ if [ -e "$long_package" ]; then
+ PKGNAME=$(basename $long_package)
+ fi
+ fi
+
+ if [ -r $ADM_DIR/packages/$PKGNAME ]; then
+ if [ ! "$WARN" = true ]; then
+ echo "Removing package $ADM_DIR/packages/$PKGNAME..."
+ fi
+ if fgrep "./" $ADM_DIR/packages/$PKGNAME 1> /dev/null 2>&1; then
+ TRIGGER="^\.\/"
+ else
+ TRIGGER="FILE LIST:"
+ fi
+ if [ ! "$WARN" = true ]; then
+ echo "Removing files:"
+ fi
+ sed -n "/$TRIGGER/,/^$/p" < $ADM_DIR/packages/$PKGNAME | \
+ fgrep -v "FILE LIST:" | sort -u > $TMP/delete_list$$
+ # Pat's new-new && improved pre-removal routine.
+ cat_except $ADM_DIR/packages $PKGNAME | sort -u > $TMP/required_list$$
+ if [ -r $ADM_DIR/scripts/$PKGNAME ]; then
+ extract_links < $ADM_DIR/scripts/$PKGNAME | sort -u > $TMP/del_link_list$$
+ cat_except $ADM_DIR/scripts $PKGNAME | extract_links | \
+ sort -u > $TMP/required_links$$
+ mv $TMP/required_list$$ $TMP/required_files$$
+ sort -u $TMP/required_links$$ $TMP/required_files$$ > $TMP/required_list$$
+ comm -12 $TMP/del_link_list$$ $TMP/required_list$$ | keep_links
+ comm -23 $TMP/del_link_list$$ $TMP/required_list$$ | delete_links
+ else
+ cat $ADM_DIR/scripts/* | extract_links | \
+ sort -u > $TMP/required_links$$
+ mv $TMP/required_list$$ $TMP/required_files$$
+ sort -u $TMP/required_links$$ $TMP/required_files$$ >$TMP/required_list$$
+ fi
+ comm -12 $TMP/delete_list$$ $TMP/required_list$$ | keep_files
+ comm -23 $TMP/delete_list$$ $TMP/required_list$$ > $TMP/uniq_list$$
+ delete_files < $TMP/uniq_list$$
+ delete_dirs < $TMP/uniq_list$$
+ delete_cats < $TMP/uniq_list$$
+ if [ ! "$KEEP" = "true" ]; then
+ rm -f $TMP/delete_list$$ $TMP/required_files$$ $TMP/uniq_list$$
+ rm -f $TMP/del_link_list$$ $TMP/required_links$$ $TMP/required_list$$
+ fi
+ if [ "$PRESERVE" = "true" ]; then
+ if [ -r $ADM_DIR/scripts/$PKGNAME ]; then
+ if [ ! -d "$PRES_DIR/$PKGNAME/install" ]; then
+ mkdir -p "$PRES_DIR/$PKGNAME/install"
+ fi
+ cp -p $ADM_DIR/scripts/$PKGNAME $PRES_DIR/$PKGNAME/install/doinst.sh
+ fi
+ fi
+ if [ ! "$WARN" = "true" ]; then
+ for DIR in $ADM_DIR/removed_packages $ADM_DIR/removed_scripts ; do
+ if [ ! -d $DIR ] ; then mkdir -p $DIR ; chmod 755 $DIR ; fi
+ done
+ mv $ADM_DIR/packages/$PKGNAME $ADM_DIR/removed_packages
+ if [ -r $ADM_DIR/scripts/$PKGNAME ]; then
+ mv $ADM_DIR/scripts/$PKGNAME $ADM_DIR/removed_scripts
+ fi
+ fi
+ else
+ echo "No such package: $ADM_DIR/packages/$PKGNAME. Can't remove."
+ fi
+ done
+}
+
+if [ "$#" = "0" ]; then
+ echo "Usage: $(basename $0) [-copy] [-keep] [-preserve] [-warn] packagename ..."; exit 1
+fi
+
+while : ; do
+ case "$1" in
+ -copy | --copy) WARN=true; PRESERVE=true; shift;;
+ -keep | --keep) KEEP=true; shift;;
+ -preserve | --preserve) PRESERVE=true; shift;;
+ -warn | --warn) WARN=true; shift;;
+ -* | --*) echo "Usage: $(basename $0) [-copy] [-keep] [-preserve] [-warn] packagename ..."; exit 1;;
+ *) break
+ esac
+done
+
+if [ "$WARN" = "true" ]; then
+ echo "Only warning... not actually removing any files."
+ if [ "$PRESERVE" = "true" ]; then
+ echo "Package contents is copied to $PRES_DIR."
+ fi
+ echo "Here's what would be removed (and left behind) if you"
+ echo "removed the package(s):"
+ echo
+else
+ if [ "$PRESERVE" = "true" ]; then
+ echo "Package contents is copied to $PRES_DIR."
+ fi
+fi
+
+remove_packages $*
+
diff --git a/source/a/pkgtools/scripts/setup.70.install-kernel b/source/a/pkgtools/scripts/setup.70.install-kernel
new file mode 100644
index 00000000..8edf6477
--- /dev/null
+++ b/source/a/pkgtools/scripts/setup.70.install-kernel
@@ -0,0 +1,5 @@
+# Install the bootdisk or CD-ROM's Linux kernel:
+#BLURB="Install a Linux kernel from a bootdisk"
+if [ -x /usr/lib/setup/SeTkernel ]; then
+ . /usr/lib/setup/SeTkernel
+fi
diff --git a/source/a/pkgtools/scripts/setup.80.make-bootdisk b/source/a/pkgtools/scripts/setup.80.make-bootdisk
new file mode 100644
index 00000000..d9b4012f
--- /dev/null
+++ b/source/a/pkgtools/scripts/setup.80.make-bootdisk
@@ -0,0 +1,175 @@
+#!/bin/sh
+#BLURB="Create a USB Linux boot stick"
+RDIR=/dev/tty4
+NDIR=/dev/null
+TMP=/var/log/setup/tmp
+
+if [ ! -d $TMP ]; then
+ mkdir -p $TMP
+fi
+T_PX="$1"
+ROOT_DEVICE="$2"
+
+while [ 0 ]; do # the bootdisk menu loop
+ # Run "rescan-scsi-bus -l" to get an up to date overview of devices:
+ /sbin/rescan-scsi-bus -l 1>$RDIR 2>$RDIR
+ # Get a list of removable block devices before the USB stick is inserted:
+ echo "" > $TMP/remov_prior
+ for BDEV in $(ls --indicator-style none /sys/block | egrep -v "loop|ram"); do
+ [ -r /sys/block/$BDEV/removable -a "$(cat /sys/block/$BDEV/removable)" == "1" ] \
+ && echo $BDEV >> $TMP/remov_prior
+ done
+ dialog --title "MAKE USB FLASH BOOT" --default-item "Skip" --menu \
+"If your computer supports booting from a USB device, it is recommended that you make \
+a USB boot stick for your system at this time. It will boot your computer straight \
+into the root filesystem on $ROOT_DEVICE. \n\
+\n\
+Please insert a USB flash memory stick and then press ENTER to create a boot stick. \n\
+\n\
+WARNING! The existing contents of the USB stick will be erased. \n\
+ " 18 70 2 \
+ "Create" "Make a USB Linux boot stick" \
+ "Skip" "Skip making a USB boot stick" \
+ 2> $TMP/return
+ REPLY=`cat $TMP/return`
+ rm -f $TMP/return
+ if [ "$REPLY" = "Create" ]; then
+ # Run "rescan-scsi-bus -l" to discover our USB stick if needed:
+ /sbin/rescan-scsi-bus -l 1>$RDIR 2>$RDIR
+ # Get a list of removable block devices after the USB stick is inserted:
+ echo "" > $TMP/remov_after
+ for BDEV in $(ls --indicator-style none /sys/block | egrep -v "loop|ram"); do
+ [ -r /sys/block/$BDEV/removable -a "$(cat /sys/block/$BDEV/removable)" == "1" ] \
+ && echo $BDEV >> $TMP/remov_after
+ done
+ ADDED=$(diff -u $TMP/remov_prior $TMP/remov_after | sed -n 's/^\+//p' | grep -v '^+')
+ REMVD=$(diff -u $TMP/remov_prior $TMP/remov_after | sed -n 's/^\+//p' | grep -v '^+')
+ if [ -n "$ADDED" ] ; then STICK=$ADDED ; else STICK="" ; fi
+ rm $TMP/remov_prior $TMP/remov_after
+ if [ ! -n "$STICK" ]; then
+ dialog --title "NO NEW DEVICE DETECTED" --ok-label Restart --msgbox \
+"No new USB device was detected.
+If you had already inserted your USB stick, please remove it now. \
+Then select 'Restart'." 7 70
+ continue
+ else
+ VENDOR="Vendor : $(cat /sys/block/$STICK/device/vendor)"
+ MODEL="Model : $(cat /sys/block/$STICK/device/model)"
+ SIZE="Size : $(( $(cat /sys/block/$STICK/size) / 2048)) MB"
+ dialog --title "NEW DEVICE DETECTED" --yesno \
+"A new USB device '/dev/$STICK' was detected with specifications:
+
+-- $VENDOR
+-- $MODEL
+-- $SIZE
+
+If this is the USB stick to use, select 'Yes',
+otherwise select 'No'." 12 70
+ if [ $? -eq 1 ]; then
+ continue
+ fi
+ fi
+
+ dialog --title "CREATING USB BOOT STICK" --infobox "Creating SYSLINUX bootdisk for \
+$ROOT_DEVICE on /dev/$STICK." 3 64
+ # Determine max size of the filesystem (in KB) we want to create:
+ USBSIZE=$(( $(cat /sys/block/$STICK/size) / 2048))
+ if [ $USBSIZE -lt 512 ]; then DOSSIZE=$(($USBSIZE*1024))
+ else DOSSIZE=$((512*1024))
+ fi
+ # Hack from Pat. If we're wasting a whole stick, who cares if the partition is
+ # extra-small, as long as the kernel fits? Also, FAT12 is the least problematic.
+ DOSSIZE=15861
+ if [ -x /sbin/mkdosfs ]; then
+ /sbin/mkdosfs -I -n USBSLACK -F 12 /dev/$STICK $DOSSIZE 1> /dev/null 2> /dev/null
+ else
+ chroot $T_PX /sbin/mkdosfs -I -n USBSLACK -F 12 /dev/$STICK $DOSSIZE 1> /dev/null 2> /dev/null
+ fi
+ if [ ! -d $TMP/bootdisk ]; then
+ mkdir $TMP/bootdisk
+ fi
+ mount -t vfat /dev/$STICK $TMP/bootdisk 1> /dev/null 2> /dev/null
+ if [ -r $T_PX/vmlinuz ]; then
+ cp $T_PX/vmlinuz $TMP/bootdisk/vmlinuz
+ elif [ -r $T_PX/boot/vmlinuz ]; then
+ cp $T_PX/boot/vmlinuz $TMP/bootdisk/vmlinuz
+ fi
+ # We don't need the isolinux bootloader with syslinux do we?
+ #cp $T_PX/usr/share/syslinux/isolinux.bin $TMP/bootdisk/
+ cat << EOF > $TMP/bootdisk/message.txt
+
+Welcome to the 09Slackware07 Linux custom USB boot stick!
+
+By default, this stick boots a root Linux partition on $ROOT_DEVICE when you
+hit ENTER. If you'd like to boot some other partition, use a command like
+this on the prompt below:
+
+ mount root=/dev/sda1 ro
+
+Where "/dev/sda1" is the partition you want to boot, and "ro" specifies that
+the partition should be initially mounted as read-only. If you wish to mount
+the partition read-write, use "rw" instead. To set the video console mode,
+use the vga= parameter (press F1 to see a table). You may also add any other
+kernel parameters you might need depending on your hardware, and which
+drivers are included in your kernel.
+
+EOF
+ cat << EOF > $TMP/bootdisk/syslinux.cfg
+default vmlinuz root=$ROOT_DEVICE vga=normal ro
+prompt 1
+timeout 6000
+display message.txt
+F1 f1.txt
+F2 message.txt
+#F3 f3.txt
+#F4 f4.txt
+#F5 f5.txt
+#F6 f6.txt
+#F7 f7.txt
+label mount
+ kernel vmlinuz
+ append root=$ROOT_DEVICE vga=normal ro
+EOF
+ cat << EOF > $TMP/bootdisk/f1.txt
+ STANDARD MODES:
+ To make the kernel prompt for standard video modes use: vga=ask
+
+ FRAMEBUFFER MODES:
+ To get the kernel to start in VESA framebuffer mode, you need to pass it
+ a vga= init string on the "boot:" prompt. Here's a table:
+
+ Colors 640x480 800x600 1024x768 1280x1024 1600x1200
+ --------+---------------------------------------------
+ 256 | 769 771 773 775 796
+ 32,768 | 784 787 790 793 797
+ 65,536 | 785 788 791 794 798
+ 16.8M | 786 789 792 795 799
+
+ ...such as this for 1024x768x64k:
+ vga=791
+
+ F2 returns to the previous page.
+
+EOF
+ umount /dev/$STICK
+ rm -r $TMP/bootdisk
+ # Make the device bootable:
+ syslinux -s /dev/$STICK 1> /dev/null 2> /dev/null
+ dialog --title "USB BOOT STICK CREATED" --ok-label Continue --cancel-label Create --menu \
+"The USB boot stick has been successfully created in /dev/$STICK. If you would like to \
+create an additional boot stick, please select 'Create' and we'll go back and make another \
+one, otherwise select 'Continue' to continue configuring your system." 12 70 2 \
+ "Continue" "Continue the configuration (done making boot sticks)" \
+ "Create" "Make a spare Linux boot stick in /dev/$STICK" \
+ 2> $TMP/return
+ REPLY=`cat $TMP/return`
+ rm -f $TMP/return
+ if [ "$REPLY" = "Create" ]; then
+ continue
+ else
+ break
+ fi
+ else # ! Create
+ break
+ fi
+done
diff --git a/source/a/pkgtools/scripts/setup.htmlview b/source/a/pkgtools/scripts/setup.htmlview
new file mode 100644
index 00000000..2fd9930a
--- /dev/null
+++ b/source/a/pkgtools/scripts/setup.htmlview
@@ -0,0 +1,33 @@
+#!/bin/sh
+#BLURB="Set a default browser link."
+# Sorry, this is not a full menu, and may not ever be.
+# It is trivial to find the htmllink symbolic link and
+# point it at the browser that you like. Besides,
+# this is not a Linux standard that could be locating
+# in any official document. It seems to have been
+# started without any consultation with other
+# distributions by <take a wild guess>, and now things
+# expect it to be there.
+#
+#
+# Note 1. Listing a browser doesn't mean we ship it.
+# Note 2. Complaints about our preferences or missing
+# browsers in the list will be considered.
+# Yell at Pat about it. ;-)
+
+# There must be no link, or we assume the admin set it and
+# do nothing. Can you tell this Q+D script was written for
+# the initial installation?
+
+for browser in firefox seamonkey konqueror galeon epiphany links lynx ; do
+ if [ ! -e usr/bin/htmlview -a -x usr/bin/$browser ]; then
+ cat << EOF > usr/bin/htmlview
+#!/bin/sh
+exec $browser "\$@"
+EOF
+ fi
+done
+if [ -e usr/bin/htmlview ]; then
+ chmod 755 usr/bin/htmlview
+fi
+
diff --git a/source/a/pkgtools/scripts/setup.services b/source/a/pkgtools/scripts/setup.services
new file mode 100644
index 00000000..aee2599f
--- /dev/null
+++ b/source/a/pkgtools/scripts/setup.services
@@ -0,0 +1,287 @@
+#!/bin/sh
+#BLURB="Select/deselect system daemons (services)"
+TMP=/var/log/setup/tmp
+if [ ! -d $TMP ]; then
+ mkdir -p $TMP
+fi
+T_PX="$1"
+cd $T_PX
+rm -f $TMP/tmpscript
+
+cat << EOF > $TMP/tmpscript
+dialog --title "CONFIRM STARTUP SERVICES TO RUN" --item-help --checklist \\
+"The selected services will be started at boot time. If you \\
+don't need them, you may unselect them to turn them off (which may improve \\
+overall system security). You may also choose to start services that are \\
+not run by default, but be aware that more services means less security. \\
+Use the spacebar to select or unselect the services you wish to run. \\
+Recommended choices have been preselected. \\
+Press the ENTER key when you are finished." \\
+20 75 7 \\
+EOF
+
+if [ -r etc/rc.d/rc.atalk ]; then
+ if [ -x etc/rc.d/rc.atalk ]; then
+ RC_ATALK=on
+ else
+ RC_ATALK=off
+ fi
+ cat << EOF >> $TMP/tmpscript
+ "rc.atalk" "Netatalk Appletalk file/print server" $RC_ATALK "The Netatalk server is a file and print server for Macintosh networks." \\
+EOF
+fi
+
+if [ -r etc/rc.d/rc.bind ]; then
+ if [ -x etc/rc.d/rc.bind ]; then
+ RC_BIND=on
+ else
+ RC_BIND=off
+ fi
+ cat << EOF >> $TMP/tmpscript
+ "rc.bind" "BIND (Domain Name System) server" $RC_BIND "BIND (Berkeley Internet Name Domain) is a Domain Name System (DNS) server." \\
+EOF
+fi
+
+if [ -r etc/rc.d/rc.cups ]; then
+ if [ -x etc/rc.d/rc.cups ]; then
+ RC_CUPS=on
+ else
+ RC_CUPS=off
+ fi
+ cat << EOF >> $TMP/tmpscript
+ "rc.cups" "CUPS print server" $RC_CUPS "The Common UNIX Printing system (print spooler choice #1)." \\
+EOF
+fi
+
+if [ -r etc/rc.d/rc.dnsmasq ]; then
+ if [ -x etc/rc.d/rc.dnsmasq ]; then
+ RC_DNSMASQ=on
+ else
+ RC_DNSMASQ=off
+ fi
+ cat << EOF >> $TMP/tmpscript
+ "rc.dnsmasq" "dnsmasq DHCP/DNS server" $RC_DNSMASQ "dnsmasq provides DNS and DHCP service to a LAN." \\
+EOF
+fi
+
+if [ -r etc/rc.d/rc.fuse ]; then
+ if [ -x etc/rc.d/rc.fuse ]; then
+ RC_FUSE=on
+ else
+ RC_FUSE=off
+ fi
+ cat << EOF >> $TMP/tmpscript
+ "rc.fuse" "Filesystem in Userspace library" $RC_FUSE "FUSE is an interface to allow userspace programs to use filesystems." \\
+EOF
+fi
+
+if [ -r etc/rc.d/rc.hald ]; then
+ if [ -x etc/rc.d/rc.hald ]; then
+ RC_HALD=on
+ else
+ RC_HALD=off
+ fi
+ cat << EOF >> $TMP/tmpscript
+ "rc.hald" "Hardware Abstraction Layer" $RC_HALD "HAL makes access to CD/DVD drives and USB devices easier." \\
+EOF
+fi
+
+if [ -r etc/rc.d/rc.hplip ]; then
+ if [ -x etc/rc.d/rc.hplip ]; then
+ RC_HPLIP=on
+ else
+ RC_HPLIP=off
+ fi
+ cat << EOF >> $TMP/tmpscript
+ "rc.hplip" "HP printer/scanner daemons" $RC_HPLIP "Programs used to run printers and scanners from Hewlett Packard." \\
+EOF
+fi
+
+if [ -r etc/rc.d/rc.httpd ]; then
+ if [ -x etc/rc.d/rc.httpd ]; then
+ RC_HTTPD=on
+ else
+ RC_HTTPD=off
+ fi
+ cat << EOF >> $TMP/tmpscript
+ "rc.httpd" "The Apache web server" $RC_HTTPD "Apache, the most widely used web server on the net." \\
+EOF
+fi
+
+if [ -r etc/rc.d/rc.inetd ]; then
+ if [ -x etc/rc.d/rc.inetd ]; then
+ RC_INETD=on
+ else
+ RC_INETD=off
+ fi
+ cat << EOF >> $TMP/tmpscript
+ "rc.inetd" "The BSD Inetd daemon" $RC_INETD "Inetd daemon (this allows: time, ftp, comsat, talk, finger, and auth)." \\
+EOF
+fi
+
+if [ -r etc/rc.d/rc.ip_forward ]; then
+ if [ -x etc/rc.d/rc.ip_forward ]; then
+ RC_IP_FORWARD=on
+ else
+ RC_IP_FORWARD=off
+ fi
+ cat << EOF >> $TMP/tmpscript
+ "rc.ip_forward" "Activate IP packet forwarding" $RC_IP_FORWARD "Packet forwarding allows your Linux machine to act as a router." \\
+EOF
+fi
+
+if [ -r etc/rc.d/rc.lprng ]; then
+ if [ -x etc/rc.d/rc.lprng ]; then
+ RC_LPRNG=on
+ else
+ RC_LPRNG=off
+ fi
+ cat << EOF >> $TMP/tmpscript
+ "rc.lprng" "LPRng print server" $RC_LPRNG "The LPRng printing system (print spooler choice #2)." \\
+EOF
+fi
+
+if [ -r etc/rc.d/rc.messagebus ]; then
+ if [ -x etc/rc.d/rc.messagebus ]; then
+ RC_MESSAGEBUS=on
+ else
+ RC_MESSAGEBUS=off
+ fi
+ cat << EOF >> $TMP/tmpscript
+ "rc.messagebus" "D-Bus system message bus" $RC_MESSAGEBUS "Used for communication by HAL and other programs." \\
+EOF
+fi
+
+if [ -r etc/rc.d/rc.mysqld ]; then
+ if [ -x etc/rc.d/rc.mysqld ]; then
+ RC_MYSQLD=on
+ else
+ RC_MYSQLD=off
+ fi
+ cat << EOF >> $TMP/tmpscript
+ "rc.mysqld" "The MySQL database server" $RC_MYSQLD "MySQL, an SQL-based relational database daemon." \\
+EOF
+fi
+
+if [ -r etc/rc.d/rc.ntpd ]; then
+ if [ -x etc/rc.d/rc.ntpd ]; then
+ RC_NTPD=on
+ else
+ RC_NTPD=off
+ fi
+ cat << EOF >> $TMP/tmpscript
+ "rc.ntpd" "The network time server" $RC_NTPD "NTP synchronizes your time to/from other NTP servers." \\
+EOF
+fi
+
+if [ -r etc/rc.d/rc.pcmcia ]; then
+ if [ -x etc/rc.d/rc.pcmcia ]; then
+ RC_PCMCIA=on
+ else
+ RC_PCMCIA=off
+ fi
+ cat << EOF >> $TMP/tmpscript
+ "rc.pcmcia" "PCMCIA/Cardbus card services" $RC_PCMCIA "This supports PCMCIA or Cardbus cards used with laptops." \\
+EOF
+fi
+
+if [ -r etc/rc.d/rc.rpc ]; then
+ if [ -x etc/rc.d/rc.rpc ]; then
+ RC_RPC=on
+ else
+ RC_RPC=off
+ fi
+ cat << EOF >> $TMP/tmpscript
+ "rc.rpc" "RPC (NFS) daemons" $RC_RPC "Needed to serve or mount NFS (Network File System) partitions." \\
+EOF
+fi
+
+if [ -r etc/rc.d/rc.samba ]; then
+ if [ -x etc/rc.d/rc.samba ]; then
+ RC_SAMBA=on
+ else
+ RC_SAMBA=off
+ fi
+ cat << EOF >> $TMP/tmpscript
+ "rc.samba" "The Samba file/print server" $RC_SAMBA "Samba is a file and print server for Windows networks." \\
+EOF
+fi
+
+if [ -r etc/rc.d/rc.saslauthd ]; then
+ if [ -x etc/rc.d/rc.saslauthd ]; then
+ RC_SASLAUTHD=on
+ else
+ RC_SASLAUTHD=off
+ fi
+ cat << EOF >> $TMP/tmpscript
+ "rc.saslauthd" "The SASL authentication server" $RC_SASLAUTHD "SASL is an authentication method often used by mail servers." \\
+EOF
+fi
+
+if [ -r etc/rc.d/rc.sendmail ]; then
+ if [ -x etc/rc.d/rc.sendmail ]; then
+ RC_SENDMAIL=on
+ else
+ RC_SENDMAIL=off
+ fi
+ cat << EOF >> $TMP/tmpscript
+ "rc.sendmail" "The Sendmail mail server" $RC_SENDMAIL "The Sendmail server allows your machine to send and receive mail." \\
+EOF
+fi
+
+if [ -r etc/rc.d/rc.snmpd ]; then
+ if [ -x etc/rc.d/rc.snmpd ]; then
+ RC_SNMPD=on
+ else
+ RC_SNMPD=off
+ fi
+ cat << EOF >> $TMP/tmpscript
+ "rc.snmpd" "Net-SNMP daemon" $RC_SNMPD "SNMP daemon that receives and logs SNMP TRAP and INFORM messages." \\
+EOF
+fi
+
+if [ -r etc/rc.d/rc.syslog ]; then
+ if [ -x etc/rc.d/rc.syslog ]; then
+ RC_SYSLOGD=on
+ else
+ RC_SYSLOGD=off
+ fi
+ cat << EOF >> $TMP/tmpscript
+ "rc.syslog" "The Linux system logging utilities" $RC_SYSLOGD "The syslogd and klogd daemons log important messages under /var/log." \\
+EOF
+fi
+
+if [ -r etc/rc.d/rc.sshd ]; then
+ if [ -x etc/rc.d/rc.sshd ]; then
+ RC_SSHD=on
+ else
+ RC_SSHD=off
+ fi
+ cat << EOF >> $TMP/tmpscript
+ "rc.sshd" "The SSHD (secure shell) daemon" $RC_SSHD "SSHD allows secure encrypted logins to your machine." \\
+EOF
+fi
+
+cat << EOF >> $TMP/tmpscript
+ 2> $TMP/reply
+EOF
+
+. $TMP/tmpscript
+
+if [ ! $? = 0 ]; then
+ rm -f $TMP/reply $TMP/tmpscript
+ exit
+fi
+
+for service in rc.atalk rc.bind rc.cups rc.dnsmasq rc.fuse rc.hald rc.hplip rc.httpd rc.inetd rc.ip_forward rc.lprng rc.messagebus rc.mysqld rc.ntpd rc.pcmcia rc.rpc rc.samba rc.saslauthd rc.snmpd rc.sendmail rc.syslog rc.sshd ; do
+ if [ -f etc/rc.d/$service ]; then
+ if grep -w $service $TMP/reply 1> /dev/null ; then
+ chmod 755 etc/rc.d/$service
+ else
+ chmod 644 etc/rc.d/$service
+ fi
+ fi
+done
+
+rm -f $TMP/reply $TMP/tmpscript
+
diff --git a/source/a/pkgtools/scripts/upgradepkg b/source/a/pkgtools/scripts/upgradepkg
new file mode 100644
index 00000000..cc3250da
--- /dev/null
+++ b/source/a/pkgtools/scripts/upgradepkg
@@ -0,0 +1,387 @@
+#!/bin/sh
+# Copyright 1999 Patrick Volkerding, Moorhead, Minnesota, USA
+# Copyright 2001, 2002, 2003 Slackware Linux, Inc., Concord, California, USA
+# Copyright 2009 Patrick J. Volkerding, Sebeka, MN, USA
+# All rights reserved.
+#
+# Redistribution and use of this script, with or without modification, is
+# permitted provided that the following conditions are met:
+#
+# 1. Redistributions of this script must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# 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.
+#
+# Modified to handle either old 8.3 or new package-version-arch-build.tgz
+# packages, Sat Nov 17 14:25:58 PST 2001 volkerdi
+#
+# Rewritten to clean out _all_ old packages of a given basename, not just
+# the first one found, Thu Apr 4 01:01:05 PST 2002 volkerdi
+#
+# Added --install-new and --reinstall, Fri May 31 14:11:14 PDT 2002 volkerdi
+# Added --dry-run, Sat Apr 26 18:13:29 PDT 2003
+#
+# Sat Apr 25 21:18:53 UTC 2009
+# Support new compression types and package extensions.
+# Converted to use new pkgbase() function to remove pathname and
+# valid package extensions.
+
+# Return a package name that has been stripped of the dirname portion
+# and any of the valid extensions (only):
+pkgbase() {
+ PKGEXT=$(echo $1 | rev | cut -f 1 -d . | rev)
+ case $PKGEXT in
+ 'tgz' )
+ PKGRETURN=$(basename $1 .tgz)
+ ;;
+ 'tbz' )
+ PKGRETURN=$(basename $1 .tbz)
+ ;;
+ 'tlz' )
+ PKGRETURN=$(basename $1 .tlz)
+ ;;
+ 'txz' )
+ PKGRETURN=$(basename $1 .txz)
+ ;;
+ *)
+ PKGRETURN=$(basename $1)
+ ;;
+ esac
+ echo $PKGRETURN
+}
+
+usage() {
+ cat << EOF
+
+Usage: upgradepkg newpackage [newpackage2 ... ]
+ upgradepkg oldpackage%newpackage [oldpackage2%newpackage2 ... ]
+
+Upgradepkg upgrades a Slackware package (.tgz, .tbz, .tlz, .txz) from an
+older version to a newer one. It does this by INSTALLING the new package
+onto the system, and then REMOVING any files from the old package that
+aren't in the new package. If the old and new packages have the same
+name, a single argument is all that is required. If the packages have
+different names, supply the name of the old package followed by a percent
+symbol (%), then the name of the new package. Do not add any extra
+whitespace between pairs of old/new package names.
+
+Before upgrading a package, save any configuration files (such as in /etc)
+that you wish to keep. Sometimes these will be preserved, but it depends
+on the package. If you want to force new versions of the config files
+to be installed, remove the old ones manually prior to running upgradepkg.
+
+To upgrade in a directory other than / (such as /mnt):
+
+ ROOT=/mnt upgradepkg package.tgz (or .tbz, .tlz, .txz)
+
+EOF
+}
+
+# Make sure there's a proper temp directory:
+TMP=$ROOT/var/log/setup/tmp
+# If the $TMP directory doesn't exist, create it:
+if [ ! -d $TMP ]; then
+ rm -rf $TMP # make sure it's not a symlink or something stupid
+ mkdir $TMP
+ chmod 700 $TMP # no need to leave it open
+fi
+
+# This script expects an 022 umask:
+umask 022
+
+# $ROOT defined?
+if [ -d "$ROOT" ]; then
+ export ROOT
+fi
+
+# --help or no args?
+if [ "$1" = "" -o "$1" = "--help" -o "$1" = "-?" ]; then
+ usage;
+ exit 1;
+fi
+
+# Arg processing loop. These must come before any packages are listed.
+while [ 0 ]; do
+ if [ "$1" = "--no-paranoia" ]; then
+ # Enable --no-paranoia mode. This is so not-recommended that we're
+ # not even going to document it. ;) If a file used to be directly
+ # managed and now is moved into place, using --no-paranoia will cause
+ # it to improperly disappear. It does slightly speed things up, though.
+ # Don't use it.
+ NOT_PARANOID="true"
+ shift 1
+ elif [ "$1" = "--install-new" ]; then
+ # Install packages that do not already have an installed version.
+ # The usual default is to skip them.
+ INSTALL_NEW="yes"
+ shift 1
+ elif [ "$1" = "--reinstall" ]; then
+ # Reinstall packages even if the installed one is the same version.
+ REINSTALL="true"
+ shift 1
+ elif [ "$1" = "--verbose" -o "$1" = "-v" ]; then
+ # We're adding a --verbose mode that doesn't filter removepkg as much
+ VERBOSE="verbose"
+ shift 1
+ elif [ "$1" = "--dry-run" ]; then
+ # Output a report about which packages would be installed or upgraded
+ # but don't actually perform the upgrades.
+ DRY_RUN="true"
+ shift 1
+ else # no more args
+ break;
+ fi
+done # processing args
+
+# Here's a function to figure out the package name from one of those
+# new long filenames. We'll need this to double check the name of the
+# old package.
+
+package_name() {
+ STRING=$(pkgbase $1)
+ # Check for old style package name with one segment:
+ if [ "$(echo $STRING | cut -f 1 -d -)" = "$(echo $STRING | cut -f 2 -d -)" ]; then
+ echo $STRING
+ else # has more than one dash delimited segment
+ # Count number of segments:
+ INDEX=1
+ while [ ! "$(echo $STRING | cut -f $INDEX -d -)" = "" ]; do
+ INDEX=$(expr $INDEX + 1)
+ done
+ INDEX=$(expr $INDEX - 1) # don't include the null value
+ # If we don't have four segments, return the old-style (or out of spec) package name:
+ if [ "$INDEX" = "2" -o "$INDEX" = "3" ]; then
+ echo $STRING
+ else # we have four or more segments, so we'll consider this a new-style name:
+ NAME=$(expr $INDEX - 3)
+ NAME="$(echo $STRING | cut -f 1-$NAME -d -)"
+ echo $NAME
+ # cruft for later ;)
+ #VER=$(expr $INDEX - 2)
+ #VER="$(echo $STRING | cut -f $VER -d -)"
+ #ARCH=$(expr $INDEX - 1)
+ #ARCH="$(echo $STRING | cut -f $ARCH -d -)"
+ #BUILD="$(echo $STRING | cut -f $INDEX -d -)"
+ fi
+ fi
+}
+
+ERRCODE=0
+
+# Main processing loop:
+while [ ! "$1" = "" ]; do
+
+# Simple package integrity check:
+if [ ! -f $(echo $1 | cut -f 2 -d '%') ]; then
+ ERRCODE=4
+ echo "Cannot install $1: file not found"
+ shift 1
+ continue;
+fi
+
+# Figure out the names of the old and new packages:
+OLD=$(echo $1 | cut -f 1 -d '%')
+NEW=$(echo $1 | cut -f 2 -d '%')
+INCOMINGDIR=$(dirname $NEW)
+# These are the package names with the extension:
+NNAME=$(basename $NEW)
+ONAME=$(basename $OLD)
+# These are the package names without the extension:
+OLD=$(pkgbase $OLD)
+NEW=$(pkgbase $NEW)
+
+# Make sure the extension is valid:
+if [ "$NNAME" = "$NEW" ]; then
+ # We won't throw an ERRCODE for this, but the package is skipped:
+ echo "Cannot install $1: invalid package extension"
+ shift 1
+ continue;
+fi
+
+# Check and fix the old package name:
+SHORT="$(package_name $OLD)"
+if [ ! -r $ROOT/var/log/packages/$OLD ]; then
+ if ls $ROOT/var/log/packages/$SHORT* 1> /dev/null 2> /dev/null ; then
+ for installed_package in $ROOT/var/log/packages/$SHORT* ; do
+ if [ "$(package_name $installed_package)" = "$SHORT" ]; then # found one
+ OLD="$(basename $installed_package)"
+ break
+ fi
+ done
+ fi
+fi
+
+# Test to see if both the old and new packages are where we expect them
+# to be -- skip to the next package (or package pair) if anything's wrong:
+
+if [ ! -r $ROOT/var/log/packages/$OLD ]; then
+ if [ ! "$INSTALL_NEW" = "yes" ]; then
+ if [ "$DRY_RUN" = "true" ]; then
+ echo "$OLD would not be upgraded (no installed package named $SHORT)."
+ else
+ echo
+ echo "Error: there is no installed package named $OLD."
+ echo " (looking for $ROOT/var/log/packages/$OLD)"
+ echo
+ fi
+ ERRCODE=1
+ else # --install-new was given, so install the new package:
+ if [ "$DRY_RUN" = "true" ]; then
+ echo "$NEW would be installed (new package)."
+ else
+ cat << EOF
+
++==============================================================================
+| Installing new package $INCOMINGDIR/$NNAME
++==============================================================================
+
+EOF
+ installpkg $INCOMINGDIR/$NNAME
+ fi
+ fi
+ shift 1
+ continue;
+elif [ ! -r "$INCOMINGDIR/$NNAME" ]; then
+ if [ "$DRY_RUN" = "true" ]; then
+ echo "$NEW incoming package not found (command line)."
+ else
+ echo
+ echo "Error: incoming package $INCOMINGDIR/$NNAME not found."
+ echo
+ fi
+ shift 1
+ ERRCODE=1
+ continue;
+fi
+
+# Unless --reinstall was given, compare the package names
+# and skip any exact matches:
+if [ ! "$REINSTALL" = "true" ]; then
+ if [ "$OLD" = "$NEW" ]; then
+ if [ "$DRY_RUN" = "true" ]; then
+ echo "$NEW would be skipped (already installed)."
+ else
+ cat << EOF
+
++==============================================================================
+| Skipping package $NEW (already installed)
++==============================================================================
+
+EOF
+ fi
+ shift 1
+ continue;
+ fi
+fi
+
+# Showtime. Let's do the upgrade. First, we will rename all the
+# installed packages with this basename to make them easy to remove later:
+
+TIMESTAMP=$(date +%Y-%m-%d,%T)
+SHORT="$(package_name $OLD)"
+if [ "$DRY_RUN" = "true" ]; then
+ echo -n "$NEW would upgrade: "
+ for installed_package in $ROOT/var/log/packages/$SHORT* ; do
+ if [ "$(package_name $installed_package)" = "$SHORT" ]; then
+ echo -n "$(pkgbase $installed_package)"
+ fi
+ done
+ echo
+ shift 1
+ continue
+fi
+for installed_package in $ROOT/var/log/packages/$SHORT* ; do
+ if [ "$(package_name $installed_package)" = "$SHORT" ]; then
+ mv $installed_package ${installed_package}-upgraded-$TIMESTAMP
+ fi
+done
+for installed_script in $ROOT/var/log/scripts/$SHORT* ; do
+ if [ "$(package_name $installed_script)" = "$SHORT" ]; then
+ if [ -r $installed_script ]; then
+ mv $installed_script ${installed_script}-upgraded-$TIMESTAMP
+ fi
+ fi
+done
+
+# Print a banner for the current upgrade:
+cat << EOF
+
++==============================================================================
+| Upgrading $OLD package using $INCOMINGDIR/$NNAME
++==============================================================================
+
+EOF
+
+# Next, the new package is pre-installed:
+if [ "$VERBOSE" = "verbose" ]; then
+ installpkg $INCOMINGDIR/$NNAME
+ RETCODE=$?
+else
+ echo "Pre-installing package $NEW..."
+ installpkg $INCOMINGDIR/$NNAME 1> /dev/null
+ RETCODE=$?
+fi
+# Make sure that worked:
+if [ ! $RETCODE = 0 ]; then
+ echo "ERROR: Package $INCOMINGDIR/$NNAME did not install"
+ echo "correctly. You may need to reinstall your old package"
+ echo "to avoid problems. Make sure the new package is not"
+ echo "corrupted."
+ sleep 30
+ # Skip this package, but still try to proceed. Good luck...
+ shift 1
+ continue;
+fi
+
+# Now, the leftovers from the old package(s) can go. Pretty simple, huh? :)
+if [ -d "$ROOT" ]; then
+ ( cd $ROOT/var/log/packages
+ for rempkg in *-$TIMESTAMP ; do
+ if [ "$VERBOSE" = "verbose" ]; then
+ ROOT=$ROOT removepkg $rempkg
+ else
+ ROOT=$ROOT removepkg $rempkg | grep -v "Skipping\." | grep -v "Removing files:"
+ fi
+ done
+ )
+else
+ ( cd /var/log/packages
+ for rempkg in *-$TIMESTAMP ; do
+ if [ "$VERBOSE" = "verbose" ]; then
+ removepkg $rempkg
+ else
+ removepkg $rempkg | grep -v "Skipping\." | grep -v "Removing files:"
+ fi
+ done
+ )
+fi
+echo
+
+# Again! Again!
+# Seriously, the reinstalling of a package can be crucial if any files
+# shift location, so we should always reinstall as the final step:
+if [ ! "$NOT_PARANOID" = "true" ]; then
+ installpkg $INCOMINGDIR/$NNAME
+fi
+
+echo "Package $OLD upgraded with new package $INCOMINGDIR/$NNAME."
+ERRCODE=0
+
+# Process next parameter:
+shift 1
+
+done
+
+if [ ! "$DRY_RUN" = "true" ]; then
+ echo
+fi
+exit $ERRCODE
diff --git a/source/a/pkgtools/slack-desc b/source/a/pkgtools/slack-desc
new file mode 100644
index 00000000..ab3fc119
--- /dev/null
+++ b/source/a/pkgtools/slack-desc
@@ -0,0 +1,19 @@
+# HOW TO EDIT THIS FILE:
+# The "handy ruler" below makes it easier to edit a package description. Line
+# up the first '|' above the ':' following the base package name, and the '|' on
+# the right side marks the last column you can put a character in. You must make
+# exactly 11 lines for the formatting to be correct. It's also customary to
+# leave one space after the ':'.
+
+ |-----handy-ruler------------------------------------------------------|
+pkgtools: pkgtools (The Slackware package maintenance system)
+pkgtools:
+pkgtools: This package contains utilities for handling Slackware packages.
+pkgtools: Included are the command line utilities 'installpkg', 'removepkg',
+pkgtools: 'makepkg', 'explodepkg', and 'upgradepkg' that install, remove,
+pkgtools: build, examine, and upgrade software packages. Also included are
+pkgtools: 'pkgtool', a menu based program for installing packages, removing
+pkgtools: packages, or viewing the packages that are installed on the system,
+pkgtools: documentation (man pages), and a few other system admin scripts.
+pkgtools:
+pkgtools:
diff --git a/source/a/procps/procinfo.gcc3.diff b/source/a/procps/procinfo.gcc3.diff
new file mode 100644
index 00000000..96a3dbb1
--- /dev/null
+++ b/source/a/procps/procinfo.gcc3.diff
@@ -0,0 +1,11 @@
+--- ./routines.c.orig 2001-02-24 15:30:45.000000000 -0800
++++ ./routines.c 2003-02-07 13:38:09.000000000 -0800
+@@ -390,7 +390,7 @@
+ unsigned int d, h, m, s;
+ static char buf[22];
+
+- t = t * 100 / HZ;
++ t = t * 100. / HZ;
+ d = (int) (t / 8640000);
+ t = t - (long) (d * 8640000);
+ h = (int) (t / 360000);
diff --git a/source/a/procps/procinfo.lsm b/source/a/procps/procinfo.lsm
new file mode 100644
index 00000000..70ff559f
--- /dev/null
+++ b/source/a/procps/procinfo.lsm
@@ -0,0 +1,15 @@
+Begin3
+Title: procinfo
+Version: 18
+Entered-date: 02MAR01
+Description: A utility to prettyprint /proc/*
+Keywords: procinfo, system info
+Author: svm@kozmix.cistron.nl (Sander van Malssen)
+Maintained-by: svm@kozmix.cistron.nl (Sander van Malssen)
+Primary-site: ftp.cistron.nl /pub/people/svm
+ 23k procinfo-18.tar.gz
+Alternate-site: metalab.unc.edu /pub/Linux/system/status/ps
+Alternate-site: tsx-11.mit.edu /pub/linux/sources/usr.bin
+Platforms: Linux 1.0.x - 2.4.x
+Copying-policy: GNU Public License
+End
diff --git a/source/a/procps/procps-3.2.7-ps-eip64.diff b/source/a/procps/procps-3.2.7-ps-eip64.diff
new file mode 100644
index 00000000..9eb851f4
--- /dev/null
+++ b/source/a/procps/procps-3.2.7-ps-eip64.diff
@@ -0,0 +1,48 @@
+--- procps-3.2.7/ps/ps.1.eip64 2007-06-14 11:08:35.000000000 +0200
++++ procps-3.2.7/ps/ps.1 2007-06-14 11:03:28.000000000 +0200
+@@ -1156,6 +1156,14 @@
+ or\ a\ decimal representation otherwise.
+ T}
+
++rip RIP T{
++64-bit instruction pointer.
++T}
++
++rsp RSP T{
++64-bit stack pointer.
++T}
++
+ rss RSS T{
+ resident set size, the non\-swapped physical memory that
+ a task has used (in\ kiloBytes).
+--- procps-3.2.7/ps/output.c.eip64 2007-06-14 11:08:24.000000000 +0200
++++ procps-3.2.7/ps/output.c 2007-06-14 10:58:21.000000000 +0200
+@@ -764,10 +764,18 @@
+ return snprintf(outbuf, COLWID, "%08x", (unsigned)(pp->kstk_esp));
+ }
+
++static int pr_rsp(char *restrict const outbuf, const proc_t *restrict const pp){
++ return snprintf(outbuf, COLWID, "%016lx", (unsigned long)(pp->kstk_esp));
++}
++
+ static int pr_eip(char *restrict const outbuf, const proc_t *restrict const pp){
+ return snprintf(outbuf, COLWID, "%08x", (unsigned)(pp->kstk_eip));
+ }
+
++static int pr_rip(char *restrict const outbuf, const proc_t *restrict const pp){
++ return snprintf(outbuf, COLWID, "%016lx", (unsigned long)(pp->kstk_eip));
++}
++
+ /* This function helps print old-style time formats */
+ static int old_time_helper(char *dst, unsigned long long t, unsigned long long rel) {
+ if(!t) return snprintf(dst, COLWID, " -");
+@@ -1403,7 +1411,9 @@
+ {"resident", "RES", pr_nop, sr_resident, 5,MEM, LNX, PO|RIGHT},
+ {"rgid", "RGID", pr_rgid, sr_rgid, 5, 0, XXX, ET|RIGHT},
+ {"rgroup", "RGROUP", pr_rgroup, sr_rgroup, 8, GRP, U98, ET|USER}, /* was 8 wide */
++{"rip", "RIP", pr_rip, sr_kstk_eip, 16, 0, LNX, TO|RIGHT},
+ {"rlink", "RLINK", pr_nop, sr_nop, 8, 0, BSD, AN|RIGHT},
++{"rsp", "RSP", pr_rsp, sr_kstk_eip, 16, 0, LNX, TO|RIGHT},
+ {"rss", "RSS", pr_rss, sr_rss, 5, 0, XXX, PO|RIGHT}, /* was 5 wide */
+ {"rssize", "RSS", pr_rss, sr_vm_rss, 5, 0, DEC, PO|RIGHT}, /*rsz*/
+ {"rsz", "RSZ", pr_rss, sr_vm_rss, 5, 0, BSD, PO|RIGHT}, /*rssize*/
diff --git a/source/a/procps/procps.SlackBuild b/source/a/procps/procps.SlackBuild
new file mode 100755
index 00000000..a5163bbc
--- /dev/null
+++ b/source/a/procps/procps.SlackBuild
@@ -0,0 +1,191 @@
+#!/bin/sh
+
+# Copyright 2005-2009 Patrick J. Volkerding, Sebeka, Minnesota, USA
+# All rights reserved.
+#
+# Redistribution and use of this script, with or without modification, is
+# permitted provided that the following conditions are met:
+#
+# 1. Redistributions of this script must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# 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.
+
+
+VERSION=3.2.7
+# Sometimes this number lags behind...
+SOVER=3.2.7
+PSMISCVER=22.3
+ARCH=${ARCH:-x86_64}
+BUILD=${BUILD:-3}
+
+CWD=$(pwd)
+TMP=${TMP:-/tmp}
+PKG=$TMP/package-procps
+
+if [ "$ARCH" = "i386" ]; then
+ SLKCFLAGS="-O2 -march=i386 -mcpu=i686"
+ LIBDIRSUFFIX=""
+elif [ "$ARCH" = "i486" ]; then
+ SLKCFLAGS="-O2 -march=i486 -mtune=i686"
+ LIBDIRSUFFIX=""
+elif [ "$ARCH" = "s390" ]; then
+ SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
+elif [ "$ARCH" = "x86_64" ]; then
+ SLKCFLAGS="-O2 -fPIC"
+ LIBDIRSUFFIX="64"
+fi
+
+# Prepare build locations:
+rm -rf $PKG
+mkdir -p $TMP $PKG
+
+cd $TMP
+rm -rf procps-$VERSION
+tar xzvf $CWD/procps-$VERSION.tar.gz
+cd procps-$VERSION
+chown -R root:root .
+find . \
+ \( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \
+ -exec chmod 755 {} \; -o \
+ \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
+ -exec chmod 644 {} \;
+
+mkdir -p $PKG/usr/doc/procps-$VERSION
+cp -a BUGS COPYING COPYING.LIB NEWS TODO $PKG/usr/doc/procps-$VERSION
+chown root:root $PKG/usr/doc/procps-$VERSION/*
+chmod 644 $PKG/usr/doc/procps-$VERSION/*
+# While I don't agree this is a harmful patch, I will defer to the
+# maintainer's judgement on this one. Besides, I quit using the '-'
+# with ps years ago. It wasn't that hard to change.
+#echo zcat $CWD/procps.nowarning.diff.gz
+#zcat $CWD/procps.nowarning.diff.gz | patch -p1 --verbose || exit 1
+
+# Display the location from which the user is logged in by default.
+# This is how previous versions of 'w' in Slackware have always
+# defaulted.
+echo zcat $CWD/procps.w.showfrom.diff.gz
+zcat $CWD/procps.w.showfrom.diff.gz | patch -p1 --verbose || exit 1
+
+if [ "$ARCH" = "x86_64" ]; then
+# Taken from RedHat: ps truncates eip and esp to 32bit values on 64bit systems.
+# The patch adds 64bit rip and rsp to the 'ps' output options on x86_64
+ zcat $CWD/procps-3.2.7-ps-eip64.diff.gz | patch -p1 --verbose || exit 1
+fi
+
+make OPT="$SLKCFLAGS"
+mkdir -p $PKG/lib${LIBDIRSUFFIX} $PKG/bin $PKG/sbin $PKG/usr/bin
+cat free > $PKG/bin/free
+cat ps/ps> $PKG/bin/ps
+cat proc/libproc-${SOVER}.so > $PKG/lib${LIBDIRSUFFIX}/libproc-${SOVER}.so
+cat pkill > $PKG/usr/bin/pkill
+cat skill > $PKG/usr/bin/skill
+cat pmap > $PKG/usr/bin/pmap
+cat slabtop > $PKG/usr/bin/slabtop
+cat sysctl > $PKG/sbin/sysctl
+cat tload > $PKG/usr/bin/tload
+cat top > $PKG/usr/bin/top
+cat uptime > $PKG/usr/bin/uptime
+cat vmstat > $PKG/usr/bin/vmstat
+cat w > $PKG/usr/bin/w
+cat watch > $PKG/usr/bin/watch
+( cd $PKG/usr/bin
+ ln -sf pkill pgrep
+ ln -sf skill snice
+ # Just in case
+ ln -sf /bin/free .
+ ln -sf /bin/ps .
+)
+cp -a ps/ps.1 .
+mkdir -p $PKG/usr/man/man1
+for page in free.1 pgrep.1 pkill.1 ps.1 slabtop.1 skill.1 snice.1 tload.1 top.1 uptime.1 w.1 watch.1 ; do
+ cat $page | gzip -9c > $PKG/usr/man/man1/$page.gz
+done
+mkdir -p $PKG/usr/man/man5
+cat sysctl.conf.5 | gzip -9c > $PKG/usr/man/man5/sysctl.conf.5.gz
+mkdir -p $PKG/usr/man/man8
+for page in vmstat.8 sysctl.8 ; do
+ cat $page | gzip -9c > $PKG/usr/man/man8/$page.gz
+done
+
+echo "+=============+"
+echo "| psmisc-$PSMISCVER |"
+echo "+=============+"
+cd $TMP
+rm -rf psmisc-$PSMISCVER
+tar xzvf $CWD/psmisc-$PSMISCVER.tar.gz
+cd psmisc-$PSMISCVER
+# Maybe we'll turn on NLS when it supports more than
+# just US English. :)
+CFLAGS="$SLKCFLAGS" \
+./configure --prefix=/usr \
+ --libdir=/usr/lib${LIBDIRSUFFIX} \
+ --disable-nls
+mkdir -p $PKG/usr/doc/psmisc-$PSMISCVER
+cp -a AUTHORS COPYING ChangeLog INSTALL NEWS README $PKG/usr/doc/psmisc-$PSMISCVER
+chmod 644 $PKG/usr/doc/psmisc-$PSMISCVER/*
+chown root:root $PKG/usr/doc/psmisc-$PSMISCVER/*
+make
+cd src
+strip fuser pstree killall
+cat fuser > $PKG/usr/bin/fuser
+cat pstree > $PKG/usr/bin/pstree
+cat killall > $PKG/bin/killall
+cd ../doc
+for page in fuser.1 killall.1 pstree.1 ; do
+ cat $page | gzip -9c > $PKG/usr/man/man1/$page.gz
+done
+cd ..
+
+echo "+=============+"
+echo "| procinfo-18 |"
+echo "+=============+"
+cd $TMP
+rm -rf procinfo-18
+tar xzvf $CWD/procinfo-18.tar.gz
+cd procinfo-18
+zcat $CWD/procinfo.gcc3.diff.gz | patch -p1 --backup --suffix=.orig --verbose || exit 1
+mkdir -p $PKG/usr/doc/procinfo-18
+cp -a CHANGES README $PKG/usr/doc/procinfo-18
+chmod 644 $PKG/usr/doc/procinfo-18/*
+chown root:root $PKG/usr/doc/procinfo-18/*
+make CFLAGS="$SLKCFLAGS"
+strip procinfo
+cat procinfo > $PKG/usr/bin/procinfo
+cat lsdev.pl > $PKG/usr/bin/lsdev
+cat socklist.pl > $PKG/usr/bin/socklist
+for page in procinfo.8 lsdev.8 socklist.8 ; do
+ cat $page | gzip -9c > $PKG/usr/man/man8/$page.gz
+done
+
+# Fix permissions:
+chmod 755 $PKG/lib${LIBDIRSUFFIX}/* $PKG/bin/* $PKG/sbin/* $PKG/usr/bin/*
+( cd $PKG
+ find . | xargs file | grep "executable" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
+ find . | xargs file | grep "shared object" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
+)
+
+mkdir -p $PKG/install
+cat $CWD/slack-desc > $PKG/install/slack-desc
+
+# Build the package:
+cd $PKG
+makepkg -l y -c n $TMP/procps-$VERSION-$ARCH-$BUILD.txz
+
+# Clean up the extra stuff:
+if [ "$1" = "--cleanup" ]; then
+ rm -rf $TMP/procps-$VERSION
+ rm -rf $TMP/procinfo-18
+ rm -rf $TMP/psmisc-$PSMISCVER
+ rm -rf $PKG
+fi
diff --git a/source/a/procps/procps.nowarning.diff b/source/a/procps/procps.nowarning.diff
new file mode 100644
index 00000000..bd4b1466
--- /dev/null
+++ b/source/a/procps/procps.nowarning.diff
@@ -0,0 +1,25 @@
+--- ./ps/parser.c.orig 2004-08-09 17:41:10.000000000 -0700
++++ ./ps/parser.c 2004-08-16 18:30:09.000000000 -0700
+@@ -1213,12 +1213,20 @@
+ // about "ps -aux" suddenly changing behavior if a user "x" were
+ // added to the system.
+ //
++ // Yes, this is still getting patched out here. IMO, people can change
++ // old habits if and when user 'x' comes along. I still find this warning
++ // to be a POLA violation. No offense... that's the beauty of open source.
++ // You've got your ideas about this, and I have mine, and we're allowed
++ // to disagree. Nothing in the UNIX or POSIX standards requires this (annoying)
++ // warning to be displayed, and we're not changing the actual behavior
++ // of ps in any way. I know of no other 'ps' that produces this message.
++ //
+ // Also, a "-x" option is coming. It's already there in fact,
+ // for some non-default personalities. So "ps -ax" will parse
+ // as SysV options... and you're screwed if you've been patching
+ // out the friendly warning. Cut-over is likely to be in 2005.
+- if(!(personality & PER_FORCE_BSD))
+- fprintf(stderr, "Warning: bad ps syntax, perhaps a bogus '-'? See http://procps.sf.net/faq.html\n");
++ // if(!(personality & PER_FORCE_BSD))
++ // fprintf(stderr, "Warning: bad ps syntax, perhaps a bogus '-'? See http://procps.sf.net/faq.html\n");
+ // Remember: contact albert@users.sf.net or procps-feedback@lists.sf.net
+ // if you should feel tempted. Be damn sure you understand all
+ // the issues. The same goes for other stuff too, BTW. Please ask.
diff --git a/source/a/procps/procps.w.showfrom.diff b/source/a/procps/procps.w.showfrom.diff
new file mode 100644
index 00000000..0b1c71a3
--- /dev/null
+++ b/source/a/procps/procps.w.showfrom.diff
@@ -0,0 +1,11 @@
+--- ./w.c.orig 2002-12-21 05:30:33.000000000 -0800
++++ ./w.c 2003-02-02 11:46:58.000000000 -0800
+@@ -33,6 +33,8 @@
+
+ typedef struct utmp utmp_t;
+
++#define W_SHOWFROM 1
++
+ #ifdef W_SHOWFROM
+ # define FROM_STRING "on"
+ #else
diff --git a/source/a/procps/slack-desc b/source/a/procps/slack-desc
new file mode 100644
index 00000000..22cf9e0d
--- /dev/null
+++ b/source/a/procps/slack-desc
@@ -0,0 +1,19 @@
+# HOW TO EDIT THIS FILE:
+# The "handy ruler" below makes it easier to edit a package description. Line
+# up the first '|' above the ':' following the base package name, and the '|'
+# on the right side marks the last column you can put a character in. You must
+# make exactly 11 lines for the formatting to be correct. It's also
+# customary to leave one space after the ':'.
+
+ |-----handy-ruler------------------------------------------------------|
+procps: procps (utilities for displaying process information)
+procps:
+procps: The procps package provides the classic set of utilities used to
+procps: display information about the processes currently running on the
+procps: machine.
+procps:
+procps:
+procps:
+procps:
+procps:
+procps:
diff --git a/source/a/quota/quota.SlackBuild b/source/a/quota/quota.SlackBuild
new file mode 100755
index 00000000..0ae450b9
--- /dev/null
+++ b/source/a/quota/quota.SlackBuild
@@ -0,0 +1,108 @@
+#!/bin/sh
+
+# Copyright 2008, 2009 Patrick J. Volkerding, Sebeka, Minnesota, USA
+# All rights reserved.
+#
+# Redistribution and use of this script, with or without modification, is
+# permitted provided that the following conditions are met:
+#
+# 1. Redistributions of this script must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# 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.
+
+
+VERSION=3.17
+ARCH=${ARCH:-x86_64}
+BUILD=${BUILD:-1}
+
+CWD=$(pwd)
+TMP=${TMP:-/tmp}
+PKG=$TMP/package-quota
+
+rm -rf $PKG
+mkdir -p $TMP $PKG
+
+cd $TMP
+rm -rf quota-tools
+tar xvf $CWD/quota-$VERSION.tar.?z*
+cd quota-tools
+chown -R root:root .
+find . -perm 2755 -exec chmod 755 {} \;
+./configure \
+ --prefix=/usr \
+ $ARCH-slackware-linux
+make
+make mo
+mkdir -p $PKG/sbin
+cat convertquota > $PKG/sbin/convertquota
+cat quotacheck > $PKG/sbin/quotacheck
+cat quotaon > $PKG/sbin/quotaon
+( cd $PKG/sbin ; ln -sf quotaon quotaoff )
+chmod 755 $PKG/sbin/*
+mkdir -p $PKG/usr/sbin
+for file in edquota repquota warnquota quotastats setquota quot xqmstats rpc.rquotad ; do
+ cat $file > $PKG/usr/sbin/$file
+done
+chmod 755 $PKG/usr/sbin/*
+mkdir -p $PKG/usr/bin
+cat quota > $PKG/usr/bin/quota
+chmod 755 $PKG/usr/bin/quota
+mkdir -p $PKG/usr/include/rpcsvc
+cat rquota.h > $PKG/usr/include/rpcsvc/rquota.h
+cat rquota.x > $PKG/usr/include/rpcsvc/rquota.x
+mkdir -p $PKG/etc
+cat warnquota.conf > $PKG/etc/warnquota.conf-sample
+cat quotatab > $PKG/etc/quotatab-sample
+cat quotagrpadmins > $PKG/etc/quotagrpadmins-sample
+mkdir -p $PKG/usr/man/man{1,2,3,8}
+for page in *.1 ; do
+ cat $page | gzip -9c > $PKG/usr/man/man1/$page.gz
+done
+for page in *.2 ; do
+ cat $page | gzip -9c > $PKG/usr/man/man2/$page.gz
+done
+for page in *.3 ; do
+ cat $page | gzip -9c > $PKG/usr/man/man3/$page.gz
+done
+for page in *.8 ; do
+ cat $page | gzip -9c > $PKG/usr/man/man8/$page.gz
+done
+mkdir -p $PKG/usr/share/locale/pl/LC_MESSAGES
+cat po/pl.mo > $PKG/usr/share/locale/pl/LC_MESSAGES/quota.mo
+mkdir -p $PKG/usr/doc/quota-$VERSION
+cp -a Changelog README* $PKG/usr/doc/quota-$VERSION
+( cd doc
+ sgml2txt quotadoc.sgml
+ sgml2html -s 0 quotadoc.sgml
+ if [ ! -r quotadoc.html ]; then
+ echo "WARNING: no quotadoc.html generated"
+ sleep 100
+ fi
+ cp quotadoc*txt quotadoc*html $PKG/usr/doc/quota-$VERSION/ )
+find $PKG/usr/doc/quota-$VERSION -name CVS -type d | xargs rm -rf
+( cd $PKG
+ find . | xargs file | grep "executable" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
+ find . | xargs file | grep "shared object" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
+)
+mkdir -p $PKG/install
+cat $CWD/slack-desc > $PKG/install/slack-desc
+
+# Build the package:
+cd $PKG
+makepkg -l y -c n $TMP/quota-$VERSION-$ARCH-$BUILD.txz
+
+# Clean up the extra stuff:
+if [ "$1" = "--cleanup" ]; then
+ rm -rf $TMP/quota
+ rm -rf $PKG
+fi
diff --git a/source/a/quota/slack-desc b/source/a/quota/slack-desc
new file mode 100644
index 00000000..dd07ea43
--- /dev/null
+++ b/source/a/quota/slack-desc
@@ -0,0 +1,19 @@
+# HOW TO EDIT THIS FILE:
+# The "handy ruler" below makes it easier to edit a package description. Line
+# up the first '|' above the ':' following the base package name, and the '|'
+# on the right side marks the last column you can put a character in. You must
+# make exactly 11 lines for the formatting to be correct. It's also
+# customary to leave one space after the ':'.
+
+ |-----handy-ruler------------------------------------------------------|
+quota: quota (Linux disk quota utilities)
+quota:
+quota: An implementation of the diskquota system for the Linux operating
+quota: system to keep those greedy users from gobbling up 100% of the hard
+quota: drive space. Works with ext2, ext3, reiserfs, and xfs filesystems.
+quota: This system is based on the Melbourne quota system by Robert Elz.
+quota: Edvard Tuinder and Marco van Wieringen ported this code to Linux.
+quota: Jan Kara added support for the new Linux quota format and the XFS
+quota: filesystem.
+quota:
+quota:
diff --git a/source/a/reiserfsprogs/reiserfsprogs.SlackBuild b/source/a/reiserfsprogs/reiserfsprogs.SlackBuild
new file mode 100755
index 00000000..c56d8f13
--- /dev/null
+++ b/source/a/reiserfsprogs/reiserfsprogs.SlackBuild
@@ -0,0 +1,110 @@
+#!/bin/sh
+
+# Copyright 2008, 2009 Patrick J. Volkerding, Sebeka, MN, USA
+# All rights reserved.
+#
+# Redistribution and use of this script, with or without modification, is
+# permitted provided that the following conditions are met:
+#
+# 1. Redistributions of this script must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# 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.
+
+VERSION=3.6.21
+ARCH=${ARCH:-x86_64}
+BUILD=${BUILD:-1}
+
+NUMJOBS=${NUMJOBS:-" -j7 "}
+
+CWD=$(pwd)
+TMP=${TMP:-/tmp}
+PKG=$TMP/package-reiserfs
+
+if [ "$ARCH" = "i486" ]; then
+ SLKCFLAGS="-O2 -march=i486 -mtune=i686"
+elif [ "$ARCH" = "s390" ]; then
+ SLKCFLAGS="-O2"
+elif [ "$ARCH" = "x86_64" ]; then
+ SLKCFLAGS="-O2 -fPIC"
+fi
+
+rm -rf $PKG
+mkdir -p $TMP $PKG
+
+cd $TMP
+rm -rf reiserfsprogs-$VERSION
+tar xvf $CWD/reiserfsprogs-$VERSION.tar.?z* || exit 1
+cd reiserfsprogs-$VERSION || exit 1
+chown -R root:root .
+find . \
+ \( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \
+ -exec chmod 755 {} \; -o \
+ \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
+ -exec chmod 644 {} \;
+
+CFLAGS="$SLKCFLAGS" \
+./configure \
+ --prefix=/usr \
+ --sbindir=/sbin \
+ --mandir=/usr/man \
+ --build=$ARCH-slackware-linux
+
+if [ "$ARCH" = "x86_64" ]; then
+ # To prevent compilation errors due to broken header:
+ sed -i -e 's?#define HAVE_ASM_UNALIGNED_H 1?/* & */?' config.h
+fi
+
+make $NUMJOBS || make || exit1
+make install DESTDIR=$PKG || exit 1
+
+find $PKG | xargs file | grep -e "executable" -e "shared object" | grep ELF \
+ | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
+
+# Add a couple of useful symlinks
+( cd $PKG/sbin
+ ln -sf mkreiserfs mkfs.reiserfs
+ ln -sf reiserfsck fsck.reiserfs
+)
+
+# These were renamed, it seems
+# --> Deleting /usr/man/man8/debugreiserfs.8.gz
+# --> Deleting /usr/man/man8/mkreiserfs.8.gz
+# --> Deleting /usr/man/man8/reiserfsck.8.gz
+# --> Deleting /usr/man/man8/reiserfstune.8.gz
+# --> Deleting /usr/man/man8/resize_reiserfs.8.gz
+# Do we want symlinks for backwards compatibility? If so...
+( cd $PKG/usr/man/man8
+ ln -s mkfs.reiserfs.8 mkreiserfs.8
+ ln -s debugfs.reiserfs.8 debugreiserfs.8
+ ln -s fsck.reiserfs.8 reiserfsck.8
+ ln -s tunefs.reiserfs.8 reiserfstune.8
+ ln -s resizefs.reiserfs.8 resize_reiserfs.8
+)
+
+# Compress the man pages
+( cd $PKG/usr/man
+ find . -type f -exec gzip -9 {} \;
+ for i in $(find . -type l) ; do ln -s $(readlink $i).gz $i.gz ; rm $i ; done
+)
+
+mkdir -p $PKG/usr/doc/reiserfsprogs-$VERSION
+cp -a \
+ AUTHORS COPYING* CREDITS INSTALL NEWS README* \
+ $PKG/usr/doc/reiserfsprogs-$VERSION
+chmod 644 $PKG/usr/doc/reiserfsprogs-$VERSION/*
+mkdir -p $PKG/install
+cat $CWD/slack-desc > $PKG/install/slack-desc
+
+cd $PKG
+/sbin/makepkg -l y -c n $TMP/reiserfsprogs-$VERSION-$ARCH-$BUILD.txz
+
diff --git a/source/a/reiserfsprogs/slack-desc b/source/a/reiserfsprogs/slack-desc
new file mode 100644
index 00000000..3358fdf7
--- /dev/null
+++ b/source/a/reiserfsprogs/slack-desc
@@ -0,0 +1,19 @@
+# HOW TO EDIT THIS FILE:
+# The "handy ruler" below makes it easier to edit a package description. Line
+# up the first '|' above the ':' following the base package name, and the '|'
+# on the right side marks the last column you can put a character in. You must
+# make exactly 11 lines for the formatting to be correct. It's also
+# customary to leave one space after the ':'.
+
+ |-----handy-ruler------------------------------------------------------|
+reiserfsprogs: reiserfsprogs (Reiserfs filesystem utilities)
+reiserfsprogs:
+reiserfsprogs: These utilities are used for Reiserfs. Reiserfs is a file system
+reiserfsprogs: based on balanced tree algorithms. Learn more at the home site:
+reiserfsprogs: http://www.namesys.com
+reiserfsprogs:
+reiserfsprogs: Reiserfs is the work of Hans Reiser and many others. See the file
+reiserfsprogs: /usr/doc/reiserfs*/README for full credits.
+reiserfsprogs:
+reiserfsprogs:
+reiserfsprogs:
diff --git a/source/a/rpm2tgz/rpm2targz b/source/a/rpm2tgz/rpm2targz
new file mode 100644
index 00000000..484e5ad0
--- /dev/null
+++ b/source/a/rpm2tgz/rpm2targz
@@ -0,0 +1,129 @@
+#!/bin/sh
+# Copyright 1997, 1998 Patrick Volkerding, Moorhead, MN USA
+# Copyright 2002, 2004 Slackware Linux, Inc., Concord, CA USA
+# Copyright 2006, 2009 Patrick Volkerding, Sebeka, MN USA
+# All rights reserved.
+#
+# Redistribution and use of this script, with or without modification, is
+# permitted provided that the following conditions are met:
+#
+# 1. Redistributions of this script must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# 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.
+#
+
+if [ "$1" = "" ]; then
+ echo "$0: Converts RPM format to standard GNU tar + GNU zip format."
+ echo " (view converted packages with \"less\", install and remove"
+ echo " with \"installpkg\", \"removepkg\", \"pkgtool\", or manually"
+ echo " with \"tar\")"
+ echo
+ echo "Usage: $0 <file.rpm>"
+ if [ "$(basename $0)" = "rpm2tgz" ]; then
+ echo " (Outputs \"file.tgz\")"
+ else
+ echo " (Outputs \"file.tar.gz\")"
+ fi
+ exit 1;
+fi
+
+CWD=$(pwd)
+
+# Create a new temporary directory with a secure filename:
+make_temp_dir() {
+ if [ -x "$(which mcookie)" ]; then
+ tempd=/tmp/tmp.$(mcookie)
+ mkdir -p -m 0755 $tempd
+ elif [ -x "$(which openssl)" ]; then
+ tempd=/tmp/tmp.$(dd if=/dev/urandom bs=1k count=1 2> /dev/null | openssl dgst -md5)
+ mkdir -p -m 0755 $tempd
+ elif [ -x "$(which md5)" ]; then
+ tempd=/tmp/tmp.$(dd if=/dev/urandom bs=1k count=1 2> /dev/null | md5)
+ mkdir -p -m 0755 $tempd
+ elif [ -x "$(which mktemp)" ]; then
+ tempd=$(mktemp -d)
+ chmod 755 $tempd
+ ## Uncomment for insecure use, but don't blame me:
+ #else
+ # tempd=/tmp/tmp.$$
+ # mkdir -p -m 0755 $tempd
+ fi
+ if [ -d $tempd ]; then # success, return the name of the directory:
+ echo $tempd
+ else
+ echo "ERROR: Could not find mcookie, openssl, or md5."
+ echo " Exiting since a secure temporary directory could not be made."
+ exit 1
+ fi
+}
+
+for i in $* ; do
+
+ # Determine if this is a source or binary RPM.
+ # If we have getrpmtype, use that. Otherwise, try "file".
+ if which getrpmtype 1> /dev/null 2> /dev/null; then
+ if getrpmtype -n $i | grep source 1> /dev/null 2> /dev/null ; then
+ isSource=1
+ else
+ isSource=0
+ fi
+ else # use file. This works fine on Slackware, and is the default.
+ if file $i | grep RPM | grep " src " 1> /dev/null 2> /dev/null ; then
+ isSource=1
+ else
+ isSource=0
+ fi
+ fi
+
+ # Create a temporary directory:
+ TMPDIR=$(make_temp_dir)
+
+ # Extract the RPM:
+ ofn=$TMPDIR/$(basename $i .rpm).cpio
+ if which rpm2cpio 1> /dev/null 2> /dev/null ; then
+ rpm2cpio $i > $ofn 2> /dev/null
+ if [ ! $? = 0 ]; then
+ echo "ERROR: rpm2cpio failed. (maybe $i is not an RPM?)"
+ rm -rf $TMPDIR
+ continue
+ fi
+ else # less reliable than rpm2cpio...
+ ( dd ibs=$(rpmoffset < $i) skip=1 if=$i 2> /dev/null | gzip -dc > $ofn 2>/dev/null ) || \
+ ( dd ibs=$(rpmoffset < $i) skip=1 if=$i 2> /dev/null | bzip2 -dc > $ofn 2>/dev/null )
+ fi
+ DEST=$TMPDIR
+ if [ "$isSource" = "1" ]; then
+ DEST=$DEST/$(basename $(basename $i .rpm) .src)
+ fi
+ mkdir -p $DEST
+ ( cd $DEST
+ cpio -i -m -d < $ofn 1> /dev/null 2> /dev/null
+ rm -f $ofn
+ find . -type d -perm 700 -exec chmod 755 {} \;
+ )
+
+ # If this program was called as "rpm2targz", then repack as a plain
+ # tar+gz archive. If it was called as "rpm2tgz", use Slackware's
+ # makepkg to produce the .tgz:
+ if [ "$(basename $0)" = "rpm2tgz" ]; then
+ ( cd $TMPDIR ; makepkg -l y -c n $CWD/$(basename $i .rpm).tgz )
+ else
+ ( cd $TMPDIR ; tar cf - . ) > $(basename $i .rpm).tar
+ gzip -9 $(basename $i .rpm).tar
+ fi
+
+ # Remove temporary directory:
+ rm -rf $TMPDIR
+
+done
+
diff --git a/source/a/rpm2tgz/rpm2targz.README b/source/a/rpm2tgz/rpm2targz.README
new file mode 100644
index 00000000..2ce141c0
--- /dev/null
+++ b/source/a/rpm2tgz/rpm2targz.README
@@ -0,0 +1,18 @@
+
+This package contains 'rpm2targz', a simple utility to convert Red Hat-style
+RPM packages into standard tar.gz archives. Converted binary packages can then
+be installed/removed using the 'installpkg/removepkg' commands, or 'pkgtool'.
+
+It's advisable to at least examine the converted package with 'less' to make
+sure it won't do anything too crazy to your system. If it does, Patrick
+Volkerding and David Cantrell are not responsible, so use this at your own
+risk. :-)
+
+By default, rpm2targz will attempt to use "file" to detect source RPMS, and will
+put the contents into a subdirectory in the resulting package. This may not be
+portable to other operating systems -- if you're trying to run rpm2targz on an
+OS that doesn't have a file that knows RPM types, and you care about this source
+RPM feature, you can compile and install David Cantrell's standalone getrpmtype
+utility. The getrpmtype.tar.gz source archive can be found in Slackware's
+source tree in source/a/rpm2tgz/.
+
diff --git a/source/a/rpm2tgz/rpm2tgz.SlackBuild b/source/a/rpm2tgz/rpm2tgz.SlackBuild
new file mode 100755
index 00000000..abfe3298
--- /dev/null
+++ b/source/a/rpm2tgz/rpm2tgz.SlackBuild
@@ -0,0 +1,58 @@
+#!/bin/sh
+
+# Copyright 2008, 2009 Patrick J. Volkerding, Sebeka, Minnesota, USA
+# All rights reserved.
+#
+# Redistribution and use of this script, with or without modification, is
+# permitted provided that the following conditions are met:
+#
+# 1. Redistributions of this script must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# 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.
+
+VERSION=1.1
+ARCH=${ARCH:-x86_64}
+BUILD=${BUILD:-1}
+
+CWD=$(pwd)
+TMP=${TMP:-/tmp}
+PKG=$TMP/package-bin
+
+rm -rf $PKG
+mkdir -p $TMP $PKG
+
+echo "+===========+"
+echo "| rpm2targz |"
+echo "+===========+"
+cd $TMP
+mkdir -p $PKG/usr/bin
+cc -o $PKG/usr/bin/rpmoffset $CWD/rpmoffset.c
+cat $CWD/rpm2targz > $PKG/usr/bin/rpm2targz
+chmod 755 $PKG/usr/bin/{rpmoffset,rpm2targz}
+( cd $PKG/usr/bin ; ln -sf rpm2targz rpm2tgz )
+mkdir -p $PKG/usr/doc/rpm2targz
+cp -a $CWD/rpm2targz.README $PKG/usr/doc/rpm2targz/rpm2targz.README
+chown root:root $PKG/usr/doc/rpm2targz/rpm2targz.README
+chmod 644 $PKG/usr/doc/rpm2targz/rpm2targz.README
+( cd $PKG
+ find . | xargs file | grep "executable" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
+ find . | xargs file | grep "shared object" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
+)
+
+mkdir -p $PKG/install
+cat $CWD/slack-desc > $PKG/install/slack-desc
+
+# Build the package:
+cd $PKG
+makepkg -l y -c n $TMP/rpm2tgz-$VERSION-$ARCH-$BUILD.txz
+
diff --git a/source/a/rpm2tgz/rpmoffset.c b/source/a/rpm2tgz/rpmoffset.c
new file mode 100644
index 00000000..57af397c
--- /dev/null
+++ b/source/a/rpm2tgz/rpmoffset.c
@@ -0,0 +1,24 @@
+
+/* Find how deeply inside an .RPM the real data is */
+/* kept, and report the offset in bytes */
+
+/* Wouldn't it be a lot more sane if we could just untar these things? */
+
+#include <stdlib.h>
+
+/* These offsets keep getting bigger, so we're going to just bite a 2MB */
+/* chunk of RAM right away so that we have enough. Yeah, horrible */
+/* quick and dirty implementation, but hey -- it gets the job done. */
+
+#define RPMBUFSIZ 2097152
+
+main()
+{
+ char *buff = malloc(RPMBUFSIZ),*eb,*p;
+ for (p = buff, eb = buff + read(0,buff,RPMBUFSIZ); p < eb; p++)
+ if ((*p == '\037' && p[1] == '\213' && p[2] == '\010') ||
+ (*p == 'B' && p[1] == 'Z' && p[2] == 'h' && '1' <= p[3] && p[3] <= '9' ))
+ printf("%d\n",p - buff),
+ exit(0);
+ exit(1);
+}
diff --git a/source/a/rpm2tgz/slack-desc b/source/a/rpm2tgz/slack-desc
new file mode 100644
index 00000000..8f8861b5
--- /dev/null
+++ b/source/a/rpm2tgz/slack-desc
@@ -0,0 +1,19 @@
+# HOW TO EDIT THIS FILE:
+# The "handy ruler" below makes it easier to edit a package description. Line
+# up the first '|' above the ':' following the base package name, and the '|'
+# on the right side marks the last column you can put a character in. You must
+# make exactly 11 lines for the formatting to be correct. It's also
+# customary to leave one space after the ':'.
+
+ |-----handy-ruler------------------------------------------------------|
+rpm2tgz: rpm2tgz (a tool for converting an RPM archive into a tar+gz one)
+rpm2tgz:
+rpm2tgz: Converts RPM format to Slackware's GNU tar + GNU zip format. (view
+rpm2tgz: converted packages with "less", install and remove with "installpkg",
+rpm2tgz: "removepkg", "pkgtool", or manually with "tar").
+rpm2tgz:
+rpm2tgz: Converted packages come with no warranty. ;-)
+rpm2tgz:
+rpm2tgz:
+rpm2tgz:
+rpm2tgz:
diff --git a/source/a/sdparm/sdparm.SlackBuild b/source/a/sdparm/sdparm.SlackBuild
new file mode 100755
index 00000000..e00a9356
--- /dev/null
+++ b/source/a/sdparm/sdparm.SlackBuild
@@ -0,0 +1,107 @@
+#!/bin/sh
+
+# Copyright 2006, 2007, 2008, 2009 Patrick J. Volkerding, Sebeka, MN, USA
+# All rights reserved.
+#
+# Redistribution and use of this script, with or without modification, is
+# permitted provided that the following conditions are met:
+#
+# 1. Redistributions of this script must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# 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.
+
+
+PKGNAM=sdparm
+VERSION=${VERSION:-1.01}
+ARCH=${ARCH:-x86_64}
+BUILD=${BUILD:-2}
+
+
+CWD=$(pwd)
+TMP=${TMP:-/tmp}
+PKG=$TMP/package-${PKGNAM}
+rm -rf $PKG
+mkdir -p $TMP $PKG
+
+if [ "$ARCH" = "i486" ]; then
+ SLKCFLAGS="-O2 -march=i486 -mtune=i686"
+elif [ "$ARCH" = "s390" ]; then
+ SLKCFLAGS="-O2"
+elif [ "$ARCH" = "x86_64" ]; then
+ SLKCFLAGS="-O2"
+fi
+
+cd $TMP
+rm -rf ${PKGNAM}-${VERSION}
+tar xjvf $CWD/${PKGNAM}-$VERSION.tar.bz2 || exit 1
+cd ${PKGNAM}-$VERSION
+
+# Make sure ownerships and permissions are sane:
+chown -R root:root .
+find . \
+ \( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \
+ -exec chmod 755 {} \; -o \
+ \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
+ -exec chmod 644 {} \;
+
+# Use --bindir=/usr/sbin, as that's where hdparm has always been...
+
+# Configure:
+CFLAGS="$SLKCFLAGS" \
+./configure \
+ --prefix=/usr \
+ --bindir=/usr/sbin \
+ --sysconfdir=/etc \
+ --mandir=/usr/man \
+ --program-prefix= \
+ --program-suffix= \
+ --build=$ARCH-slackware-linux
+
+# Build and install:
+make -j4 || exit 1
+make install DESTDIR=$PKG || exit 1
+
+# Strip binaries:
+( cd $PKG
+ find . | xargs file | grep "executable" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
+ find . | xargs file | grep "shared object" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
+)
+
+# Compress and link manpages, if any:
+if [ -d $PKG/usr/man ]; then
+ ( cd $PKG/usr/man
+ for manpagedir in $(find . -type d -name "man*") ; do
+ ( cd $manpagedir
+ for eachpage in $( find . -type l -maxdepth 1) ; do
+ ln -s $( readlink $eachpage ).gz $eachpage.gz
+ rm $eachpage
+ done
+ gzip -9 *.*
+ )
+ done
+ )
+fi
+
+# Add a documentation directory:
+mkdir -p $PKG/usr/doc/${PKGNAM}-$VERSION
+cp -a \
+ AUTHORS COPYING CREDITS INSTALL NEWS README notes.txt \
+ doc/sdparm.html \
+ $PKG/usr/doc/${PKGNAM}-$VERSION
+
+mkdir -p $PKG/install
+cat $CWD/slack-desc > $PKG/install/slack-desc
+
+cd $PKG
+makepkg -l y -c n $TMP/${PKGNAM}-$VERSION-$ARCH-$BUILD.txz
+
diff --git a/source/a/sdparm/slack-desc b/source/a/sdparm/slack-desc
new file mode 100644
index 00000000..497c4d9e
--- /dev/null
+++ b/source/a/sdparm/slack-desc
@@ -0,0 +1,19 @@
+# HOW TO EDIT THIS FILE:
+# The "handy ruler" below makes it easier to edit a package description. Line
+# up the first '|' above the ':' following the base package name, and the '|'
+# on the right side marks the last column you can put a character in. You must
+# make exactly 11 lines for the formatting to be correct. It's also
+# customary to leave one space after the ':'.
+
+ |-----handy-ruler------------------------------------------------------|
+sdparm: sdparm (fetch and change SCSI attributes)
+sdparm:
+sdparm: sdparm is a utility for listing and potentially changing SCSI disk
+sdparm: parameters. More generally it can be used on any device that uses
+sdparm: a SCSI command set. Apart from SCSI disks, examples of devices that
+sdparm: use SCSI command sets are ATAPI CD/DVD drives, SCSI and ATAPI tape
+sdparm: drives and SCSI enclosures.
+sdparm:
+sdparm: sdparm was written by Douglas Gilbert.
+sdparm:
+sdparm:
diff --git a/source/a/sed/sed.SlackBuild b/source/a/sed/sed.SlackBuild
new file mode 100755
index 00000000..8dedfc4b
--- /dev/null
+++ b/source/a/sed/sed.SlackBuild
@@ -0,0 +1,77 @@
+#!/bin/sh
+
+# Copyright 2005-2009 Patrick J. Volkerding, Sebeka, Minnesota, USA
+# All rights reserved.
+#
+# Redistribution and use of this script, with or without modification, is
+# permitted provided that the following conditions are met:
+#
+# 1. Redistributions of this script must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# 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.
+
+
+VERSION=4.1.5
+ARCH=${ARCH:-x86_64}
+BUILD=${BUILD:-1}
+
+CWD=$(pwd)
+TMP=${TMP:-/tmp}
+PKG=$TMP/package-sed
+
+if [ "$ARCH" = "i386" ]; then
+ SLKCFLAGS="-O2 -march=i386 -mcpu=i686"
+elif [ "$ARCH" = "i486" ]; then
+ SLKCFLAGS="-O2 -march=i486 -mtune=i686"
+elif [ "$ARCH" = "s390" ]; then
+ SLKCFLAGS="-O2"
+elif [ "$ARCH" = "x86_64" ]; then
+ SLKCFLAGS="-O2 -fPIC"
+fi
+
+rm -rf $PKG
+mkdir -p $PKG $PKG
+
+cd $TMP
+rm -rf sed-$VERSION
+tar xzvf $CWD/sed-$VERSION.tar.gz
+cd sed-$VERSION
+chown -R root:root .
+find . -perm 777 -exec chmod 755 {} \;
+find . -perm 664 -exec chmod 644 {} \;
+CFLAGS="$SLKCFLAGS" \
+./configure \
+ --prefix=/usr \
+ $ARCH-slackware-linux
+make -j5
+make install DESTDIR=$PKG
+mkdir -p $PKG/bin
+mv $PKG/usr/bin/sed $PKG/bin
+( cd $PKG/usr/bin ; ln -sf /bin/sed . )
+( cd $PKG
+ find . | xargs file | grep "executable" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
+ find . | xargs file | grep "shared object" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
+)
+mkdir -p $PKG/usr/doc/sed-$VERSION
+cp -a \
+ ANNOUNCE AUTHORS BUGS COPYING* INSTALL NEWS README README.boot THANKS TODO \
+ $PKG/usr/doc/sed-$VERSION
+gzip -9 $PKG/usr/man/man?/*.?
+rm -f $PKG/usr/info/dir
+gzip -9 $PKG/usr/info/*
+mkdir -p $PKG/install
+cat $CWD/slack-desc > $PKG/install/slack-desc
+
+cd $PKG
+makepkg -l y -c n $TMP/sed-$VERSION-$ARCH-$BUILD.txz
+
diff --git a/source/a/sed/slack-desc b/source/a/sed/slack-desc
new file mode 100644
index 00000000..46e3ef35
--- /dev/null
+++ b/source/a/sed/slack-desc
@@ -0,0 +1,19 @@
+# HOW TO EDIT THIS FILE:
+# The "handy ruler" below makes it easier to edit a package description. Line
+# up the first '|' above the ':' following the base package name, and the '|'
+# on the right side marks the last column you can put a character in. You must
+# make exactly 11 lines for the formatting to be correct. It's also
+# customary to leave one space after the ':'.
+
+ |-----handy-ruler------------------------------------------------------|
+sed: sed (stream editor)
+sed:
+sed: This is the GNU version of sed, a stream editor. A stream editor is
+sed: used to perform basic text transformations on an input stream (a file
+sed: or input from a pipeline). It is sed's ability to filter text in a
+sed: pipeline which distinguishes it from other types of editors.
+sed:
+sed: sed is a required package (it is needed by many system scripts).
+sed:
+sed:
+sed:
diff --git a/source/a/shadow/adduser b/source/a/shadow/adduser
new file mode 100644
index 00000000..02385e33
--- /dev/null
+++ b/source/a/shadow/adduser
@@ -0,0 +1,437 @@
+#!/bin/bash
+#
+# Copyright 1995 Hrvoje Dogan, Croatia.
+# Copyright 2002, 2003, 2004, 2008, 2009 Stuart Winter, Surrey, England, UK.
+# Copyright 2004, 2008, 2009 Slackware Linux, Inc., Concord, CA, USA
+# All rights reserved.
+#
+# Redistribution and use of this script, with or without modification, is
+# permitted provided that the following conditions are met:
+#
+# 1. Redistributions of this script must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# 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.
+#
+#
+##########################################################################
+# Program: /usr/sbin/adduser
+# Purpose: Interactive front end to /usr/sbin/useradd for Slackware Linux
+# Author : Stuart Winter <mozes@slackware.com>
+# Based on the original Slackware adduser by Hrvoje Dogan
+# with modifications by Patrick Volkerding
+# Version: 1.12
+##########################################################################
+# Usage..: adduser [<new_user_name>]
+##########################################################################
+# History #
+###########
+# v1.12 - 21/07/09
+# * Adjusted the search of /etc/passwd to exclude the NIS inclusion
+# string. Thanks to Dominik L. Borkowski.
+# v1.11 - 04/06/09
+# * Add power and netdev to the suggested group list
+# v1.10 - 24/03/08
+# * To facilitate use of the automatic mounting features of HAL,
+# allow the admin to easily add users to the default groups:
+# audio,cdrom,video,plugdev,floppy.
+# The default is not to add new users to these groups.
+# And by the way, this script is "useradd from Slackware" not
+# "superadduser from Gentoo" ;-)
+# v1.09 - 07/06/04
+# * Added standard Slackware script licence to the head of this file.
+# v1.08 - 25/04/04
+# * Disallow user names that begin with a numeric because useradd
+# (from shadow v4.03) does not allow them. <sw>
+# v1.07 - 07/03/03
+# * When supplying a null string for the uid (meaning 'Choose next available'),
+# if there were file names in the range 'a-z' in the pwd then the
+# egrep command considered these files rather than the null string.
+# The egrep expression is now in quotes.
+# Reported & fixed by Vadim O. Ustiansky <sw>
+# v1.06 - 31/03/03
+# * Ask to chown user.group the home directory if it already exists.
+# This helps reduce later confusion when adding users whose home dir
+# already exists (mounted partition for example) and is owned
+# by a user other than the user to which the directory is being
+# assigned as home. Default is not to chown.
+# Brought to my attention by mRgOBLIN. <sw>
+# v1.05 - 04/01/03
+# * Advise & prevent users from creating logins with '.' characters
+# in the user name. <sw>
+# * Made pending account creation info look neater <sw>
+# v1.04 - 09/06/02
+# * Catered for shadow-4.0.3's 'useradd' binary that no longer
+# will let you create a user that has any uppercase chars in it
+# This was reported on the userlocal.org forums
+# by 'xcp' - thanks. <sw,pjv>
+# v1.03 - 20/05/02
+# * Support 'broken' (null lines in) /etc/passwd and
+# /etc/group files <sw>
+# * For recycling UIDs (default still 'off'), we now look in
+# /etc/login.defs for the UID_MIN value and use it
+# If not found then default to 1000 <sw>
+# v1.02 - 10/04/02
+# * Fix user-specified UID bug. <pjv>
+# v1.01 - 23/03/02
+# * Match Slackware indenting style, simplify. <pjv>
+# v1.00 - 22/03/02
+# * Created
+#######################################################################
+
+# Path to files
+pfile=/etc/passwd
+gfile=/etc/group
+sfile=/etc/shells
+
+# Paths to binaries
+useradd=/usr/sbin/useradd
+chfn=/usr/bin/chfn
+passwd=/usr/bin/passwd
+chmod=/bin/chmod
+
+# Defaults
+defhome=/home
+defshell=/bin/bash
+defchmod=711 # home dir permissions - may be preferable to use 701, however.
+defgroup=users
+AGID="audio cdrom floppy plugdev video power netdev" # additional groups for desktop users
+
+# Determine what the minimum UID is (for UID recycling)
+# (we ignore it if it's not at the beginning of the line (i.e. commented out with #))
+export recycleUIDMIN="$(grep ^UID_MIN /etc/login.defs | awk '{print $2}' 2>/dev/null)"
+# If we couldn't find it, set it to the default of 1000
+if [ -z "$recycleUIDMIN" ]; then
+ export recycleUIDMIN=1000 # this is the default from Slackware's /etc/login.defs
+fi
+
+
+# This setting enables the 'recycling' of older unused UIDs.
+# When you userdel a user, it removes it from passwd and shadow but it will
+# never get used again unless you specify it expliticly -- useradd (appears to) just
+# look at the last line in passwd and increment the uid. I like the idea of
+# recycling uids but you may have very good reasons not to (old forgotten
+# confidential files still on the system could then be owned by this new user).
+# We'll set this to no because this is what the original adduser shell script
+# did and it's what users expect.
+recycleuids=no
+
+# Function to read keyboard input.
+# bash1 is broken (even ash will take read -ep!), so we work around
+# it (even though bash1 is no longer supported on Slackware).
+function get_input() {
+ local output
+ if [ "`echo $BASH_VERSION | cut -b1`" = "1" ]; then
+ echo -n "${1} " >&2 # fudge for use with bash v1
+ read output
+ else # this should work with any other /bin/sh
+ read -ep "${1} " output
+ fi
+ echo $output
+}
+
+# Function to display the account info
+function display () {
+ local goose
+ goose="$(echo $2 | cut -d ' ' -f 2-)" # lop off the prefixed argument useradd needs
+ echo -n "$1 "
+ # If it's null then display the 'other' information
+ if [ -z "$goose" -a ! -z "$3" ]; then
+ echo "$3"
+ else
+ echo "$goose"
+ fi
+}
+
+# Function to check whether groups exist in the /etc/group file
+function check_group () {
+ local got_error group
+ if [ ! -z "$@" ]; then
+ for group in $@ ; do
+ local uid_not_named="" uid_not_num=""
+ grep -v "$^" $gfile | awk -F: '{print $1}' | grep "^${group}$" >/dev/null 2>&1 || uid_not_named=yes
+ grep -v "$^" $gfile | awk -F: '{print $3}' | grep "^${group}$" >/dev/null 2>&1 || uid_not_num=yes
+ if [ ! -z "$uid_not_named" -a ! -z "$uid_not_num" ]; then
+ echo "- Group '$group' does not exist"
+ got_error=yes
+ fi
+ done
+ fi
+ # Return exit code of 1 if at least one of the groups didn't exist
+ if [ ! -z "$got_error" ]; then
+ return 1
+ fi
+}
+
+#: Read the login name for the new user :#
+#
+# Remember that most Mail Transfer Agents are case independant, so having
+# 'uSer' and 'user' may cause confusion/things to break. Because of this,
+# useradd from shadow-4.0.3 no longer accepts usernames containing uppercase,
+# and we must reject them, too.
+
+# Set the login variable to the command line param
+echo
+LOGIN="$1"
+needinput=yes
+while [ ! -z $needinput ]; do
+ if [ -z "$LOGIN" ]; then
+ while [ -z "$LOGIN" ]; do LOGIN="$(get_input "Login name for new user []:")" ; done
+ fi
+ grep "^${LOGIN}:" $pfile >/dev/null 2>&1 # ensure it's not already used
+ if [ $? -eq 0 ]; then
+ echo "- User '$LOGIN' already exists; please choose another"
+ unset LOGIN
+ elif [ ! -z "$( echo $LOGIN | grep "^[0-9]" )" ]; then
+ echo "- User names cannot begin with a number; please choose another"
+ unset LOGIN
+ elif [ ! "$LOGIN" = "`echo $LOGIN | tr A-Z a-z`" ]; then # useradd does not allow uppercase
+ echo "- User '$LOGIN' contains illegal characters (uppercase); please choose another"
+ unset LOGIN
+ elif [ ! -z "$( echo $LOGIN | grep '\.' )" ]; then
+ echo "- User '$LOGIN' contains illegal characters (period/dot); please choose another"
+ unset LOGIN
+ else
+ unset needinput
+ fi
+done
+
+# Display the user name passed from the shell if it hasn't changed
+if [ "$1" = "$LOGIN" ]; then
+ echo "Login name for new user: $LOGIN"
+fi
+
+#: Get the UID for the user & ensure it's not already in use :#
+#
+# Whilst we _can_ allow users with identical UIDs, it's not a 'good thing' because
+# when you change password for the uid, it finds the first match in /etc/passwd
+# which isn't necessarily the correct user
+#
+echo
+needinput=yes
+while [ ! -z "$needinput" ]; do
+ _UID="$(get_input "User ID ('UID') [ defaults to next available ]:")"
+ egrep -v "^$|^\+" $pfile | awk -F: '{print $3}' | grep "^${_UID}$" >/dev/null 2>&1
+ if [ $? -eq 0 ]; then
+ echo "- That UID is already in use; please choose another"
+ elif [ ! -z "$(echo $_UID | egrep '[A-Za-z]')" ]; then
+ echo "- UIDs are numerics only"
+ else
+ unset needinput
+ fi
+done
+# If we were given a UID, then syntax up the variable to pass to useradd
+if [ ! -z "$_UID" ]; then
+ U_ID="-u ${_UID}"
+else
+ # Will we be recycling UIDs?
+ if [ "$recycleuids" = "yes" ]; then
+ U_ID="-u $(awk -F: '{uid[$3]=1} END { for (i=ENVIRON["recycleUIDMIN"];i in uid;i++);print i}' $pfile)"
+ fi
+fi
+
+#: Get the initial group for the user & ensure it exists :#
+#
+# We check /etc/group for both the text version and the group ID number
+echo
+needinput=yes
+while [ ! -z "$needinput" ]; do
+ GID="$(get_input "Initial group [ ${defgroup} ]:")"
+ check_group "$GID"
+ if [ $? -gt 0 ]; then
+ echo "- Please choose another"
+ else
+ unset needinput
+ fi
+done
+# Syntax the variable ready for useradd
+if [ -z "$GID" ]; then
+ GID="-g ${defgroup}"
+else
+ GID="-g ${GID}"
+fi
+
+#: Get additional groups for the user :#
+#
+echo "Additional UNIX groups:"
+echo
+echo "Users can belong to additional UNIX groups on the system."
+echo "For local users using graphical desktop login managers such"
+echo "as XDM/KDM, users may need to be members of additional groups"
+echo "to access the full functionality of removable media devices."
+echo
+echo "* Security implications *"
+echo "Please be aware that by adding users to additional groups may"
+echo "potentially give access to the removable media of other users."
+echo
+echo "If you are creating a new user for remote shell access only,"
+echo "users do not need to belong to any additional groups as standard,"
+echo "so you may press ENTER at the next prompt."
+echo
+needinput=yes
+while [ ! -z "$needinput" ]; do
+ history -c
+ history -s "$AGID"
+ echo "Press ENTER to continue without adding any additional groups"
+ echo "Or press the UP arrow to add/select/edit additional groups"
+ AGID="$(get_input ": " | tr -d '[:punct:]' | tr -s ' ' | sed 's?^ $??g' )"
+ if [ ! -z "$AGID" ]; then
+ check_group "$AGID" # check all groups at once (treated as N # of params)
+ if [ $? -gt 0 ]; then
+ echo "- Please re-enter the group(s)"
+ echo
+ else
+ unset needinput # we found all groups specified
+ AGID="-G $(echo $AGID | tr ' ' ,)" # useradd takes comma delimited groups
+ fi
+ else
+ unset needinput # we don't *have* to have additional groups
+ fi
+done
+
+#: Get the new user's home dir :#
+#
+echo
+needinput=yes
+while [ ! -z "$needinput" ]; do
+ HME="$(get_input "Home directory [ ${defhome}/${LOGIN} ]")"
+ if [ -z "$HME" ]; then
+ HME="${defhome}/${LOGIN}"
+ fi
+ # Warn the user if the home dir already exists
+ if [ -d "$HME" ]; then
+ echo "- Warning: '$HME' already exists !"
+ getyn="$(get_input " Do you wish to change the home directory path ? (Y/n) ")"
+ if [ "$(echo $getyn | grep -i "n")" ]; then
+ unset needinput
+ # You're most likely going to only do this if you have the dir *mounted* for this user's $HOME
+ getyn="$(get_input " Do you want to chown $LOGIN.$( echo $GID | awk '{print $2}') $HME ? (y/N) ")"
+ if [ "$(echo $getyn | grep -i "y")" ]; then
+ CHOWNHOMEDIR=$HME # set this to the home directory
+ fi
+ fi
+ else
+ unset needinput
+ fi
+done
+HME="-d ${HME}"
+
+#: Get the new user's shell :#
+echo
+needinput=yes
+while [ ! -z "$needinput" ]; do
+ unset got_error
+ SHL="$(get_input "Shell [ ${defshell} ]")"
+ if [ -z "$SHL" ]; then
+ SHL="${defshell}"
+ fi
+ # Warn the user if the shell doesn't exist in /etc/shells or as a file
+ if [ -z "$(grep "^${SHL}$" $sfile)" ]; then
+ echo "- Warning: ${SHL} is not in ${sfile} (potential problem using FTP)"
+ got_error=yes
+ fi
+ if [ ! -f "$SHL" ]; then
+ echo "- Warning: ${SHL} does not exist as a file"
+ got_error=yes
+ fi
+ if [ ! -z "$got_error" ]; then
+ getyn="$(get_input " Do you wish to change the shell ? (Y/n) ")"
+ if [ "$(echo $getyn | grep -i "n")" ]; then
+ unset needinput
+ fi
+ else
+ unset needinput
+ fi
+done
+SHL="-s ${SHL}"
+
+#: Get the expiry date :#
+echo
+needinput=yes
+while [ ! -z "$needinput" ]; do
+ EXP="$(get_input "Expiry date (YYYY-MM-DD) []:")"
+ if [ ! -z "$EXP" ]; then
+ # Check to see whether the expiry date is in the valid format
+ if [ -z "$(echo "$EXP" | grep "^[[:digit:]]\{4\}[-]\?[[:digit:]]\{2\}[-]\?[[:digit:]]\{2\}$")" ]; then
+ echo "- That is not a valid expiration date"
+ else
+ unset needinput
+ EXP="-e ${EXP}"
+ fi
+ else
+ unset needinput
+ fi
+done
+
+# Display the info about the new impending account
+echo
+echo "New account will be created as follows:"
+echo
+echo "---------------------------------------"
+display "Login name.......: " "$LOGIN"
+display "UID..............: " "$_UID" "[ Next available ]"
+display "Initial group....: " "$GID"
+display "Additional groups: " "$AGID" "[ None ]"
+display "Home directory...: " "$HME"
+display "Shell............: " "$SHL"
+display "Expiry date......: " "$EXP" "[ Never ]"
+echo
+
+echo "This is it... if you want to bail out, hit Control-C. Otherwise, press"
+echo "ENTER to go ahead and make the account."
+read junk
+
+echo
+echo "Creating new account..."
+echo
+echo
+
+# Add the account to the system
+CMD="$useradd "$HME" -m "$EXP" "$U_ID" "$GID" "$AGID" "$SHL" "$LOGIN""
+$CMD
+
+if [ $? -gt 0 ]; then
+ echo "- Error running useradd command -- account not created!"
+ echo "(cmd: $CMD)"
+ exit 1
+fi
+
+# chown the home dir ? We can only do this once the useradd has
+# completed otherwise the user name doesn't exist.
+if [ ! -z "${CHOWNHOMEDIR}" ]; then
+ chown "$LOGIN"."$( echo $GID | awk '{print $2}')" "${CHOWNHOMEDIR}"
+fi
+
+# Set the finger information
+$chfn "$LOGIN"
+if [ $? -gt 0 ]; then
+ echo "- Warning: an error occurred while setting finger information"
+fi
+
+# Set a password
+$passwd "$LOGIN"
+if [ $? -gt 0 ]; then
+ echo "* WARNING: An error occured while setting the password for"
+ echo " this account. Please manually investigate this *"
+ exit 1
+fi
+
+# If it was created (it should have been!), set the permissions for that user's dir
+HME="$(echo "$HME" | awk '{print $2}')" # We have to remove the -g prefix
+if [ -d "$HME" ]; then
+ $chmod $defchmod "$HME"
+fi
+
+echo
+echo
+echo "Account setup complete."
+exit 0
diff --git a/source/a/shadow/shadow-4.0.3.x86_64.diff b/source/a/shadow/shadow-4.0.3.x86_64.diff
new file mode 100644
index 00000000..15d16c7c
--- /dev/null
+++ b/source/a/shadow/shadow-4.0.3.x86_64.diff
@@ -0,0 +1,166 @@
+--- shadow-4.0.3/libmisc/failure.h.orig 2004-01-02 18:47:01.000000000 -0800
++++ shadow-4.0.3/libmisc/failure.h 2004-01-02 18:52:38.000000000 -0800
+@@ -4,7 +4,12 @@
+
+ #include "defines.h"
+ #include "faillog.h"
++
++#if HAVE_UTMPX_H
++#include <utmpx.h>
++#else
+ #include <utmp.h>
++#endif
+
+ /*
+ * failure - make failure entry
+@@ -38,7 +43,11 @@
+ * failtmp updates the (struct utmp) formatted failure log which
+ * maintains a record of all login failures.
+ */
++#if HAVE_UTMPX_H
++extern void failtmp(const struct utmpx *);
++#else
+ extern void failtmp(const struct utmp *);
++#endif
+
+ #endif
+
+--- shadow-4.0.3/libmisc/failure.c.orig 2004-01-02 18:47:06.000000000 -0800
++++ shadow-4.0.3/libmisc/failure.c 2004-01-02 18:53:37.000000000 -0800
+@@ -39,7 +39,11 @@
+ #include "getdef.h"
+ #include "failure.h"
+
++#if HAVE_UTMPX_H
++#include <utmpx.h>
++#else
+ #include <utmp.h>
++#endif
+
+ #define YEAR (365L*DAY)
+
+@@ -248,7 +252,11 @@
+ */
+
+ void
++#if HAVE_UTMPX_H
++failtmp(const struct utmpx *failent)
++#else
+ failtmp(const struct utmp *failent)
++#endif
+ {
+ char *ftmp;
+ int fd;
+--- shadow-4.0.3/libmisc/log.c.orig 2004-01-02 18:58:04.000000000 -0800
++++ shadow-4.0.3/libmisc/log.c 2004-01-02 18:58:51.000000000 -0800
+@@ -57,6 +57,7 @@
+ int fd;
+ off_t offset;
+ struct lastlog newlog;
++ time_t ll_time;
+
+ /*
+ * If the file does not exist, don't create it.
+@@ -88,7 +89,8 @@
+ if (ll)
+ *ll = newlog;
+
+- time(&newlog.ll_time);
++ ll_time = newlog.ll_time;
++ time(&ll_time);
+ strncpy(newlog.ll_line, line, sizeof newlog.ll_line);
+ #if HAVE_LL_HOST
+ strncpy(newlog.ll_host, host, sizeof newlog.ll_host);
+--- shadow-4.0.3/libmisc/utmp.c.orig 2004-01-02 18:59:04.000000000 -0800
++++ shadow-4.0.3/libmisc/utmp.c 2004-01-02 19:05:34.000000000 -0800
+@@ -79,6 +79,8 @@
+ {
+ char *line;
+ struct utmp *ut;
++ time_t uttime;
++
+ pid_t pid = getpid();
+
+ setutent();
+@@ -111,7 +113,8 @@
+ /* XXX - assumes /dev/tty?? */
+ strncpy(utent.ut_id, utent.ut_line + 3, sizeof utent.ut_id);
+ strcpy(utent.ut_user, "LOGIN");
+- time(&utent.ut_time);
++ time(&uttime);
++ utent.ut_time = uttime;
+ }
+ }
+
+@@ -284,9 +287,14 @@
+ void
+ setutmp(const char *name, const char *line, const char *host)
+ {
++ time_t uttime;
++
+ utent.ut_type = USER_PROCESS;
+ strncpy(utent.ut_user, name, sizeof utent.ut_user);
+- time(&utent.ut_time);
++
++ time(&uttime);
++ utent.ut_time = uttime;
++
+ /* other fields already filled in by checkutmp above */
+ setutent();
+ pututline(&utent);
+--- shadow-4.0.3/src/lastlog.c.orig 2004-01-02 18:06:09.000000000 -0800
++++ shadow-4.0.3/src/lastlog.c 2004-01-02 18:29:57.000000000 -0800
+@@ -167,6 +167,7 @@
+ static int once;
+ char *cp;
+ struct tm *tm;
++ time_t ll_time;
+
+ #ifdef HAVE_STRFTIME
+ char ptime[80];
+@@ -184,7 +185,9 @@
+ #endif
+ once++;
+ }
+- tm = localtime (&lastlog.ll_time);
++ ll_time = lastlog.ll_time;
++ tm = localtime (&ll_time);
++
+ #ifdef HAVE_STRFTIME
+ strftime (ptime, sizeof (ptime), "%a %b %e %H:%M:%S %z %Y", tm);
+ cp = ptime;
+--- shadow-4.0.3/src/login.c.orig 2004-01-02 18:33:13.000000000 -0800
++++ shadow-4.0.3/src/login.c 2004-01-02 18:40:17.000000000 -0800
+@@ -1019,8 +1019,12 @@
+ const char *failent_user;
+
+ #if HAVE_UTMPX_H
++ struct timeval ut_tv;
++ ut_tv.tv_sec = failent.ut_tv.tv_sec;
++ ut_tv.tv_usec = failent.ut_tv.tv_usec;
++
+ failent = utxent;
+- gettimeofday (&(failent.ut_tv), NULL);
++ gettimeofday (&ut_tv, NULL);
+ #else
+ failent = utent;
+ time (&failent.ut_time);
+@@ -1271,15 +1275,16 @@
+ }
+ if (getdef_bool ("LASTLOG_ENAB")
+ && lastlog.ll_time != 0) {
++ time_t ll_time= lastlog.ll_time;
+ #ifdef HAVE_STRFTIME
+ strftime (ptime, sizeof (ptime),
+ "%a %b %e %H:%M:%S %z %Y",
+- localtime (&lastlog.ll_time));
++ localtime (&ll_time));
+ printf (_("Last login: %s on %s"),
+ ptime, lastlog.ll_line);
+ #else
+ printf (_("Last login: %.19s on %s"),
+- ctime (&lastlog.ll_time),
++ ctime (&ll_time),
+ lastlog.ll_line);
+ #endif
+ #ifdef HAVE_LL_HOST /* SVR4 || __linux__ || SUN4 */
diff --git a/source/a/shadow/shadow.SlackBuild b/source/a/shadow/shadow.SlackBuild
new file mode 100755
index 00000000..2f0e1178
--- /dev/null
+++ b/source/a/shadow/shadow.SlackBuild
@@ -0,0 +1,156 @@
+#!/bin/sh
+
+# Copyright 2005-2009 Patrick J. Volkerding, Sebeka, Minnesota, USA
+# All rights reserved.
+#
+# Redistribution and use of this script, with or without modification, is
+# permitted provided that the following conditions are met:
+#
+# 1. Redistributions of this script must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# 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.
+
+VERSION=4.0.3
+ARCH=${ARCH:-x86_64}
+BUILD=${BUILD:-18}
+
+CWD=$(pwd)
+TMP=${TMP:-/tmp}
+PKG=$TMP/package-shadow
+
+rm -rf $PKG
+mkdir -p $TMP $PKG
+
+# Explode the package framework:
+cd $PKG
+explodepkg $CWD/_shadow.tar.gz
+
+cd $TMP
+rm -rf shadow-$VERSION
+tar xjvf $CWD/shadow-$VERSION.tar.bz2
+cd shadow-$VERSION
+
+chown -R root:root .
+find . \
+ \( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \
+ -exec chmod 755 {} \; -o \
+ \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
+ -exec chmod 644 {} \;
+
+zcat $CWD/shadow.shadowconfig.diff.gz | patch -p1 --verbose --backup || exit 1
+zcat $CWD/shadow.newgrp.nopam.gz | patch -p0 --verbose --backup || exit 1
+zcat $CWD/shadow.login.defs.diff.gz | patch -p0 --verbose --backup || exit 1
+zcat $CWD/shadow.newgrp.getlogin.gz | patch -p1 --verbose --backup || exit 1
+zcat $CWD/shadow.gcc34.diff.gz | patch -p1 --verbose --backup || exit 1
+zcat $CWD/shadow.remove.obsolete.options.diff.gz | patch -p1 --verbose --backup --suffix=.orig || exit 1
+if [ "$ARCH" = "x86_64" ]; then
+ zcat $CWD/shadow-4.0.3.x86_64.diff.gz | patch -p1 --verbose --backup --suffix=.orig || exit 1
+fi
+
+./configure \
+ --prefix=/usr \
+ --disable-shared \
+ --disable-desrpc \
+ --build=$ARCH-slackware-linux
+
+make -j6 || exit 1
+cat etc/login.defs.linux > $PKG/etc/login.defs.new
+cat etc/login.access > $PKG/etc/login.access.new
+cat $CWD/adduser > $PKG/usr/sbin/adduser
+
+# These things aren't needed when using glibc, as it
+# supplies its own shadow functions:
+#cat lib/libshadow.a > $PKG/usr/lib/libshadow.a
+#cp -a lib/pwauth.h $PKG/usr/include/shadow/pwauth.h
+#cp -a lib/shadow_.h $PKG/usr/include/shadow/shadow.h
+#chmod 644 $PKG/usr/include/shadow/*
+#chown root.root $PKG/usr/include/shadow/*
+
+cd po
+for file in *.gmo ; do
+ mkdir -p $PKG/usr/share/locale/$(basename $file .gmo)/LC_MESSAGES
+ cat $file > $PKG/usr/share/locale/$(basename $file .gmo)/LC_MESSAGES/shadow.mo
+done
+cd ../src
+cat login > $PKG/bin/login
+cat su > $PKG/bin/su
+cat sulogin > $PKG/sbin/sulogin
+cat ../debian/shadowconfig.sh > $PKG/usr/sbin/shadowconfig
+for file in chpasswd dpasswd faillog groupadd groupdel groupmod grpck \
+lastlog logoutd mkpasswd newusers pwck useradd userdel usermod \
+pwconv pwunconv grpconv grpunconv vipw ; do
+ cat $file > $PKG/usr/sbin/$file
+done
+for file in chage chfn chsh expiry gpasswd newgrp passwd ; do
+ cat $file > $PKG/usr/bin/$file
+done
+cd ..
+cp contrib/adduser.sh /sbin/adduser
+mkdir -p $PKG/usr/doc/shadow-$VERSION
+cp -a \
+ ABOUT-NLS ChangeLog NEWS README TODO doc/* \
+ $PKG/usr/doc/shadow-$VERSION
+chmod 644 $PKG/usr/doc/shadow-$VERSION/*
+
+install_man_pages() {
+for file in chage.1 chfn.1 chsh.1 gpasswd.1 groups.1 login.1 newgrp.1 \
+passwd.1 su.1 ; do
+ if [ -r $file ]; then
+ mkdir -p $1/man1
+ gzip -9c $file > $1/man1/$file.gz
+ fi
+done
+for file in pw_auth.3 shadow.3 ; do
+ if [ -r $file ]; then
+ mkdir -p $1/man3
+ gzip -9c $file > $1/man3/$file.gz
+ fi
+done
+for file in faillog.5 limits.5 login.access.5 login.defs.5 passwd.5 \
+porttime.5 shadow.5 suauth.5 ; do
+ if [ -r $file ]; then
+ mkdir -p $1/man5
+ gzip -9c $file > $1/man5/$file.gz
+ fi
+done
+for file in chpasswd.8 dpasswd.8 faillog.8 groupadd.8 groupdel.8 groupmod.8 \
+grpck.8 lastlog.8 logoutd.8 mkpasswd.8 newusers.8 pwauth.8 pwck.8 pwconv.8 \
+shadowconfig.8 sulogin.8 useradd.8 userdel.8 usermod.8 vipw.8 ; do
+ if [ -r $file ]; then
+ mkdir -p $1/man8
+ gzip -9c $file > $1/man8/$file.gz
+ fi
+done
+}
+
+cd man
+ install_man_pages $PKG/usr/man
+ for dir in * ; do
+ if [ -d $dir ] ; then
+ ( cd $dir ; install_man_pages $PKG/usr/man/$dir )
+ fi
+ done
+cd ..
+
+mkdir -p $PKG/install
+cat $CWD/slack-desc > $PKG/install/slack-desc
+
+# Build the package:
+cd $PKG
+makepkg -l y -c n $TMP/shadow-$VERSION-$ARCH-$BUILD.txz
+
+# Clean up the extra stuff:
+if [ "$1" = "--cleanup" ]; then
+ rm -rf $TMP/shadow-$VERSION
+ rm -rf $PKG
+fi
diff --git a/source/a/shadow/shadow.gcc34.diff b/source/a/shadow/shadow.gcc34.diff
new file mode 100644
index 00000000..71dff4c8
--- /dev/null
+++ b/source/a/shadow/shadow.gcc34.diff
@@ -0,0 +1,11 @@
+--- ./libmisc/xmalloc.c.orig 1998-12-28 14:34:56.000000000 -0600
++++ ./libmisc/xmalloc.c 2006-08-12 19:02:51.000000000 -0500
+@@ -16,8 +16,6 @@
+
+ #include "defines.h"
+
+-extern char *malloc();
+-
+ char *
+ xmalloc(size_t size)
+ {
diff --git a/source/a/shadow/shadow.login.defs.diff b/source/a/shadow/shadow.login.defs.diff
new file mode 100644
index 00000000..bfed463a
--- /dev/null
+++ b/source/a/shadow/shadow.login.defs.diff
@@ -0,0 +1,67 @@
+--- ./etc/login.defs.linux.orig 2000-08-26 13:27:10.000000000 -0500
++++ ./etc/login.defs.linux 2008-03-24 15:10:09.000000000 -0500
+@@ -170,8 +170,8 @@
+ # *REQUIRED* The default PATH settings, for superuser and normal users.
+ #
+ # (they are minimal, add the rest in the shell startup files)
+-ENV_SUPATH PATH=/sbin:/bin:/usr/sbin:/usr/bin
+-ENV_PATH PATH=/bin:/usr/bin
++ENV_SUPATH PATH=/usr/local/sbin:/usr/local/bin:/sbin:/usr/sbin:/bin:/usr/bin
++ENV_PATH PATH=/usr/local/bin:/bin:/usr/bin
+
+ #
+ # Terminal permissions
+@@ -185,7 +185,7 @@
+ # TTYPERM to either 622 or 600.
+ #
+ TTYGROUP tty
+-TTYPERM 0600
++TTYPERM 0620
+
+ #
+ # Login configuration initializations:
+@@ -230,7 +230,7 @@
+ #
+ # If compiled with cracklib support, where are the dictionaries
+ #
+-CRACKLIB_DICTPATH /var/cache/cracklib/cracklib_dict
++#CRACKLIB_DICTPATH /var/cache/cracklib/cracklib_dict
+
+ #
+ # Min/max values for automatic uid selection in useradd
+@@ -282,7 +282,7 @@
+ # phone, home phone). If not defined, no changes are allowed.
+ # For backward compatibility, "yes" = "rwh" and "no" = "frwh".
+ #
+-CHFN_RESTRICT rwh
++CHFN_RESTRICT frwh
+
+ #
+ # Password prompt (%s will be replaced by user name).
+@@ -299,7 +299,7 @@
+ # Set to "no" if you need to copy encrypted passwords to other systems
+ # which don't understand the new algorithm. Default is "no".
+ #
+-#MD5_CRYPT_ENAB no
++MD5_CRYPT_ENAB yes
+
+ #
+ # List of groups to add to the user's supplementary group set
+@@ -310,7 +310,16 @@
+ # access to these groups, even when not logged in on the console.
+ # How to do it is left as an exercise for the reader...
+ #
+-#CONSOLE_GROUPS floppy:audio:cdrom
++# Most of these groups are self-explanatory.
++#
++# Note that users are added to these default groups only when
++# logging into a shell with /bin/login, not when using a login
++# manager such as kdm. In that case, users who should have
++# hardware access must be added to the appropriate groups
++# when the user is added with adduser or useradd, or by editing
++# /etc/group directly.
++#
++CONSOLE_GROUPS floppy:audio:cdrom:video
+
+ #
+ # Should login be allowed if we can't cd to the home directory?
diff --git a/source/a/shadow/shadow.newgrp.getlogin b/source/a/shadow/shadow.newgrp.getlogin
new file mode 100644
index 00000000..5d032f15
--- /dev/null
+++ b/source/a/shadow/shadow.newgrp.getlogin
@@ -0,0 +1,21 @@
+--- ./src/newgrp.c.orig 2003-05-31 21:19:39.000000000 -0700
++++ ./src/newgrp.c 2003-05-31 21:21:32.000000000 -0700
+@@ -76,6 +76,7 @@
+ gid_t gid;
+ char *cp;
+ const char *cpasswd, *name, *prog;
++ char *loginname = NULL;
+ char *group = NULL;
+ char *command = NULL;
+ char **envp = environ;
+@@ -386,7 +387,9 @@
+ SYSLOG ((LOG_INFO, "user `%s' switched to group `%s'",
+ name, group));
+ if (getdef_bool ("SYSLOG_SG_ENAB")) {
+- char *loginname = xstrdup (getlogin ());
++ char *user = getlogin ();
++ if (user != NULL)
++ loginname = xstrdup (user);
+ char *tty = xstrdup (ttyname (0));
+
+ if (loginname == NULL)
diff --git a/source/a/shadow/shadow.newgrp.nopam b/source/a/shadow/shadow.newgrp.nopam
new file mode 100644
index 00000000..7920dde0
--- /dev/null
+++ b/source/a/shadow/shadow.newgrp.nopam
@@ -0,0 +1,18 @@
+--- src/newgrp.c.orig 2002-10-12 14:15:34.000000000 +0100
++++ src/newgrp.c 2002-10-12 14:15:42.000000000 +0100
+@@ -398,6 +398,7 @@
+ SYSLOG ((LOG_INFO,
+ "user `%s' (login `%s' on %s) switched to group `%s'",
+ name, loginname, tty, group));
++#ifdef USE_PAM
+ if (getdef_bool ("CLOSE_SESSIONS")) {
+ /*
+ * We want to fork and exec the new shell in the child, leaving the
+@@ -450,6 +451,7 @@
+ signal (SIGTTIN, SIG_DFL);
+ signal (SIGTTOU, SIG_DFL);
+ }
++#endif // USE_PAM
+ }
+ #endif /* USE_SYSLOG */
+
diff --git a/source/a/shadow/shadow.remove.obsolete.options.diff b/source/a/shadow/shadow.remove.obsolete.options.diff
new file mode 100644
index 00000000..100fe2a8
--- /dev/null
+++ b/source/a/shadow/shadow.remove.obsolete.options.diff
@@ -0,0 +1,78 @@
+--- ./man/passwd.1.orig 2002-03-13 11:52:15.000000000 -0600
++++ ./man/passwd.1 2006-08-20 18:29:58.000000000 -0500
+@@ -29,26 +29,17 @@
+ .SH NAME
+ passwd \- change user password
+ .SH SYNOPSIS
+-\fBpasswd\fR [\fB-f\fR|\fB-s\fR] [\fIname\fR]
+-.br
+-\fBpasswd\fR [\fB-g\fR] [\fB-r\fR|\fB-R\fR] \fIgroup\fR
++\fBpasswd\fR [\fIname\fR]
+ .br
+ \fBpasswd\fR [\fB-x \fImax\fR] [\fB-n \fImin\fR]
+ [\fB-w \fIwarn\fR] [\fB-i \fIinact\fR] \fIlogin\fR
+ .br
+ \fBpasswd\fR {\fB-l\fR|\fB-u\fR|\fB-d\fR|\fB-S\fR|\fB-e\fR} \fIlogin\fR
+ .SH DESCRIPTION
+-\fBpasswd\fR changes passwords for user and group accounts.
++\fBpasswd\fR changes passwords for user accounts.
+ A normal user may only change the password for his/her own account,
+ the super user may change the password for any account.
+-The administrator of a group may change the password for the group.
+-\fBpasswd\fR also changes account information, such as the full name
+-of the user, user's login shell, or password expiry date and interval.
+-.PP
+-The \fB-s\fR option makes passwd call chsh to change the user's shell. The
+-\fB-f\fR option makes passwd call chfn to change the user's gecos
+-information. These two options are only meant for compatiblity, since the
+-other programs can be called directly.
++.PP
+ .SS Password Changes
+ The user is first prompted for his/her old password, if one is present.
+ This password is then encrypted and compared against the
+@@ -86,17 +77,6 @@
+ against the first.
+ Both entries are required to match in order for the password
+ to be changed.
+-.SS Group passwords
+-When the \fB-g\fR option is used, the password for the named
+-group is changed.
+-The user must either be the super user, or a group administrator
+-for the named group.
+-The current group password is not prompted for.
+-The \fB-r\fR option is used with the \fB-g\fR option to remove
+-the current password from the named group.
+-This allows group access to all members.
+-The \fB-R\fR option is used with the \fB-g\fR option to restrict
+-the named group for all users.
+ .SS Password expiry information
+ The password aging information may be changed by the super
+ user with the \fB-x\fR, \fB-n\fR, \fB-w\fR, and \fB-i\fR options.
+@@ -191,6 +171,9 @@
+ .br
+ /etc/shadow \- encrypted user passwords
+ .SH "SEE ALSO"
++.BR chfn (1),
++.BR chsh (1),
++.BR gpasswd (1),
+ .BR group (5),
+ .BR passwd (5)
+ .SH AUTHOR
+--- ./src/passwd.c.orig 2002-01-05 09:41:43.000000000 -0600
++++ ./src/passwd.c 2006-08-20 18:31:50.000000000 -0500
+@@ -955,6 +955,7 @@
+ * Please run these programs directly. --marekm
+ */
+
++#ifdef I_LIKE_OBSOLETE_OPTIONS
+ if (argc > 1 && argv[1][0] == '-' && strchr ("gfs", argv[1][1])) {
+ char buf[200];
+
+@@ -980,6 +981,7 @@
+ closelog ();
+ exit (E_FAILURE);
+ }
++#endif
+
+ /*
+ * The remaining arguments will be processed one by one and executed
diff --git a/source/a/shadow/shadow.shadowconfig.diff b/source/a/shadow/shadow.shadowconfig.diff
new file mode 100644
index 00000000..7dc9286e
--- /dev/null
+++ b/source/a/shadow/shadow.shadowconfig.diff
@@ -0,0 +1,49 @@
+--- ./debian/shadowconfig.sh.orig 2001-05-29 23:20:22.000000000 -0700
++++ ./debian/shadowconfig.sh 2003-06-23 16:35:38.000000000 -0700
+@@ -1,23 +1,28 @@
+ #!/bin/bash
+-# turn shadow passwords on or off on a Debian system
++#
++# 'shadowconfig on' will turn shadow passwords on;
++# 'shadowconfig off' will turn shadow passwords off.
++#
++# shadowconfig will print an error message and exit with
++# a nonzero code if it finds anything awry. If that happens,
++# you should correct the error and run it again.
++#
++# Turning shadow passwords on when they are already on, or
++# off when they are already off, is harmless.
++#
++# Be aware that account expiration dates are only supported
++# by shadow passwords -- these dates will be lost when converting
++# from shadow to non-shadow passwords. If you need to save this
++# information, back up your /etc/shadow before turning off
++# shadow passwords.
++#
+
+-set -e
+
+-permfix () {
+- [ -f $1 ] || return 0
+- chown root:shadow $1
+- chmod 2755 $1
+-}
+-export -f permfix
++set -e
+
+ shadowon () {
+ bash<<- EOF
+ set -e
+-
+- permfix /usr/X11R6/bin/xlock
+- permfix /usr/X11R6/bin/xtrlock
+- permfix /bin/vlock
+-
+ pwck -q
+ grpck
+ pwconv
+@@ -65,3 +70,4 @@
+ echo Usage: $0 on \| off
+ ;;
+ esac
++
diff --git a/source/a/shadow/slack-desc b/source/a/shadow/slack-desc
new file mode 100644
index 00000000..57749146
--- /dev/null
+++ b/source/a/shadow/slack-desc
@@ -0,0 +1,19 @@
+# HOW TO EDIT THIS FILE:
+# The "handy ruler" below makes it easier to edit a package description. Line
+# up the first '|' above the ':' following the base package name, and the '|'
+# on the right side marks the last column you can put a character in. You must
+# make exactly 11 lines for the formatting to be correct. It's also
+# customary to leave one space after the ':'.
+
+ |-----handy-ruler------------------------------------------------------|
+shadow: shadow (shadow password suite)
+shadow:
+shadow: This set of login related programs utilizes an alternate, non-readable
+shadow: file to contain the actual encrypted passwords. This is presumed to
+shadow: increase system security by increasing the difficulty with which
+shadow: system crackers obtain encrypted passwords. It was written by
+shadow: Julianne Frances Haugh and the Linux port is maintained by Tomasz
+shadow: Kloczko.
+shadow:
+shadow: This package provides 'login', which is needed to log into the system.
+shadow:
diff --git a/source/a/sharutils/sharutils.SlackBuild b/source/a/sharutils/sharutils.SlackBuild
new file mode 100755
index 00000000..0d8bd6f0
--- /dev/null
+++ b/source/a/sharutils/sharutils.SlackBuild
@@ -0,0 +1,85 @@
+#!/bin/sh
+
+# Copyright 2008, 2009 Patrick J. Volkerding, Sebeka, Minnesota, USA
+# All rights reserved.
+#
+# Redistribution and use of this script, with or without modification, is
+# permitted provided that the following conditions are met:
+#
+# 1. Redistributions of this script must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# 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.
+
+
+VERSION=4.7
+ARCH=${ARCH:-x86_64}
+BUILD=${BUILD:-1}
+
+CWD=$(pwd)
+TMP=${TMP:-/tmp}
+PKG=$TMP/package-sharutils
+
+if [ "$ARCH" = "i486" ]; then
+ SLKCFLAGS="-O2 -march=i486 -mtune=i686"
+ LIBDIRSUFFIX=""
+elif [ "$ARCH" = "s390" ]; then
+ SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
+elif [ "$ARCH" = "x86_64" ]; then
+ SLKCFLAGS="-O2"
+ LIBDIRSUFFIX="64"
+fi
+
+rm -rf $PKG
+mkdir -p $TMP $PKG
+
+cd $TMP
+rm -rf sharutils-$VERSION
+tar xjvf $CWD/sharutils-$VERSION.tar.bz2
+cd sharutils-$VERSION
+chown -R root:root .
+find . \
+ \( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \
+ -exec chmod 755 {} \; -o \
+ \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
+ -exec chmod 644 {} \;
+
+./configure \
+ --prefix=/usr \
+ --libdir=/usr/lib${LIBDIRSUFFIX} \
+ --mandir=/usr/man \
+ --infodir=/usr/info \
+ $ARCH-slackware-linux
+make -j3
+make install DESTDIR=$PKG
+make install-man DESTDIR=$PKG
+
+rm -f $PKG/usr/info/dir
+gzip -9 $PKG/usr/info/* $PKG/usr/man/man?/*.?
+
+( cd $PKG
+ find . | xargs file | grep "executable" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
+ find . | xargs file | grep "shared object" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
+)
+
+mkdir -p $PKG/usr/doc/sharutils-$VERSION
+cp -a \
+ AUTHORS COPYING INSTALL NEWS README README-alpha THANKS TODO \
+ $PKG/usr/doc/sharutils-$VERSION
+
+mkdir -p $PKG/install
+cat $CWD/slack-desc > $PKG/install/slack-desc
+
+cd $PKG
+makepkg -l y -c n $TMP/sharutils-$VERSION-$ARCH-$BUILD.txz
+
diff --git a/source/a/sharutils/slack-desc b/source/a/sharutils/slack-desc
new file mode 100644
index 00000000..fbc490fa
--- /dev/null
+++ b/source/a/sharutils/slack-desc
@@ -0,0 +1,19 @@
+# HOW TO EDIT THIS FILE:
+# The "handy ruler" below makes it easier to edit a package description. Line
+# up the first '|' above the ':' following the base package name, and the '|' on
+# the right side marks the last column you can put a character in. You must make
+# exactly 11 lines for the formatting to be correct. It's also customary to
+# leave one space after the ':'.
+
+ |-----handy-ruler------------------------------------------------------|
+sharutils: sharutils (GNU shell archive packing utilities)
+sharutils:
+sharutils: `shar' makes so-called shell archives out of many files, preparing
+sharutils: them for transmission by electronic mail services. `unshar' helps
+sharutils: unpacking shell archives after reception. `uuencode' prepares a file
+sharutils: for transmission over an electronic channel which ignores or otherwise
+sharutils: mangles the eight bit (high order bit) of bytes. `uudecode' does the
+sharutils: converse transformation. `remsync' allows for remote synchronization
+sharutils: of directory trees using electronic mail.
+sharutils:
+sharutils:
diff --git a/source/a/slocate/slack-desc b/source/a/slocate/slack-desc
new file mode 100644
index 00000000..22ec56cc
--- /dev/null
+++ b/source/a/slocate/slack-desc
@@ -0,0 +1,19 @@
+# HOW TO EDIT THIS FILE:
+# The "handy ruler" below makes it easier to edit a package description. Line
+# up the first '|' above the ':' following the base package name, and the '|' on
+# the right side marks the last column you can put a character in. You must make
+# exactly 11 lines for the formatting to be correct. It's also customary to
+# leave one space after the ':'.
+
+ |-----handy-ruler------------------------------------------------------|
+slocate: slocate (Secure Locate)
+slocate:
+slocate: Slocate is an enhanced version of locate, a command to help you locate
+slocate: files on the system. Like the original version of locate, Slocate
+slocate: maintains a database of files on the system, updating it nightly.
+slocate: Unlike the original, Slocate indexes every file on the machine rather
+slocate: than only the ones that can be seen by everyone. The "secure" part of
+slocate: slocate is that it will only return matches if the user is allowed to
+slocate: see the files.
+slocate:
+slocate:
diff --git a/source/a/slocate/slocate-3.1.tar.gz.sign b/source/a/slocate/slocate-3.1.tar.gz.sign
new file mode 100644
index 00000000..91b98242
--- /dev/null
+++ b/source/a/slocate/slocate-3.1.tar.gz.sign
@@ -0,0 +1,7 @@
+-----BEGIN PGP SIGNATURE-----
+Version: GnuPG v1.4.2 (GNU/Linux)
+
+iD8DBQBEDmWkUZpV8HRsUfQRAnLeAJ0cBuIYvy+3GSTdm+sfQ7XYbNWuwgCgj+pZ
+RKdGZfMmcuFGoBO39sCX/64=
+=K/rW
+-----END PGP SIGNATURE-----
diff --git a/source/a/slocate/slocate.SlackBuild b/source/a/slocate/slocate.SlackBuild
new file mode 100755
index 00000000..3fec40f2
--- /dev/null
+++ b/source/a/slocate/slocate.SlackBuild
@@ -0,0 +1,77 @@
+#!/bin/sh
+
+# Copyright 2008, 2009 Patrick J. Volkerding, Sebeka, Minnesota, USA
+# All rights reserved.
+#
+# Redistribution and use of this script, with or without modification, is
+# permitted provided that the following conditions are met:
+#
+# 1. Redistributions of this script must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# 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.
+
+
+VERSION=3.1
+ARCH=${ARCH:-x86_64}
+BUILD=${BUILD:-3}
+
+CWD=$(pwd)
+TMP=${TMP:-/tmp}
+PKG=$TMP/package-slocate
+
+if [ "$ARCH" = "i486" ]; then
+ SLKCFLAGS="-O2 -march=i486 -mtune=i686"
+elif [ "$ARCH" = "s390" ]; then
+ SLKCFLAGS="-O2"
+elif [ "$ARCH" = "x86_64" ]; then
+ SLKCFLAGS="-O2 -fPIC"
+fi
+
+rm -rf $PKG
+mkdir -p $TMP $PKG
+
+# Explode the package framework:
+cd $PKG
+explodepkg $CWD/_slocate.tar.gz
+
+cd $TMP
+rm -rf slocate-$VERSION
+tar xzvf $CWD/slocate-$VERSION.tar.gz
+cd slocate-$VERSION
+chown -R root:root .
+find . \
+ \( -perm 777 -o -perm 775 -o -perm 750 -o -perm 2750 -o -perm 711 -o -perm 555 -o -perm 511 \) \
+ -exec chmod 755 {} \; -o \
+ \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
+ -exec chmod 644 {} \;
+
+cd src
+make CFLAGS="$SLKCFLAGS"
+cd ..
+strip --strip-unneeded src/slocate
+mkdir -p $PKG/usr/bin
+cat src/slocate > $PKG/usr/bin/slocate
+mkdir -p $PKG/usr/man/man1
+cat doc/slocate.1 | gzip -9c > $PKG/usr/man/man1/slocate.1.gz
+cat doc/updatedb.1 | gzip -9c > $PKG/usr/man/man1/updatedb.1.gz
+mkdir -p $PKG/usr/doc/slocate-$VERSION
+cp -a \
+ Changelog LICENSE README WISHLIST \
+ $PKG/usr/doc/slocate-$VERSION
+mkdir -p $PKG/install
+cat $CWD/slack-desc > $PKG/install/slack-desc
+
+# Build the package:
+cd $PKG
+makepkg -l y -c n $TMP/slocate-$VERSION-$ARCH-$BUILD.txz
+
diff --git a/source/a/smartmontools/doinst.sh b/source/a/smartmontools/doinst.sh
new file mode 100644
index 00000000..82f0ac13
--- /dev/null
+++ b/source/a/smartmontools/doinst.sh
@@ -0,0 +1,13 @@
+#!/bin/sh
+config() {
+ NEW="$1"
+ OLD="`dirname $NEW`/`basename $NEW .new`"
+ # If there's no config file by that name, mv it over:
+ if [ ! -r $OLD ]; then
+ mv $NEW $OLD
+ elif [ "`cat $OLD | md5sum`" = "`cat $NEW | md5sum`" ]; then # toss the redundant copy
+ rm $NEW
+ fi
+ # Otherwise, we leave the .new copy for the admin to consider...
+}
+config etc/smartd.conf.new
diff --git a/source/a/smartmontools/slack-desc b/source/a/smartmontools/slack-desc
new file mode 100644
index 00000000..ce462947
--- /dev/null
+++ b/source/a/smartmontools/slack-desc
@@ -0,0 +1,19 @@
+# HOW TO EDIT THIS FILE:
+# The "handy ruler" below makes it easier to edit a package description. Line
+# up the first '|' above the ':' following the base package name, and the '|' on
+# the right side marks the last column you can put a character in. You must make
+# exactly 11 lines for the formatting to be correct. It's also customary to
+# leave one space after the ':'.
+
+ |-----handy-ruler------------------------------------------------------|
+smartmontools: smartmontools (hard drive monitoring utilities)
+smartmontools:
+smartmontools: SMARTMONTOOLS contains utilities that control and monitor storage
+smartmontools: devices using the Self-Monitoring, Analysis and Reporting Technology
+smartmontools: (S.M.A.R.T.) system build into ATA and SCSI Hard Drives. This is used
+smartmontools: to check the reliability of the hard drive and to predict drive
+smartmontools: failures. SMARTMONTOOLS Version 5.x is designed to comply to the
+smartmontools: ATA/ATAPI-5 specification (Revision 1). Future releases of
+smartmontools: SMARTMONTOOLS (Versions 6.x and 7.x) will comply with the ATA/ATAPI-6
+smartmontools: and ATA/ATAPI-7 specifications.
+smartmontools:
diff --git a/source/a/smartmontools/smartmontools.SlackBuild b/source/a/smartmontools/smartmontools.SlackBuild
new file mode 100755
index 00000000..fd4fcf35
--- /dev/null
+++ b/source/a/smartmontools/smartmontools.SlackBuild
@@ -0,0 +1,78 @@
+#!/bin/sh
+
+# Copyright 2008, 2009 Patrick J. Volkerding, Sebeka, Minnesota, USA
+# All rights reserved.
+#
+# Redistribution and use of this script, with or without modification, is
+# permitted provided that the following conditions are met:
+#
+# 1. Redistributions of this script must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# 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.
+
+
+VERSION=5.38
+ARCH=${ARCH:-x86_64}
+BUILD=${BUILD:-1}
+
+if [ "$ARCH" = "x86_64" ]; then
+ LIBDIRSUFFIX="64"
+else
+ LIBDIRSUFFIX=""
+fi
+
+CWD=$(pwd)
+TMP=${TMP:-/tmp}
+PKG=/tmp/package-smartmontools
+
+rm -rf $PKG
+mkdir -p $TMP $PKG
+
+cd $TMP
+rm -rf smartmontools-$VERSION
+tar xvf $CWD/smartmontools-$VERSION.tar.*
+cd smartmontools-$VERSION
+chown -R root:root .
+./configure \
+ --prefix=/usr \
+ --libdir=/usr/lib${LIBDIRSUFFIX} \
+ --mandir=/usr/man \
+ --sysconfdir=/etc \
+ $ARCH-slackware-linux
+make
+make install DESTDIR=$PKG
+# Not used on Slackware:
+rm -rf $PKG/etc/rc.d
+mv $PKG/etc/smartd.conf $PKG/etc/smartd.conf.new
+gzip -9 $PKG/usr/man/man?/*.?
+mv $PKG/usr/share/doc $PKG/usr
+rmdir $PKG/usr/share
+rm -f $PKG/usr/doc/smartmontools-$VERSION/CHANGELOG \
+ $PKG/usr/doc/smartmontools-$VERSION/smartd.conf
+( cd $PKG
+ find . | xargs file | grep "executable" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
+ find . | xargs file | grep "shared object" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
+)
+mkdir -p $PKG/install
+zcat $CWD/doinst.sh.gz > $PKG/install/doinst.sh
+cat $CWD/slack-desc > $PKG/install/slack-desc
+
+# Build the package:
+cd $PKG
+makepkg -l y -c n $TMP/smartmontools-$VERSION-$ARCH-$BUILD.txz
+
+# Clean up the extra stuff:
+if [ "$1" = "--cleanup" ]; then
+ rm -rf $TMP/smartmontools-$VERSION
+ rm -rf $PKG
+fi
diff --git a/source/a/splitvt/slack-desc b/source/a/splitvt/slack-desc
new file mode 100644
index 00000000..0aa6ab24
--- /dev/null
+++ b/source/a/splitvt/slack-desc
@@ -0,0 +1,19 @@
+# HOW TO EDIT THIS FILE:
+# The "handy ruler" below makes it easier to edit a package description. Line
+# up the first '|' above the ':' following the base package name, and the '|'
+# on the right side marks the last column you can put a character in. You must
+# make exactly 11 lines for the formatting to be correct. It's also
+# customary to leave one space after the ':'.
+
+ |-----handy-ruler------------------------------------------------------|
+splitvt: splitvt (run multiple shells in a single window)
+splitvt:
+splitvt: This program splits the screen into two windows, one above the other,
+splitvt: and runs a shell in each one.
+splitvt:
+splitvt: Splitvt was written by Sam Lantinga.
+splitvt:
+splitvt:
+splitvt:
+splitvt:
+splitvt:
diff --git a/source/a/splitvt/splitvt.SlackBuild b/source/a/splitvt/splitvt.SlackBuild
new file mode 100755
index 00000000..f643a825
--- /dev/null
+++ b/source/a/splitvt/splitvt.SlackBuild
@@ -0,0 +1,67 @@
+#!/bin/sh
+
+# Copyright 2008, 2009 Patrick J. Volkerding, Sebeka, Minnesota, USA
+# All rights reserved.
+#
+# Redistribution and use of this script, with or without modification, is
+# permitted provided that the following conditions are met:
+#
+# 1. Redistributions of this script must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# 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.
+
+
+VERSION=1.6.5
+ARCH=${ARCH:-x86_64}
+BUILD=${BUILD:-1}
+
+CWD=$(pwd)
+TMP=${TMP:-/tmp}
+PKG=$TMP/package-splitvt
+
+rm -rf $PKG
+mkdir -p $TMP $PKG
+
+cd $TMP
+rm -rf splitvt-1.6.5
+tar xzvf $CWD/splitvt-1.6.5.tar.gz
+cd splitvt-1.6.5
+zcat $CWD/splitvt_1.6.5-9.diff.gz | patch -p1 --verbose || exit 1
+chown -R root:root .
+./configure
+make || exit 1
+mkdir -p $PKG/usr/bin
+cat splitvt > $PKG/usr/bin/splitvt
+chmod 755 $PKG/usr/bin/splitvt
+mkdir -p $PKG/usr/man/man1
+cat splitvt.1 | gzip -9c > $PKG/usr/man/man1/splitvt.1.gz
+mkdir -p $PKG/usr/doc/splitvt-1.6.5
+cp -a examples ANNOUNCE CHANGES NOTES README TODO \
+ $PKG/usr/doc/splitvt-1.6.5
+( cd $PKG/usr/doc/splitvt-1.6.5
+ find . -type d | xargs chmod 755
+ find . -type f | xargs chmod 644 )
+
+# Strip everything for good measure:
+( cd $PKG
+ find . | xargs file | grep "executable" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
+ find . | xargs file | grep "shared object" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
+)
+
+mkdir -p $PKG/install
+cat $CWD/slack-desc > $PKG/install/slack-desc
+
+# Build the package:
+cd $PKG
+makepkg -l y -c n $TMP/splitvt-$VERSION-$ARCH-$BUILD.txz
+
diff --git a/source/a/splitvt/splitvt_1.6.5-9.diff b/source/a/splitvt/splitvt_1.6.5-9.diff
new file mode 100644
index 00000000..47d56037
--- /dev/null
+++ b/source/a/splitvt/splitvt_1.6.5-9.diff
@@ -0,0 +1,1073 @@
+--- splitvt-1.6.5.orig/debian/changelog
++++ splitvt-1.6.5/debian/changelog
+@@ -0,0 +1,147 @@
++splitvt (1.6.5-9) unstable; urgency=low
++
++ * Ensure that -upper and -lower have arguemnts. Closes: #319091
++
++ -- Joey Hess <joeyh@debian.org> Tue, 19 Jul 2005 17:50:32 -0400
++
++splitvt (1.6.5-8) unstable; urgency=low
++
++ * Patch from Andreas Jochens to fix building with gcc 4.0. Closes: #294620
++
++ -- Joey Hess <joeyh@debian.org> Fri, 15 Jul 2005 17:38:09 +0300
++
++splitvt (1.6.5-7) unstable; urgency=low
++
++ * Many changes to make it build cleanly with -Wall. This included some
++ missing headers that probably caused it to crash on amd64.
++ * Disabled vttest, since its read from the console to try to detect a vt100
++ terminal was responsible for startup hang on sparc. Closes: #273330
++
++ -- Joey Hess <joeyh@debian.org> Wed, 26 Jan 2005 20:32:34 -0500
++
++splitvt (1.6.5-6) unstable; urgency=low
++
++ * Rebuilt to update to current policy on /usr/doc links &etc.
++
++ -- Joey Hess <joeyh@debian.org> Sat, 8 Feb 2003 12:32:25 -0500
++
++splitvt (1.6.5-5) unstable; urgency=low
++
++ * Updated to debhelper v4.
++
++ -- Joey Hess <joeyh@debian.org> Thu, 13 Jun 2002 16:30:04 -0400
++
++splitvt (1.6.5-4) unstable; urgency=low
++
++ * Updated patch to not break resizing.
++
++ -- Joey Hess <joeyh@debian.org> Fri, 5 Oct 2001 20:09:25 -0400
++
++splitvt (1.6.5-3) unstable; urgency=low
++
++ * Patch from Robert de Bath <robert$@mayday.cix.co.uk> that has a doc fix
++ and also fixes a splitvt segfault when one uses the CSI ? 3 h to got o
++ 132 column mode. Closes: #113868 (also sent upstream)
++
++ -- Joey Hess <joeyh@debian.org> Sat, 29 Sep 2001 16:44:25 -0400
++
++splitvt (1.6.5-2) unstable; urgency=HIGH
++
++ * New upstream version, with a format string hole fixed, and several
++ possible buffer overfllows fixed.
++ - Of those, only (I think) the format string attack and two of the
++ buffer overflows can affect the debian package.
++ - Luckily, my last release of the package back in June 2000 made
++ it only need to be sgid tty.
++ - Total possible impact: attacker could possibly crack the tty group.
++ * Goofed up version number because this source is already in the
++ archives.
++
++ -- Joey Hess <joeyh@debian.org> Wed, 17 Jan 2001 23:39:09 -0800
++
++splitvt (1.6.4-4) unstable; urgency=low
++
++ * Drop setgid first. Very doubtful this effects anything, but it's the
++ right way to do things.
++
++ -- Joey Hess <joeyh@debian.org> Thu, 15 Jun 2000 11:37:48 -0700
++
++splitvt (1.6.4-3) unstable; urgency=low
++
++ * Modified to use glibc's sys4-ish pty routines; devpts, grantpt, etc.
++ * Modified to drop sgid bit properly.
++ * Now I can make it just sgid utmp, rather than suid root, and it
++ continues to work just as before. Beaujolais! Closes: #65227
++ * Removed no-longer-needed glibc stdion/stdout fix patch.
++
++ -- Joey Hess <joeyh@debian.org> Wed, 14 Jun 2000 14:13:30 -0700
++
++splitvt (1.6.4-2) unstable; urgency=low
++
++ * Corrected build-depends, Closes: #65584
++
++ -- Joey Hess <joeyh@debian.org> Tue, 13 Jun 2000 11:42:02 -0700
++
++splitvt (1.6.4-1) unstable; urgency=high
++
++ * New upstream release with security fix (already applied in the previous
++ version, I'm just syncing up with upstream).
++ * Added homepage to copyright file.
++ * Added some more files to docs.
++ * Now under the GPL explicitly, some updates to the copyright file.
++
++ -- Joey Hess <joeyh@debian.org> Sun, 11 Jun 2000 21:42:41 -0700
++
++splitvt (1.6.3-7.0slink1) stable; urgency=high
++
++ * Security fix.
++
++ -- Daniel Jacobowitz <dan@debian.org> Sat, 3 Jun 2000 17:56:33 -0400
++
++splitvt (1.6.3-7) unstable; urgency=low
++
++ * Build dep.
++
++ -- Joey Hess <joeyh@debian.org> Sat, 4 Dec 1999 16:21:35 -0800
++
++splitvt (1.6.3-6) unstable; urgency=low
++
++ * FHS
++
++ -- Joey Hess <joeyh@debian.org> Sat, 11 Sep 1999 01:27:49 -0700
++
++splitvt (1.6.3-5) unstable; urgency=low
++
++ * vtmouse.c: Don't use stdin/stdout as initializers. Instead, in
++ event_getc(), set xt_input and xt_output to stdin and stdout if
++ they are not yet set. This is for the ports to other architectures.
++ (#29597)
++
++ -- Joey Hess <joeyh@debian.org> Tue, 17 Nov 1998 15:50:53 -0800
++
++splitvt (1.6.3-4) unstable; urgency=low
++
++ * Built with newest debhelper to change how the suid binary is registered.
++
++ -- Joey Hess <joeyh@debian.org> Tue, 27 Oct 1998 21:59:05 -0800
++
++splitvt (1.6.3-3) unstable; urgency=low
++
++ * Hacked in a -f flag, that allows you to resize one of the splitvt
++ windows down to 1 line tall. This is particularly useful for ticker.
++
++ -- Joey Hess <joeyh@debian.org> Mon, 7 Sep 1998 19:56:53 -0700
++
++splitvt (1.6.3-2) unstable; urgency=low
++
++ * Fixed package description spelling (#18990).
++
++ -- Joey Hess <joeyh@debian.org> Thu, 5 Mar 1998 17:00:19 -0800
++
++splitvt (1.6.3-1) unstable; urgency=low
++
++ * First release.
++ * Write to author and clarified copyright.
++ * Change /etc/utmp to /var/run/utmp
++
++ -- Joey Hess <joeyh@debian.org> Wed, 1 Oct 1997 16:19:01 -0400
+--- splitvt-1.6.5.orig/debian/control
++++ splitvt-1.6.5/debian/control
+@@ -0,0 +1,14 @@
++Source: splitvt
++Section: utils
++Priority: optional
++Build-Depends: debhelper (>= 4), libncurses5-dev, dpkg-dev (>= 1.9.0)
++Maintainer: Joey Hess <joeyh@debian.org>
++Standards-Version: 3.5.8.0
++
++Package: splitvt
++Architecture: any
++Depends: ${shlibs:Depends}, ${misc:Depends}
++Description: run two programs in a split screen
++ A utility to split a vt100 compatible screen into two halves,
++ upper and lower, and run a different program simultaneously
++ in each half.
+--- splitvt-1.6.5.orig/debian/compat
++++ splitvt-1.6.5/debian/compat
+@@ -0,0 +1 @@
++4
+--- splitvt-1.6.5.orig/debian/watch
++++ splitvt-1.6.5/debian/watch
+@@ -0,0 +1,2 @@
++version=2
++http://www.devolution.com/~slouken/projects/splitvt/ splitvt-(.*).tar.gz
+--- splitvt-1.6.5.orig/debian/copyright
++++ splitvt-1.6.5/debian/copyright
+@@ -0,0 +1,45 @@
++This is a Debian prepackaged version of the splitvt utility.
++
++This package was put together by Joey Hess <joeyh@debian.org>, using
++sources from:
++ http://www.devolution.com/~slouken/projects/splitvt/
++
++The following copyright notices can still be found in the source code:
++
++ /* utmp.c Shareware Copyright by Sam Lantinga 10/6/93 */
++
++That is a historical relic, though. The current copyright of splitvt is the
++GPL; the text to which can be found in /usr/share/common-licenses/GPL on a
++Debian system.
++
++Before the copyright was expressly changed to the GPL, I wrote and asked the
++author about copyright. He replied:
++
++ Date: Wed, 1 Oct 1997 13:39:18 -0700
++ From: Sam Lantinga <slouken@domo.ccnet.com>
++ To: Joey Hess <joey@kite.ml.org>
++ Cc: slouken@mongoloid.devolution.com
++ Subject: Re: splitvt copyright
++ X-Mailer: My Mailer 1.5 <slouken@devolution.com>
++
++ > I've never heard of no fee shareware before. What restrictions does that
++ > place on the software? Can it be put on a cd with other software (such as a
++ > linux distribution) and sold for profit? Can it be used by anyone, for any
++ > purpose? If so, why don't you just place it under the GPL?
++
++ Consider it GPL'd. I wrote it before I was aware of the GPL, and haven't
++ done much work on it in quite a while.
++
++ > At this point, I'm not sure if splitvt's copyright will let it go in our
++ > main distribution, that is sold on cd, or not. Awaiting your clarification..
++
++ You are more than welcome to put splitvt in the Debian distribution.
++ It is already in Slackware and S.u.S.E.
++
++ See ya!
++ -Sam Lantinga (slouken@devolution.com)
++
++ --
++ Author of Linux Maelstrom -
++ http://www.devolution.com/~slouken/Maelstrom/
++ --
+--- splitvt-1.6.5.orig/debian/rules
++++ splitvt-1.6.5/debian/rules
+@@ -0,0 +1,43 @@
++#!/usr/bin/make -f
++
++build: build-stamp
++build-stamp:
++ dh_testdir
++ rm -f Makefile
++ ./configure
++ $(MAKE)
++ touch build-stamp
++
++clean:
++ dh_testdir
++ dh_testroot
++ rm -f build-stamp
++ dh_clean
++ if [ ! -f Makefile ]; then ./configure ; fi
++ -$(MAKE) distclean
++
++binary-indep: build
++
++binary-arch: build
++ dh_testdir
++ dh_testroot
++ dh_clean
++ dh_install splitvt usr/bin
++ dh_installdocs README TODO ANNOUNCE BLURB
++ dh_installexamples examples/*
++ dh_installmenu
++ dh_installcron
++ dh_installman splitvt.1
++ dh_installchangelogs CHANGES
++ dh_strip
++ dh_compress
++ dh_installdeb
++ dh_shlibdeps
++ dh_gencontrol
++ dh_fixperms
++ chgrp utmp debian/splitvt/usr/bin/splitvt
++ chmod g+s debian/splitvt/usr/bin/splitvt
++ dh_builddeb
++
++binary: binary-indep binary-arch
++.PHONY: build clean binary-indep binary-arch binary
+--- splitvt-1.6.5.orig/splitvt.man
++++ splitvt-1.6.5/splitvt.man
+@@ -176,7 +176,7 @@
+ replace it with entries for the two windows. This allows
+ you to use programs such as 'talk' within the splitvt win-
+ dows. If you do not have write permission to the
+- /etc/utmp file, you will not be able to modify the utmp
++ /etc/utmp file, you will not be able to modify the utmp
+ entries.
+
+ splitvt can be made set-uid root. splitvt will reset its
+--- splitvt-1.6.5.orig/parserc.c
++++ splitvt-1.6.5/parserc.c
+@@ -1,6 +1,8 @@
+
+ /* Routines to parse the ~/.splitvtrc file and set default options */
+
++#include <unistd.h>
++#include <stdlib.h>
+ #include <sys/types.h>
+ #include <sys/stat.h>
+ #include <string.h>
+@@ -213,7 +215,7 @@
+ char line[BUFSIZ], newline[BUFSIZ*2], *parsed[256];
+ char *head, *tail, *ptr, *subptr;
+ char *envptr, envbuf[128];
+- int i, n, quoted=0;
++ int i, n;
+ int ignoring=0, ifs=0;
+
+ /* Get our home directory */
+--- splitvt-1.6.5.orig/splitvt.c
++++ splitvt-1.6.5/splitvt.c
+@@ -13,6 +13,9 @@
+ static char *version=
+ "@(#)Splitvt 1.6.5 1/12/2001 -Sam Lantinga (slouken@devolution.com)\n";
+
++#include <string.h>
++#include <unistd.h>
++#include <stdlib.h>
+ #include <sys/types.h>
+ #include <sys/time.h>
+ #include <sys/wait.h>
+@@ -79,6 +82,8 @@
+ char *upper_args[MAX_ARGS+1]={NULL}, *lower_args[MAX_ARGS+1]={NULL};
+ int upper_empty=1, lower_empty=1;
+
++int force_height=0;
++
+ void print_usage(argv)
+ char *argv;
+ {
+@@ -95,13 +100,14 @@
+ fprintf(stderr, "\t-nologin\t\tOverrides \"set login on\" in startup file\n");
+ fprintf(stderr, "\t-rcfile file\t\tLoads 'file' at startup instead of ~/.splitvtrc\n");
+ fprintf(stderr, "\t-norc\t\t\tSuppresses loading your startup file\n");
++ fprintf(stderr, "\t-f\t\t\tAllow setting screen size of less than 3 lines\n");
+ fprintf(stderr, "\t-v\t\t\tPrint out the version number\n");
+ fprintf(stderr, "\n");
+ exit(1);
+ }
+
+
+-main(argc, argv)
++int main(argc, argv)
+ int argc;
+ char *argv[];
+ {
+@@ -111,7 +117,10 @@
+ int i, len, maxfds, numready;
+ char buffer[BUFSIZ], *ptr;
+ char *xterm_title=NULL;
+- struct timeval tv, *tvptr;
++#ifdef NEED_INET_H
++ struct timeval tv;
++#endif
++ struct timeval *tvptr;
+ fd_set read_mask;
+ static struct passwd pwdata; /* Our passwd entry */
+
+@@ -151,7 +160,7 @@
+ splitvtrc();
+
+ /* Parse command line options */
+- while ( (i=getopt(argc, argv, "n:u:l:r:s:t:vh")) != EOF )
++ while ( (i=getopt(argc, argv, "fn:u:l:r:s:t:vh")) != EOF )
+ {
+ switch (i)
+ {
+@@ -163,11 +172,19 @@
+ break;
+ case 'u': if ( strcmp(optarg, "pper") != 0 )
+ print_usage(argv[0]);
++ if (optind >= argc) {
++ fprintf(stderr, "-upper requires an argument\n");
++ print_usage(argv[0]);
++ }
+ tokenize(upper_args, MAX_ARGS+1,
+ argv[optind++], " ");
+ upper_empty=0;
+ break;
+ case 'l': if ( strcmp(optarg, "ower") == 0 ) {
++ if (optind >= argc) {
++ fprintf(stderr, "-lower requires an argument\n");
++ print_usage(argv[0]);
++ }
+ tokenize(lower_args, MAX_ARGS+1,
+ argv[optind++], " ");
+ lower_empty=0;
+@@ -188,7 +205,9 @@
+ case 'v': printf("%s", version+4);
+ exit(0);
+ break;
+- case 'h':
++ case 'f': force_height=1;
++ break;
++ case 'h':
+ default: print_usage(argv[0]);
+ break;
+ }
+@@ -212,7 +231,7 @@
+ }
+ (void) tty_raw(0); /* Set the tty raw here to prevent lost input */
+
+- if ( (ptr=init_vt100()) != NULL )
++ if ( (ptr=init_vt100(1)) != NULL )
+ {
+ if ( tty_reset(0) < 0 )
+ (void) tty_sane(0);
+@@ -473,6 +492,7 @@
+ }
+ }
+ finish(0);
++ exit(0);
+ }
+
+ void reset_bar(sleeptime)
+@@ -496,6 +516,7 @@
+ " 'x' Lock the screen",
+ " 'h' Show this help screen",
+ " 'q' Quickly quit splitvt",
++" '0-9' Line count for + or -",
+ NULL
+ };
+ vt_showscreen("Splitvt HELP screen:", help);
+@@ -700,7 +721,7 @@
+ tmp_uulines=UU_lines;
+ UU_lines=WU_lines;
+ UU_lines += howfar; /* Positive to go down, negative to go up */
+- init_vt100(); /* Reset the windows to the new size */
++ init_vt100(0); /* Reset the windows to the new size */
+
+ /* Tell the running processes about the size change */
+ if ( topok )
+@@ -722,7 +743,7 @@
+
+ signal(sig, winch);
+
+- if ( (ptr=init_vt100()) != NULL ) {
++ if ( (ptr=init_vt100(1)) != NULL ) {
+ fprintf(stderr, "Can't resize window: %s. (exiting)\n", ptr);
+ finish(0);
+ } else
+--- splitvt-1.6.5.orig/config.c
++++ splitvt-1.6.5/config.c
+@@ -169,7 +169,7 @@
+ strcat(ldflags, " -lsun");
+
+ /* Tell the user what kind of configuration to do */
+- if ( (access("/etc/utmp", (R_OK|W_OK)) == 0) && getuid() )
++ if ( (access("/var/run/utmp", (R_OK|W_OK)) == 0) && getuid() )
+ write_utmp=1;
+ else
+ write_utmp=0;
+@@ -180,14 +180,14 @@
+ VERBOSE_PRINT(
+ "This program doesn't need to be installed set-uid root.\n");
+ VERBOSE_PRINT(
+- "\nThis program will put entries for its windows in /etc/utmp.\n");
++ "\nThis program will put entries for its windows in /var/run/utmp.\n");
+ } else {
+ VERBOSE_PRINT(
+- "If installed set-uid root, this program will put entries for its windows\nin /etc/utmp.\n");
++ "If installed set-uid root, this program will put entries for its windows\nin /var/run/utmp.\n");
+ }
+ } else if ( write_utmp ) {
+ VERBOSE_PRINT(
+- "This program will put entries for its windows in /etc/utmp.\n");
++ "This program will put entries for its windows in /var/run/utmp.\n");
+ VERBOSE_PRINT(
+ "\nIf installed set-uid root, this program will change ownership of the\n");
+ VERBOSE_PRINT(
+@@ -196,7 +196,7 @@
+ VERBOSE_PRINT(
+ "If installed set-uid root, this program will put entries for its windows\n");
+ VERBOSE_PRINT(
+- "in /etc/utmp, and will also change ownership of the ttys it acquires to the\n");
++ "in /var/run/utmp, and will also change ownership of the ttys it acquires to the\n");
+ VERBOSE_PRINT(
+ "user running this program.\n");
+ }
+@@ -225,7 +225,7 @@
+ }
+ fprintf(makefile,
+ "PTYOPTS = -DPTYCHAR=$(PTYCHAR) -DHEXDIGIT=$(HEXDIGIT)\n");
+- sprintf(line, "\nCFLAGS = %s $(PTYOPTS)\nLIBS = %s\n", cflags, ldflags);
++ sprintf(line, "\nCFLAGS = -Wall %s $(PTYOPTS)\nLIBS = %s\n", cflags, ldflags);
+ fprintf(makefile, "%s", line);
+ fprintf(makefile, "OBJS = splitvt.o misc.o utmp.o vt100.o videomem.o terminal.o vttest.o vtmouse.o \\\n");
+ fprintf(makefile, " parserc.o lock.o cut-paste.o\n\n");
+--- splitvt-1.6.5.orig/cut-paste.c
++++ splitvt-1.6.5/cut-paste.c
+@@ -2,8 +2,12 @@
+ /* The cut-paste module for splitvt */
+
+ #include <stdio.h>
++#include <string.h>
++#include <unistd.h>
+ #include "vt100.h"
+ #include "video.h"
++#include "splitvt.h"
++#include "terminal.h"
+
+ #define RIGHT 0x01
+ #define LEFT 0x02
+@@ -41,7 +45,7 @@
+ } else
+ c ^= (SELECTED<<8);
+
+- (*oldattr)=check_attr(c, *oldattr, on);
++ (*oldattr)=check_attr(c, *oldattr, (int)on);
+ put_video(c, win, x, y);
+
+ if ( c&0xFF )
+@@ -86,7 +90,6 @@
+ int len;
+ position *mark1, *mark2;
+ {
+- int selection=0;
+ position startsel, endsel;
+
+ if ( mark1->x == mark2->x )
+@@ -200,9 +203,9 @@
+ void vt_initsel()
+ {
+ extern char *pathsearch(); /* From misc.c */
+- char *display;
+
+ #ifdef USE_XCB
++ char *display;
+ /* Use xcb if we have both an X display and the command. */
+ /* xcb needs to support my hacked '-R' option. */
+ if ( (display=(char *)getenv("DISPLAY")) && pathsearch("xcb", 1) )
+@@ -254,7 +257,7 @@
+ char *buf;
+ int len;
+ {
+- int c, state=NORMAL;
++ int c;
+ position here, cursor, mark1, mark2;
+ window *thiswin;
+
+@@ -311,7 +314,7 @@
+ default: break;
+ }
+ }
+- return; /* Hopefully, we never reach here */
++ return NULL; /* Hopefully, we never reach here */
+ }
+
+
+--- splitvt-1.6.5.orig/vt100.c
++++ splitvt-1.6.5/vt100.c
+@@ -8,6 +8,9 @@
+ Many thanks to Matt Ostanik who wrote the ANSI Handbook.
+ */
+
++#include <unistd.h>
++#include <string.h>
++#include <stdlib.h>
+ #include <sys/types.h>
+ #ifdef HAVE_TERMIO_H
+ #include <termio.h> /* Used only for TIOCGWINSZ */
+@@ -20,6 +23,7 @@
+ #include "vt100.h"
+ #include "video.h"
+ #include "terminal.h"
++#include "splitvt.h"
+
+ #define SEP_CHAR ' ' /* Separator bar character */
+
+@@ -135,7 +139,7 @@
+ unsigned char on=NORMAL;
+
+ vt_resetattr();
+- (void) check_attr(0, win->textattr, &on);
++ (void) check_attr(0, win->textattr, (int)&on);
+ }
+
+ /* Process the ^[[X;Xm escape. Made into a separate routine to support
+@@ -683,10 +687,9 @@
+ break;
+ case 3: /* 132 char/row */
+ if ( physical.cols != 132 ) {
+- upper.cols=132;
+- lower.cols=132;
+ physical.cols=132;
+ vt_widemode(1);
++ init_vt100(0);
+ }
+ break;
+ case 4: /* Set jump scroll */
+@@ -726,11 +729,9 @@
+ break;
+ case 3: /* 80 char/row */
+ if ( physical.cols == 132 ) {
+- vt_rows_cols(terminal_type,
+- NULL, &physical.cols);
+- upper.cols=physical.cols;
+- lower.cols=physical.cols;
++ physical.cols = 80;
+ vt_widemode(0);
++ init_vt100(0);
+ }
+ break;
+ case 4: /* Set smooth scroll */
+@@ -843,7 +844,8 @@
+
+ static int setup_vt100 = 0; /* Have we initialized the vt100 system? */
+
+-char *init_vt100()
++char *init_vt100(reread_tsize)
++int reread_tsize;
+ {
+ #ifdef TIOCGWINSZ
+ struct /* winsize */ {
+@@ -853,7 +855,7 @@
+ unsigned short ws_ypixel; /* vertical size - not used */
+ } mywinz;
+ #endif
+- int i, **videomem, oldrows, newrows, newcols;
++ int i, **videomem, oldrows = 0, newrows, newcols;
+ position newpos;
+ char *ptr, *errmesg;
+
+@@ -869,18 +871,22 @@
+ vt_initsel();
+ }
+
++ if (reread_tsize)
++ {
+ #ifdef TIOCGWINSZ
+- if ( ioctl(0, TIOCGWINSZ, &mywinz) == 0 ) {
+- if ( mywinz.ws_row )
+- physical.rows=mywinz.ws_row;
+- if ( mywinz.ws_col )
+- physical.cols=mywinz.ws_col;
+- }
++ if ( ioctl(0, TIOCGWINSZ, &mywinz) == 0 ) {
++ if ( mywinz.ws_row )
++ physical.rows=mywinz.ws_row;
++ if ( mywinz.ws_col )
++ physical.cols=mywinz.ws_col;
++ }
+ #endif
+- if ( (ptr=(char *)getenv("LINES")) != NULL )
+- physical.rows=atoi(ptr);
+- if ( (ptr=(char *)getenv("COLUMNS")) != NULL )
+- physical.cols=atoi(ptr);
++
++ if ( (ptr=(char *)getenv("LINES")) != NULL )
++ physical.rows=atoi(ptr);
++ if ( (ptr=(char *)getenv("COLUMNS")) != NULL )
++ physical.cols=atoi(ptr);
++ }
+
+ /* Now set defaults if we can't find the window size */
+ if ( ! physical.rows ) physical.rows=24;
+@@ -892,19 +898,21 @@
+ if ( physical.rows < 7 )
+ return("Screen is not tall enough to split.");
+
+- /* If physical.cols has been set to 132, assume we are on a
+- vt100 wide terminal, and set 132 column mode. Note that
+- setting COLUMNS in the environment will override termcap */
+- if ( physical.cols == 132 )
+- vt_widemode(1);
++ if ( ! setup_vt100 ) {
++ /* If physical.cols has been set to 132, assume we are on a
++ vt100 wide terminal, and set 132 column mode. Note that
++ setting COLUMNS in the environment will override termcap */
++ if ( physical.cols == 132 )
++ vt_widemode(1);
++ }
+
+ /* Set the exportable variables */
+ if ( UU_lines ) {
+ /* Check the user set # of lines */
+- if ( UU_lines > (physical.rows-1-3) )
+- LU_lines=(physical.rows-1-3);
+- else if ( UU_lines < 3 )
+- LU_lines=3;
++ if ( UU_lines > (physical.rows-1-3+(2*force_height)) )
++ LU_lines=(physical.rows-1-3+(2*force_height));
++ else if ( UU_lines < 3 - (2*force_height))
++ LU_lines=3 - (2*force_height);
+ else
+ LU_lines=UU_lines;
+
+--- splitvt-1.6.5.orig/splitvt.h
++++ splitvt-1.6.5/splitvt.h
+@@ -34,3 +34,25 @@
+
+ /* Functions exported from splitvt.c */
+ extern void reset_bar();
++
++/* If set, allow resizing to less than 3 lines */
++extern int force_height;
++
++void tokenize(char *array[], int size, char *line, char *tokens);
++void d_copy(register char *src, register char *dst, register int len);
++int tty_getmode(int fd);
++int tty_raw(int fd);
++int tty_reset(int fd);
++int tty_sane(int fd);
++int remove_me(void);
++int pty_open(char *argv[], int *childpid, int win);
++int addutmp(char *user, int uid, char *tty);
++char *vt_setsel(char *buf, int len, int startx, int endx, int starty, int endy);
++int delutmp(char *user, char *tty);
++int replace_me(void);
++void pty_setwin(int fd, int win);
++int check_attr(int pixel, int lastattr, int currattr);
++void d_zero(register char *dst, register int len);
++void vt_initsel(void);
++int vttest(void);
++int safe_pclose(FILE *pipefp);
+--- splitvt-1.6.5.orig/splitvt.1
++++ splitvt-1.6.5/splitvt.1
+@@ -47,6 +47,11 @@
+ Suppresses loading your ~/.splitvtrc
+ .TP
+ .TB
++.I -f
++Allow setting the height of either the top or the bottom window to less than
++3 lines.
++.TP
++.TB
+ .I -v
+ Print out the version number of splitvt
+ .LP
+@@ -173,7 +178,7 @@
+ splitvt will attempt to erase the current utmp entry, and replace it
+ with entries for the two windows. This allows you to use programs
+ such as 'talk' within the splitvt windows. If you do not have write
+-permission to the /etc/utmp file, you will not be able to modify the
++permission to the /var/run/utmp file, you will not be able to modify the
+ utmp entries.
+
+ splitvt can be made set-uid root. splitvt will reset its user id to
+--- splitvt-1.6.5.orig/splitvt-1.6.4.lsm
++++ splitvt-1.6.5/splitvt-1.6.4.lsm
+@@ -0,0 +1,15 @@
++Begin3
++Title: Splitvt - a split windows utility
++Version: 1.6.4
++Entered-date: 03JUN2000
++Description: A utility to split a vt100 compatible screen into two halfs,
++ upper and lower, and run a different program simultaneously
++ in each half.
++Keywords: screen vt100 emulator
++Author: slouken@devolution.com (Sam Lantinga)
++Maintained-by: slouken@devolution.com (Sam Lantinga)
++Primary-site: http://www.devolution.com/~slouken/projects/splitvt/
++Alternate-site: sunsite.unc.edu /pub/Linux/utils/terminal
++Platform: UNIX
++Copying-policy: GPL
++End
+--- splitvt-1.6.5.orig/utmp.c
++++ splitvt-1.6.5/utmp.c
+@@ -1,21 +1,27 @@
+
+ /* utmp.c Shareware Copyright by Sam Lantinga 10/6/93 */
+
++#include <unistd.h>
+ #include <sys/types.h>
+ #include <sys/stat.h>
+ #include <fcntl.h>
+ #include <utmp.h>
+ #include <stdio.h>
++#include <string.h>
++#include <time.h>
++#include "splitvt.h"
+
+ #ifdef DEBUG_UTMP
+ #undef UTMP_FILE
+ #define UTMP_FILE "/tmp/utmp"
+ #else
+ #ifndef UTMP_FILE
+-#define UTMP_FILE "/etc/utmp"
++#define UTMP_FILE "/var/run/utmp"
+ #endif /* UTMP_FILE */
+ #endif /* DEBUG_UTMP */
+
++int get_utmp(char *tty, struct utmp *save);
++int set_utmp(char *tty, struct utmp *save);
+
+ /* Remove us from the utmp file, saving our entry to replace later */
+
+@@ -94,7 +100,7 @@
+ if (strncmp(ttyptr, ut.ut_line, sizeof(ut.ut_line)) == 0) {
+ /* Break out; we've found our entry! */
+ if ( save )
+- d_copy((char *)&ut, save, sizeof(ut));
++ d_copy((char *)&ut, (char *)&save, sizeof(ut));
+ close(fd);
+ return(0);
+ }
+@@ -158,7 +164,9 @@
+ int uid; /* The uid corresponding to user */
+ char *tty; /* /dev/ttyxx */
+ {
++#if !defined(SOLARIS) && !defined(IRIX) && !defined(__GLIBC__)
+ struct stat sb;
++#endif
+ struct utmp ut;
+ char *ttyptr;
+
+@@ -195,12 +203,13 @@
+ #endif
+ (void) time(&ut.ut_time);
+
+-#if !defined(SOLARIS) && !defined(IRIX)
+- /* Solaris and Irix machines do this automatically */
++#if !defined(SOLARIS) && !defined(IRIX) && !defined(__GLIBC__)
++ /* Solaris and Irix and GLIBC machines do this automatically */
+ /* Change the ownership and mode of the tty */
+ if ( stat(tty, &sb) == 0 ) {
+ (void) chmod(tty, 0620); /* crw--w---- */
+ (void) chown(tty, uid, sb.st_gid);
++
+ }
+ #endif
+ return(set_utmp(tty, &ut));
+--- splitvt-1.6.5.orig/lock.c
++++ splitvt-1.6.5/lock.c
+@@ -1,9 +1,13 @@
+
+ /* The screen locking module for splitvt */
+
++#include <unistd.h>
++#include <sys/types.h>
++#include <string.h>
+ #include <stdio.h>
+ #include <pwd.h>
+ #include "vt100.h"
++#include "splitvt.h"
+
+ #define UNLOCKED 0
+ #define ENTERED1 1
+--- splitvt-1.6.5.orig/vttest.c
++++ splitvt-1.6.5/vttest.c
+@@ -12,6 +12,7 @@
+ -Sam Lantinga (slouken@toadflax.cs.ucdavis.edu)
+ */
+
++#include <unistd.h>
+ #include <sys/types.h>
+ #include <stdio.h>
+ #include <fcntl.h>
+@@ -48,9 +49,12 @@
+ int vttest()
+ {
+ char buff[512];
+- int x=0, w, rc=0, fd;
++ int x=0, rc=0, fd;
+ struct termio ttold, ttraw;
+
++ /* Disabled since at least on sparc it causes a hang. */
++ return 1;
++
+ /* Set the terminal in a raw mode */
+ if ( (fd=open("/dev/tty", O_RDWR, 0666)) < 0 )
+ return(0);
+--- splitvt-1.6.5.orig/vtmouse.c
++++ splitvt-1.6.5/vtmouse.c
+@@ -7,8 +7,11 @@
+
+ #define SPLITVT_SOURCE
+
++#include <string.h>
++#include <stdlib.h>
+ #include <stdio.h>
+ #include "vtmouse.h"
++#include "splitvt.h"
+
+ extern FILE *safe_popen(); /* From misc.c */
+
+--- splitvt-1.6.5.orig/videomem.c
++++ splitvt-1.6.5/videomem.c
+@@ -1,6 +1,7 @@
+
+ /* This file holds the functions for manipulating video memory */
+
++#include <stdlib.h>
+ #include <stdio.h>
+ #include "video.h"
+ #include "terminal.h"
+@@ -113,7 +114,7 @@
+ int x1, x2;
+ int y1, y2;
+ {
+- int l=0, i, j, eol, eos;
++ int l=0, i, j, eol, eos=0;
+
+ --maxlen; /* Account for trailing null */
+ for ( i=(x1-1); (i<x2 && l<maxlen); ++i ) {
+@@ -319,7 +320,7 @@
+ void paint_video(win)
+ window *win;
+ {
+- unsigned char change, on=NORMAL;
++ unsigned char on=NORMAL;
+ int i, j, oldattr=0;
+
+ vt_setscroll(0,0);
+--- splitvt-1.6.5.orig/vtmouse.h
++++ splitvt-1.6.5/vtmouse.h
+@@ -39,5 +39,7 @@
+ extern int event_getc();
+ extern void event_quit();
+
++#if 0
++/* this is broken for gcc 4.0, so comment it out */
+ extern FILE *xt_input, *xt_output; /* Usually untouched */
+-
++#endif
+--- splitvt-1.6.5.orig/terminal.c
++++ splitvt-1.6.5/terminal.c
+@@ -4,8 +4,11 @@
+ actually write to the terminal.
+ */
+
+-
++#include <curses.h>
++#include <term.h>
+ #include <stdio.h>
++#include <string.h>
++#include "splitvt.h"
+ #include "video.h"
+ #include "terminal.h"
+
+@@ -125,7 +128,7 @@
+ }
+ return(NULL);
+ }
+-void outc(c) int c; { putchar(c); }
++int outc(c) int c; { return putchar(c); }
+
+ void vt_rows_cols(termtype, rows, cols)
+ char *termtype;
+--- splitvt-1.6.5.orig/misc.c
++++ splitvt-1.6.5/misc.c
+@@ -1,10 +1,17 @@
+ /* Miscellaneous system dependent routines for splitsh */
+
++#define _GNU_SOURCE /* for getpt and other gnu extensions to libc */
++
+ #include <sys/types.h>
++#include <sys/wait.h>
++#include <unistd.h>
++#include <stdlib.h>
+ #include <sys/stat.h>
+ #include <fcntl.h>
+ #include <stdio.h>
+ #include <signal.h>
++#include <utime.h>
++#include <string.h>
+
+
+ #ifdef HAVE_TERMIO_H
+@@ -24,6 +31,8 @@
+ /*#define STTY_HACK*/
+ #endif
+
++int tty_reset(int fd);
++
+ /*
+ * Initialize a pty, fork a command running under it, and then
+ * return the master file descriptor
+@@ -44,7 +53,10 @@
+ int get_master_pty(), get_slave_pty();
+ char *get_ttyname(), *myputenv();
+
+- char LINES[12], COLUMNS[12], SPLITVT[24];
++#ifndef TIOCGWINSZ
++ char LINES[12], COLUMNS[12];
++#endif
++ char SPLITVT[24];
+ int returnfd, slave_fd;
+
+ /* Get the master pty file descriptor */
+@@ -106,6 +118,8 @@
+ /* "touch" the tty so 'w' reports proper idle times */
+ (void) utime(get_ttyname(), NULL);
+
++ /* Set our gid to our real gid if necessary */
++ (void) setgid(getgid());
+ /* Set our uid to our real uid if necessary */
+ (void) setuid(getuid());
+
+@@ -182,12 +196,18 @@
+ #else /* ! IRIX */
+
+
+-#ifdef SOLARIS /* System V.4 pty routines from W. Richard Stevens */
++#if defined(SOLARIS) || defined(__GLIBC__)
++/* System V.4 pty routines from W. Richard Stevens */
++/* GLIBC is very similar, so this will handle it too. */
++
++#ifdef SOLARIS
+
+ #include <stropts.h>
+
+ #define DEV_CLONE "/dev/ptmx"
+
++#endif
++
+ extern char *ptsname();
+
+ int get_master_pty()
+@@ -195,9 +215,14 @@
+
+ char *ttyptr;
+
++#ifdef SOLARIS
+ if ( (master_fd=open(DEV_CLONE, O_RDWR)) < 0 )
+ return(-1);
+-
++#else /* GLIBC */
++ if ( (master_fd=getpt()) == -1 )
++ return (-1);
++#endif
++
+ if ( grantpt(master_fd) < 0 ) /* grant access to slave */
+ {
+ close(master_fd);
+@@ -242,6 +267,7 @@
+ return(-1);
+ }
+
++#ifdef SOLARIS
+ if ( ioctl(slave_fd, I_PUSH, "ptem") < 0 )
+ {
+ close(master_fd);
+@@ -262,7 +288,8 @@
+ close(slave_fd);
+ return(-1);
+ }
+-
++#endif
++
+ return(slave_fd);
+ }
+
+@@ -393,8 +420,10 @@
+
+ void dropctty()
+ {
++#ifndef CIBAUD
+ int fd;
+-
++#endif
++
+ #if defined(_POSIX_SOURCE) || defined(SOLARIS) || \
+ defined(__386BSD__) || defined(__FreeBSD__)
+ setsid(); /* The POSIX solution is simple. :) */
+@@ -708,7 +737,6 @@
+ extern char **environ; /* The process environment strings */
+
+ char *newptr, **envptr;
+- char *tmptr, temp[BUFSIZ];
+ int distance, n=0;
+
+ for ( distance=0; ((*(string+distance)) &&
+@@ -759,7 +787,7 @@
+ char *line;
+ char *tokens;
+ {
+- char *head, *ptr;
++ char *head;
+ int i=0;
+
+ for ( head=line; *line && i < size-2; ) {
+@@ -847,7 +875,7 @@
+ {
+ char *argv[4];
+ int pipe_fds[2];
+- int rw, child;
++ int rw;
+
+ if ( strcmp(type, "r") == 0 )
+ rw=0; /* READ access for parent */
diff --git a/source/a/sysfsutils/slack-desc b/source/a/sysfsutils/slack-desc
new file mode 100644
index 00000000..b7b47092
--- /dev/null
+++ b/source/a/sysfsutils/slack-desc
@@ -0,0 +1,19 @@
+# HOW TO EDIT THIS FILE:
+# The "handy ruler" below makes it easier to edit a package description. Line
+# up the first '|' above the ':' following the base package name, and the '|' on
+# the right side marks the last column you can put a character in. You must make
+# exactly 11 lines for the formatting to be correct. It's also customary to
+# leave one space after the ':'.
+
+ |-----handy-ruler------------------------------------------------------|
+sysfsutils: sysfsutils (Utilities for the sysfs filesystem)
+sysfsutils:
+sysfsutils: The purpose of this package is to provide a set of utilities for
+sysfsutils: interfacing with sysfs, a virtual filesystem in Linux kernel versions
+sysfsutils: 2.6+ that provides a tree of system devices. While a filesystem is a
+sysfsutils: very useful interface, a library (libsysfs) is also included that
+sysfsutils: will hopefully make it easier for applications to query system
+sysfsutils: devices and their attributes.
+sysfsutils:
+sysfsutils:
+sysfsutils:
diff --git a/source/a/sysfsutils/sysfsutils.SlackBuild b/source/a/sysfsutils/sysfsutils.SlackBuild
new file mode 100755
index 00000000..0534b3e2
--- /dev/null
+++ b/source/a/sysfsutils/sysfsutils.SlackBuild
@@ -0,0 +1,104 @@
+#!/bin/sh
+
+# Copyright 2008, 2009 Patrick J. Volkerding, Sebeka, Minnesota, USA
+# All rights reserved.
+#
+# Redistribution and use of this script, with or without modification, is
+# permitted provided that the following conditions are met:
+#
+# 1. Redistributions of this script must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# 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.
+
+
+VERSION=2.1.0
+ARCH=${ARCH:-x86_64}
+BUILD=${BUILD:-1}
+
+if [ "$ARCH" = "x86_64" ]; then
+ LIBDIRSUFFIX="64"
+else
+ LIBDIRSUFFIX=""
+fi
+
+CWD=$(pwd)
+TMP=${TMP:-/tmp}
+PKG=$TMP/package-sysfsutils
+
+rm -rf $PKG
+mkdir -p $TMP $PKG
+cd $TMP
+rm -rf sysfsutils-$VERSION
+tar xjvf $CWD/sysfsutils-$VERSION.tar.bz2
+cd sysfsutils-$VERSION
+chown -R root:root .
+find . \
+ \( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \
+ -exec chmod 755 {} \; -o \
+ \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
+ -exec chmod 644 {} \;
+
+./configure \
+ --prefix=/usr \
+ --libdir=/lib${LIBDIRSUFFIX} \
+ --enable-static=no \
+ $ARCH-slackware-linux
+make
+make install DESTDIR=$PKG
+
+# Unless things start whining later that this libtool junk is
+# required for some reason, out it goes. Especially in /lib,
+# where probably nothing would find it anyway.
+rm -f $PKG/lib${LIBDIRSUFFIX}/*.la
+
+# .so links should really go in /usr/lib:
+rm $PKG/lib${LIBDIRSUFFIX}/*.so
+mkdir -p $PKG/usr/lib${LIBDIRSUFFIX}
+# sanity check
+if [ ! -L $PKG/lib${LIBDIRSUFFIX}/libsysfs.so.2 ]; then
+ exit 1
+fi
+( cd $PKG/usr/lib${LIBDIRSUFFIX} ; ln -sf /lib${LIBDIRSUFFIX}/libsysfs.so.2 libsysfs.so )
+
+( cd $PKG
+ find . | xargs file | grep "executable" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
+ find . | xargs file | grep "shared object" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
+)
+
+mkdir -p $PKG/usr/doc/sysfsutils-$VERSION
+cp -a \
+ AUTHORS COPYING CREDITS NEWS README TODO \
+ docs/* \
+ $PKG/usr/doc/sysfsutils-$VERSION
+
+# Compress and/or relink manpages:
+if [ -d $PKG/usr/man ]; then
+ ( cd $PKG/usr/man
+ for manpagedir in $(find . -type d -name "man*") ; do
+ ( cd $manpagedir
+ for eachpage in $( find . -type l -maxdepth 1) ; do
+ ln -s $( readlink $eachpage ).gz $eachpage.gz
+ rm $eachpage
+ done
+ gzip -9 *.?
+ )
+ done
+ )
+fi
+
+mkdir $PKG/install
+cat $CWD/slack-desc > $PKG/install/slack-desc
+
+cd $PKG
+makepkg -l y -c n $TMP/sysfsutils-$VERSION-$ARCH-$BUILD.txz
+
diff --git a/source/a/sysklogd/slack-desc b/source/a/sysklogd/slack-desc
new file mode 100644
index 00000000..883782cc
--- /dev/null
+++ b/source/a/sysklogd/slack-desc
@@ -0,0 +1,19 @@
+# HOW TO EDIT THIS FILE:
+# The "handy ruler" below makes it easier to edit a package description. Line
+# up the first '|' above the ':' following the base package name, and the '|'
+# on the right side marks the last column you can put a character in. You must
+# make exactly 11 lines for the formatting to be correct. It's also
+# customary to leave one space after the ':'.
+
+ |-----handy-ruler------------------------------------------------------|
+sysklogd: sysklogd (Linux system logging utilities)
+sysklogd:
+sysklogd: Dr. Greg Wettstein and Stephen Tweedie's syslogd/klogd.
+sysklogd:
+sysklogd: This package contains a modified version of syslogd for the Linux
+sysklogd: environment. An additional utility, klogd, is included which allows
+sysklogd: kernel logging to be directed through the syslogd facility.
+sysklogd: Syslogd and klogd are started when your system boots.
+sysklogd:
+sysklogd:
+sysklogd:
diff --git a/source/a/sysklogd/sysklogd-1.4.1-owl-syslogd-crunch_list.diff b/source/a/sysklogd/sysklogd-1.4.1-owl-syslogd-crunch_list.diff
new file mode 100644
index 00000000..26830929
--- /dev/null
+++ b/source/a/sysklogd/sysklogd-1.4.1-owl-syslogd-crunch_list.diff
@@ -0,0 +1,90 @@
+--- ./syslogd.c.orig 2007-04-09 18:17:05.000000000 -0500
++++ ./syslogd.c 2007-04-09 18:25:22.000000000 -0500
+@@ -1273,61 +1273,55 @@
+ crunch_list(list)
+ char *list;
+ {
+- int count, i;
++ int i, m, n;
+ char *p, *q;
+ char **result = NULL;
+
+ p = list;
+
+ /* strip off trailing delimiters */
+- while (p[strlen(p)-1] == LIST_DELIMITER) {
+- count--;
++ while (*p && p[strlen(p)-1] == LIST_DELIMITER)
+ p[strlen(p)-1] = '\0';
+- }
+ /* cut off leading delimiters */
+- while (p[0] == LIST_DELIMITER) {
+- count--;
+- p++;
+- }
+-
+- /* count delimiters to calculate elements */
+- for (count=i=0; p[i]; i++)
+- if (p[i] == LIST_DELIMITER) count++;
+-
+- if ((result = (char **)malloc(sizeof(char *) * (count+2))) == NULL) {
++ while (p[0] == LIST_DELIMITER)
++ p++;
++
++ /* count delimiters to calculate the number of elements */
++ for (n = i = 0; p[i]; i++)
++ if (p[i] == LIST_DELIMITER) n++;
++
++ if ((result = (char **)malloc(sizeof(char *) * (n + 2))) == NULL) {
+ printf ("Sorry, can't get enough memory, exiting.\n");
+- exit(0);
++ exit(1);
+ }
+-
++
+ /*
+ * We now can assume that the first and last
+ * characters are different from any delimiters,
+ * so we don't have to care about this.
+ */
+- count = 0;
+- while ((q=strchr(p, LIST_DELIMITER))) {
+- result[count] = (char *) malloc((q - p + 1) * sizeof(char));
+- if (result[count] == NULL) {
++ m = 0;
++ while ((q = strchr(p, LIST_DELIMITER)) && m < n) {
++ result[m] = (char *) malloc((q - p + 1) * sizeof(char));
++ if (result[m] == NULL) {
+ printf ("Sorry, can't get enough memory, exiting.\n");
+- exit(0);
++ exit(1);
+ }
+- strncpy(result[count], p, q - p);
+- result[count][q - p] = '\0';
++ memcpy(result[m], p, q - p);
++ result[m][q - p] = '\0';
+ p = q; p++;
+- count++;
++ m++;
+ }
+- if ((result[count] = \
+- (char *)malloc(sizeof(char) * strlen(p) + 1)) == NULL) {
++ if ((result[m] = strdup(p)) == NULL) {
+ printf ("Sorry, can't get enough memory, exiting.\n");
+- exit(0);
++ exit(1);
+ }
+- strcpy(result[count],p);
+- result[++count] = NULL;
++ result[++m] = NULL;
+
+ #if 0
+- count=0;
+- while (result[count])
+- dprintf ("#%d: %s\n", count, StripDomains[count++]);
++ m = 0;
++ while (result[m])
++ dprintf ("#%d: %s\n", m, result[m++]);
+ #endif
+ return result;
+ }
diff --git a/source/a/sysklogd/sysklogd-1.4.1.lsm b/source/a/sysklogd/sysklogd-1.4.1.lsm
new file mode 100644
index 00000000..0c3b75f8
--- /dev/null
+++ b/source/a/sysklogd/sysklogd-1.4.1.lsm
@@ -0,0 +1,23 @@
+Begin3
+Title: sysklogd
+Version: 1.4.1
+Entered-date: 2001-03-11
+Description: The sysklogd package implements two system log daemons. The
+ syslogd daemon is the general system logging daemon which
+ is responsible for handling requests for syslog services.
+ This version of syslogd is similar to the standard Berkeley
+ product but with a number of compatible extensions. The
+ klogd daemon runs either standalone or as a client of syslogd.
+ Klogd 'listens' to kernel log messages, prioritizes them and
+ routes them to either output files or to syslogd. This
+ version of klogd will optionally translate kernel addresses
+ to their symbolic equivalents if provided with a system map.
+Keywords: logging, remote, kernel, syslogd, proc, daemon, klogd
+Author: greg@wind.enjellic.com (Dr. G.W. Wettstein)
+Maintained-by: joey@infodrom.ffis.de (Martin Schulze)
+Primary-site: www.infodrom.ffis.de /projects/sysklogd
+ 82kB sysklogd-1.4.1.tar.gz
+ 1kB sysklogd-1.4.1.lsm
+Alternate-site: metalab.unc.edu /pub/Linux/system/daemons
+Copying-policy: syslogd is under Berkeley copyright, klogd is under GPL.
+End
diff --git a/source/a/sysklogd/sysklogd.SlackBuild b/source/a/sysklogd/sysklogd.SlackBuild
new file mode 100755
index 00000000..110659e4
--- /dev/null
+++ b/source/a/sysklogd/sysklogd.SlackBuild
@@ -0,0 +1,80 @@
+#!/bin/sh
+
+# Copyright 2005-2009 Patrick J. Volkerding, Sebeka, Minnesota, USA
+# All rights reserved.
+#
+# Redistribution and use of this script, with or without modification, is
+# permitted provided that the following conditions are met:
+#
+# 1. Redistributions of this script must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# 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.
+
+
+VERSION=1.4.1
+ARCH=${ARCH:-x86_64}
+BUILD=${BUILD:-10}
+
+CWD=$(pwd)
+TMP=${TMP:-/tmp}
+PKG=$TMP/package-sysklogd
+
+rm -rf $PKG
+mkdir -p $TMP $PKG
+
+# Explode the package framework:
+cd $PKG
+explodepkg $CWD/_sysklogd.tar.gz
+
+cd $TMP
+rm -rf sysklogd-$VERSION
+tar xzvf $CWD/sysklogd-$VERSION.tar.gz || exit 1
+cd sysklogd-$VERSION
+zcat $CWD/sysklogd_1.4.1-20.diff.gz | patch -p1 --verbose || exit 1
+#zcat $CWD/sysklogd-1.4.1-owl-syslogd-crunch_list.diff.gz | patch -p1 --verbose || exit 1
+chown -R root:root .
+find . \
+ \( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \
+ -exec chmod 755 {} \; -o \
+ \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
+ -exec chmod 644 {} \;
+
+make -j4 || exit 1
+make syslog_tst || exit 1
+cat klogd > $PKG/usr/sbin/klogd
+cat syslog_tst > $PKG/usr/sbin/syslog_tst
+cat syslogd > $PKG/usr/sbin/syslogd
+for page in klogd.8 sysklogd.8 ; do
+ cat $page | gzip -9c > $PKG/usr/man/man8/$page.gz
+done
+cat syslog.conf.5 | gzip -9c > $PKG/usr/man/man5/syslog.conf.5.gz
+mkdir -p $PKG/usr/doc/sysklogd-$VERSION
+cp -a ANNOUNCE CHANGES COPYING INSTALL MANIFEST NEWS README.1st \
+ README.linux $PKG/usr/doc/sysklogd-$VERSION
+chmod 644 $PKG/usr/doc/sysklogd-$VERSION/*
+( cd $PKG
+ find . | xargs file | grep "executable" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
+ find . | xargs file | grep "shared object" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
+)
+mkdir -p $PKG/install
+cat $CWD/slack-desc > $PKG/install/slack-desc
+
+# Build the package:
+cd $PKG
+makepkg -l y -c n $TMP/sysklogd-$VERSION-$ARCH-$BUILD.txz
+
+# Clean up the extra stuff:
+if [ "$1" = "--cleanup" ]; then
+ rm -rf $TMP/sysklogd-$VERSION
+ rm -rf $PKG
+fi
diff --git a/source/a/sysklogd/sysklogd_1.4.1-20.diff b/source/a/sysklogd/sysklogd_1.4.1-20.diff
new file mode 100644
index 00000000..9bb27bbb
--- /dev/null
+++ b/source/a/sysklogd/sysklogd_1.4.1-20.diff
@@ -0,0 +1,2555 @@
+--- sysklogd-1.4.1.orig/CHANGES
++++ sysklogd-1.4.1/CHANGES
+@@ -30,3 +30,4 @@
+ . Olaf Kirch <okir@caldera.de>
+ - Remove Unix Domain Sockets and switch to Datagram Unix Sockets
+ . Several bugfixes and improvements, please refer to the .c files
++
+--- sysklogd-1.4.1.orig/README.linux
++++ sysklogd-1.4.1/README.linux
+@@ -44,8 +44,8 @@
+ mail to Majordomo@Infodrom.North.DE with a line "subscribe sysklogd"
+ in the message body.
+
+-New versions of this package will be available at Joey's ftp server.
+-ftp://ftp.infodrom.north.de/pub/people/joey/sysklogd/
++New versions of this package will be available at Joey's server.
++ http://www.infodrom.org/projects/sysklogd/
+
+ Best regards,
+
+@@ -67,6 +67,6 @@
+
+ Martin Schulze
+ Infodrom Oldenburg
+-joey@linux.de
++joey@infodrom.org
+
+ And a host of bug reporters whose contributions cannot be underestimated.
+--- sysklogd-1.4.1.orig/klogd.8
++++ sysklogd-1.4.1/klogd.8
+@@ -321,7 +321,7 @@
+ .B klogd
+ to reload the module symbol information whenever a protection fault
+ is detected. Caution should be used before invoking the program in
+-\'paranoid\' mode. The stability of the kernel and the operating
++\&'paranoid\&' mode. The stability of the kernel and the operating
+ environment is always under question when a protection fault occurs.
+ Since the klogd daemon must execute system calls in order to read the
+ module symbol information there is the possibility that the system may
+--- sysklogd-1.4.1.orig/ksym_mod.c
++++ sysklogd-1.4.1/ksym_mod.c
+@@ -78,6 +78,11 @@
+ *
+ * Tue Sep 12 23:11:13 CEST 2000: Martin Schulze <joey@infodrom.ffis.de>
+ * Changed llseek() to lseek64() in order to skip a libc warning.
++ *
++ * Wed Mar 31 17:35:01 CEST 2004: Martin Schulze <joey@infodrom.org>
++ * Removed references to <linux/module.h> since it doesn't work
++ * anymore with its recent content from Linux 2.4/2.6, created
++ * module.h locally instead.
+ */
+
+
+@@ -89,11 +94,12 @@
+ #include <errno.h>
+ #include <sys/fcntl.h>
+ #include <sys/stat.h>
++#include "module.h"
+ #if !defined(__GLIBC__)
+ #include <linux/time.h>
+-#include <linux/module.h>
++#include <linux/linkage.h>
+ #else /* __GLIBC__ */
+-#include <linux/module.h>
++#include <linux/linkage.h>
+ extern __off64_t lseek64 __P ((int __fd, __off64_t __offset, int __whence));
+ extern int get_kernel_syms __P ((struct kernel_sym *__table));
+ #endif /* __GLIBC__ */
+--- sysklogd-1.4.1.orig/module.h
++++ sysklogd-1.4.1/module.h
+@@ -0,0 +1,90 @@
++/*
++ module.h - Miscellaneous module definitions
++ Copyright (c) 1996 Richard Henderson <rth@tamu.edu>
++ Copyright (c) 2004 Martin Schulze <joey@infodrom.org>
++
++ This file is part of the sysklogd package.
++
++ 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.
++*/
++
++/* ChangeLog:
++ *
++ * Wed Mar 31 17:35:01 CEST 2004: Martin Schulze <joey@infodrom.org>
++ * Created local copy of module.h based on the content of Linux
++ * 2.2 since <linux/module.h> doesn't work anymore with its
++ * recent content from Linux 2.4/2.6.
++ * Thu May 25 09:14:33 CEST 2006: Martin Schulze <joey@infodrom.org>
++ * Removed asm/atomic.h since it is not needed anymore.
++ */
++
++#define MODULE_NAME_LEN 60
++
++struct kernel_sym
++{
++ unsigned long value;
++ char name[MODULE_NAME_LEN];
++};
++
++
++struct list_head {
++ struct list_head *next, *prev;
++};
++
++
++struct module_info
++{
++ unsigned long addr;
++ unsigned long size;
++ unsigned long flags;
++ long usecount;
++};
++
++
++struct module
++{
++ unsigned long size_of_struct; /* == sizeof(module) */
++ struct module *next;
++ const char *name;
++ unsigned long size;
++
++ union
++ {
++ int usecount;
++ long pad;
++ } uc; /* Needs to keep its size - so says rth */
++
++ unsigned long flags; /* AUTOCLEAN et al */
++
++ unsigned nsyms;
++ unsigned 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
++ /* Members past this point are extensions to the basic
++ module support and are optional. Use mod_opt_member()
++ to examine them. */
++ const struct module_persist *persist_start;
++ const struct module_persist *persist_end;
++ int (*can_unload)(void);
++};
+--- sysklogd-1.4.1.orig/pidfile.c
++++ sysklogd-1.4.1/pidfile.c
+@@ -87,7 +87,7 @@
+ int fd;
+ int pid;
+
+- if ( ((fd = open(pidfile, O_RDWR|O_CREAT, 0644)) == -1)
++ if ( ((fd = open(pidfile, O_RDWR|O_CREAT|O_TRUNC, 0644)) == -1)
+ || ((f = fdopen(fd, "r+")) == NULL) ) {
+ fprintf(stderr, "Can't open or create %s.\n", pidfile);
+ return 0;
+--- sysklogd-1.4.1.orig/syslog.conf.5
++++ sysklogd-1.4.1/syslog.conf.5
+@@ -64,7 +64,7 @@
+ The
+ .I facility
+ is one of the following keywords:
+-.BR auth ", " authpriv ", " cron ", " daemon ", " kern ", " lpr ", "
++.BR auth ", " authpriv ", " cron ", " daemon ", " ftp ", " kern ", " lpr ", "
+ .BR mail ", " mark ", " news ", " security " (same as " auth "), "
+ .BR syslog ", " user ", " uucp " and " local0 " through " local7 .
+ The keyword
+@@ -122,7 +122,7 @@
+ This
+ .BR syslogd (8)
+ has a syntax extension to the original BSD source, that makes its use
+-more intuitively. You may precede every priority with an equation sign
++more intuitive. You may precede every priority with an equation sign
+ (``='') to specify only this single priority and not any of the
+ above. You may also (both is valid, too) precede the priority with an
+ exclamation mark (``!'') to ignore all that priorities, either exact
+@@ -300,7 +300,7 @@
+ .B syslogd
+ log all messages that come with either the
+ .BR info " or the " notice
+-facility into the file
++priority into the file
+ .IR /var/log/messages ,
+ except for all messages that use the
+ .B mail
+--- sysklogd-1.4.1.orig/syslogd.c
++++ sysklogd-1.4.1/syslogd.c
+@@ -890,11 +890,11 @@
+ dprintf("Checking pidfile.\n");
+ if (!check_pid(PidFile))
+ {
++ signal (SIGTERM, doexit);
+ if (fork()) {
+ /*
+ * Parent process
+ */
+- signal (SIGTERM, doexit);
+ sleep(300);
+ /*
+ * Not reached unless something major went wrong. 5
+@@ -1074,9 +1074,9 @@
+ (fd_set *) NULL, (struct timeval *) NULL);
+ if ( restart )
+ {
++ restart = 0;
+ dprintf("\nReceived SIGHUP, reloading syslogd.\n");
+ init();
+- restart = 0;
+ continue;
+ }
+ if (nfds == 0) {
+@@ -1141,13 +1141,13 @@
+ */
+ printchopped(from, line, \
+ i + 2, finet);
+- } else if (i < 0 && errno != EINTR) {
++ } else if (i < 0 && errno != EINTR && errno != EAGAIN) {
+ dprintf("INET socket error: %d = %s.\n", \
+ errno, strerror(errno));
+ logerror("recvfrom inet");
+ /* should be harmless now that we set
+ * BSDCOMPAT on the socket */
+- sleep(10);
++ sleep(1);
+ }
+ }
+ #endif
+@@ -1216,6 +1216,7 @@
+ {
+ int fd, on = 1;
+ struct sockaddr_in sin;
++ int sockflags;
+
+ fd = socket(AF_INET, SOCK_DGRAM, 0);
+ if (fd < 0) {
+@@ -1241,6 +1242,24 @@
+ close(fd);
+ return -1;
+ }
++ /* We must not block on the network socket, in case a packet
++ * gets lost between select and recv, otherise the process
++ * will stall until the timeout, and other processes trying to
++ * log will also stall.
++ */
++ if ((sockflags = fcntl(fd, F_GETFL)) != -1) {
++ sockflags |= O_NONBLOCK;
++ /*
++ * SETFL could fail too, so get it caught by the subsequent
++ * error check.
++ */
++ sockflags = fcntl(fd, F_SETFL, sockflags);
++ }
++ if (sockflags == -1) {
++ logerror("fcntl(O_NONBLOCK), suspending inet");
++ close(fd);
++ return -1;
++ }
+ if (bind(fd, (struct sockaddr *) &sin, sizeof(sin)) < 0) {
+ logerror("bind, suspending inet");
+ close(fd);
+@@ -1275,7 +1294,7 @@
+ for (count=i=0; p[i]; i++)
+ if (p[i] == LIST_DELIMITER) count++;
+
+- if ((result = (char **)malloc(sizeof(char *) * count+2)) == NULL) {
++ if ((result = (char **)malloc(sizeof(char *) * (count+2))) == NULL) {
+ printf ("Sorry, can't get enough memory, exiting.\n");
+ exit(0);
+ }
+@@ -1539,20 +1558,37 @@
+ int fac, prilev, lognum;
+ int msglen;
+ char *timestamp;
++#ifdef __gnu_linux__
++ sigset_t mask;
++#else
++#ifndef SYSV
++ sigset_t omask;
++#endif
++#endif
+
+ dprintf("logmsg: %s, flags %x, from %s, msg %s\n", textpri(pri), flags, from, msg);
+
++#ifdef __gnu_linux__
++ sigemptyset(&mask);
++ sigaddset(&mask, SIGHUP);
++ sigaddset(&mask, SIGALRM);
++ sigprocmask(SIG_BLOCK, &mask, NULL);
++#else
+ #ifndef SYSV
+ omask = sigblock(sigmask(SIGHUP)|sigmask(SIGALRM));
+ #endif
++#endif
+
+ /*
+ * Check to see if msg looks non-standard.
+ */
+ msglen = strlen(msg);
+- if (msglen < 16 || msg[3] != ' ' || msg[6] != ' ' ||
+- msg[9] != ':' || msg[12] != ':' || msg[15] != ' ')
+- flags |= ADDDATE;
++ flags |= ADDDATE;
++ if ( !(msglen < 16 || msg[3] != ' ' || msg[6] != ' ' ||
++ msg[9] != ':' || msg[12] != ':' || msg[15] != ' ')) {
++ msg += 16;
++ msglen -= 16;
++ }
+
+ (void) time(&now);
+ if (flags & ADDDATE)
+@@ -1581,9 +1617,13 @@
+ (void) close(f->f_file);
+ f->f_file = -1;
+ }
++#ifdef __gnu_linux__
++ sigprocmask(SIG_UNBLOCK, &mask, NULL);
++#else
+ #ifndef SYSV
+ (void) sigsetmask(omask);
+ #endif
++#endif
+ return;
+ }
+ #ifdef SYSV
+@@ -1646,9 +1686,13 @@
+ }
+ }
+ }
++#ifdef __gnu_linux__
++ sigprocmask(SIG_UNBLOCK, &mask, NULL);
++#else
+ #ifndef SYSV
+ (void) sigsetmask(omask);
+ #endif
++#endif
+ }
+ #if FALSE
+ } /* balance parentheses for emacs */
+@@ -1839,7 +1883,7 @@
+ #else
+ && e == EBADF) {
+ #endif
+- f->f_file = open(f->f_un.f_fname, O_WRONLY|O_APPEND|O_NOCTTY);
++ f->f_file = open(f->f_un.f_fname, O_WRONLY|O_APPEND|O_NOCTTY|O_NONBLOCK);
+ if (f->f_file < 0) {
+ f->f_type = F_UNUSED;
+ logerror(f->f_un.f_fname);
+@@ -2640,7 +2684,7 @@
+ f->f_file = open(++p, O_RDWR|O_NONBLOCK);
+ f->f_type = F_PIPE;
+ } else {
+- f->f_file = open(p, O_WRONLY|O_APPEND|O_CREAT|O_NOCTTY,
++ f->f_file = open(p, O_WRONLY|O_APPEND|O_CREAT|O_NOCTTY|O_NONBLOCK,
+ 0644);
+ f->f_type = F_FILE;
+ }
+--- sysklogd-1.4.1.orig/debian/NMU-Disclaimer
++++ sysklogd-1.4.1/debian/NMU-Disclaimer
+@@ -0,0 +1,45 @@
++Non Maintainer Upload of this Package
++-------------------------------------
++
++If you plan to work on an NMU for this package, read the following
++closely. It can save you and me some grief.
++
++ 1. At first, contact the maintainer (i.e. send a mail to
++ joey@debian.org, do not cc or bounce a mail, send a plain mail,
++ not copied to any mailing list or the BTS) and ask about the
++ status of the bug you are considering to work on.
++
++ 2. In this mail include all information relevant for this problem,
++ i.e. include a description of the bug and not only its bug
++ number.
++
++ 3. If the maintainer is not able or willing to fix the problem or
++ does not respond within four days, continue with step 4.
++
++ 4. Work on the bug and prepare a patch. Do not upload into the
++ Debian archive.
++
++ 5. Send the entire patch, together with enough explanations, to the
++ maintainer for reviewing and ask him for permission of an NMU
++ using this patch.
++
++ 6. IF AND ONLY IF the maintainer approves the patch (or doesn't
++ respond within four days), upload the NMU to the incoming
++ directory and send the patch to the BTS. If the NMU is not
++ approved, go back to 4. or add the NMU to your homepage, but do
++ not upload it to the Debian archive.
++
++ 7. Properly sized and well-written patches sent to the BTS are always
++ appreciated, even if they are rejected later. They demonstrate a
++ potential solution which could probably improved into a real
++ solution.
++
++ 8. NEVER change the way a package is maintained in an NMU, i.e. don't
++ remove dh_* stuff or switch to dh_* respectively. This rule
++ applies to all NMU's, not only to an NMU for this package.
++
++These rules always apply. They even apply if somebody declares NMUs
++as ok and reduces regular NMU rules to a delay of zero days. Unless
++I'm on vacation or on a show I am reachable via mail, so there is
++hardly a reason not to contact me.
++
+--- sysklogd-1.4.1.orig/debian/changelog
++++ sysklogd-1.4.1/debian/changelog
+@@ -0,0 +1,694 @@
++sysklogd (1.4.1-20) unstable; urgency=low
++
++ * Added a missing whitespace to the rc file (Closes: Bug#388787,
++ Bug#388378, Bug#388260)
++ * Corrected typo in syslog.conf(5) (Closes: Bug#327200)
++
++ -- Martin Schulze <joey@infodrom.org> Thu, 28 Sep 2006 20:46:41 +0200
++
++sysklogd (1.4.1-19) unstable; urgency=high
++
++ * Converted init.d scripts to LSB style
++ - accidently closes: Bug#211858
++ * Removed code that's not required anymore in cron.daily/sysklogd
++ * Fix initial permission (closes: Bug#285500)
++ * Added a special exception for when /var/log/news is a file (closes:
++ Bug#266555)
++ * Tidy up the postinst script
++ * Added devfs awarenes for /dev/xconsole creation (closes: Bug#206066)
++ * Move daemon stop logic into klogd's postinst
++ * Removed both preinst scripts from the distribution
++
++ -- Martin Schulze <joey@infodrom.org> Mon, 18 Sep 2006 13:15:59 +0200
++
++sysklogd (1.4.1-18) unstable; urgency=medium
++
++ * Removed asm/atomic.h since it is not needed anymore. (closes:
++ Bug#350764)
++ * Fixed typo in NMU-Disclaimer (closes: Bug#225895)
++ * Corrected getconf call in debian/rules to fix lagefile support
++ (closes: Bug#320119)
++ * Applied patch by Joey Hess to prevent klogd to be stopped/started too
++ fast (closes: Bug#284914)
++ * Finish /usr/share/doc transition with patch by Julien Cristau (closes:
++ Bug#337712, Bug#322769, Bug#255590)
++ * Reset the 'restart' flag immediately after entering the restart code.
++ Thanks to Dean Gaudet (closes: Bug#154805)
++ * Added support for /etc/default/{syslogd,klogd} files to contain
++ commandline arguments for syslogd and klogd (closes: Bug#98631,
++ Bug#127579, Bug#241350, Bug#266985)
++ * Added a description of system log level and link to sysctl(8) (closes:
++ Bug#164153)
++ * Acknowledging Joey's NMUs (closes: Bug#347333)
++
++ -- Martin Schulze <joey@infodrom.org> Thu, 25 May 2006 11:07:52 +0200
++
++sysklogd (1.4.1-17) unstable; urgency=high
++
++ * Use $(getconf LFS_CFLAGS) for large file support
++ * Applied adjusted patch by Miquel van Smoorenburg to fix spurious
++ hanging syslogd in connection with futex and NPTL introduced in recent
++ glibc versions and Linux 2.6 (closes: Bug#301511)
++
++ -- Martin Schulze <joey@infodrom.org> Wed, 25 May 2005 20:10:31 +0200
++
++sysklogd (1.4.1-16) unstable; urgency=medium
++
++ * applied patch by cph
++ * Applied patch by Colin Phipps so that syslogd doesn't block on the
++ network socket, in case a packet gets lost between select and
++ recv. (closes: Bug#275578)
++ * Applied patch by Anders Henke so that syslog calculates the time for
++ each message (closes: Bug#207619)
++ * Don't create /var/log/news if it's not needed (closes: Bug#266555)
++
++ -- Martin Schulze <joey@infodrom.org> Sun, 7 Nov 2004 13:10:03 +0100
++
++sysklogd (1.4.1-15) unstable; urgency=low
++
++ * Applied patch by Steve Grubb <linux_4ever@yahoo.com> to adjust memory
++ calculation in crunch_list().
++ * Removed atomic_t in the usecount field of the module struct for
++ compatibility reasons (closes: Bug#245513)
++
++ -- Martin Schulze <joey@infodrom.org> Tue, 27 Jul 2004 17:28:49 +0200
++
++sysklogd (1.4.1-14) unstable; urgency=medium
++
++ * Added more trailing newlines to init.d programs (closes: Bug#216110)
++ * Adjusted the use of head to the new behaviour for GNU coreutils
++ (closes: Bug#205535, Bug#172655)
++ * Install /usr/share/sysklogd/dummy to replace /usr/share/doc/sysklogd,
++ since /usr/share/doc should be removable by an admin (Policy 12.3).
++ (closes: Bug#237724)
++ * Added a private module.h with extracted data from Linux 2.2 to replace
++ <linux/module.h> which creates a number parse errors. (closes: Bug#223210)
++ * Added support for invoke-rc.d as written in policy 9.3.3 (closes:
++ Bug#213211, Bug#213585, Bug#216858, Bug#214912)
++
++ -- Martin Schulze <joey@debian.org> Wed, 31 Mar 2004 18:18:54 +0200
++
++sysklogd (1.4.1-13) unstable; urgency=medium
++
++ * Updated some text in the cronjobs
++ * Direct output of reloading to /dev/null so that no cron log mails will
++ be created defaultly (closes: Bug#213717, Bug#213646)
++
++ -- Martin Schulze <joey@finlandia.infodrom.north.de> Thu, 2 Oct 2003 19:51:34 +0200
++
++sysklogd (1.4.1-12) unstable; urgency=low
++
++ * On heavily loaded system syslog will not spit out error messages
++ anymore when recvfrom() results in EAGAIN (closes: Bug#188194)
++ * Applied patch by Ryan Murray to make this package build on mipsel
++ again (closes: Bug#191969)
++ * Added O_NONBLOCK to two more locations, since Andreas Barth
++ <aba@not.so.argh.org> believes that it fixes this bug. However,
++ according to the note in open(2) this does not have to have any effect
++ on files other than pipes... (closes: Bug#45245)
++ * Permissions on empty files should also be corrected (closes: Bug#135485)
++ * Corrected the number of bytes denoting 1GB for large logfiles (closes: Bug#138234)
++ * Corrected the handling of the skip pattern (closes: Bug#152247)
++ * Don't cut non-newline trailing characters from the last line anymore
++ (closes: Bug#152248)
++ * Improved init.d scripts so non-existing pid directories are not
++ touched anymore (see Bug#165472)
++ * Whoops, looks like O_TRUNC was missing when opening the pidfile for writing,
++ increasing the chance of left-overs from older pid contents in the
++ file. (closes: Bug#165472)
++ * Don't send SIGHUP to klogd anymore. Only restart it in case the old
++ process got lost somehow. (closes: Bug#168851)
++ * Improved init.d script output (closes: Bug#190328)
++ * Adjusted the use of chown to the new behaviour for GNU coreutils
++ (closes: Bug#205364)
++ * Adjusted the use of head to the new behaviour for GNU coreutils
++ (closes: Bug#205535)
++ * Moved the installation of the signal handler up a little bit so it
++ guaranteed to be available when the child is forked, hence, fixing a
++ race condition. This used to create problems with UML and fast
++ machines. Thanks to Jon Burgess <Jon_Burgess@eur.3com.com> (closes:
++ Bug#211993)
++
++ -- Martin Schulze <joey@kyllikki.infodrom.north.de> Sun, 28 Sep 2003 12:34:31 +0200
++
++sysklogd (1.4.1-11) unstable; urgency=low
++
++ * Added a disclaimer for those people who plan to NMU this package
++
++ -- Martin Schulze <joey@finlandia.infodrom.north.de> Thu, 17 Oct 2002 08:26:04 +0200
++
++sysklogd (1.4.1-10) unstable; urgency=low
++
++ * Removed bashism from rc files (closes: Bug#127406, Bug#127407,
++ Bug#127578, Bug#127372)
++
++ -- Martin Schulze <joey@finlandia.infodrom.north.de> Thu, 3 Jan 2002 18:22:13 +0100
++
++sysklogd (1.4.1-9) unstable; urgency=low
++
++ * Use a newer Standards-Version
++ * Corrected dependency of sysklogd (closes: Bug#123908)
++ * Transfer section/priority into .deb (closes: Bug#123908)
++ * Fix typo in syslog.conf(5) (closes: Bug#126899)
++ * Added ``-e'' to weekly and daily cron scripts. Beware, from now on
++ they will fail if an error occurs and leave /var/log in an undefined
++ state, not signalling syslogd to reopen files as well. (closes: Bug#123281)
++ * Added some intelligence into /etc/init.d/sysklogd and klogd so the
++ daemons will be restarted when they should only be reloaded but are
++ not running. This could be helpful if after an OOM situation syslogd
++ or klogd were killed by init but cron wasn't. (closes: Bug#126749, Bug#126750)
++ * Create /dev/xconsole in init.d script if it doesn't exist. Hence
++ removing this out of the postinst script. This should help situations
++ when devfs is installed and /dev/ get's removed on system boot, thus
++ /dev/xconsole gets removed as well. (closes: Bug#106535)
++ * Added ftp facility (closes: Bug#100437)
++ * Added missing documentation to syslogd-listfiles(8) (fixes: Bug#48326)
++ * Added a PATH= statement to all init.d files (closes: Bug#47901)
++
++ -- Martin Schulze <joey@finlandia.infodrom.north.de> Tue, 1 Jan 2002 13:44:42 +0100
++
++sysklogd (1.4.1-8) unstable; urgency=low
++
++ * Added special code to find out if a logfile was rotated within the
++ last 5 hours already, hence should not be rotated again. Hope this
++ satisfies Craig Sanders' request properly. (closes: Bug#39198)
++
++ -- Martin Schulze <joey@finlandia.infodrom.north.de> Thu, 6 Dec 2001 11:06:53 +0100
++
++sysklogd (1.4.1-7) unstable; urgency=low
++
++ * Fixed override disparity
++ * Added more defines so files larger than 2GB can be created, approved
++ by the glibc maintainer (closes: Bug#120574)
++ * Closing old bug reports (closes: Bug#95230, Bug#34391, Bug#72892)
++ * Added `--large nnn' as argument to syslogd-listfiles so people can
++ decide on their own what a large file is (closes: Bug#39198)
++ * Increased the default definition for large files
++
++ -- Martin Schulze <joey@finlandia.infodrom.north.de> Wed, 5 Dec 2001 22:01:23 +0100
++
++sysklogd (1.4.1-6) unstable; urgency=low
++
++ * Corrected path for syslogd in cron scripts (closes: Bug#122261,
++ Bug#121680, Bug#120809)
++ * Already fixed bugs (closes: Bug#121784)
++ * Improved package description (closes: Bug#120755)
++ * Added an improved pattern for news.*, thanks Takuo (closes: Bug#103999)
++
++ -- Martin Schulze <joey@finlandia.infodrom.north.de> Tue, 4 Dec 2001 09:46:46 +0100
++
++sysklogd (1.4.1-5) unstable; urgency=low
++
++ * Fix the override disparity
++ * Removed superflous Priority
++ * Removed =VER= string from syslogd-listfiles (closes: Bug#102998)
++
++ -- Martin Schulze <joey@finlandia.infodrom.north.de> Wed, 21 Nov 2001 23:00:29 +0100
++
++sysklogd (1.4.1-4) unstable; urgency=low
++
++ * Added convenience code to support $DEB_BUILD_OPTIONS
++
++ -- Martin Schulze <joey@finlandia.infodrom.north.de> Wed, 21 Nov 2001 18:41:23 +0100
++
++sysklogd (1.4.1-3) unstable; urgency=medium
++
++ * Be more anal about whether sysklogd is installed or not in our cron
++ scripts (closes: Bug#100319)
++ * Added missing newline in init.d script upon restart (closes: Bug#95554)
++ * Moved stop code to prerm (closes: Bug#120249, Bug#96355, Bug#105441,
++ Bug#105442, Bug#109470)
++ * Corrected broken character in klogd.8 (closes: Bug#75932) [repeat, due
++ to typo]
++ * Added dependency to klogd so people who upgrade their sysklogd package
++ won't lose it anymore (closes: Bug#93729) [repeat, another bug#]
++ * auth.* files are only rotated daily (closes: Bug#102138)
++ * Changed -p to -s in documentation (closes: Bug#108473)
++ * Updated documentation to reflect the current location of the mailing
++ list
++
++ -- Martin Schulze <joey@finlandia.infodrom.north.de> Tue, 20 Nov 2001 20:48:32 +0100
++
++sysklogd (1.4.1-2) unstable; urgency=low
++
++ * Corrected location of GPL (closes: Bug#90582)
++ * Added section and priority for binary packages
++ * Added dependency to klogd so people who upgrade their sysklogd package
++ won't lose it anymore (closes: Bug#93922)
++ * Added code snipped to stop klogd/syslogd upon removal (closes:
++ Bug#90534, Bug#90970)
++
++ -- Martin Schulze <joey@finlandia.infodrom.north.de> Sat, 21 Apr 2001 15:06:02 +0200
++
++sysklogd (1.4.1-1) unstable; urgency=low
++
++ * New upstream source (closes: Bug#87819, Bug#70790, Bug#32580,
++ Bug#62358, Bug#71631)
++ * Upstream: Doesn't re-set log-level if not requested (closes:
++ Bug#76170, Bug#76170, Bug#85289)
++ * Upstream: Ignore zero bytes (closes: Bug#85478, Bug#85478, Bug#41068)
++ * Upstream: Corrected documentation for `-s' (closes: Bug#87020)
++ * Upstream: test for existence of syslogd-listfiles before calling
++ them. This got lost due to 1.4.0 brokennes which was packaged and
++ removed some hours later (closes: Bug#84872, Bug#66712)
++ * Applied patch by Tommi Virtanen <tv@debian.org> splitting the package
++ into `sysklogd' and `klogd' (closes:Bug#35586, Bug#72043, Bug#74864,
++ Bug#72122)
++ * Provide / depend on virtual packages system-log-daemon
++ and linux-kernel-log-daemon (closes: Bug#67604)
++ * Applied patch from Tim Janik <timj@gtk.org> to support `-s pattern' in
++ syslogd-listfiles
++ * Transition to FHS, i.e. /usr/share/doc instead of /usr/doc and
++ /usr/share/man instead of /usr/man (closes: Bug#79250, Bug#80771)
++ * Use --exec for stopping services (closes: Bug#76757)
++ * Corrected broken character in klogd.8 (cloes: Bug#75932)
++ * Only rotate logfiles with size greater than zero. This got lost due
++ to 1.4.0 brokennes which was packaged and removed some hours later
++ (closes: Bug#74993, Bug#49824)
++ * Added another note about modificability of cronjobs (closes:
++ Bug#88741)
++ * Since klogd replaces parts of sysklogd a proper Replaces line is there
++
++ -- Martin Schulze <joey@finlandia.infodrom.north.de> Sun, 11 Mar 2001 22:30:53 +0100
++
++sysklogd (1.4-1) stable unstable; urgency=medium, closes=70790 32580 49824 62358 66712 71631
++
++ * Added paragraph to binary target
++ * New upstream version (closes: Bug#70790, Bug#32580, Bug#62358,
++ Bug#71631)
++ * Only rotate logfiles that have a size greater than zero (closes:
++ Bug#49824)
++ * Test for existence of syslogd-listfiles before calling it (closes:
++ Bug#66712)
++
++ -- Martin Schulze <joey@finlandia.infodrom.north.de> Mon, 18 Sep 2000 16:02:05 +0200
++
++sysklogd (1.3-33) unstable; urgency=medium, closes=38977
++
++ * chmod 0640 /dev/xconsole regardless of its existence (closes: Bug#38977)
++
++ -- Martin Schulze <joey@finlandia.infodrom.north.de> Sun, 12 Sep 1999 20:47:53 +0200
++
++sysklogd (1.3-32) unstable; urgency=low, closes=35408 34733 36198
++
++ * Fixed typo in syslogd-listfiles (closes: Bug#35408)
++ * Removed superflous call to utmpname() (closes: Bug#34733)
++ * Added --ignore-size and limit for rotating log files at 2MB to
++ syslogd-listfiles (closes: Bug#36198)
++
++ -- Martin Schulze <joey@finlandia.infodrom.north.de> Sun, 23 May 1999 10:40:33 +0200
++
++sysklogd (1.3-31) frozen unstable; urgency=low, closes=28629 30093 31494 30462
++
++ * ``-m 0'' turns off -- MARK -- now. (closes: Bug#28629, Bug#31494)
++ * Changed Greg's e-mail address to represent his current one.
++ * Shortened line length for kernel logging slightly.
++ * Corrected return value of AddModule (closes: Bug#30093)
++ * Finally fixed an error with `-a' processing, thanks to Topi Miettinen
++ <tom@medialab.sonera.net> (closes: Bug#30462)
++
++ -- Martin Schulze <joey@finlandia.infodrom.north.de> Tue, 19 Jan 1999 23:56:07 +0100
++
++sysklogd (1.3-30) unstable; urgency=low, closes=28128 28122 24893
++
++ * Contains more patches from Topi Miettinen.
++ * Fixed two mistakes from the most recent version
++ * Fixed fd leak problem. Thanks to Topi for detecting it
++ * Ouch! Looks like the released package again is broken. It worked
++ locally.
++
++ -- Martin Schulze <joey@finlandia.infodrom.north.de> Sun, 18 Oct 1998 20:38:22 +0200
++
++sysklogd (1.3-29) unstable; urgency=low, closes=24893
++
++ * Re-Applied patch provided vom Topi Miettinen with regard to the people
++ from OpenBSD. This provides the additional '-a' argument used for
++ specifying additional UNIX domain sockets to listen to. This is been
++ used with chroot()'ed named's for example. An example is described at
++ http://www.psionic.com/papers/dns.html. This time the patch doesn't
++ stall syslogd. Thanks to Topi Miettinen <tom@medialab.sonera.net>
++ (closes: Bug#24893)
++
++ -- Martin Schulze <joey@finlandia.infodrom.north.de> Sat, 17 Oct 1998 20:23:00 +0200
++
++sysklogd (1.3-28) unstable; urgency=low
++
++ * Added manpage for syslog-facility, also written by Raphal Hertzog
++ * Reverted support for multiple Unix domain sockets since it caused
++ syslogd to not accept more sockets after a certain (undefinitve)
++ time. (opens: Bug#24893)
++ * The complete code is still present, search for `Bug#24893'
++ * Commented out `-a' in the syslogd.8 manpage
++
++ -- Martin Schulze <joey@finlandia.infodrom.north.de> Thu, 15 Oct 1998 19:35:26 +0200
++
++sysklogd (1.3-27) frozen unstable; urgency=low, closes=21212 11917 21606 24609 25835 26015 24648 20135 23502 24893 24894
++
++ * Postinst will create files with correct file modes (closes: Bug#21212)
++ * Made /dev/xconsole mode 0640 and root.adm (closes: Bug#11917)
++ * Changed priority of exit message from LOG_ERR to LOG_INFO (closes
++ Bug#21606)
++ * The code now is compilable without SYSLOG_INET again. Thanks to
++ Enrik Berkhan <enrik@rzstud1.akk.org>.
++ * Added support for TESTING define which will turn syslogd into
++ stdio-mode used for debugging.
++ * Reworked the initialization/fork code. Now the parent
++ process activates a signal handler which the daughter process will
++ raise if it is initialized. Only after that one the parent process
++ may exit. Otherwise klogd might try to flush its log cache while
++ syslogd can't receive the messages yet. (closes: Bug#24609)
++ * Fixed typo in /etc/syslog.conf (closes: Bug#25835)
++ * Modified pre- and postinst scripts to set +e before executing external
++ scripts. This is a workaround against a bug in bash (Bug#23857).
++ Bash exports the errexit (-e) flag if allexport (-a) has been set. The
++ bug occurs even if allexport is being _re_set. (closes: Bug#26015)
++ * Modified ksym::CheckVersion()
++ . Use shift to decode the kernel version
++ . Compare integers of kernel version
++ . extract major.minor.patch from utsname.release via sscanf()
++ The reason lays in possible use of kernel flavours which modify
++ utsname.release but no the Version_ symbol. (closes: Bug#20135)
++ * Corrected klogd.c in order to support the new address space for late
++ 2.1 kernels. Some support for unsigned long in contrary to int was
++ missing. (closes: Bug#23502)
++ * Applied patch provided vom Topi Miettinen with regard to the people
++ from OpenBSD. This provides the additional '-a' argument used for
++ specifying additional UNIX domain sockets to listen to. This is been
++ used with chroot()'ed named's for example. An example is described at
++ http://www.psionic.com/papers/dns.html. Thanks to Topi Miettinen
++ <tom@medialab.sonera.net> (closes: Bug#24893)
++ * Added support for `ftp' log facility which was introduced by glibc
++ version 2. Thanks to netgod and Flood from #Debian.
++ * Code cleanups with regard to bsd -> posix transition and stronger
++ security (buffer length checking). Thanks to Topi Miettinen
++ <tom@medialab.sonera.net> (closes: Bug#24894)
++ . index() --> strchr()
++ . sprintf() --> snprintf()
++ . bcopy() --> memcpy()
++ . bzero() --> memset()
++ . UNAMESZ --> UT_NAMESIZE
++ . sys_errlist --> strerror()
++ * Added support for setutent()/getutent()/endutend() instead of binary
++ reading the UTMP file. This is the the most portable way. Thanks to
++ Topi Miettinen <tom@medialab.sonera.net>.
++ * Avoid logging of SIGCHLD when syslogd is in the process of exiting and
++ closing its files. Again thanks to Topi.
++ * Added /usr/sbin/syslog-facility, written by Raphal Hertzog
++ <hertzog@debian.org>. It opens a way for other packages to add and
++ remove logfiles/facilities.
++ * Modified printline() to support 8bit characters - such as russion
++ letters. Thanks to Vladas Lapinskas <lapinskas@mail.iae.lt>.
++
++ -- Martin Schulze <joey@finlandia.infodrom.north.de> Mon, 12 Oct 1998 22:24:04 +0200
++
++sysklogd (1.3-26) frozen unstable; urgency=low, closes=20903 20765 20556 20507 20647 20220
++
++ * Fixed typos in syslogd-listfiles(1), thanks to Francesco Potorti`
++ <F.Potorti@cnuce.cnr.it> (closes: Bug#20903)
++ * Corrected email address for Shane Alderton (closes: Bug#20765)
++ * Fixed manpage to not reflect reverse implementated SIGALRM signal
++ handler (closes: Bug#20647)
++ * Modified behaviour with including <sys/module.h> (closes: Bug#20556)
++ * Added correct prototype for llseek() (closes: Bug#20507, Bug#20220)
++ * Added more log information if problems occurr while reading a system
++ map file.
++ * Modified System.map read function to try all possible map files until
++ a file with matching version is found.
++ * Added Debian release to klogd
++ * Switched to fgets() as gets() is not buffer overrun secure.
++ * Modified loop for detecting the correct system map.
++
++ -- Martin Schulze <joey@finlandia.infodrom.north.de> Thu, 16 Apr 1998 19:28:05 +0200
++
++sysklogd (1.3-25) unstable; urgency=low, closes=19454 19145 1914
++
++ * Corrected permissions on packaging control files (closes: Bug#19414)
++ * Removed kill statements from rc file (closes: Bug#19454, Bug#19145)
++ * Applied patch from Pedro Manuel Rodrigues <pmanuel@cindy.fe.up.pt> to
++ let klogd work togther with >2GB address space.
++
++ -- Martin Schulze <joey@finlandia.infodrom.north.de> Thu, 19 Mar 1998 23:56:09 +0100
++
++sysklogd (1.3-24) unstable; urgency=low, closes=18124
++
++ * Fixed tiny mistake which refused the MARK facility to work properly
++ (closes: Bug#18124)
++ * Corrected Topi's patch as it prevented forwarding during startup due
++ to an unknown LogPort.
++
++ -- Martin Schulze <joey@finlandia.infodrom.north.de> Wed, 25 Feb 1998 13:19:27 +0100
++
++sysklogd (1.3-23) unstable; urgency=low
++
++ * Corrected FSF's address (lintian)
++ * Implemented force-reload (lintian)
++ * Standards-Version: 2.4.0.0
++ * Applied patch from Topi Miettinen <Topi.Miettinen@ml.tele.fi> to open
++ the UDP socket only if it is really needed.
++ * Updated sysklogd(8) manpage
++ * Added notes to mailing list
++
++ -- Martin Schulze <joey@finlandia.infodrom.north.de> Tue, 24 Feb 1998 00:39:10 +0100
++
++sysklogd (1.3-22) unstable; urgency=low, closes=17192 17385 17601
++
++ * Included a real fix to the %'s problem (fixes: Bug#17192)
++ * Another patch for Linux/alpha by Christopher C Chimelis
++ <chris@classnet.med.miami.edu> (fixes: Bug#17385)
++ * Removed killall-statement from postinst. Thanks to James Troup for
++ reporting it.
++ * Added chdir("/") to both daemons (fixes: Bug#17601)
++
++ -- Martin Schulze <joey@finlandia.infodrom.north.de> Thu, 29 Jan 1998 21:56:40 +0100
++
++sysklogd (1.3-21) unstable; urgency=low, closes=17159
++
++ * Fixed small typo in syslogd-listfiles (Bug#17159)
++
++ -- Martin Schulze <joey@finlandia.infodrom.north.de> Thu, 15 Jan 1998 23:22:57 +0100
++
++sysklogd (1.3-20) unstable; urgency=low, closes=17000
++
++ * Corrected some code that caused klogd to dump core when receiving some
++ special messages from 2.1.78. Thanks to Chu-yeon Park
++ <kokids@doit.ajou.ac.kr> for informing me.
++ * Fixed bug that caused klogd to die if there is no System.map
++ available.
++ * Added -x switch to omit EIP translation and System.map evaluation.
++ Thanks to Florian La Roche <florian@knorke.saar.de>
++ * Fixed small bugs in F_FORW_UNKN meachanism. Thanks to Torsten Neumann
++ <torsten@londo.rhein-main.de> for pointing me to it.
++ * Fixed problem with klogd not being able to be built on a kernel newer
++ than 2.1.18. Worked in a patch from Alessandro Suardi <asuardi@uninetcom.it>
++ * Fixed small typo in syslogd-listfiles
++ * Corrected debug output concerning remote receiption
++ * Removed race condition in syslogd-listfiles
++ * Modified logfile detection routine to take care of double listed
++ logfiles. Thanks to Roman Hodek <roman@debian.org> for providing an
++ appropriate patch. (Bug#17000)
++
++ -- Martin Schulze <joey@finlandia.infodrom.north.de> Tue, 13 Jan 1998 01:59:56 +0100
++
++sysklogd (1.3-19) unstable; urgency=low, closes=16643 16769 16796 16828 16148 14776
++
++ * Used better regexp for detecting sensitive data. Thanks a lot to
++ Susanne Schmidt <banshee@linux.de> for providing it.
++ * Fixed ownership of /usr/doc/sysklogd/copyright and readme (Bug#16643)
++ * Corrected Standards-Version to 2.3.0.1 (Bug#16769)
++ * Reworked one line of an older patch because it prevented syslogd from
++ binding the socket with the result that no messages were forwarded to
++ other hosts.
++ * Changed the behaviour of klogd when receiving a terminate signal. Now
++ the program terminates immediately instead of completing the receipt of
++ a kernel message. (Bug#16796, Bug#16828, Bug#16148)
++ * Noticed a bug which was closed by 1.3-18 (Bug#14776)
++ * Changed Maintainer address to joey@debian.org
++
++ -- Martin Schulze <joey@finlandia.infodrom.north.de> Fri, 9 Jan 1998 00:58:36 +0100
++
++sysklogd (1.3-18) unstable; urgency=low, closes=11731 12009 13506 14329 14521 14610 15840 15336
++
++ * Added test in postinst if user and group exist. Christoph Lameter run
++ into trouble upgrading a RedHat system.
++ * Fixed little mistake which prevented klogd from accepting a console
++ log level of 8 to get <7> alias KERN_DEBUG displayed.
++ * Linked against libc6 (Bug#11731)
++ * Added SHELL=/bin/bash to rules as Herbert Xu suggested
++ * Corrected syslog.conf(5) manpage
++ * syslogd resets the ignore priority flag now. Thanks to Herbert
++ Thielen. (Bug#12009)
++ * Fixed bug that caused syslogd to write into wrong files under some
++ race conditions. Thanks to Herbet Xu. (Bug#13506)
++ * /var/log/auth.log will only be touch if needed (Bug#14329)
++ * debian/conffiles is treated like a document (Bug#14521)
++ * Added script for generic logfile detection and rotation and included
++ that in cron scripts, included also its manpage (Bug#14610)
++ * Modified restart messages in /etc/init.d/sysklogd (Bug#15840)
++ * klogd will first try to load /boot/System.map-$ver, then
++ /boot/System.map, then /System.map-$ver and after that /System.map
++ * Modified ExpandKadds() because there were some problems accessing
++ memory r/w. (Bug#15336)
++
++ -- Martin Schulze <joey@finlandia.infodrom.north.de> Fri, 2 Jan 1998 03:31:09 +0100
++
++sysklogd (1.3-17) unstable; urgency=low
++
++ * Fixed stupid bug which caused klogd to eat up 90% cpu time.
++
++ -- Martin Schulze <joey@finlandia.infodrom.north.de> Wed, 25 Jun 1997 15:22:29 +0200
++
++sysklogd (1.3-16) unstable; urgency=low
++
++ * Included Miquel's patches which allows continuation line support
++ for syslogd. Corrected syslog.conf(5) manpage. Improved
++ syslog.conf file. Thanks to Miquel van Smoorenburg
++ <miquels@cistron.nl> for dropping in these patches.
++ * Added /var/log/syslog as a daily rotated logfile which contains
++ everything except auth.*
++ * ksym.c: Added #1 and #2 to some error messages in order to being able
++ to divide them (ulmo@Q.Net)
++ * Improved postinst script (Thanks to Miquel van Smorrenborg for ideas)
++ * klogd now also reads /System.map-<version> and
++ /boot/System.map-<version> (Bug#7210)
++ * syslogd,klogd: made DEBRELEASE optional to support a non-Debian
++ release as well.
++ * Corrected freeing of logfiles.
++ * Removed delay of 10 seconds. (Bug#8104, Bug#8400)
++ * Modified permissions of logfiles from 644 to 640 and 640 to 600 for
++ security aspects.
++ * Corrected syslog.conf(5) manpage (Bug#9779)
++ * Found upstream patches for 1.3.1 to 1.3.3 which are now included.
++ These also include some patches for glibc and Alpha.
++ * Included patch to modules package to support better debugging
++ * Added patch from Leland Olds which fixes a buffer overrun and improved
++ symbol lookup. (Bug#4875)
++ * Some more glibc patches made by Michael Alan Dorman
++ <mdorman@debian.org>. (Bug#8362, Bug#8763)
++
++ -- Martin Schulze <joey@finlandia.infodrom.north.de> Sun, 15 Jun 1997 19:37:13 +0200
++
++sysklogd (1.3-15) unstable; urgency=low
++
++ * Added /var/log/mail.log as a logfile
++ * Corrected Description field (Bug#7624)
++ * Added read statement in postinst script (Bug#8243)
++
++ -- Martin Schulze <joey@infodrom.north.de> Wed, 26 Mar 1997 13:32:24 +0100
++
++sysklogd (1.3-14) unstable; urgency=low
++
++ * Debugging syslogd now shows facility.priority
++ * Minor fixes
++ * Modified syslogd.c to not kill itself which confuses bash 2.0
++
++ -- Martin Schulze <joey@infodrom.north.de> Sun, 23 Feb 1997 12:23:55 +0100
++
++sysklogd (1.3-13) stable; urgency=low
++
++ * Made /etc/init.d/sysklogd more verbose
++ * Minor fixes
++ * Uncompressed copyright, but compressed /usr/doc/sysklogd-1.3.16/readme
++
++ -- Martin Schulze <joey@debian.org> Sat, 8 Feb 1997 14:12:29 +0100
++
++sysklogd (1.3-12) stable; urgency=HIGH
++
++ * Converted to Standards-Version 2.1.1.2
++ * init.d/sysklogd: added "sleep 1"
++ * syslogd won't hassle anymore if it can't access logfils. Patched by
++ me. This adresses Bug#5865.
++ * /etc/init.d/sysklogd: Modified so that one can use commandline
++ arguments for both syslogd and klogd.
++ * debian.rules: Installed ChangeLog
++
++ -- Martin Schulze <joey@finlandia.infodrom.north.de> Thu, 30 Jan 1997 22:48:59 +0100
++
++Mon Now 25 10:36:01 1996 Martin Schulze <joey@finlandia.infodrom.north.de>
++
++ * modified preinst to work if /etc/init.d/sysklogd doesn't exist
++ because of a failure
++
++Mon Sep 10 10:36:01 1996 Martin Schulze <joey@finlandia.infodrom.north.de>
++
++ * ksyms.c: klogd will first look at /System.map (Bug#4403, #4459)
++
++Fri Aug 16 21:36:01 1996 Martin Schulze <joey@finlandia.infodrom.north.de>
++
++ * debian.rules: Changed permissions for syslogd and klogd to 755
++ (Bug#4049)
++
++Mon Aug 12 10:40:05 1996 Martin Schulze <joey@finlandia.infodrom.north.de>
++
++ * Corrected permissions of documentation. Thanks to Dan
++ Quinlan. (Bug#4090)
++
++Mon Aug 5 22:47:40 1996 Martin Schulze <joey@finlandia.infodrom.north.de>
++
++ * syslogd.c: If you haven't set your domainname, syslogd will dump
++ core upon startup. Fixed. Thanks to Leeland Lucius
++ <llucius@millcomm.com> for reporting and patching it. (Bug#3526)
++
++ * /etc/init.d/sysklogd, /etc/cron.weekly/sysklogd: slight
++ improvements. Thanks to Bernd Eckenfels <ecki@tapac.inka.de>.
++
++Fri Aug 2 11:03:30 1996 Martin Schulze <joey@finlandia.infodrom.north.de>
++
++ * modified weekly cron script, thanks to Todd Tyrone Fries <todd@miango.com>
++
++Fri Jun 14 10:42:26 1996 Martin Schulze <joey@finlandia.infodrom.north.de>
++
++ * ksyms.c: increased the size of vstring, because since Linux
++ major versions are decoded with n * 65536 and we now have 2.0, the
++ field was too short.
++
++Tue May 28 01:02:01 1996 Martin Schulze <joey@finlandia.infodrom.north.de>
++
++ * syslogd.c: Corrected behaviour of blocking pipes - i.e. the
++ whole system hung. Michael Nonweiler <mrn20@hermes.cam.ac.uk> has
++ sent us a patch to correct this. A new logfile type F_PIPE has
++ been introduced.
++
++Thu May 23 08:39:54 1996 Martin Schulze <joey@finlandia.infodrom.north.de>
++
++ * postinst: Corrected killall-statement, Thanks to Miquel van
++ Smoorenborg for the hint
++
++Mon May 20 00:14:35 1996 Martin Schulze <joey@finlandia.infodrom.north.de>
++
++ * postinst: added a killall to remove an existing syslogd. It
++ could exist because of Bug#2836.
++
++Sun May 12 13:36:55 1996 Martin Schulze <joey@finlandia.infodrom.north.de>
++
++ * removed auth.* from /dev/xconsole
++
++ * klogd won't log old messages anymore (Bug#2337)
++ I have applied the patch from Chris Hanson.
++
++ * I have put another start-stop-daemon call in the startup script
++ so the configs are reloaded on startup. This should
++ help. (Bug#2552)
++
++ * Sysklogd takes care of this and createst /dev/xconsole if it
++ doesn't exist during installation. (Bug#2683)
++
++ * I have corrected permissions of /dev/xconsole. (Bug#2837)
++
++ * defined /etc/cron.weekly/sysklogd as a conffile (Bug#2950, Bug#2960)
++
++ * introduced two binary packages: syslogd and sysklogd which
++ exclude each other
++
++Sun Apr 21 17:56:03 1996 Martin Schulze <joey@finlandia.infodrom.north.de>
++
++ * Corrected preinst (Bug#2722, Bug#2725, Bug#2726)
++
++ * Linked against libc 5.2.18 (Bug#2723, Bug#2725)
++
++ * Corrected control file to fit with newer dpkgs
++
++Wed Apr 17 21:40:56 1996 Martin Schulze <joey@finlandia.infodrom.north.de>
++
++ * Added Debian packaging information
++
++
+--- sysklogd-1.4.1.orig/debian/conffiles
++++ sysklogd-1.4.1/debian/conffiles
+@@ -0,0 +1,5 @@
++/etc/default/syslogd
++/etc/syslog.conf
++/etc/init.d/sysklogd
++/etc/cron.daily/sysklogd
++/etc/cron.weekly/sysklogd
+--- sysklogd-1.4.1.orig/debian/conffiles.klogd
++++ sysklogd-1.4.1/debian/conffiles.klogd
+@@ -0,0 +1,2 @@
++/etc/default/klogd
++/etc/init.d/klogd
+--- sysklogd-1.4.1.orig/debian/control
++++ sysklogd-1.4.1/debian/control
+@@ -0,0 +1,32 @@
++Source: sysklogd
++Section: admin
++Priority: important
++Maintainer: Martin Schulze <joey@debian.org>
++Standards-Version: 3.5.6.0
++
++Package: sysklogd
++Architecture: any
++Section: admin
++Depends: ${shlibs:Depends}, klogd | linux-kernel-log-daemon
++Conflicts: syslogd
++Provides: syslogd, system-log-daemon
++Replaces: syslogd
++Description: System Logging Daemon
++ This package implements the system log daemon, which is an enhanced
++ version of the standard Berkeley utility program. It is responsible
++ for providing logging of messages received from programs and facilities
++ on the local host as well as from remote hosts.
++
++Package: klogd
++Architecture: any
++Section: admin
++Depends: ${shlibs:Depends}, sysklogd | system-log-daemon
++Conflicts: sysklogd (<= 1.3-33)
++Provides: linux-kernel-log-daemon
++Replaces: sysklogd
++Description: Kernel Logging Daemon
++ The klogd daemon listens to kernel message sources and is responsible
++ for prioritizing and processing operating system messages. The klogd
++ daemon can run as a client of syslogd or optionally as a standalone
++ program. Klogd can now be used to decode EIP addresses if it can
++ determine a System.map file.
+--- sysklogd-1.4.1.orig/debian/copyright
++++ sysklogd-1.4.1/debian/copyright
+@@ -0,0 +1,50 @@
++This is the Debian GNU/Linux prepackaged version of Linux' system and
++kernel logging daemons.
++
++This package was put together by Martin Schulze <joey@debian.org>,
++from sources obtained from:
++
++ http://www.infodrom.org/projects/sysklogd/download/sysklogd-1.4.1.tar.gz
++
++Recent versions are Debian versions that may be also be found at
++
++ http://www.infodrom.org/projects/sysklogd/
++
++syslogd is under Berkeley copyright, klogd is under GPL.
++
++ Copyright (C) 1994-96 Greg Wettstein <greg@wind.enjellic.com>
++
++ 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; version 2 dated June, 1991.
++
++ 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.
++
++On Debian GNU/Linux systems, the complete text of the GNU General
++Public License can be found in `/usr/share/common-licenses/GPL'.
++
++There is a mailing list covering this package and syslog in general.
++The lists address is infodrom-sysklogd@lists.infodrom.org .
++
++To subscribe to this list,
++
++ . send a mail to infodrom-sysklogd-request@lists.infodrom.org with
++ the word "subscribe" as subject, or
++
++ . send a mail to majordomo@lists.infodrom.org with the body of
++ "subscribe infodrom-sysklogd".
++
++The list will be archived publically at
++<http://www.infodrom.org/Mail-Archive/infodrom-sysklogd>.
++
++The source of the Debian package is managed through CVS. It is publically
++available at <http://cvs.infodrom.org/sysklogd/?cvsroot=debian> or as
++<:pserver:anonymous@cvs.infodrom.org/var/cvs/debian/sysklogd/>.
++
+--- sysklogd-1.4.1.orig/debian/cron.daily
++++ sysklogd-1.4.1/debian/cron.daily
+@@ -0,0 +1,39 @@
++#! /bin/sh
++
++# sysklogd Cron script to rotate system log files daily.
++#
++# If you want to rotate other logfiles daily, edit
++# this script. An easy way is to add files manually,
++# to add -a (for all log files) to syslogd-listfiles and
++# add some grep stuff, or use the -s pattern argument to
++# specify files that must not be listed.
++#
++# This is a configration file. You are invited to edit
++# it and maintain it on your own. You'll have to do
++# that if you don't like the default policy
++# wrt. rotating logfiles (i.e. with large logfiles
++# weekly and daily rotation may interfere). If you edit
++# this file and don't let dpkg upgrade it, you have full
++# control over it. Please read the manpage to
++# syslogd-listfiles.
++#
++# Written by Martin Schulze <joey@debian.org>.
++# $Id: cron.daily,v 1.13 2006-09-18 09:42:30 joey Exp $
++
++test -x /usr/sbin/syslogd-listfiles || exit 0
++test -x /sbin/syslogd || exit 0
++test -f /usr/share/sysklogd/dummy || exit 0
++
++set -e
++
++cd /var/log
++for LOG in `syslogd-listfiles`
++do
++ if [ -s $LOG ]; then
++ savelog -g adm -m 640 -u root -c 7 $LOG >/dev/null
++ fi
++done
++
++# Restart syslogd
++#
++/etc/init.d/sysklogd reload-or-restart > /dev/null
+--- sysklogd-1.4.1.orig/debian/cron.daily.klogd
++++ sysklogd-1.4.1/debian/cron.daily.klogd
+@@ -0,0 +1,47 @@
++#! /bin/sh
++
++binpath=/sbin/klogd
++pidfile=/var/run/klogd.pid
++
++test -x $binpath || exit 0
++
++
++running()
++{
++ # No pidfile, probably no daemon present
++ #
++ if [ ! -f $pidfile ]
++ then
++ return 1
++ fi
++
++ pid=`cat $pidfile`
++
++ # No pid, probably no daemon present
++ #
++ if [ -z "$pid" ]
++ then
++ return 1
++ fi
++
++ if [ ! -d /proc/$pid ]
++ then
++ return 1
++ fi
++
++ cmd=`cat /proc/$pid/cmdline | tr "\000" "\n"|head -n 1`
++
++ # No syslogd?
++ #
++ if [ "$cmd" != "$binpath" ]
++ then
++ return 1
++ fi
++
++ return 0
++}
++
++if ! running
++then
++ sh /etc/init.d/klogd start > /dev/null
++fi
+--- sysklogd-1.4.1.orig/debian/cron.weekly
++++ sysklogd-1.4.1/debian/cron.weekly
+@@ -0,0 +1,38 @@
++#! /bin/sh
++
++# sysklogd Cron script to rotate system log files weekly.
++#
++# If you want to rotate logfiles daily, edit
++# this script and /etc/cron.daily/sysklogd to get
++# the logfiles in sync (they must not occur in both
++# files).
++#
++# This is a configration file. You are invited to edit
++# it and maintain it on your own. You'll have to do
++# that if you don't like the default policy
++# wrt. rotating logfiles (i.e. with large logfiles
++# weekly and daily rotation may interfere). If you edit
++# this file and don't let dpkg upgrade it, you have full
++# control over it. Please read the manpage to
++# syslogd-listfiles.
++#
++# Written by Ian A. Murdock <imurdock@debian.org>.
++# $Id: cron.weekly,v 1.10 2004-03-31 16:18:15 joey Exp $
++
++test -x /usr/sbin/syslogd-listfiles || exit 0
++test -x /sbin/syslogd || exit 0
++test -f /usr/share/sysklogd/dummy || exit 0
++
++set -e
++
++cd /var/log
++for LOG in `syslogd-listfiles --weekly`
++do
++ if [ -s $LOG ]; then
++ savelog -g adm -m 640 -u root -c 4 $LOG >/dev/null
++ fi
++done
++
++# Restart syslogd
++#
++/etc/init.d/sysklogd reload-or-restart > /dev/null
+--- sysklogd-1.4.1.orig/debian/default
++++ sysklogd-1.4.1/debian/default
+@@ -0,0 +1,13 @@
++#
++# Top configuration file for syslogd
++#
++
++#
++# Full documentation of possible arguments are found in the manpage
++# syslogd(8).
++#
++
++#
++# For remote UDP logging use SYSLOGD="-r"
++#
++SYSLOGD=""
+--- sysklogd-1.4.1.orig/debian/default.klogd
++++ sysklogd-1.4.1/debian/default.klogd
+@@ -0,0 +1,15 @@
++#
++# top configuration file for klogd
++#
++
++#
++# Full documentation of possible arguments are found in the manpage
++# klogd(8).
++#
++
++#
++# Use KLOGD="-k /boot/System.map-$(uname -r)" to specify System.map
++# -c 4 to alter the kernel console log level (deprecated)
++# use sysctl instead
++#
++KLOGD="-x"
+--- sysklogd-1.4.1.orig/debian/dummy
++++ sysklogd-1.4.1/debian/dummy
+@@ -0,0 +1,4 @@
++Do not remove this file or your log files won't be rotated anymore.
++This is a control file to ensure that the sysklogd package is
++installed so that the cronjobs don't have to parse the dpkg database
++for each run.
+--- sysklogd-1.4.1.orig/debian/postinst
++++ sysklogd-1.4.1/debian/postinst
+@@ -0,0 +1,83 @@
++#! /bin/sh
++
++set -e
++
++if [ "$1" = "configure" ]
++then
++ case $2 in
++ 1.2-*)
++cat<<EOT
++The default behaviour of syslogd has altered from 1.2 to 1.3. By default
++*no* messages from the UDP port are accepted.
++
++Read the documentation in /usr/doc/sysklogd carefully. Some important
++things have been changed!
++
++Press [Enter] to continue
++EOT
++ read xyz
++ ;;
++ esac
++fi
++
++if [ "$1" = "configure" ]
++then
++
++ # Prepare for takeover of the host
++ if [ -z "$2" ]
++ then
++ if [ ! -e /var/log/news ] \
++ && grep -q '^[^#].*/var/log/news/' /etc/syslog.conf \
++ && grep -q ^news: /etc/passwd \
++ && grep -q ^news: /etc/group
++ then
++ mkdir /var/log/news
++ chmod 2755 /var/log/news
++ chown news:news /var/log/news
++ fi
++
++ # Create logfiles with correct file modes
++ if [ -z "$2" ]
++ then
++ for LOG in `syslogd-listfiles --all`
++ do
++ if [ ! -f $LOG ]
++ then
++ touch $LOG
++ fi
++ chown root:adm $LOG
++ chmod 640 $LOG
++ done
++ fi
++ fi
++
++ if [ -f /etc/init.d/sysklogd -a -n "$2" ]
++ then
++ set +e
++ if [ -x /usr/sbin/invoke-rc.d ]
++ then
++ invoke-rc.d sysklogd stop
++ else
++ sh /etc/init.d/sysklogd stop
++ fi
++ set -e
++ fi
++
++ update-rc.d sysklogd defaults 10 90 >/dev/null
++
++ # restarting daemon
++ #
++ if [ -f /etc/init.d/sysklogd ]
++ then
++ set +e
++ if [ -x /usr/sbin/invoke-rc.d ]
++ then
++ invoke-rc.d sysklogd start
++ else
++ sh /etc/init.d/sysklogd start
++ fi
++ set -e
++ fi
++fi
++
++exit 0
+--- sysklogd-1.4.1.orig/debian/postinst.klogd
++++ sysklogd-1.4.1/debian/postinst.klogd
+@@ -0,0 +1,36 @@
++#! /bin/sh
++
++set -e
++
++if [ "$1" = "configure" ]
++then
++ if [ -f /etc/init.d/klogd -a -n "$2" ]
++ then
++ set +e
++ if [ -x /usr/sbin/invoke-rc.d ]
++ then
++ invoke-rc.d klogd stop
++ else
++ sh /etc/init.d/klogd stop
++ fi
++ set -e
++ fi
++
++ update-rc.d klogd defaults 11 89 >/dev/null
++
++ # restarting daemon
++ #
++ if [ -f /etc/init.d/klogd ]
++ then
++ set +e
++ if [ -x /usr/sbin/invoke-rc.d ]
++ then
++ invoke-rc.d klogd start
++ else
++ sh /etc/init.d/klogd start
++ fi
++ set -e
++ fi
++fi
++
++exit 0
+--- sysklogd-1.4.1.orig/debian/postrm
++++ sysklogd-1.4.1/debian/postrm
+@@ -0,0 +1,8 @@
++#! /bin/sh
++
++set -e
++
++if [ "$1" = "purge" ]
++then
++ update-rc.d sysklogd remove >/dev/null
++fi
+--- sysklogd-1.4.1.orig/debian/postrm.klogd
++++ sysklogd-1.4.1/debian/postrm.klogd
+@@ -0,0 +1,8 @@
++#! /bin/sh
++
++set -e
++
++if [ "$1" = "purge" ]
++then
++ update-rc.d klogd remove >/dev/null
++fi
+--- sysklogd-1.4.1.orig/debian/preinst
++++ sysklogd-1.4.1/debian/preinst
+@@ -0,0 +1,21 @@
++#! /bin/sh
++
++set -e
++
++dpkg --assert-support-predepends
++
++if [ "$1" = "upgrade" -a -f /etc/init.d/sysklogd ]; then
++ if [ -f /etc/init.d/sysklogd ]
++ then
++ set +e
++ if [ -x /usr/sbin/invoke-rc.d ]
++ then
++ invoke-rc.d sysklogd stop
++ else
++ sh /etc/init.d/sysklogd stop
++ fi
++ set -e
++ fi
++fi
++
++exit 0
+--- sysklogd-1.4.1.orig/debian/preinst.klogd
++++ sysklogd-1.4.1/debian/preinst.klogd
+@@ -0,0 +1,21 @@
++#! /bin/sh
++
++set -e
++
++dpkg --assert-support-predepends
++
++if [ "$1" = "upgrade" -a -f /etc/init.d/klogd ]; then
++ if [ -f /etc/init.d/klogd ]
++ then
++ set +e
++ if [ -x /usr/sbin/invoke-rc.d ]
++ then
++ invoke-rc.d klogd stop
++ else
++ sh /etc/init.d/klogd stop
++ fi
++ set -e
++ fi
++fi
++
++exit 0
+--- sysklogd-1.4.1.orig/debian/prerm
++++ sysklogd-1.4.1/debian/prerm
+@@ -0,0 +1,19 @@
++#! /bin/sh
++
++set -e
++
++if [ \( "$1" = "upgrade" -o "$1" = "remove" \) -a -L /usr/doc/sysklogd ]
++then
++ rm -f /usr/doc/sysklogd
++fi
++
++if [ "$1" = "purge" -o "$1" = "remove" ]
++then
++ if [ -x /usr/sbin/invoke-rc.d ]
++ then
++ invoke-rc.d sysklogd stop
++ else
++ sh /etc/init.d/sysklogd stop
++ fi
++fi
++
+--- sysklogd-1.4.1.orig/debian/prerm.klogd
++++ sysklogd-1.4.1/debian/prerm.klogd
+@@ -0,0 +1,19 @@
++#! /bin/sh
++
++set -e
++
++if [ \( "$1" = "upgrade" -o "$1" = "remove" \) -a -L /usr/doc/klogd ]
++then
++ rm -f /usr/doc/klogd
++fi
++
++if [ "$1" = "purge" -o "$1" = "remove" ]
++then
++ if [ -x /usr/sbin/invoke-rc.d ]
++ then
++ invoke-rc.d klogd stop
++ else
++ sh /etc/init.d/klogd stop
++ fi
++fi
++
+--- sysklogd-1.4.1.orig/debian/rc
++++ sysklogd-1.4.1/debian/rc
+@@ -0,0 +1,112 @@
++#! /bin/sh
++# /etc/init.d/sysklogd: start the system log daemon.
++
++### BEGIN INIT INFO
++# Provides: syslog
++# Required-Start: $local_fs $network $time
++# Required-Stop: $local_fs $network $time
++# Default-Start: 2 3 4 5
++# Default-Stop: S 0 1 6
++# Short-Description: System logger
++### END INIT INFO
++
++PATH=/bin:/usr/bin:/sbin:/usr/sbin
++
++pidfile=/var/run/syslogd.pid
++binpath=/sbin/syslogd
++
++test -x $binpath || exit 0
++
++test ! -r /etc/default/syslogd || . /etc/default/syslogd
++
++. /lib/lsb/init-functions
++
++create_xconsole()
++{
++ # Only proceed if not using devfsd
++ if [ -e /dev/.devfsd ] \
++ || ! grep -q '^[^#].*/dev/xconsole' /etc/syslog.conf
++ then
++ return
++ fi
++
++ if [ ! -e /dev/xconsole ]; then
++ mknod -m 640 /dev/xconsole p
++ else
++ chmod 0640 /dev/xconsole
++ fi
++ chown root:adm /dev/xconsole
++}
++
++running()
++{
++ # No pidfile, probably no daemon present
++ #
++ if [ ! -f $pidfile ]
++ then
++ return 1
++ fi
++
++ pid=`cat $pidfile`
++
++ # No pid, probably no daemon present
++ #
++ if [ -z "$pid" ]
++ then
++ return 1
++ fi
++
++ if [ ! -d /proc/$pid ]
++ then
++ return 1
++ fi
++
++ cmd=`cat /proc/$pid/cmdline | tr "\000" "\n"|head -n 1`
++
++ # No syslogd?
++ #
++ if [ "$cmd" != "$binpath" ]
++ then
++ return 1
++ fi
++
++ return 0
++}
++
++case "$1" in
++ start)
++ log_begin_msg "Starting system log daemon..."
++ create_xconsole
++ start-stop-daemon --start --quiet --pidfile $pidfile --name syslogd --startas $binpath -- $SYSLOGD
++ log_end_msg $?
++ ;;
++ stop)
++ log_begin_msg "Stopping system log daemon..."
++ start-stop-daemon --stop --quiet --pidfile $pidfile --name syslogd
++ log_end_msg $?
++ ;;
++ reload|force-reload)
++ log_begin_msg "Reloading system log daemon..."
++ start-stop-daemon --stop --quiet --signal 1 --pidfile $pidfile --name syslogd
++ log_end_msg $?
++ ;;
++ restart)
++ log_begin_msg "Restarting system log daemon..."
++ start-stop-daemon --stop --retry 5 --quiet --pidfile $pidfile --name syslogd
++ start-stop-daemon --start --quiet --pidfile $pidfile --name syslogd --startas $binpath -- $SYSLOGD
++ log_end_msg $?
++ ;;
++ reload-or-restart)
++ if running
++ then
++ $0 reload
++ else
++ $0 start
++ fi
++ ;;
++ *)
++ echo "Usage: /etc/init.d/sysklogd {start|stop|reload|restart|force-reload|reload-or-restart}"
++ exit 1
++esac
++
++exit 0
+--- sysklogd-1.4.1.orig/debian/rc.klogd
++++ sysklogd-1.4.1/debian/rc.klogd
+@@ -0,0 +1,46 @@
++#! /bin/sh
++# /etc/init.d/klogd: start the kernel log daemon.
++
++### BEGIN INIT INFO
++# Provides: klogd
++# Required-Start: $time syslog
++# Required-Stop: $time syslog
++# Default-Start: 2 3 4 5
++# Default-Stop: S 0 1 6
++# Short-Description: kernel logger
++### END INIT INFO
++
++PATH=/bin:/usr/bin:/sbin:/usr/sbin
++
++pidfile=/var/run/klogd.pid
++binpath=/sbin/klogd
++
++test -f $binpath || exit 0
++
++test ! -r /etc/default/klogd || . /etc/default/klogd
++
++. /lib/lsb/init-functions
++
++case "$1" in
++ start)
++ log_begin_msg "Starting kernel log daemon..."
++ start-stop-daemon --start --quiet --pidfile $pidfile --name klogd --startas $binpath -- $KLOGD
++ log_end_msg $?
++ ;;
++ stop)
++ log_begin_msg "Stopping kernel log daemon..."
++ start-stop-daemon --stop --retry TERM/1/TERM/1/TERM/4/KILL --quiet --pidfile $pidfile --name klogd
++ log_end_msg $?
++ ;;
++ restart|force-reload)
++ log_begin_msg "Reloading kernel log daemon..."
++ start-stop-daemon --stop --retry TERM/1/TERM/1/TERM/4/KILL --quiet --pidfile $pidfile --name klogd
++ start-stop-daemon --start --quiet --pidfile $pidfile --name klogd --startas $binpath -- $KLOGD
++ log_end_msg $?
++ ;;
++ *)
++ echo "Usage: /etc/init.d/klogd {start|stop|restart|force-reload}"
++ exit 1
++esac
++
++exit 0
+--- sysklogd-1.4.1.orig/debian/readme
++++ sysklogd-1.4.1/debian/readme
+@@ -0,0 +1,44 @@
++
++Additional information about system logging
++-------------------------------------------
++
++ . When logging into a fifo syslogd will stop loggin into this
++ logfile if no process is reading it and thus the buffer is filled
++ up. Buffer size can be adjusted through the kernel.
++
++ . When using the Perl5 Sys::Syslog module (use Sys::Syslog;) to
++ provide logging to your Perl programs, please notice that since it
++ will open a UDP connection to the local syslogd you'll need to have
++ remote receiption enabled.
++
++ Joey Hess teaches us how to change this behaviour and switch to
++ using the Unix domain socket. After the opening with "use" you
++ have to add "Sys::Syslog::setlogsock('unix');".
++
++ The default behaviour might change in future releases of Perl.
++
++Modifying the kernel console log level
++--------------------------------------
++
++ There are two ways to alter the kernel console log level. This
++ setting controls whether log messages from the kernel should appear
++ on the system console or not.
++
++ In the past, klogd had to do this with the -c parameter. Using '-c
++ 4' will set the log level of console messages to 4 and only display
++ warnings and errors but not regular debug or information messages.
++
++ This behaviour is deprecated and hencely not enforced anymore via
++ the RC script of klogd. Instead sysctl(8) should be used as
++ interface to various kernel variables. These can be stored
++ non-volatile in /etc/sysctl.conf.
++
++ The prevent the kernel to flood the system console and to achieve
++ the same behaviour of '-c 4' simply add the following to the
++ configuration file and let sysctl set this kernel parameter upon
++ system boot.
++
++ kernel/printk = 4 4 1 7
++
++ More information can be found in Documentation/sysctl/kernel.txt in
++ the kernel source and proc(5).
+--- sysklogd-1.4.1.orig/debian/rules
++++ sysklogd-1.4.1/debian/rules
+@@ -0,0 +1,172 @@
++#! /usr/bin/make -f
++
++# Copyright 1994-98,2001 joey@infodrom.org (Martin Schulze)
++#
++# 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; version 2 dated June, 1991.
++#
++# 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
++#
++SHELL=/bin/bash
++
++# The name and version of the source
++#
++source = $(shell grep "^Source: " debian/control|head -n 1|sed 's/Source: \(.*\)/\1/g')
++package = $(shell grep "^Package: " debian/control|head -n 1|sed 's/Package: \(.*\)/\1/g')
++version = $(shell grep "^$(source) " debian/changelog|head -n 1 |sed 's/.*(\(.*\)\-[^\-]*).*/\1/g')
++revision = $(shell grep "^$(source) " debian/changelog|head -n 1 |sed 's/.*([^\-]*\-\(.*\)).*/\1/g')
++
++installbin = install -g root -o root -m 755
++installdoc = install -g root -o root -m 644
++
++ifneq (,$(findstring debug,$(DEB_BUILD_OPTIONS)))
++CFLAGS = -g -O2 -Wall $(shell getconf LFS_CFLAGS)
++else
++CFLAGS = -O2 -Wall $(shell getconf LFS_CFLAGS)
++endif
++ifeq (,$(findstring nostrip,$(DEB_BUILD_OPTIONS)))
++STRIP = -s
++endif
++
++build:
++ $(MAKE) DEB="-DDEBRELEASE=\\\"$(revision)\\\"" \
++ CFLAGS="$(CFLAGS) -DSYSV -fomit-frame-pointer -fno-strength-reduce" \
++ LDFLAGS=""
++ pod2man --section=8 --lax --center="Debian GNU/Linux" \
++ --release="Debian Project" debian/syslog-facility.pod \
++ > syslog-facility.8
++ (cat README.linux; printf "\n\n"; cat README.1st; \
++ printf "\n\nThe following important changes have been reported by the developers:\n\n"; \
++ cat NEWS debian/readme) \
++ > readme.txt
++ (cat debian/copyright; \
++ printf "Syslogd stays under the following copyright:\n\n"; \
++ sed -e '/^$$/,$$d' < syslogd.c; \
++ printf "\nKlogd has the following copyright notice:\n\n"; \
++ sed -e '/^$$/,$$d' < klogd.c ) \
++ > copyright
++ touch stamp-build
++
++clean: debclean
++ rm -f stamp-build
++ $(MAKE) clobber
++ rm -rf *~ debian/*~ syslog-facility.8 readme.txt copyright
++
++debclean:
++# Cleans debian binary directories to allow binary creation
++ rm -rf debian/tmp.sysklogd debian/tmp.klogd
++ rm -f debian/{files,substvars}
++
++binary-indep:
++# Nothing to be done here
++
++binary-arch-sysklogd: debclean
++ test -f stamp-build || $(MAKE) -f debian/rules build
++ $(installbin) -d debian/tmp.sysklogd/DEBIAN
++ chown -R root:root debian/tmp.sysklogd
++ chmod -R g-ws debian/tmp.sysklogd
++ $(installbin) -d debian/tmp.sysklogd/usr/share/doc/$(package)
++ $(installbin) debian/{postinst,postrm,prerm} debian/tmp.sysklogd/DEBIAN/
++ $(installdoc) debian/conffiles debian/tmp.sysklogd/DEBIAN/
++ $(installdoc) debian/changelog debian/tmp.sysklogd/usr/share/doc/$(package)/changelog.Debian
++ #
++ $(installbin) -d debian/tmp.sysklogd/usr/share/$(package)
++ $(installdoc) debian/dummy debian/tmp.sysklogd/usr/share/$(package)
++ #
++ $(installdoc) copyright debian/tmp.sysklogd/usr/share/doc/$(package)/
++ $(installdoc) readme.txt debian/tmp.sysklogd/usr/share/doc/$(package)/
++ $(installdoc) CHANGES debian/tmp.sysklogd/usr/share/doc/$(package)/changelog
++ gzip -9f debian/tmp.sysklogd/usr/share/doc/$(package)/{changelog.Debian,changelog,readme.txt}
++ #
++ $(installbin) -d debian/tmp.sysklogd/{usr/,}sbin
++ $(installbin) $(STRIP) syslogd debian/tmp.sysklogd/sbin
++ $(installbin) debian/syslogd-listfiles debian/tmp.sysklogd/usr/sbin
++ $(installbin) debian/syslog-facility debian/tmp.sysklogd/usr/sbin
++ #
++ $(installbin) -d debian/tmp.sysklogd/etc/{init.d,cron.{daily,weekly},default}
++ $(installbin) debian/default debian/tmp.sysklogd/etc/default/syslogd
++ $(installbin) debian/rc debian/tmp.sysklogd/etc/init.d/sysklogd
++ $(installbin) debian/cron.weekly debian/tmp.sysklogd/etc/cron.weekly/sysklogd
++ $(installbin) debian/cron.daily debian/tmp.sysklogd/etc/cron.daily/sysklogd
++ $(installdoc) debian/syslog.conf debian/tmp.sysklogd/etc/syslog.conf
++ $(installbin) -d debian/tmp.sysklogd/var/log
++ #
++ $(installbin) -d debian/tmp.sysklogd/usr/share/man/man{5,8}
++ $(installdoc) syslog.conf.5 debian/tmp.sysklogd/usr/share/man/man5
++ $(installdoc) {sysklogd,syslogd,debian/syslogd-listfiles}.8 debian/tmp.sysklogd/usr/share/man/man8
++ $(installdoc) syslog-facility.8 debian/tmp.sysklogd/usr/share/man/man8
++ gzip -9 debian/tmp.sysklogd/usr/share/man/man?/*
++ #
++ dpkg-shlibdeps debian/tmp.sysklogd/sbin/syslogd
++ dpkg-gencontrol -psysklogd -Pdebian/tmp.sysklogd -isp
++ dpkg --build debian/tmp.sysklogd ..
++
++binary-arch-klogd: debclean
++ test -f stamp-build || $(MAKE) -f debian/rules build
++ $(installbin) -d debian/tmp.klogd/DEBIAN
++ chown -R root:root debian/tmp.klogd
++ chmod -R g-ws debian/tmp.klogd
++ $(installbin) -d debian/tmp.klogd/usr/share/doc/klogd
++ $(installbin) debian/postinst.klogd debian/tmp.klogd/DEBIAN/postinst
++ $(installbin) debian/postrm.klogd debian/tmp.klogd/DEBIAN/postrm
++ $(installbin) debian/prerm.klogd debian/tmp.klogd/DEBIAN/prerm
++ $(installdoc) debian/conffiles.klogd debian/tmp.klogd/DEBIAN/conffiles
++ $(installdoc) debian/changelog debian/tmp.klogd/usr/share/doc/klogd/changelog.Debian
++ #
++ $(installdoc) copyright debian/tmp.klogd/usr/share/doc/klogd/
++ $(installdoc) readme.txt debian/tmp.klogd/usr/share/doc/klogd/
++ $(installdoc) CHANGES debian/tmp.klogd/usr/share/doc/klogd/changelog
++ gzip -9f debian/tmp.klogd/usr/share/doc/klogd/{changelog.Debian,changelog,readme.txt}
++ $(installdoc) modutils.patch debian/tmp.klogd/usr/share/doc/klogd
++ #
++ $(installbin) -d debian/tmp.klogd/sbin
++ $(installbin) $(STRIP) klogd debian/tmp.klogd/sbin
++ #
++ $(installbin) -d debian/tmp.klogd/etc/{init.d,default}
++ $(installbin) debian/default.klogd debian/tmp.klogd/etc/default/klogd
++ $(installbin) debian/rc.klogd debian/tmp.klogd/etc/init.d/klogd
++ #
++ $(installbin) -d debian/tmp.klogd/usr/share/man/man8
++ $(installdoc) klogd.8 debian/tmp.klogd/usr/share/man/man8
++ gzip -9 debian/tmp.klogd/usr/share/man/man?/*
++ #
++ dpkg-shlibdeps debian/tmp.klogd/sbin/klogd
++ dpkg-gencontrol -pklogd -Pdebian/tmp.klogd -isp
++ dpkg --build debian/tmp.klogd ..
++
++binary-arch: binary-arch-sysklogd binary-arch-klogd
++
++binary: binary-indep binary-arch
++
++source diff:
++ @echo >&2 'source and diff are obsolete - use dpkg-source -b' or dsc; false
++
++dsc:
++ -test -d debian/tmp.sysklogd -o -d debian/tmp.klogd \
++ && $(MAKE) -f debian/rules clean
++ if [ ! -f ../$(source)_$(version).orig.tar.gz -a -f ../orig/$(source)_$(version).orig.tar.gz ]; \
++ then \
++ ln -s orig/$(source)_$(version).orig.tar.gz ../$(source)_$(version).orig.tar.gz; \
++ touch /tmp/stamp-$(source)-link; \
++ fi; \
++ cd .. && dpkg-source -b $(source)-$(version)
++ if [ -f /tmp/stamp-$(source)-link ]; then \
++ rm ../$(source)_$(version).orig.tar.gz /tmp/stamp-$(source)-link; \
++ fi
++
++checkroot:
++ $(checkdir)
++ test root = "`whoami`"
++
++dist: binary dsc
++
++.PHONY: binary binary-arch binary-indep clean checkroot
++
+--- sysklogd-1.4.1.orig/debian/syslog-facility
++++ sysklogd-1.4.1/debian/syslog-facility
+@@ -0,0 +1,140 @@
++#! /usr/bin/perl -w
++
++# Copyright 1998 Hertzog Raphal
++# You can use this script under the term of the GPL v2 or later.
++
++# 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.
++
++my $conf_file = '/etc/syslog.conf';
++
++## BUGS :
++# . This script doesn't know about multi-lines configuration (ie with '\')
++# . With a line like that "mail,local0.* /anything"
++# "syslog-facility remove local0" would remove the entire line
++# => should not be a problem since lines installed by this script
++# cannot use such syntax
++##
++
++## Nothing to modify after this line ##
++
++my $command = lc(shift);
++
++usage() if ($command !~ /^(?:set|remove)$/);
++usage() if (not scalar(@ARGV));
++
++if ($command eq "set")
++{
++ usage() if (int(scalar(@ARGV) / 2) != scalar(@ARGV) / 2);
++ # find a free localx facility
++ my $facility = get_first_free_facility();
++ # if none stop immediately
++ if ($facility eq "none") {
++ print "none\n";
++ exit 1;
++ }
++ # ok append the lines asked
++ open (CONF, ">>$conf_file") ||
++ die "Can't open $conf_file in write mode: $!\n";
++ my ($pri,$file,$line);
++ while (defined($pri = shift)) {
++ $file = shift;
++ $line = "";
++ foreach (split(/;/,$pri)) {
++ $_ =~ s/all/*/g;
++ $line .= ";" if ($line);
++ $line .= "$facility.$_";
++ }
++ $line .= "\t\t$file\n";
++ print CONF $line;
++ }
++ close CONF;
++ print "$facility\n";
++ exit 0;
++
++} elsif ($command eq "remove") {
++
++ my $facility = lc(shift);
++ my ($left,$file,$line);
++ open (CONF, $conf_file) || die "Can't open $conf_file: $!\n";
++ open (CONFNEW, ">$conf_file.new") ||
++ die "Can't open $conf_file.new in write mode: $!\n";
++ while (defined($_=<CONF>)) {
++ # Write all "simple" lines like empty lines and comments
++ if (/^\s*$/ or /^\s*#/ or /\\$/) {
++ print CONFNEW $_;
++ next;
++ }
++ # Otherwise look if the facility to remove appears in the line
++ if (/^\s*(\S+)\s+(\S+)\s*/) {
++ $left = $1; $file = $2; chomp $file;
++ # It doesn't appers => write
++ if ($left !~ /$facility/i) {
++ print CONFNEW $_;
++ next;
++ }
++ # It appears => write a new line without the localx facility
++ $line = "";
++ foreach (split(/;/,$left)) {
++ if (not /$facility/i) {
++ $line .= ";" if ($line);
++ $line .= $_;
++ }
++ }
++ next if ($line eq "");
++ $line .= "\t\t$file\n";
++ print CONFNEW $line;
++ }
++ }
++ close CONFNEW;
++ close CONF;
++ rename ("$conf_file.new", "$conf_file");
++}
++
++sub get_first_free_facility {
++
++ my @facility = (0) x 8;
++ my ($left,$fac);
++ open(CONF, $conf_file) || die "Can't open $conf_file: $!\n";
++ while(defined($_=<CONF>))
++ {
++ next if (/^\s*$/);
++ next if (/^\s*#/);
++ next if (/\\$/);
++ next if (not /^\s*(\S+)\s+(\S+)\s*$/);
++ $left = $1;
++ foreach $fac (split(/;/,$left)) {
++ $facility[$1]++ if ($fac =~ /local(\d)/i);
++ }
++ }
++ foreach $fac (0..7) {
++ return "local$fac" if ($facility[$fac] == 0);
++ }
++ return "none";
++}
++
++sub usage {
++
++ die "syslog-facility - Copyright (c) 1998 Hertzog Raphal\n"
++ ."Usage : $0 set <set_of_priority> <logfile> ... \n"
++ ." it returns the 'LOCALx' string you have the right to use.\n"
++ ." $0 remove <facility>\n"
++ ."Example: $0 set all /var/log/all\n"
++ ." $0 set all\\;\\!=info /var/log/all-without-info\n"
++ ." $0 set =err /var/log/errors =warning /var/log/warn\n"
++ ." $0 remove LOCAL1\n";
++}
++
++
++
+--- sysklogd-1.4.1.orig/debian/syslog-facility.pod
++++ sysklogd-1.4.1/debian/syslog-facility.pod
+@@ -0,0 +1,58 @@
++=head1 NAME
++
++syslog-facility - Setup and remove LOCALx facility for sysklogd
++
++=head1 SYNOPSIS
++
++B<syslog-facility> B<set> I<set_of_priority> I<log_file> ...
++
++B<syslog-facility> B<remove> I<facility>
++
++=head1 DESCRIPTION
++
++B<syslog-facility> can be used to setup a syslog facility and to remove
++it. The primary use of this perl script is to allow packages to
++automatically setup (and remove) a LOCALx facility. With the
++first argument beeing I<set>, it will output a string containing
++the first free LOCALx facility that has been assigned to your request :
++
++ # syslog-facility set all /var/log/sympa
++ local0
++
++This does mean that a line "local0.* /var/log/sympa" has been
++added to the syslog.conf file. If no free LOCALx facility has been
++found, then it outputs "none" (with a end of line).
++
++You can use different set of priorities (most of what syslogd supports) :
++
++ # syslog-facility set 'all;!=debug;' /var/log/sympa '=debug' /var/log/sympa-d
++ local1
++
++Pay particular attention to shell escapes since ';','!' have special
++meanings for them. The syntax is similar to syslog.conf except that
++'*' must be replaced by 'all'.
++
++In that case you will have two lines added two the syslog.conf file :
++
++ local1.*;local1.!=debug /var/log/sympa
++ local1.=debug /var/log/sympa-d
++
++If the first argument is I<remove>, then it will remove all references
++to a precise LOCALx facility. Example :
++
++ # syslog-facility remove local1
++
++It will remove all references to the local1 facility.
++
++=head1 BUGS
++
++The script doesn't know about multi-lines configuration (ie with '\').
++
++With a line like that "mail,local0.* /anything", "syslog-facility remove
++local0" would remove the entire line. It should not be a problem since
++lines installed by this script cannot use this syntax.
++
++=head1 SEE ALSO
++
++B<syslog.conf>(5), B<sysklogd>(8).
++
+--- sysklogd-1.4.1.orig/debian/syslog.conf
++++ sysklogd-1.4.1/debian/syslog.conf
+@@ -0,0 +1,71 @@
++# /etc/syslog.conf Configuration file for syslogd.
++#
++# For more information see syslog.conf(5)
++# manpage.
++
++#
++# First some standard logfiles. Log by facility.
++#
++
++auth,authpriv.* /var/log/auth.log
++*.*;auth,authpriv.none -/var/log/syslog
++#cron.* /var/log/cron.log
++daemon.* -/var/log/daemon.log
++kern.* -/var/log/kern.log
++lpr.* -/var/log/lpr.log
++mail.* -/var/log/mail.log
++user.* -/var/log/user.log
++uucp.* /var/log/uucp.log
++
++#
++# Logging for the mail system. Split it up so that
++# it is easy to write scripts to parse these files.
++#
++mail.info -/var/log/mail.info
++mail.warn -/var/log/mail.warn
++mail.err /var/log/mail.err
++
++# Logging for INN news system
++#
++news.crit /var/log/news/news.crit
++news.err /var/log/news/news.err
++news.notice -/var/log/news/news.notice
++
++#
++# Some `catch-all' logfiles.
++#
++*.=debug;\
++ auth,authpriv.none;\
++ news.none;mail.none -/var/log/debug
++*.=info;*.=notice;*.=warn;\
++ auth,authpriv.none;\
++ cron,daemon.none;\
++ mail,news.none -/var/log/messages
++
++#
++# Emergencies are sent to everybody logged in.
++#
++*.emerg *
++
++#
++# I like to have messages displayed on the console, but only on a virtual
++# console I usually leave idle.
++#
++#daemon,mail.*;\
++# news.=crit;news.=err;news.=notice;\
++# *.=debug;*.=info;\
++# *.=notice;*.=warn /dev/tty8
++
++# The named pipe /dev/xconsole is for the `xconsole' utility. To use it,
++# you must invoke `xconsole' with the `-file' option:
++#
++# $ xconsole -file /dev/xconsole [...]
++#
++# NOTE: adjust the list below, or you'll go crazy if you have a reasonably
++# busy site..
++#
++daemon.*;mail.*;\
++ news.crit;news.err;news.notice;\
++ *.=debug;*.=info;\
++ *.=notice;*.=warn |/dev/xconsole
++
+--- sysklogd-1.4.1.orig/debian/syslogd-listfiles
++++ sysklogd-1.4.1/debian/syslogd-listfiles
+@@ -0,0 +1,146 @@
++#! /usr/bin/perl
++
++# Copyright (c) 1998,9,2001,3 by Martin Schulze <joey@infodrom.org>
++
++# 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.
++
++$conf = "/etc/syslog.conf";
++$opt_daily = 1;
++$opt_all = 0;
++$opt_auth = 0;
++$opt_ign_size = 0;
++$opt_news = 0;
++$opt_skip = '';
++$opt_large = 1024*1024;
++
++sub usage
++{
++ print STDERR
++"
++Debian GNU/Linux syslogd-listfiles. Copyright (c) 1997,2001
++Martin Schulze. This is free software; see the GNU General Public Licence
++version 2 or later for copying conditions. There is NO warranty.
++
++Usage: syslogd-listfiles <options>
++Options: -f file specifies another syslog.conf file
++ -a | --all list all files (including news)
++ --auth list all files containing auth.<some prio>
++ --ignore-size don't rotate files which got too large
++ --large nnn define what is large in bytes (default: 10MB)
++ --news include news logfiles, too
++ -w | --weekly use weekly pattern instead of daily
++ -s pattern skip files matching pattern
++";
++}
++
++# Test if the file was already rotated within the last n hours
++# with n=5
++#
++sub rotated
++{
++ my $file = shift;
++ my $nfile;
++ my $delta = 5 * 60 * 60;
++ my $now = time();
++
++ # /var/log/file -> /var/log/file.0
++ $nfile = $file . ".0";
++ if (-r $nfile) {
++ if (($now - (stat $nfile)[9]) > $delta) {
++ return 0;
++ } else {
++ return 1;
++ }
++ }
++
++ # /var/log/file -> /var/log/OLD/file.0
++ $nfile =~ s,(.*)/([^/]+),$1/OLD/$2,;
++ if (-r $nfile) {
++ if (($now - (stat $nfile)[9]) > $delta) {
++ return 0;
++ } else {
++ return 1;
++ }
++ }
++
++ return 0;
++}
++
++while (@ARGV) {
++ $_=shift(@ARGV);
++ if (m/^-f$/) {
++ $conf = shift(@ARGV);
++ } elsif (m/^-s$/) {
++ $opt_skip = shift(@ARGV);
++ } elsif (m/^--large$/) {
++ $opt_large = shift(@ARGV);
++ } elsif (m/^(--weekly|-w)$/) {
++ $opt_daily = 0;
++ } elsif (m/^(-a|--all)$/) {
++ $opt_all = 1;
++ } elsif (m/^--auth$/) {
++ $opt_auth = 1;
++ } elsif (m/^--ignore-size/) {
++ $opt_ign_size = 1;
++ } elsif (m/^--news$/) {
++ $opt_news = 1;
++ } else {
++ &usage();exit (0);
++ }
++}
++
++open (C, $conf) || die "Can't open $conf, $!";
++while (<C>) {
++ next if (/^(\#|$)/);
++ chomp;
++
++ s/\s*(\S.*)$/$1/ if ($line);
++
++ $line .= $_;
++ chop ($line) if (/\\$/);
++ if (!/\\$/) {
++ $line =~ s/\s+/\t/;
++ $line =~ s/\t-/\t/;
++ push (@lines, $line) if ($line =~ /\t\/(?!dev\/)/);
++ $line = "";
++ }
++}
++close (C);
++
++foreach $line (@lines) {
++ ($pat,$file) = split (/\t/,$line);
++
++ # These files are handled by news.daily from INN, so we ignore them
++ next if (!$opt_news && ($pat =~ /news\.(\*|crit|err|info|notice)/));
++
++ if ($opt_all) {
++ $output{$file} = 1;
++ } elsif ($opt_auth) {
++ $output{$file} = 1 if ($pat =~ /auth[^\.]*\.(?!none).*/);
++ } else {
++ $everything = ($pat =~ /\*\.\*/);
++ $output{$file} = 1 if (($everything && $opt_daily)
++ || (!$everything && !$opt_daily && !rotated ($file))
++ || (!$opt_ign_size && ((stat $file)[7] >= $opt_large) && $opt_daily)
++ );
++ }
++}
++
++foreach $file (keys (%output)) {
++ $skip = $file;
++ if (!length($opt_skip) || $skip !~ /$opt_skip/) {
++ printf "%s\n", $file;
++ }
++}
+--- sysklogd-1.4.1.orig/debian/syslogd-listfiles.8
++++ sysklogd-1.4.1/debian/syslogd-listfiles.8
+@@ -0,0 +1,95 @@
++.\" syslogd-listfiles.8 - generic routine for /etc/syslog.conf
++.\" Copyright (c) 1997,8,2001 Martin Schulze <joey@debian.org>
++.\"
++.\" 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.
++.\"
++.TH SYSLOGD-LISTFILES 8 "December 5th, 2001" "Debian Project" "Debian GNU/Linux"
++.SH NAME
++syslogd-listfiles \- list system logfiles
++.SH SYNOPSIS
++.B syslogd-listfiles
++.RB [ " \-a " | " \-\-all " ]
++.RB [ " \-\-auth " ]
++.RB [ " \-f "
++.I config file
++]
++.RB [ " \-s "
++.I pattern
++]
++.RB [ " \-\-large "
++.I nnn
++]
++.RB [ " \-\-news " ]
++.RB [ " \-w " | " \-\-weekly " ]
++.SH DESCRIPTION
++.B Sysklogd
++provides a modern mechanism to log system messages. This mechanism is
++controlled by the file
++.IR /etc/syslog.conf .
++Messages are divided into logfiles which can grow quite big.
++Therefore the logfiles need to be rotated once per day, per week or
++per month. On a Debian GNU/Linux system most of the files are rotated
++once per week.
++
++This program helps the rotation script to determine which logfiles
++need to be rotated and when. It takes care of news logfiles that are
++handled by the
++.B news.daily
++script from INN. In conjunction with the scripts in
++.IR /etc/cron.daily " and " /etc/cron.weekly
++it takes care of files with sensitive information.
++
++By default a list of files for daily rotation is generated. At the
++moment this option only reflects entries that contain "*.*" as
++facility.priority.
++
++.SH OPTIONS
++.TP
++.BR "\-a" ", " "\-\-all"
++List all logfiles and ignore all other rules.
++.TP
++.BI "\-f " "config file"
++Specify an alternative configuration file instead of
++.IR /etc/syslog.conf ","
++which is the default.
++.TP
++.BI "\-s " "pattern"
++Specify a regular expression for files that must not be listed.
++.TP
++.B "\-\-auth"
++Only list files containing sensitive information such as the one
++containing auth.*.
++.TP
++.BI "\-\-large " "nnn"
++Define the filesize for a large file. The size is provided in bytes.
++This value defaults to 1 megabyte.
++.TP
++.B \-\-ignore\-size
++Don't rotate files whose file size is larger than the regular limit
++(see above). This option is useful if you are postprocessing logfiles
++which would break if log files are rotated at a different date/time.
++.TP
++.B "\-\-news"
++Don't exclude news logfiles which are normally handled by the
++.B news.daily
++script from INN.
++.TP
++.BR "\-w" ", " "\-\-weekly"
++Generate the list for weekly rotation.
++.LP
++.SH SEE ALSO
++.BR syslog.conf (5),
++.BR syslogd (8),
++.BR savelog (8).
+--- sysklogd-1.4.1.orig/debian/technical
++++ sysklogd-1.4.1/debian/technical
+@@ -0,0 +1,10 @@
++ Some technical information - unsorted
++ -------------------------------------
++
++ 1. Logfiles in syslogd
++
++ As of version 1.3 syslogd doesn't come with a static array of
++ logfiles. Although the logfiles are still organized in an array.
++ This array is initialized when the configuration file (default is
++ /etc/syslog.conf) is read. Whenever a new line is read the
++ length of the array it prolongued.
diff --git a/source/a/syslinux/slack-desc b/source/a/syslinux/slack-desc
new file mode 100644
index 00000000..b7139920
--- /dev/null
+++ b/source/a/syslinux/slack-desc
@@ -0,0 +1,19 @@
+# HOW TO EDIT THIS FILE:
+# The "handy ruler" below makes it easier to edit a package description. Line
+# up the first '|' above the ':' following the base package name, and the '|' on
+# the right side marks the last column you can put a character in. You must make
+# exactly 11 lines for the formatting to be correct. It's also customary to
+# leave one space after the ':'.
+
+ |-----handy-ruler------------------------------------------------------|
+syslinux: syslinux (SYSLINUX/PXELINUX/ISOLINUX boot loaders)
+syslinux:
+syslinux: SYSLINUX is a boot loader for the Linux operating system which
+syslinux: operates off an MS-DOS/Windows FAT filesystem. This is used by the
+syslinux: Slackware makebootdisk script to create system boot floppies.
+syslinux:
+syslinux: Also included are PXELINUX and ISOLINUX, boot loaders for booting from
+syslinux: a network server or CD-ROM.
+syslinux:
+syslinux: SYSLINUX, PXELINUX, and ISOLINUX were written by H. Peter Anvin.
+syslinux:
diff --git a/source/a/syslinux/syslinux-3.52.tar.bz2.sign b/source/a/syslinux/syslinux-3.52.tar.bz2.sign
new file mode 100644
index 00000000..1d319cd3
--- /dev/null
+++ b/source/a/syslinux/syslinux-3.52.tar.bz2.sign
@@ -0,0 +1,8 @@
+-----BEGIN PGP SIGNATURE-----
+Version: GnuPG v1.4.7 (GNU/Linux)
+Comment: See http://www.kernel.org/signature.html for info
+
+iD8DBQBG+aOayGugalF9Dw4RAtvoAJ93vpkYgJsPYBI95vXW1/qLIQC2lwCcCOPf
+NhphOdhGCaUwMdqZH9tahC0=
+=OS5y
+-----END PGP SIGNATURE-----
diff --git a/source/a/syslinux/syslinux.SlackBuild b/source/a/syslinux/syslinux.SlackBuild
new file mode 100755
index 00000000..e084f96f
--- /dev/null
+++ b/source/a/syslinux/syslinux.SlackBuild
@@ -0,0 +1,94 @@
+#!/bin/sh
+
+# Copyright 2006, 2007, 2008, 2009 Patrick J. Volkerding, Sebeka, MN, USA
+# All rights reserved.
+#
+# Redistribution and use of this script, with or without modification, is
+# permitted provided that the following conditions are met:
+#
+# 1. Redistributions of this script must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# 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.
+
+
+PKGNAM=syslinux
+VERSION=${VERSION:-3.52}
+ARCH=${ARCH:-x86_64}
+BUILD=${BUILD:-1}
+
+CWD=$(pwd)
+TMP=${TMP:-/tmp}
+PKG=$TMP/package-${PKGNAM}
+rm -rf $PKG
+mkdir -p $TMP $PKG
+
+cd $TMP
+rm -rf ${PKGNAM}-${VERSION}
+tar xjvf $CWD/${PKGNAM}-$VERSION.tar.bz2 || exit 1
+cd ${PKGNAM}-$VERSION
+
+# Make sure ownerships and permissions are sane:
+chown -R root:root .
+find . \
+ \( -perm 2777 -o -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \
+ -exec chmod 755 {} \; -o \
+ \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
+ -exec chmod 644 {} \;
+
+# Build:
+make -j4 || exit 1
+
+make install-all INSTALLROOT=/tmp/package-syslinux
+make mkdiskimage
+make libsyslinux.a
+cp -a unix/syslinux-nomtools mkdiskimage $PKG/usr/bin
+chmod 755 $PKG/usr/bin/*
+
+mkdir -p $PKG/usr/lib
+cp -a libsyslinux.a $PKG/usr/lib
+mkdir -p $PKG/usr/include
+cp -a syslinux.h $PKG/usr/include
+
+rm -rf $PKG/usr/lib/syslinux/com32
+
+# Compress and link manpages, if any:
+if [ -d $PKG/usr/man ]; then
+ ( cd $PKG/usr/man
+ for manpagedir in $(find . -type d -name "man*") ; do
+ ( cd $manpagedir
+ for eachpage in $( find . -type l -maxdepth 1) ; do
+ ln -s $( readlink $eachpage ).gz $eachpage.gz
+ rm $eachpage
+ done
+ gzip -9 *.?
+ )
+ done
+ )
+fi
+
+# Add a documentation directory:
+mkdir -p $PKG/usr/doc/${PKGNAM}-$VERSION
+cp -a \
+ BUGS COPYING NEWS README* TODO \
+ distrib.doc isolinux.doc pxelinux.doc syslinux.doc \
+ com32/LICENSE \
+ memdisk/memdisk.doc \
+ menu \
+ $PKG/usr/doc/${PKGNAM}-$VERSION
+
+mkdir -p $PKG/install
+cat $CWD/slack-desc > $PKG/install/slack-desc
+
+cd $TMP/package-${PKGNAM}
+makepkg -l y -c n $TMP/${PKGNAM}-$VERSION-$ARCH-$BUILD.txz
+
diff --git a/source/a/sysvinit-functions/README.functions b/source/a/sysvinit-functions/README.functions
new file mode 100644
index 00000000..005012f3
--- /dev/null
+++ b/source/a/sysvinit-functions/README.functions
@@ -0,0 +1,17 @@
+
+If you're reading this in /etc/init.d/, Slackware's real init directory is
+/etc/rc.d/. Maybe you already knew this, but it never hurts to say. :-)
+
+This script was taken from Fedora (and is presumably licensed under the GPL).
+While I don't see Slackware init scripts making much use of it (but use it
+if you wish), some third party init scripts (such as for commercial software
+designed to run on Red Hat based systems) expect this script and use it in
+their own init scripts, so it's a good idea to make it available here.
+
+These functions are provided solely for commercial (or other) software that
+expects to find "Red Hat-isms". I wouldn't use them to write new init
+scripts (personally), but if you've had experience with them in the past
+and like them, by all means feel free.
+
+It's planned to continue support for them.
+
diff --git a/source/a/sysvinit-functions/doinst.sh b/source/a/sysvinit-functions/doinst.sh
new file mode 100644
index 00000000..bbeb4a57
--- /dev/null
+++ b/source/a/sysvinit-functions/doinst.sh
@@ -0,0 +1,23 @@
+( cd etc
+ for dir in init.d rc0.d rc1.d rc2.d rc3.d rc4.d rc5.d rc6.d ; do
+ if [ ! -L $dir -a -d $dir ]; then
+ mv ${dir} ${dir}.bak
+ fi
+ done
+)
+( cd etc ; rm -rf init.d )
+( cd etc ; ln -sf rc.d/init.d init.d )
+( cd etc ; rm -rf rc0.d )
+( cd etc ; ln -sf rc.d/rc0.d rc0.d )
+( cd etc ; rm -rf rc1.d )
+( cd etc ; ln -sf rc.d/rc1.d rc1.d )
+( cd etc ; rm -rf rc2.d )
+( cd etc ; ln -sf rc.d/rc2.d rc2.d )
+( cd etc ; rm -rf rc3.d )
+( cd etc ; ln -sf rc.d/rc3.d rc3.d )
+( cd etc ; rm -rf rc4.d )
+( cd etc ; ln -sf rc.d/rc4.d rc4.d )
+( cd etc ; rm -rf rc5.d )
+( cd etc ; ln -sf rc.d/rc5.d rc5.d )
+( cd etc ; rm -rf rc6.d )
+( cd etc ; ln -sf rc.d/rc6.d rc6.d )
diff --git a/source/a/sysvinit-functions/functions b/source/a/sysvinit-functions/functions
new file mode 100644
index 00000000..580216d1
--- /dev/null
+++ b/source/a/sysvinit-functions/functions
@@ -0,0 +1,577 @@
+# -*-Shell-script-*-
+#
+# functions This file contains functions to be used by most or all
+# shell scripts in the /etc/init.d directory.
+#
+
+TEXTDOMAIN=initscripts
+
+# Make sure umask is sane
+umask 022
+
+# Set up a default search path.
+PATH="/sbin:/usr/sbin:/bin:/usr/bin"
+export PATH
+
+# Get a sane screen width
+[ -z "${COLUMNS:-}" ] && COLUMNS=80
+
+[ -z "${CONSOLETYPE:-}" ] && CONSOLETYPE="`/sbin/consoletype`"
+
+if [ -f /etc/sysconfig/i18n -a -z "${NOLOCALE:-}" ] ; then
+ . /etc/profile.d/lang.sh
+fi
+
+# Read in our configuration
+if [ -z "${BOOTUP:-}" ]; then
+ if [ -f /etc/sysconfig/init ]; then
+ . /etc/sysconfig/init
+ else
+ # This all seem confusing? Look in /etc/sysconfig/init,
+ # or in /usr/doc/initscripts-*/sysconfig.txt
+ BOOTUP=color
+ RES_COL=60
+ MOVE_TO_COL="echo -en \\033[${RES_COL}G"
+ SETCOLOR_SUCCESS="echo -en \\033[1;32m"
+ SETCOLOR_FAILURE="echo -en \\033[1;31m"
+ SETCOLOR_WARNING="echo -en \\033[1;33m"
+ SETCOLOR_NORMAL="echo -en \\033[0;39m"
+ LOGLEVEL=1
+ fi
+ if [ "$CONSOLETYPE" = "serial" ]; then
+ BOOTUP=serial
+ MOVE_TO_COL=
+ SETCOLOR_SUCCESS=
+ SETCOLOR_FAILURE=
+ SETCOLOR_WARNING=
+ SETCOLOR_NORMAL=
+ fi
+fi
+
+if [ "${BOOTUP:-}" != "verbose" ]; then
+ INITLOG_ARGS="-q"
+else
+ INITLOG_ARGS=
+fi
+
+# Interpret escape sequences in an fstab entry
+fstab_decode_str() {
+ fstab-decode echo "$1"
+}
+
+# Check if $pid (could be plural) are running
+checkpid() {
+ local i
+
+ for i in $* ; do
+ [ -d "/proc/$i" ] && return 0
+ done
+ return 1
+}
+
+# __umount_loop awk_program fstab_file first_msg retry_msg umount_args
+# awk_program should process fstab_file and return a list of fstab-encoded
+# paths; it doesn't have to handle comments in fstab_file.
+__umount_loop() {
+ local remaining sig=
+ local retry=3
+
+ remaining=$(LC_ALL=C awk "/^#/ {next} $1" "$2" | sort -r)
+ while [ -n "$remaining" -a "$retry" -gt 0 ]; do
+ if [ "$retry" -eq 3 ]; then
+ action "$3" fstab-decode umount $5 $remaining
+ else
+ action "$4" fstab-decode umount $5 $remaining
+ fi
+ sleep 2
+ remaining=$(LC_ALL=C awk "/^#/ {next} $1" "$2" | sort -r)
+ [ -z "$remaining" ] && break
+ fstab-decode /sbin/fuser -k -m $sig $remaining >/dev/null
+ sleep 5
+ retry=$(($retry -1))
+ sig=-9
+ done
+}
+
+# Similar to __umount loop above, specialized for loopback devices
+__umount_loopback_loop() {
+ local remaining devremaining sig=
+ local retry=3
+
+ remaining=$(awk '$1 ~ /^\/dev\/loop/ && $2 != "/" {print $2}' /proc/mounts)
+ devremaining=$(awk '$1 ~ /^\/dev\/loop/ && $2 != "/" {print $1}' /proc/mounts)
+ while [ -n "$remaining" -a "$retry" -gt 0 ]; do
+ if [ "$retry" -eq 3 ]; then
+ action $"Unmounting loopback filesystems: " \
+ fstab-decode umount $remaining
+ else
+ action $"Unmounting loopback filesystems (retry):" \
+ fstab-decode umount $remaining
+ fi
+ for dev in $devremaining ; do
+ losetup $dev > /dev/null 2>&1 && \
+ action $"Detaching loopback device $dev: " \
+ losetup -d $dev
+ done
+ remaining=$(awk '$1 ~ /^\/dev\/loop/ && $2 != "/" {print $2}' /proc/mounts)
+ devremaining=$(awk '$1 ~ /^\/dev\/loop/ && $2 != "/" {print $1}' /proc/mounts)
+ [ -z "$remaining" ] && break
+ fstab-decode /sbin/fuser -k -m $sig $remaining >/dev/null
+ sleep 5
+ retry=$(($retry -1))
+ sig=-9
+ done
+}
+
+# __proc_pids {program} [pidfile]
+# Set $pid to pids from /var/run* for {program}. $pid should be declared
+# local in the caller.
+# Returns LSB exit code for the 'status' action.
+__pids_var_run() {
+ local base=${1##*/}
+ local pid_file=${2:-/var/run/$base.pid}
+
+ pid=
+ if [ -f "$pid_file" ] ; then
+ local line p
+ read line < "$pid_file"
+ for p in $line ; do
+ [ -z "${p//[0-9]/}" -a -d "/proc/$p" ] && pid="$pid $p"
+ done
+ if [ -n "$pid" ]; then
+ return 0
+ fi
+ return 1 # "Program is dead and /var/run pid file exists"
+ fi
+ return 3 # "Program is not running"
+}
+
+# Output PIDs of matching processes, found using pidof
+__pids_pidof() {
+ pidof -c -o $$ -o $PPID -o %PPID -x "$1" || \
+ pidof -c -o $$ -o $PPID -o %PPID -x "${1##*/}"
+}
+
+
+# A function to start a program.
+daemon() {
+ # Test syntax.
+ local gotbase= force= nicelevel corelimit
+ local pid base= user= nice= bg= pid_file=
+ nicelevel=0
+ while [ "$1" != "${1##[-+]}" ]; do
+ case $1 in
+ '') echo $"$0: Usage: daemon [+/-nicelevel] {program}"
+ return 1;;
+ --check)
+ base=$2
+ gotbase="yes"
+ shift 2
+ ;;
+ --check=?*)
+ base=${1#--check=}
+ gotbase="yes"
+ shift
+ ;;
+ --user)
+ user=$2
+ shift 2
+ ;;
+ --user=?*)
+ user=${1#--user=}
+ shift
+ ;;
+ --pidfile)
+ pid_file=$2
+ shift 2
+ ;;
+ --pidfile=?*)
+ pid_file=${1#--pidfile=}
+ shift
+ ;;
+ --force)
+ force="force"
+ shift
+ ;;
+ [-+][0-9]*)
+ nice="nice -n $1"
+ shift
+ ;;
+ *) echo $"$0: Usage: daemon [+/-nicelevel] {program}"
+ return 1;;
+ esac
+ done
+
+ # Save basename.
+ [ -z "$gotbase" ] && base=${1##*/}
+
+ # See if it's already running. Look *only* at the pid file.
+ __pids_var_run "$base" "$pid_file"
+
+ [ -n "$pid" -a -z "$force" ] && return
+
+ # make sure it doesn't core dump anywhere unless requested
+ corelimit="ulimit -S -c ${DAEMON_COREFILE_LIMIT:-0}"
+
+ # if they set NICELEVEL in /etc/sysconfig/foo, honor it
+ [ -n "${NICELEVEL:-}" ] && nice="nice -n $NICELEVEL"
+
+ # Echo daemon
+ [ "${BOOTUP:-}" = "verbose" -a -z "${LSB:-}" ] && echo -n " $base"
+
+ # And start it up.
+ if [ -z "$user" ]; then
+ $nice /bin/bash -c "$corelimit >/dev/null 2>&1 ; $*"
+ else
+ $nice runuser -s /bin/bash - $user -c "$corelimit >/dev/null 2>&1 ; $*"
+ fi
+ [ "$?" -eq 0 ] && success $"$base startup" || failure $"$base startup"
+}
+
+# A function to stop a program.
+killproc() {
+ local RC killlevel= base pid pid_file= delay
+
+ RC=0; delay=3
+ # Test syntax.
+ if [ "$#" -eq 0 ]; then
+ echo $"Usage: killproc [-p pidfile] [ -d delay] {program} [-signal]"
+ return 1
+ fi
+ if [ "$1" = "-p" ]; then
+ pid_file=$2
+ shift 2
+ fi
+ if [ "$1" = "-d" ]; then
+ delay=$2
+ shift 2
+ fi
+
+
+ # check for second arg to be kill level
+ [ -n "${2:-}" ] && killlevel=$2
+
+ # Save basename.
+ base=${1##*/}
+
+ # Find pid.
+ __pids_var_run "$1" "$pid_file"
+ if [ -z "$pid_file" -a -z "$pid" ]; then
+ pid="$(__pids_pidof "$1")"
+ fi
+
+ # Kill it.
+ if [ -n "$pid" ] ; then
+ [ "$BOOTUP" = "verbose" -a -z "${LSB:-}" ] && echo -n "$base "
+ if [ -z "$killlevel" ] ; then
+ if checkpid $pid 2>&1; then
+ # TERM first, then KILL if not dead
+ kill -TERM $pid >/dev/null 2>&1
+ usleep 100000
+ if checkpid $pid && sleep 1 &&
+ checkpid $pid && sleep $delay &&
+ checkpid $pid ; then
+ kill -KILL $pid >/dev/null 2>&1
+ usleep 100000
+ fi
+ fi
+ checkpid $pid
+ RC=$?
+ [ "$RC" -eq 0 ] && failure $"$base shutdown" || success $"$base shutdown"
+ RC=$((! $RC))
+ # use specified level only
+ else
+ if checkpid $pid; then
+ kill $killlevel $pid >/dev/null 2>&1
+ RC=$?
+ [ "$RC" -eq 0 ] && success $"$base $killlevel" || failure $"$base $killlevel"
+ elif [ -n "${LSB:-}" ]; then
+ RC=7 # Program is not running
+ fi
+ fi
+ else
+ if [ -n "${LSB:-}" -a -n "$killlevel" ]; then
+ RC=7 # Program is not running
+ else
+ failure $"$base shutdown"
+ RC=0
+ fi
+ fi
+
+ # Remove pid file if any.
+ if [ -z "$killlevel" ]; then
+ rm -f "${pid_file:-/var/run/$base.pid}"
+ fi
+ return $RC
+}
+
+# A function to find the pid of a program. Looks *only* at the pidfile
+pidfileofproc() {
+ local pid
+
+ # Test syntax.
+ if [ "$#" = 0 ] ; then
+ echo $"Usage: pidfileofproc {program}"
+ return 1
+ fi
+
+ __pids_var_run "$1"
+ [ -n "$pid" ] && echo $pid
+ return 0
+}
+
+# A function to find the pid of a program.
+pidofproc() {
+ local RC pid pid_file=
+
+ # Test syntax.
+ if [ "$#" = 0 ]; then
+ echo $"Usage: pidofproc [-p pidfile] {program}"
+ return 1
+ fi
+ if [ "$1" = "-p" ]; then
+ pid_file=$2
+ shift 2
+ fi
+ fail_code=3 # "Program is not running"
+
+ # First try "/var/run/*.pid" files
+ __pids_var_run "$1" "$pid_file"
+ RC=$?
+ if [ -n "$pid" ]; then
+ echo $pid
+ return 0
+ fi
+
+ [ -n "$pid_file" ] && return $RC
+ __pids_pidof "$1" || return $RC
+}
+
+status() {
+ local base pid pid_file=
+
+ # Test syntax.
+ if [ "$#" = 0 ] ; then
+ echo $"Usage: status [-p pidfile] {program}"
+ return 1
+ fi
+ if [ "$1" = "-p" ]; then
+ pid_file=$2
+ shift 2
+ fi
+ base=${1##*/}
+
+ # First try "pidof"
+ pid="$(__pids_pidof "$1")"
+ if [ -n "$pid" ]; then
+ echo $"${base} (pid $pid) is running..."
+ return 0
+ fi
+
+ # Next try "/var/run/*.pid" files
+ __pids_var_run "$1" "$pid_file"
+ case "$?" in
+ 0)
+ echo $"${base} (pid $pid) is running..."
+ return 0
+ ;;
+ 1)
+ echo $"${base} dead but pid file exists"
+ return 1
+ ;;
+ esac
+ # See if /var/lock/subsys/${base} exists
+ if [ -f /var/lock/subsys/${base} ]; then
+ echo $"${base} dead but subsys locked"
+ return 2
+ fi
+ echo $"${base} is stopped"
+ return 3
+}
+
+echo_success() {
+ [ "$BOOTUP" = "color" ] && $MOVE_TO_COL
+ echo -n "["
+ [ "$BOOTUP" = "color" ] && $SETCOLOR_SUCCESS
+ echo -n $" OK "
+ [ "$BOOTUP" = "color" ] && $SETCOLOR_NORMAL
+ echo -n "]"
+ echo -ne "\r"
+ return 0
+}
+
+echo_failure() {
+ [ "$BOOTUP" = "color" ] && $MOVE_TO_COL
+ echo -n "["
+ [ "$BOOTUP" = "color" ] && $SETCOLOR_FAILURE
+ echo -n $"FAILED"
+ [ "$BOOTUP" = "color" ] && $SETCOLOR_NORMAL
+ echo -n "]"
+ echo -ne "\r"
+ return 1
+}
+
+echo_passed() {
+ [ "$BOOTUP" = "color" ] && $MOVE_TO_COL
+ echo -n "["
+ [ "$BOOTUP" = "color" ] && $SETCOLOR_WARNING
+ echo -n $"PASSED"
+ [ "$BOOTUP" = "color" ] && $SETCOLOR_NORMAL
+ echo -n "]"
+ echo -ne "\r"
+ return 1
+}
+
+echo_warning() {
+ [ "$BOOTUP" = "color" ] && $MOVE_TO_COL
+ echo -n "["
+ [ "$BOOTUP" = "color" ] && $SETCOLOR_WARNING
+ echo -n $"WARNING"
+ [ "$BOOTUP" = "color" ] && $SETCOLOR_NORMAL
+ echo -n "]"
+ echo -ne "\r"
+ return 1
+}
+
+# Inform the graphical boot of our current state
+update_boot_stage() {
+ if [ "$GRAPHICAL" = "yes" -a -x /usr/bin/rhgb-client ]; then
+ /usr/bin/rhgb-client --update="$1"
+ fi
+ return 0
+}
+
+# Log that something succeeded
+success() {
+ #if [ -z "${IN_INITLOG:-}" ]; then
+ # initlog $INITLOG_ARGS -n $0 -s "$1" -e 1
+ #fi
+ [ "$BOOTUP" != "verbose" -a -z "${LSB:-}" ] && echo_success
+ return 0
+}
+
+# Log that something failed
+failure() {
+ local rc=$?
+ #if [ -z "${IN_INITLOG:-}" ]; then
+ # initlog $INITLOG_ARGS -n $0 -s "$1" -e 2
+ #fi
+ [ "$BOOTUP" != "verbose" -a -z "${LSB:-}" ] && echo_failure
+ [ -x /usr/bin/rhgb-client ] && /usr/bin/rhgb-client --details=yes
+ return $rc
+}
+
+# Log that something passed, but may have had errors. Useful for fsck
+passed() {
+ local rc=$?
+ #if [ -z "${IN_INITLOG:-}" ]; then
+ # initlog $INITLOG_ARGS -n $0 -s "$1" -e 1
+ #fi
+ [ "$BOOTUP" != "verbose" -a -z "${LSB:-}" ] && echo_passed
+ return $rc
+}
+
+# Log a warning
+warning() {
+ local rc=$?
+ #if [ -z "${IN_INITLOG:-}" ]; then
+ # initlog $INITLOG_ARGS -n $0 -s "$1" -e 1
+ #fi
+ [ "$BOOTUP" != "verbose" -a -z "${LSB:-}" ] && echo_warning
+ return $rc
+}
+
+# Run some action. Log its output.
+action() {
+ local STRING rc
+
+ STRING=$1
+ echo -n "$STRING "
+ if [ "${RHGB_STARTED:-}" != "" -a -w /etc/rhgb/temp/rhgb-console ]; then
+ echo -n "$STRING " > /etc/rhgb/temp/rhgb-console
+ fi
+ shift
+ "$@" && success $"$STRING" || failure $"$STRING"
+ rc=$?
+ echo
+ if [ "${RHGB_STARTED:-}" != "" -a -w /etc/rhgb/temp/rhgb-console ]; then
+ if [ "$rc" = "0" ]; then
+ echo_success > /etc/rhgb/temp/rhgb-console
+ else
+ echo_failure > /etc/rhgb/temp/rhgb-console
+ [ -x /usr/bin/rhgb-client ] && /usr/bin/rhgb-client --details=yes
+ fi
+ echo > /etc/rhgb/temp/rhgb-console
+ fi
+ return $rc
+}
+
+# returns OK if $1 contains $2
+strstr() {
+ [ "${1#*$2*}" = "$1" ] && return 1
+ return 0
+}
+
+# Confirm whether we really want to run this service
+confirm() {
+ [ -x /usr/bin/rhgb-client ] && /usr/bin/rhgb-client --details=yes
+ while : ; do
+ echo -n $"Start service $1 (Y)es/(N)o/(C)ontinue? [Y] "
+ read answer
+ if strstr $"yY" "$answer" || [ "$answer" = "" ] ; then
+ return 0
+ elif strstr $"cC" "$answer" ; then
+ rm -f /var/run/confirm
+ [ -x /usr/bin/rhgb-client ] && /usr/bin/rhgb-client --details=no
+ return 2
+ elif strstr $"nN" "$answer" ; then
+ return 1
+ fi
+ done
+}
+
+# resolve a device node to its major:minor numbers in decimal or hex
+get_numeric_dev() {
+(
+ fmt="%d:%d"
+ if [ "$1" == "hex" ]; then
+ fmt="%x:%x"
+ fi
+ ls -lH "$2" | awk '{ sub(/,/, "", $5); printf("'"$fmt"'", $5, $6); }'
+) 2>/dev/null
+}
+
+# find the working name for a running dm device with the same table as one
+# that dmraid would create
+resolve_dm_name() {
+(
+ name="$1"
+
+ line=$(/sbin/dmraid -ay -t --ignorelocking | \
+ egrep -iv "no block devices found|No RAID disks" | \
+ awk -F ':' "{ if (\$1 ~ /^$name$/) { print \$2; }}")
+ for x in $line ; do
+ if [[ "$x" =~ "^/dev/" ]] ; then
+ majmin=$(get_numeric_dev dec $x)
+ line=$(echo "$line" | sed -e "s,$x\( \|$\),$majmin\1,g")
+ fi
+ done
+ line=$(echo "$line" | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//' \
+ -e 's/ core [12] [[:digit:]]\+ / core [12] [[:digit:]]\\+ /')
+ /sbin/dmsetup table | \
+ sed -n -e "s/.*\(no block devices found\|No devices found\).*//" \
+ -e "s/\(^[^:]\+\): $line\( \+$\|$\)/\1/p"
+) 2>/dev/null
+}
+
+# Check whether file $1 is a backup or rpm-generated file and should be ignored
+is_ignored_file() {
+ case "$1" in
+ *~ | *.bak | *.orig | *.rpmnew | *.rpmorig | *.rpmsave)
+ return 0
+ ;;
+ esac
+ return 1
+}
+# A sed expression to filter out the files that is_ignored_file recognizes
+__sed_discard_ignored_files='/\(~\|\.bak\|\.orig\|\.rpmnew\|\.rpmorig\|\.rpmsave\)$/d'
diff --git a/source/a/sysvinit-functions/slack-desc b/source/a/sysvinit-functions/slack-desc
new file mode 100644
index 00000000..7d8e6182
--- /dev/null
+++ b/source/a/sysvinit-functions/slack-desc
@@ -0,0 +1,19 @@
+# HOW TO EDIT THIS FILE:
+# The "handy ruler" below makes it easier to edit a package description. Line
+# up the first '|' above the ':' following the base package name, and the '|'
+# on the right side marks the last column you can put a character in. You must
+# make exactly 11 lines for the formatting to be correct. It's also
+# customary to leave one space after the ':'.
+
+ |-----handy-ruler------------------------------------------------------|
+sysvinit-functions: sysvinit-functions (/etc/init.d/functions)
+sysvinit-functions:
+sysvinit-functions: This is the /etc/init.d/functions file, the typical sysvinit-style
+sysvinit-functions: directories, and a few supporting binaries. Using this system,
+sysvinit-functions: subdirectories of /etc/rc.d/ are searched for scripts (which are
+sysvinit-functions: usually symlinks to the script in /etc/init.d/ or /etc/rc.d/init.d/).
+sysvinit-functions: The links must start with S to start a script or K to stop (kill) it.
+sysvinit-functions:
+sysvinit-functions: For the most part, these are useful for running software developed
+sysvinit-functions: for other versions of Linux.
+sysvinit-functions:
diff --git a/source/a/sysvinit-functions/sysvinit-functions.SlackBuild b/source/a/sysvinit-functions/sysvinit-functions.SlackBuild
new file mode 100755
index 00000000..9af7f9ec
--- /dev/null
+++ b/source/a/sysvinit-functions/sysvinit-functions.SlackBuild
@@ -0,0 +1,79 @@
+#!/bin/sh
+
+# Copyright 2005-2009 Patrick J. Volkerding, Sebeka, Minnesota, USA
+# All rights reserved.
+#
+# Redistribution and use of this script, with or without modification, is
+# permitted provided that the following conditions are met:
+#
+# 1. Redistributions of this script must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# 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.
+
+
+VERSION=${VERSION:-8.53}
+ARCH=${ARCH:-x86_64}
+BUILD=${BUILD:-2}
+
+CWD=$(pwd)
+TMP=${TMP:-/tmp}
+PKG=$TMP/package-sysvinit-functions
+
+rm -rf $PKG
+mkdir -p $TMP $PKG
+
+# The functions that ship in /etc/rc.d/init.d are used mainly
+# by Red Hat (and derived) systems. Most users will not need
+# them, but since some commerical software makes the assuption
+# that /etc/rc.d/init.d/functions will exist (and uses it),
+# shipping at least it and the sysvinit runlevel directories
+# will probably make life easier for everybody. We'll maybe
+# ever consider splitting a few of the functions of the old
+# venerable BSD-style init scripts into runlevel scripts (if
+# it looks like it will make system maintainance easier).
+
+# Build supporting binaries:
+cd $TMP
+rm -rf function-src-$VERSION
+# A small patch was applied to initlog to shut it the %^@& up.
+tar xjf $CWD/function-src-$VERSION.tar.bz2 || exit 1
+cd function-src-$VERSION
+make
+find . | xargs file | grep "executable" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
+mkdir -p $PKG/bin $PKG/sbin $PKG/usr/man/man{1,8}
+make install DESTDIR=$PKG
+gzip -9 $PKG/usr/man/man?/*.?
+
+# The FHS/LSB is a little bit unclear as to what to do here --
+# /etc/rc.d/init.d has been declared "deprecated" for no good
+# reason at all (commercial vendors couldn't find /etc/rc.d?),
+# so we'll make both /etc/init.d and /etc/rc.d/init.d with the
+# same contents. Hopefully this will make all the programs
+# happy.
+mkdir -p $PKG/etc/rc.d/init.d
+for file in $CWD/README.functions $CWD/functions ; do
+ cat $file > $PKG/etc/rc.d/init.d/$(basename $file)
+done
+chmod 755 $PKG/etc/rc.d/init.d/functions
+
+# Make empty runlevel directories:
+mkdir -p $PKG/etc/rc.d/rc{0,1,2,3,4,5,6}.d
+
+mkdir -p $PKG/install
+zcat $CWD/doinst.sh.gz > $PKG/install/doinst.sh
+cat $CWD/slack-desc > $PKG/install/slack-desc
+
+# Build the package:
+cd $PKG
+makepkg -l y -c n $TMP/sysvinit-functions-$VERSION-$ARCH-$BUILD.txz
+
diff --git a/source/a/sysvinit-scripts/doinst.sh b/source/a/sysvinit-scripts/doinst.sh
new file mode 100644
index 00000000..ff0ffc28
--- /dev/null
+++ b/source/a/sysvinit-scripts/doinst.sh
@@ -0,0 +1,25 @@
+
+config() {
+ NEW="$1"
+ OLD="`dirname $NEW`/`basename $NEW .new`"
+ # If there's no config file by that name, mv it over:
+ if [ ! -r $OLD ]; then
+ mv $NEW $OLD
+ elif [ "`cat $OLD | md5sum`" = "`cat $NEW | md5sum`" ]; then # toss the redundant copy
+ rm $NEW
+ fi
+ # Otherwise, we leave the .new copy for the admin to consider...
+}
+# Slackware scripts
+config etc/inittab.new
+config etc/rc.d/rc.4.new
+config etc/rc.d/rc.6.new
+config etc/rc.d/rc.K.new
+config etc/rc.d/rc.M.new
+config etc/rc.d/rc.S.new
+config etc/rc.d/rc.local.new
+config etc/rc.d/rc.sysvinit.new
+
+( cd etc/rc.d ; rm -rf rc.0 )
+( cd etc/rc.d ; ln -sf rc.6 rc.0 )
+
diff --git a/source/a/sysvinit-scripts/scripts/fetch-rescan-scsi-bus.sh b/source/a/sysvinit-scripts/scripts/fetch-rescan-scsi-bus.sh
new file mode 100644
index 00000000..29dccf78
--- /dev/null
+++ b/source/a/sysvinit-scripts/scripts/fetch-rescan-scsi-bus.sh
@@ -0,0 +1 @@
+lftpget http://www.garloff.de/kurt/linux/rescan-scsi-bus.sh
diff --git a/source/a/sysvinit-scripts/scripts/inittab b/source/a/sysvinit-scripts/scripts/inittab
new file mode 100644
index 00000000..862f704c
--- /dev/null
+++ b/source/a/sysvinit-scripts/scripts/inittab
@@ -0,0 +1,74 @@
+#
+# inittab This file describes how the INIT process should set up
+# the system in a certain run-level.
+#
+# Version: @(#)inittab 2.04 17/05/93 MvS
+# 2.10 02/10/95 PV
+# 3.00 02/06/1999 PV
+# 4.00 04/10/2002 PV
+#
+# Author: Miquel van Smoorenburg, <miquels@drinkel.nl.mugnet.org>
+# Modified by: Patrick J. Volkerding, <volkerdi@slackware.com>
+#
+
+# These are the default runlevels in Slackware:
+# 0 = halt
+# 1 = single user mode
+# 2 = unused (but configured the same as runlevel 3)
+# 3 = multiuser mode (default Slackware runlevel)
+# 4 = X11 with KDM/GDM/XDM (session managers)
+# 5 = unused (but configured the same as runlevel 3)
+# 6 = reboot
+
+# Default runlevel. (Do not set to 0 or 6)
+id:3:initdefault:
+
+# System initialization (runs when system boots).
+si:S:sysinit:/etc/rc.d/rc.S
+
+# Script to run when going single user (runlevel 1).
+su:1S:wait:/etc/rc.d/rc.K
+
+# Script to run when going multi user.
+rc:2345:wait:/etc/rc.d/rc.M
+
+# What to do at the "Three Finger Salute".
+ca::ctrlaltdel:/sbin/shutdown -t5 -r now
+
+# Runlevel 0 halts the system.
+l0:0:wait:/etc/rc.d/rc.0
+
+# Runlevel 6 reboots the system.
+l6:6:wait:/etc/rc.d/rc.6
+
+# What to do when power fails.
+pf::powerfail:/sbin/genpowerfail start
+
+# If power is back, cancel the running shutdown.
+pg::powerokwait:/sbin/genpowerfail stop
+
+# These are the standard console login getties in multiuser mode:
+c1:1235:respawn:/sbin/agetty 38400 tty1 linux
+c2:1235:respawn:/sbin/agetty 38400 tty2 linux
+c3:1235:respawn:/sbin/agetty 38400 tty3 linux
+c4:1235:respawn:/sbin/agetty 38400 tty4 linux
+c5:1235:respawn:/sbin/agetty 38400 tty5 linux
+c6:12345:respawn:/sbin/agetty 38400 tty6 linux
+
+# Local serial lines:
+#s1:12345:respawn:/sbin/agetty -L ttyS0 9600 vt100
+#s2:12345:respawn:/sbin/agetty -L ttyS1 9600 vt100
+
+# Dialup lines:
+#d1:12345:respawn:/sbin/agetty -mt60 38400,19200,9600,2400,1200 ttyS0 vt100
+#d2:12345:respawn:/sbin/agetty -mt60 38400,19200,9600,2400,1200 ttyS1 vt100
+
+# Runlevel 4 used to be for an X window only system, until we discovered
+# that it throws init into a loop that keeps your load avg at least 1 all
+# the time. Thus, there is now one getty opened on tty6. Hopefully no one
+# will notice. ;^)
+# It might not be bad to have one text console anyway, in case something
+# happens to X.
+x1:4:respawn:/etc/rc.d/rc.4
+
+# End of /etc/inittab
diff --git a/source/a/sysvinit-scripts/scripts/rc.4 b/source/a/sysvinit-scripts/scripts/rc.4
new file mode 100644
index 00000000..be8a9c74
--- /dev/null
+++ b/source/a/sysvinit-scripts/scripts/rc.4
@@ -0,0 +1,48 @@
+#! /bin/sh
+#
+# rc.4 This file is executed by init(8) when the system is being
+# initialized for run level 4 (XDM)
+#
+# Version: @(#)/etc/rc.d/rc.4 2.00 02/17/93
+#
+# Author: Fred N. van Kempen, <waltje@uwalt.nl.mugnet.org>
+# At least 47% rewritten by: Patrick J. Volkerding <volkerdi@slackware.com>
+#
+
+# Tell the viewers what's going to happen...
+echo "Starting up X11 session manager..."
+
+# Try to use GNOME's gdm session manager. This comes first because if
+# gdm is on the machine then the user probably installed it and wants
+# to use it by default:
+if [ -x /usr/bin/gdm ]; then
+ exec /usr/bin/gdm -nodaemon
+fi
+
+# Someone thought that gdm looked prettier in /usr/sbin,
+# so look there, too:
+if [ -x /usr/sbin/gdm ]; then
+ exec /usr/sbin/gdm -nodaemon
+fi
+
+# Not there? OK, try to use KDE's kdm session manager:
+if [ -x /opt/kde/bin/kdm ]; then
+ exec /opt/kde/bin/kdm -nodaemon
+elif [ -x /usr/bin/kdm ]; then
+ exec /usr/bin/kdm -nodaemon
+fi
+
+# If all you have is XDM, I guess it will have to do:
+if [ -x /usr/bin/xdm ]; then
+ exec /usr/bin/xdm -nodaemon
+elif [ -x /usr/X11R6/bin/xdm ]; then
+ exec /usr/X11R6/bin/xdm -nodaemon
+fi
+
+# error
+echo
+echo "Hey, you don't have KDM, GDM, or XDM. Can't use runlevel 4 without"
+echo "one of those installed."
+sleep 30
+
+# All done.
diff --git a/source/a/sysvinit-scripts/scripts/rc.6 b/source/a/sysvinit-scripts/scripts/rc.6
new file mode 100644
index 00000000..2d5028e3
--- /dev/null
+++ b/source/a/sysvinit-scripts/scripts/rc.6
@@ -0,0 +1,266 @@
+#! /bin/sh
+#
+# rc.6 This file is executed by init when it goes into runlevel
+# 0 (halt) or runlevel 6 (reboot). It kills all processes,
+# unmounts file systems and then either halts or reboots.
+#
+# Version: @(#)/etc/rc.d/rc.6 2.47 Sat Jan 13 13:37:26 PST 2001
+#
+# Author: Miquel van Smoorenburg <miquels@drinkel.nl.mugnet.org>
+# Modified by: Patrick J. Volkerding, <volkerdi@slackware.com>
+#
+
+# Set the path.
+PATH=/sbin:/etc:/bin:/usr/bin
+
+# If there are SystemV init scripts for this runlevel, run them.
+if [ -x /etc/rc.d/rc.sysvinit ]; then
+ . /etc/rc.d/rc.sysvinit
+fi
+
+# Set linefeed mode to avoid staircase effect.
+/bin/stty onlcr
+
+echo "Running shutdown script $0:"
+
+# Find out how we were called.
+case "$0" in
+ *0)
+ command="halt"
+ ;;
+ *6)
+ command=reboot
+ ;;
+ *)
+ echo "$0: call me as \"rc.0\" or \"rc.6\" please!"
+ exit 1
+ ;;
+esac
+
+# Save the system time to the hardware clock using hwclock --systohc.
+if [ -x /sbin/hwclock ]; then
+ # Check for a broken motherboard RTC clock (where ioports for rtc are
+ # unknown) to prevent hwclock causing a hang:
+ if ! grep -q -w rtc /proc/ioports ; then
+ CLOCK_OPT="--directisa"
+ fi
+ if grep -q "^UTC" /etc/hardwareclock 2> /dev/null ; then
+ echo "Saving system time to the hardware clock (UTC)."
+ /sbin/hwclock $CLOCK_OPT --utc --systohc
+ else
+ echo "Saving system time to the hardware clock (localtime)."
+ /sbin/hwclock $CLOCK_OPT --localtime --systohc
+ fi
+fi
+
+# Run any local shutdown scripts:
+if [ -x /etc/rc.d/rc.local_shutdown ]; then
+ /etc/rc.d/rc.local_shutdown stop
+fi
+
+# Stop the Apache web server:
+if [ -x /etc/rc.d/rc.httpd ]; then
+ /etc/rc.d/rc.httpd stop
+fi
+
+# Stop the MySQL database:
+if [ -r /var/run/mysql/mysql.pid ]; then
+ . /etc/rc.d/rc.mysqld stop
+fi
+
+# Stop the Samba server:
+if [ -x /etc/rc.d/rc.samba ]; then
+ . /etc/rc.d/rc.samba stop
+fi
+
+# Shut down the NFS server:
+if [ -x /etc/rc.d/rc.nfsd ]; then
+ /etc/rc.d/rc.nfsd stop
+fi
+
+# Shut down the SSH server:
+if [ -x /etc/rc.d/rc.sshd ]; then
+ /etc/rc.d/rc.sshd stop
+fi
+
+# Shut down the SASL authentication daemon:
+if [ -x /etc/rc.d/rc.saslauthd ]; then
+ /etc/rc.d/rc.saslauthd stop
+fi
+
+# Shut down OpenLDAP:
+if [ -x /etc/rc.d/rc.openldap ]; then
+ /etc/rc.d/rc.openldap stop
+fi
+
+# Stop D-Bus:
+if [ -x /etc/rc.d/rc.messagebus ]; then
+ sh /etc/rc.d/rc.messagebus stop
+fi
+
+# Unmount any NFS, SMB, or CIFS filesystems:
+echo "Unmounting remote filesystems."
+/bin/umount -v -a -r -t nfs,smbfs,cifs
+
+# Try to shut down pppd:
+PS="$(ps ax)"
+if echo "$PS" | /bin/grep -q -w pppd ; then
+ if [ -x /usr/sbin/ppp-off ]; then
+ /usr/sbin/ppp-off
+ fi
+fi
+
+# Bring down the networking system, but first make sure that this
+# isn't a diskless client with the / partition mounted via NFS:
+if ! /bin/mount | /bin/grep -q 'on / type nfs' ; then
+ if [ -x /etc/rc.d/rc.inet1 ]; then
+ . /etc/rc.d/rc.inet1 stop
+ fi
+fi
+
+# In case dhcpcd might have been manually started on the command line,
+# look for the .pid file, and shut dhcpcd down if it's found:
+if /bin/ls /etc/dhcpc/*.pid 1> /dev/null 2> /dev/null ; then
+ /sbin/dhcpcd -k 1> /dev/null 2> /dev/null
+ # A little time for /etc/resolv.conf and/or other files to
+ # restore themselves.
+ sleep 2
+fi
+
+# Shut down PCMCIA devices:
+if [ -x /etc/rc.d/rc.pcmcia ]; then
+ . /etc/rc.d/rc.pcmcia stop
+ # The cards might need a little extra time here to deactivate:
+ /bin/sleep 5
+fi
+
+# Turn off process accounting:
+if [ -x /sbin/accton -a -r /var/log/pacct ]; then
+ /sbin/accton off
+fi
+
+# Terminate acpid before syslog:
+if [ -x /etc/rc.d/rc.acpid -a -r /var/run/acpid.pid ]; then # quit
+ . /etc/rc.d/rc.acpid stop
+fi
+
+# Kill all processes.
+# INIT is supposed to handle this entirely now, but this didn't always
+# work correctly without this second pass at killing off the processes.
+# Since INIT already notified the user that processes were being killed,
+# we'll avoid echoing this info this time around.
+if [ ! "$1" = "fast" ]; then # shutdown did not already kill all processes
+ /sbin/killall5 -15
+ /bin/sleep 5
+ /sbin/killall5 -9
+fi
+
+# Try to turn off quota.
+if /bin/grep -q quota /etc/fstab ; then
+ if [ -x /sbin/quotaoff ]; then
+ echo "Turning off filesystem quotas."
+ /sbin/quotaoff -a
+ fi
+fi
+
+# Carry a random seed between reboots.
+echo "Saving random seed from /dev/urandom in /etc/random-seed."
+# Use the pool size from /proc, or 512 bytes:
+if [ -r /proc/sys/kernel/random/poolsize ]; then
+ /bin/dd if=/dev/urandom of=/etc/random-seed count=1 bs=$(cat /proc/sys/kernel/random/poolsize) 2> /dev/null
+else
+ /bin/dd if=/dev/urandom of=/etc/random-seed count=1 bs=512 2> /dev/null
+fi
+/bin/chmod 600 /etc/random-seed
+
+# Before unmounting file systems write a reboot or halt record to wtmp.
+$command -w
+
+# Clear /var/lock/subsys.
+if [ -d /var/lock/subsys ]; then
+ rm -f /var/lock/subsys/*
+fi
+
+# Turn off swap:
+echo "Turning off swap."
+/sbin/swapoff -a
+/bin/sync
+
+# Umount any LVM volumes:
+if /bin/mount | /bin/grep -q '^/dev/mapper/' ; then
+ echo "Unmounting LVM volumes."
+ /bin/umount -v $(/bin/mount | /bin/grep '^/dev/mapper/' | /bin/cut -d ' ' -f 3 | /bin/tac)
+fi
+
+echo "Unmounting local file systems."
+/bin/umount -v -a -t no,proc,sysfs
+
+echo "Remounting root filesystem read-only."
+/bin/mount -v -n -o remount,ro /
+
+# This never hurts:
+/bin/sync
+
+# Close any volumes opened by cryptsetup:
+if [ -f /etc/crypttab -a -x /sbin/cryptsetup.static ]; then
+ cat /etc/crypttab | grep -v "^#" | grep -v "^$" | while read line; do
+ # NOTE: we only support LUKS formatted volumes (except for swap)!
+ LUKS=$(echo $line | tr '\t' ' ' | tr -s ' ' | cut -f1 -d' ')
+ DEV=$(echo $line | tr '\t' ' ' | tr -s ' ' | cut -f2 -d' ')
+ OPTS=$(echo $line | tr '\t' ' ' | tr -s ' ' | cut -f4 -d' ')
+ if /sbin/cryptsetup.static isLuks $DEV 2>/dev/null ; then
+ echo "Locking LUKS crypt volume '${LUKS}':"
+ /sbin/cryptsetup.static luksClose ${LUKS}
+ elif echo $OPTS | grep -wq swap ; then
+ # If any of the volumes was used as encrypted swap,
+ # then run mkswap on the underlying device -
+ # in case other Linux installations on this computer should use it:
+ echo "Erasing encrypted swap '${LUKS}' and restoring normal swap on ${DEV}:"
+ /sbin/cryptsetup.static remove ${LUKS}
+ mkswap $DEV
+ fi
+ done
+fi
+
+# Deactivate LVM volume groups:
+if [ -r /etc/lvmtab -o -d /etc/lvm/backup ]; then
+ echo "Deactivating LVM volume groups:"
+ /sbin/vgchange -an --ignorelockingfailure
+fi
+
+# This never hurts again (especially since root-on-LVM always fails
+# to deactivate the / logical volume... but at least it was
+# remounted as read-only first)
+/bin/sync
+
+# sleep 3 fixes problems with some hard drives that don't
+# otherwise finish syncing before reboot or poweroff
+/bin/sleep 3
+
+# This is to ensure all processes have completed on SMP machines:
+wait
+
+if [ -x /sbin/genpowerd ]; then
+ # See if this is a powerfail situation:
+ if /bin/egrep -q "FAIL|SCRAM" /etc/upsstatus 2> /dev/null ; then
+ # Signal UPS to shut off the inverter:
+ /sbin/genpowerd -k
+ if [ ! $? = 0 ]; then
+ echo
+ echo "There was an error signaling the UPS."
+ echo "Perhaps you need to edit /etc/genpowerd.conf to configure"
+ echo "the serial line and UPS type."
+ # Wasting 15 seconds of precious power:
+ /bin/sleep 15
+ fi
+ fi
+fi
+
+# Now halt (poweroff with APM or ACPI enabled kernels) or reboot.
+if [ "$command" = "reboot" ]; then
+ echo "Rebooting."
+ /sbin/reboot
+else
+ /sbin/poweroff
+fi
+
diff --git a/source/a/sysvinit-scripts/scripts/rc.K b/source/a/sysvinit-scripts/scripts/rc.K
new file mode 100644
index 00000000..68609753
--- /dev/null
+++ b/source/a/sysvinit-scripts/scripts/rc.K
@@ -0,0 +1,106 @@
+#! /bin/sh
+#
+# rc.K This file is executed by init when it goes into runlevel
+# 1, which is the administrative state. It kills all
+# daemons and then puts the system into single user mode.
+# Note that the file systems are kept mounted.
+#
+# Version: @(#)/etc/rc.d/rc.K 3.1415 Sat Jan 13 13:37:26 PST 2001
+#
+# Author: Miquel van Smoorenburg <miquels@drinkel.nl.mugnet.org>
+# Modified by: Patrick J. Volkerding <volkerdi@slackware.com>
+#
+
+# Set the path.
+PATH=/sbin:/bin:/usr/bin:/usr/sbin
+
+# Load any needed keyboard mappings:
+if [ -x /etc/rc.d/rc.keymap ]; then
+ . /etc/rc.d/rc.keymap
+fi
+
+# If there are SystemV init scripts for this runlevel, run them.
+if [ -x /etc/rc.d/rc.sysvinit ]; then
+ . /etc/rc.d/rc.sysvinit
+fi
+
+# Try to turn off quota:
+if grep -q quota /etc/fstab ; then
+ if [ -x /sbin/quotaoff ]; then
+ echo "Turning off filesystem quotas."
+ /sbin/quotaoff -a
+ fi
+fi
+
+# Try to turn off accounting:
+if [ -x /sbin/accton -a -r /var/log/pacct ]; then
+ /sbin/accton off
+fi
+
+# Run any local shutdown scripts:
+if [ -x /etc/rc.d/rc.local_shutdown ]; then
+ /etc/rc.d/rc.local_shutdown stop
+fi
+
+# Stop the Apache web server:
+if [ -x /etc/rc.d/rc.httpd ]; then
+ /etc/rc.d/rc.httpd stop
+fi
+
+# Stop the Samba server:
+if [ -x /etc/rc.d/rc.samba ]; then
+ . /etc/rc.d/rc.samba stop
+fi
+
+# Shut down the NFS server:
+if [ -x /etc/rc.d/rc.nfsd ]; then
+ /etc/rc.d/rc.nfsd stop
+fi
+
+# Unmount any NFS, SMB, or CIFS filesystems:
+echo "Unmounting remote filesystems."
+umount -a -r -t nfs,smbfs,cifs
+
+# Shut down PCMCIA devices:
+if [ -x /etc/rc.d/rc.pcmcia ] ; then
+ . /etc/rc.d/rc.pcmcia stop
+ # The cards might need a little extra time here to deactivate:
+ sleep 5
+fi
+
+# Terminate acpid before syslog:
+if [ -x /etc/rc.d/rc.acpid -a -r /var/run/acpid.pid ]; then # quit
+ . /etc/rc.d/rc.acpid stop
+fi
+
+# Kill all processes.
+echo
+echo "Sending all processes the SIGHUP signal."
+killall5 -1
+echo -n "Waiting for processes to hang up"
+for loop in 0 1 2 3 4 5 ; do
+ sleep 1
+ echo -n "."
+done
+echo
+echo "Sending all processes the SIGTERM signal."
+killall5 -15
+echo -n "Waiting for processes to terminate"
+for loop in 0 1 2 3 4 5 ; do
+ sleep 1
+ echo -n "."
+done
+echo
+echo "Sending all processes the SIGKILL signal."
+killall5 -9
+echo -n "Waiting for processes to exit"
+for loop in 0 1 2 3 4 5 ; do
+ sleep 1
+ echo -n "."
+done
+echo
+
+# Now go to the single user level
+echo "Going to single user mode..."
+telinit -t 1 1
+
diff --git a/source/a/sysvinit-scripts/scripts/rc.M b/source/a/sysvinit-scripts/scripts/rc.M
new file mode 100644
index 00000000..fe2c9b6f
--- /dev/null
+++ b/source/a/sysvinit-scripts/scripts/rc.M
@@ -0,0 +1,355 @@
+#!/bin/sh
+#
+# rc.M This file is executed by init(8) when the system is being
+# initialized for one of the "multi user" run levels (i.e.
+# levels 1 through 6). It usually does mounting of file
+# systems et al.
+#
+# Version: @(#)/etc/rc.d/rc.M 2.23 Wed Feb 26 19:20:58 PST 2003
+#
+# Author: Fred N. van Kempen, <waltje@uwalt.nl.mugnet.org>
+# Heavily modified by Patrick Volkerding <volkerdi@slackware.com>
+#
+
+# Tell the viewers what's going to happen.
+echo "Going multiuser..."
+
+# Update all the shared library links:
+if [ -x /sbin/ldconfig ]; then
+ echo "Updating shared library links: /sbin/ldconfig &"
+ /sbin/ldconfig &
+fi
+
+# Screen blanks after 15 minutes idle time, and powers down in one hour
+# if the kernel supports APM or ACPI power management:
+/bin/setterm -blank 15 -powersave powerdown -powerdown 60
+
+# Set the hostname.
+if [ -r /etc/HOSTNAME ]; then
+ /bin/hostname $(cat /etc/HOSTNAME | cut -f1 -d .)
+else
+ # fall back on this old default:
+ echo "darkstar.example.net" > /etc/HOSTNAME
+ /bin/hostname darkstar
+fi
+
+# Save the contents of 'dmesg':
+/bin/dmesg -s 65536 > /var/log/dmesg
+
+# Initialize PCMCIA devices:
+#
+# NOTE: This used to be started near the top of rc.S so that PCMCIA devices
+# could be fsck'ed along with the other drives. This had some unfortunate
+# side effects, however, since root isn't yet read-write, and /var might not
+# even be mounted the .pid files can't be correctly written in /var/run and
+# the pcmcia system can't be correctly shut down. If you want some PCMCIA
+# partition to be mounted at boot (or when the card is inserted) then add
+# the appropriate lines to /etc/pcmcia/scsi.opts.
+#
+# Note that the stuff in /etc/pcmcia/ is only for 2.4.x kernels using
+# 16-bit PCMCIA cards (not 32-bit Cardbus cards!). For example, with a
+# wireless card you might need to set options in /etc/pcmcia OR in
+# /etc/rc.d/rc.wireless.conf, or even in /etc/rc.d/rc.inet1.conf (with
+# extra options if needed for the encryption key, ESSID, etc.)
+#
+# Hopefully this situation will be unified in the future, but for now
+# that's how it is...
+#
+if [ -x /etc/rc.d/rc.pcmcia ]; then
+ . /etc/rc.d/rc.pcmcia start
+ # The cards might need a little extra time here to initialize.
+ sleep 5
+fi
+
+# Start the system logger.
+if [ -x /etc/rc.d/rc.syslog -a -x /usr/sbin/syslogd -a -d /var/log ]; then
+ . /etc/rc.d/rc.syslog start
+fi
+
+# Update the X font indexes:
+if [ -x /usr/bin/fc-cache ]; then
+ echo "Updating X font indexes: /usr/bin/fc-cache -f &"
+ /usr/bin/fc-cache -f &
+fi
+
+# If we are returning from single-user mode we will need to restart
+# udevd on systems that use udev:
+if grep -wq sysfs /proc/mounts && grep -wq tmpfs /proc/filesystems ; then
+ if ! grep -wq nohotplug /proc/cmdline ; then
+ if [ -x /etc/rc.d/rc.udev ]; then
+ /bin/sh /etc/rc.d/rc.udev start
+ fi
+ fi
+fi
+
+# Initialize the networking hardware.
+if [ -x /etc/rc.d/rc.inet1 ]; then
+ . /etc/rc.d/rc.inet1
+fi
+
+# Look for additional USB/SCSI/IEEE1394/etc devices on multiple LUNs:
+if [ -x /etc/rc.d/rc.scanluns ]; then
+ . /etc/rc.d/rc.scanluns
+fi
+
+# Start networking daemons:
+if [ -x /etc/rc.d/rc.inet2 ]; then
+ . /etc/rc.d/rc.inet2
+fi
+
+# Mount any additional filesystem types that haven't already been mounted:
+mount -a -v 2> /dev/null | grep -v "already mounted"
+
+# Start the Network Time Protocol daemon:
+if [ -x /etc/rc.d/rc.ntpd ]; then
+ sh /etc/rc.d/rc.ntpd start
+fi
+
+# Remove stale locks and junk files (must be done after mount -a!)
+/bin/rm -f /var/lock/* /var/spool/uucp/LCK..* /tmp/.X*lock /tmp/core /core 2> /dev/null
+
+# Remove stale hunt sockets so the game can start.
+if [ -r /tmp/hunt -o -r /tmp/hunt.stats ]; then
+ echo "Removing your stale hunt sockets from /tmp."
+ /bin/rm -f /tmp/hunt*
+fi
+
+# Ensure basic filesystem permissions sanity.
+chmod 755 / 2> /dev/null
+chmod 1777 /tmp /var/tmp
+
+# Start APM or ACPI daemon.
+# If APM is enabled in the kernel, start apmd:
+if [ -e /proc/apm ]; then
+ if [ -x /usr/sbin/apmd ]; then
+ echo "Starting APM daemon: /usr/sbin/apmd"
+ /usr/sbin/apmd
+ fi
+elif [ -x /etc/rc.d/rc.acpid ]; then # otherwise, start acpid:
+ . /etc/rc.d/rc.acpid start
+fi
+
+# Update any existing icon cache files:
+if find /usr/share/icons 2> /dev/null | grep -q icon-theme.cache ; then
+ for theme_dir in /usr/share/icons/* ; do
+ if [ -r ${theme_dir}/icon-theme.cache ]; then
+ echo "Updating icon-theme.cache in ${theme_dir}..."
+ /usr/bin/gtk-update-icon-cache -t -f ${theme_dir} 1> /dev/null 2> /dev/null &
+ fi
+ done
+ # This would be a large file and probably shouldn't be there.
+ if [ -r /usr/share/icons/icon-theme.cache ]; then
+ echo "Deleting icon-theme.cache in /usr/share/icons..."
+ #/usr/bin/gtk-update-icon-cache -t -f /usr/share/icons 1> /dev/null 2> /dev/null &
+ rm -f /usr/share/icons/icon-theme.cache
+ fi
+fi
+
+# Update mime database:
+if [ -x /usr/bin/update-mime-database -a -d /usr/share/mime ]; then
+ echo "Updating MIME database: /usr/bin/update-mime-database /usr/share/mime &"
+ /usr/bin/update-mime-database /usr/share/mime 1> /dev/null 2> /dev/null &
+fi
+
+# Start D-Bus:
+if [ -x /etc/rc.d/rc.messagebus ]; then
+ sh /etc/rc.d/rc.messagebus start
+fi
+
+# Start HAL:
+if [ -x /etc/rc.d/rc.hald ]; then
+ sh /etc/rc.d/rc.hald start
+fi
+
+# Start Bluetooth:
+if [ -x /etc/rc.d/rc.bluetooth ]; then
+ sh /etc/rc.d/rc.bluetooth start
+fi
+
+# Start wicd:
+if [ -x /etc/rc.d/rc.wicd ]; then
+ sh /etc/rc.d/rc.wicd start
+fi
+
+# These GTK+/pango files need to be kept up to date for
+# proper input method, pixbuf loaders, and font support.
+if [ -x /usr/bin/update-gtk-immodules ]; then
+ /usr/bin/update-gtk-immodules --verbose
+fi
+if [ -x /usr/bin/update-gdk-pixbuf-loaders ]; then
+ /usr/bin/update-gdk-pixbuf-loaders --verbose
+fi
+if [ -x /usr/bin/update-pango-querymodules ]; then
+ /usr/bin/update-pango-querymodules --verbose
+fi
+
+# Start dnsmasq, a simple DHCP/DNS server:
+if [ -x /etc/rc.d/rc.dnsmasq ]; then
+ /etc/rc.d/rc.dnsmasq start
+fi
+
+# Start snmpd:
+if [ -x /etc/rc.d/rc.snmpd ]; then
+ /etc/rc.d/rc.snmpd start
+fi
+
+# Start the print spooling system. This will usually be LPRng (lpd) or CUPS.
+if [ -x /etc/rc.d/rc.cups ]; then
+ # Start CUPS:
+ /etc/rc.d/rc.cups start
+elif [ -x /etc/rc.d/rc.lprng ]; then
+ # Start LPRng (lpd):
+ . /etc/rc.d/rc.lprng start
+fi
+
+# Start netatalk. (a file/print server for Macs using Appletalk)
+if [ -x /etc/rc.d/rc.atalk ]; then
+ /etc/rc.d/rc.atalk
+fi
+
+# Start smartd, which monitors the status of S.M.A.R.T. compatible
+# hard drives and reports any problems. Note some devices (which aren't
+# smart, I guess ;) will hang if probed by smartd, so it's commented out
+# by default.
+#if [ -x /usr/sbin/smartd ]; then
+# /usr/sbin/smartd
+#fi
+
+# If we're using udev, make /dev/cdrom and any other optical drive symlinks
+# if some udev rule hasn't made them already:
+if grep -wq sysfs /proc/mounts && grep -wq tmpfs /proc/filesystems; then
+ if ! grep -wq nohotplug /proc/cmdline ; then
+ if [ -x /lib/udev/rc.optical-symlinks -a -x /etc/rc.d/rc.udev ]; then
+ /bin/sh /lib/udev/rc.optical-symlinks
+ fi
+ fi
+fi
+
+# Monitor the UPS with genpowerd.
+# To use this, uncomment this section and edit your settings in
+# /etc/genpowerd.conf (serial device, UPS type, etc). For more information,
+# see "man genpowerd" or the extensive documentation in the
+# /usr/doc/genpower-*/ directory.
+# You'll also need to configure a similar block in /etc/rc.d/rc.6 if you want
+# support for stopping the UPS's inverter after the machine halts.
+#if [ -x /sbin/genpowerd ]; then
+# echo "Starting genpowerd daemon..."
+# /sbin/genpowerd
+#fi
+
+# Turn on process accounting. To enable process accounting, make sure the
+# option for BSD process accounting is enabled in your kernel, and then
+# create the file /var/log/pacct (touch /var/log/pacct). By default, process
+# accounting is not enabled (since /var/log/pacct does not exist). This is
+# because the log file can get VERY large.
+if [ -x /sbin/accton -a -r /var/log/pacct ]; then
+ chmod 640 /var/log/pacct
+ /sbin/accton /var/log/pacct
+fi
+
+# Start crond (Dillon's crond):
+# If you want cron to actually log activity to /var/log/cron, then change
+# -l10 to -l8 to increase the logging level.
+if [ -x /usr/sbin/crond ]; then
+ /usr/sbin/crond -l10 >>/var/log/cron 2>&1
+fi
+
+# Start atd (manages jobs scheduled with 'at'):
+if [ -x /usr/sbin/atd ]; then
+ /usr/sbin/atd -b 15 -l 1
+fi
+
+# Slackware-Mini-Quota-HOWTO:
+# To really activate quotas, you'll need to add 'usrquota' and/or 'grpquota' to
+# the appropriate partitions as listed in /etc/fstab. Here's an example:
+#
+# /dev/hda2 /home ext3 defaults,usrquota 1 1
+#
+# You'll then need to setup initial quota files at the top of the partitions
+# to support quota, like this:
+# touch /home/aquota.user /home/aquota.group
+# chmod 600 /home/aquota.user /home/aquota.group
+#
+# Then, reboot to activate the system.
+# To edit user quotas, use 'edquota'. See 'man edquota'. Also, the
+# official Quota Mini-HOWTO has lots of useful information. That can be found
+# here: /usr/doc/Linux-HOWTOs/Quota
+
+# Check quotas and then turn quota system on:
+if grep -q quota /etc/fstab ; then
+ for quotafs in $(awk '/quota/ {print $2}' /etc/fstab) ; do
+ /bin/rm -f $quotafs/{a,}quota.{group,user}.new
+ done
+ if [ -x /sbin/quotacheck ]; then
+ echo "Checking filesystem quotas: /sbin/quotacheck -avugm"
+ /sbin/quotacheck -avugm
+ fi
+ if [ -x /sbin/quotaon ]; then
+ echo "Activating filesystem quotas: /sbin/quotaon -avug"
+ /sbin/quotaon -avug
+ fi
+fi
+
+# Start the SASL authentication server. This provides SASL
+# authentication services for sendmail:
+if [ -x /etc/rc.d/rc.saslauthd ]; then
+ . /etc/rc.d/rc.saslauthd start
+fi
+
+# Start the sendmail daemon:
+if [ -x /etc/rc.d/rc.sendmail ]; then
+ . /etc/rc.d/rc.sendmail start
+fi
+
+# Load ALSA (sound) defaults:
+if [ -x /etc/rc.d/rc.alsa ]; then
+ . /etc/rc.d/rc.alsa
+fi
+
+# Load a custom screen font if the user has an rc.font script.
+if [ -x /etc/rc.d/rc.font ]; then
+ . /etc/rc.d/rc.font
+fi
+
+# Load a custom keymap if the user has an rc.keymap script.
+if [ -x /etc/rc.d/rc.keymap ]; then
+ . /etc/rc.d/rc.keymap
+fi
+
+# Start the MySQL database:
+if [ -x /etc/rc.d/rc.mysqld ]; then
+ . /etc/rc.d/rc.mysqld start
+fi
+
+# Start Apache web server:
+if [ -x /etc/rc.d/rc.httpd ]; then
+ . /etc/rc.d/rc.httpd start
+fi
+
+# Start OpenLDAP:
+if [ -x /etc/rc.d/rc.openldap ]; then
+ . /etc/rc.d/rc.openldap start
+fi
+
+# Start Samba (a file/print server for Win95/NT machines).
+# Samba can be started in /etc/inetd.conf instead.
+if [ -x /etc/rc.d/rc.samba ]; then
+ . /etc/rc.d/rc.samba start
+fi
+
+# Start the GPM mouse server:
+if [ -x /etc/rc.d/rc.gpm ]; then
+ . /etc/rc.d/rc.gpm start
+fi
+
+# If there are SystemV init scripts for this runlevel, run them.
+if [ -x /etc/rc.d/rc.sysvinit ]; then
+ . /etc/rc.d/rc.sysvinit
+fi
+
+# Start the local setup procedure.
+if [ -x /etc/rc.d/rc.local ]; then
+ . /etc/rc.d/rc.local
+fi
+
+# All done.
diff --git a/source/a/sysvinit-scripts/scripts/rc.S b/source/a/sysvinit-scripts/scripts/rc.S
new file mode 100644
index 00000000..a0072d28
--- /dev/null
+++ b/source/a/sysvinit-scripts/scripts/rc.S
@@ -0,0 +1,382 @@
+#!/bin/sh
+#
+# /etc/rc.d/rc.S: System initialization script.
+#
+# Mostly written by: Patrick J. Volkerding, <volkerdi@slackware.com>
+#
+
+PATH=/sbin:/usr/sbin:/bin:/usr/bin
+
+# Mount /proc right away:
+/sbin/mount -v proc /proc -n -t proc
+
+# Mount sysfs next, if the kernel supports it:
+if [ -d /sys ]; then
+ if grep -wq sysfs /proc/filesystems ; then
+ if ! grep -wq sysfs /proc/mounts ; then
+ /sbin/mount -v sysfs /sys -n -t sysfs
+ fi
+ fi
+fi
+
+# Initialize udev to manage /dev entries and hotplugging for 2.6.x kernels.
+# You may turn off udev by making the /etc/rc.d/rc.udev file non-executable
+# or giving the "nohotplug" option at boot, but in the 2.6.x+ kernels udev
+# has taken over the job of hotplug (finding hardware and loading the kernel
+# modules for it, as well as creating device nodes in /dev). Realize that
+# if you turn off udev that you will have to load all the kernel modules
+# that you need yourself (possibly in /etc/rc.d/rc.modules, which does not
+# promise to list all of them), and make any additional device nodes that you
+# need in the /dev directory. Even USB and IEEE1394 devices will need to have
+# the modules loaded by hand if udev is not used with a 2.6 kernel. So use it. :-)
+if grep -wq sysfs /proc/mounts && grep -wq tmpfs /proc/filesystems ; then
+ if ! grep -wq nohotplug /proc/cmdline ; then
+ if [ -x /etc/rc.d/rc.udev ]; then
+ /bin/sh /etc/rc.d/rc.udev start
+ fi
+ fi
+fi
+
+# Initialize the Logical Volume Manager.
+# This won't start unless we find /etc/lvmtab (LVM1) or
+# /etc/lvm/backup/ (LVM2). This is created by /sbin/vgscan, so to
+# use LVM you must run /sbin/vgscan yourself the first time (and
+# create some VGs and LVs).
+if [ -r /etc/lvmtab -o -d /etc/lvm/backup ]; then
+ echo "Initializing LVM (Logical Volume Manager):"
+ # Check for device-mapper support.
+ if ! grep -wq device-mapper /proc/devices ; then
+ # Try to load a device-mapper kernel module:
+ /sbin/modprobe -q dm-mod
+ fi
+ # Scan for new volume groups:
+ /sbin/vgscan --mknodes --ignorelockingfailure 2> /dev/null
+ if [ $? = 0 ]; then
+ # Make volume groups available to the kernel.
+ # This should also make logical volumes available.
+ /sbin/vgchange -ay --ignorelockingfailure
+ fi
+fi
+
+# Open any volumes created by cryptsetup:
+if [ -f /etc/crypttab -a -x /sbin/cryptsetup.static ]; then
+ # First, check for device-mapper support.
+ if ! grep -wq device-mapper /proc/devices ; then
+ # If device-mapper exists as a module, try to load it.
+ # Try to load a device-mapper kernel module:
+ /sbin/modprobe -q dm-mod
+ fi
+ # NOTE: we only support LUKS formatted volumes (except for swap)!
+ cat /etc/crypttab | grep -v "^#" | grep -v "^$" | while read line; do
+ eval LUKSARRAY=( $line )
+ LUKS="${LUKSARRAY[0]}"
+ DEV="${LUKSARRAY[1]}"
+ PASS="${LUKSARRAY[2]}"
+ OPTS="${LUKSARRAY[3]}"
+ LUKSOPTS=""
+ if echo $OPTS | grep -wq ro ; then LUKSOPTS="${LUKSOPTS} --readonly" ; fi
+
+ # Skip LUKS volumes that were already unlocked (in the initrd):
+ /sbin/cryptsetup.static status $LUKS 1>/dev/null 2>/dev/null && continue
+ if /sbin/cryptsetup.static isLuks $DEV 2>/dev/null ; then
+ echo "Unlocking LUKS crypt volume '${LUKS}' on device '$DEV':"
+ if [ -n "${PASS}" ]; then
+ if [ -f ${PASS} ]; then
+ /sbin/cryptsetup.static ${LUKSOPTS} --key-file=${PASS} luksOpen $DEV $LUKS
+ elif [ "${PASS}" != "none" ]; then
+ # A password field of 'none' indicates a line for swap:
+ echo "${PASS}" | /sbin/cryptsetup.static ${LUKSOPTS} luksOpen $DEV $LUKS
+ fi
+ else
+ for i in seq 1 3 ; do
+ /sbin/cryptsetup.static ${LUKSOPTS} luksOpen $DEV $LUKS </dev/tty0 >/dev/tty0 2>&1
+ [ $? -eq 0 ] && break
+ done
+ fi
+ elif echo $OPTS | grep -wq swap ; then
+ # If any of the volumes is to be used as encrypted swap,
+ # then encrypt it using a random key and run mkswap:
+ echo "Creating encrypted swap on device '$DEV' mapped to '${LUKS}':"
+ /sbin/cryptsetup.static --cipher=aes --key-file=/dev/urandom --key-size=256 create $LUKS $DEV
+ mkswap /dev/mapper/$LUKS
+ fi
+ done
+fi
+
+# Enable swapping:
+/sbin/swapon -a
+
+# Start FUSE, if requested:
+if [ -x /etc/rc.d/rc.fuse ]; then
+ sh /etc/rc.d/rc.fuse start
+fi
+
+# Set the system time from the hardware clock using hwclock --hctosys.
+if [ -x /sbin/hwclock ]; then
+ # Check for a broken motherboard RTC clock (where ioports for rtc are
+ # unknown) to prevent hwclock causing a hang:
+ if ! grep -q -w rtc /proc/ioports ; then
+ CLOCK_OPT="--directisa"
+ fi
+ if grep -wq "^UTC" /etc/hardwareclock ; then
+ echo "Setting system time from the hardware clock (UTC)."
+ /sbin/hwclock $CLOCK_OPT --utc --hctosys
+ else
+ echo "Setting system time from the hardware clock (localtime)."
+ /sbin/hwclock $CLOCK_OPT --localtime --hctosys
+ fi
+fi
+
+# Test to see if the root partition is read-only, like it ought to be.
+READWRITE=no
+if touch /fsrwtestfile 2>/dev/null; then
+ rm -f /fsrwtestfile
+ READWRITE=yes
+else
+ echo "Testing root filesystem status: read-only filesystem"
+fi
+
+# See if a forced filesystem check was requested at shutdown:
+if [ -r /etc/forcefsck ]; then
+ FORCEFSCK="-f"
+fi
+
+# Check the root filesystem:
+if [ ! $READWRITE = yes ]; then
+ RETVAL=0
+ if [ ! -r /etc/fastboot ]; then
+ echo "Checking root filesystem:"
+ /sbin/fsck $FORCEFSCK -C -a /
+ RETVAL=$?
+ fi
+ # An error code of 2 or higher will require a reboot.
+ if [ $RETVAL -ge 2 ]; then
+ # An error code equal to or greater than 4 means that some errors
+ # could not be corrected. This requires manual attention, so we
+ # offer a chance to try to fix the problem in single-user mode:
+ if [ $RETVAL -ge 4 ]; then
+ echo
+ echo "***********************************************************"
+ echo "*** An error occurred during the root filesystem check. ***"
+ echo "*** You will now be given a chance to log into the ***"
+ echo "*** system in single-user mode to fix the problem. ***"
+ echo "*** ***"
+ echo "*** If you are using the ext2 filesystem, running ***"
+ echo "*** 'e2fsck -v -y <partition>' might help. ***"
+ echo "***********************************************************"
+ echo
+ echo "Once you exit the single-user shell, the system will reboot."
+ echo
+ PS1="(Repair filesystem) \#"; export PS1
+ sulogin
+ else # With an error code of 2 or 3, reboot the machine automatically:
+ echo
+ echo "***********************************"
+ echo "*** The filesystem was changed. ***"
+ echo "*** The system will now reboot. ***"
+ echo "***********************************"
+ echo
+ fi
+ echo "Unmounting file systems."
+ /sbin/umount -a -r
+ /sbin/mount -n -o remount,ro /
+ echo "Rebooting system."
+ sleep 2
+ reboot -f
+ fi
+ # Remount the root filesystem in read-write mode
+ echo "Remounting root device with read-write enabled."
+ /sbin/mount -w -v -n -o remount /
+ if [ $? -gt 0 ] ; then
+ echo
+ echo "Attempt to remount root device as read-write failed! This is going to"
+ echo "cause serious problems."
+ echo
+ echo "If you're using the UMSDOS filesystem, you **MUST** mount the root partition"
+ echo "read-write! You can make sure the root filesystem is getting mounted "
+ echo "read-write with the 'rw' flag to Loadlin:"
+ echo
+ echo "loadlin vmlinuz root=/dev/hda1 rw (replace /dev/hda1 with your root device)"
+ echo
+ echo "Normal bootdisks can be made to mount a system read-write with the rdev command:"
+ echo
+ echo "rdev -R /dev/fd0 0"
+ echo
+ echo "You can also get into your system by using a boot disk with a command like this"
+ echo "on the LILO prompt line: (change the root partition name as needed)"
+ echo
+ echo "LILO: mount root=/dev/hda1 rw"
+ echo
+ echo "Please press ENTER to continue, then reboot and use one of the above methods to"
+ echo -n "get into your machine and start looking for the problem. "
+ read junk;
+ fi
+else
+ echo "Testing root filesystem status: read-write filesystem"
+ echo
+ echo "*** ERROR: Root partition has already been mounted read-write. Cannot check!"
+ echo
+ echo "For filesystem checking to work properly, your system must initially mount"
+ echo "the root partition as read only. Please modify your kernel with 'rdev' so that"
+ echo "it does this. If you're booting with LILO, add a line:"
+ echo
+ echo " read-only"
+ echo
+ echo "to the Linux section in your /etc/lilo.conf and type 'lilo' to reinstall it."
+ echo
+ echo "If you boot from a kernel on a floppy disk, put it in the drive and type:"
+ echo " rdev -R /dev/fd0 1"
+ echo
+ echo "If you boot from a bootdisk, or with Loadlin, you can add the 'ro' flag."
+ echo
+ echo "This will fix the problem *AND* eliminate this annoying message. :^)"
+ echo
+ echo -n "Press ENTER to continue. "
+ read junk;
+fi # Done checking root filesystem
+
+# Any /etc/mtab that exists here is old, so we delete it to start over:
+/bin/rm -f /etc/mtab*
+# Remounting the / partition will initialize the new /etc/mtab:
+/sbin/mount -w -o remount /
+
+# Read in the correct / filesystem complete with arguments so mount will
+# show them correctly. This does not stop those arguments from functioning
+# but does prevent a small bug with /etc/mtab.
+/bin/grep ' / ' /proc/mounts | grep -v "^rootfs" > /etc/mtab
+
+# Fix /etc/mtab to list sys and proc if they were not yet entered in
+# /etc/mtab because / was still mounted read-only:
+if [ -d /proc/sys ]; then
+ /sbin/mount -f proc /proc -t proc
+fi
+if [ -d /sys/bus ]; then
+ /sbin/mount -f sysfs /sys -t sysfs
+fi
+
+# Configure ISA Plug-and-Play devices:
+if [ -r /etc/isapnp.conf ]; then
+ if [ -x /sbin/isapnp ]; then
+ /sbin/isapnp /etc/isapnp.conf
+ fi
+fi
+
+# This loads any kernel modules that are needed. These might be required to
+# use your ethernet card, sound card, or other optional hardware.
+# Priority is given first to a script named "rc.modules.local", then
+# to "rc.modules-$FULL_KERNEL_VERSION", and finally to the plain "rc.modules".
+# Note that if /etc/rc.d/rc.modules.local is found, then that will be the ONLY
+# rc.modules script the machine will run, so make sure it has everything in
+# it that you need.
+if [ -x /etc/rc.d/rc.modules.local -a -r /proc/modules ]; then
+ echo "Running /etc/rc.d/rc.modules.local:"
+ /bin/sh /etc/rc.d/rc.modules.local
+elif [ -x /etc/rc.d/rc.modules-$(uname -r) -a -r /proc/modules ]; then
+ echo "Running /etc/rc.d/rc.modules-$(uname -r):"
+ . /etc/rc.d/rc.modules-$(uname -r)
+elif [ -x /etc/rc.d/rc.modules -a -r /proc/modules -a -L /etc/rc.d/rc.modules ]; then
+ echo "Running /etc/rc.d/rc.modules -> $(readlink /etc/rc.d/rc.modules):"
+ . /etc/rc.d/rc.modules
+elif [ -x /etc/rc.d/rc.modules -a -r /proc/modules ]; then
+ echo "Running /etc/rc.d/rc.modules:"
+ . /etc/rc.d/rc.modules
+fi
+
+# Configure runtime kernel parameters:
+if [ -x /sbin/sysctl -a -r /etc/sysctl.conf ]; then
+ /sbin/sysctl -e -p /etc/sysctl.conf
+fi
+
+# Check all the non-root filesystems:
+if [ ! -r /etc/fastboot ]; then
+ echo "Checking non-root filesystems:"
+ /sbin/fsck $FORCEFSCK -C -R -A -a
+fi
+
+# Mount usbfs:
+if grep -wq usbfs /proc/filesystems; then
+ if ! grep -wq usbfs /proc/mounts ; then
+ if ! grep -wq usbfs /etc/fstab; then
+ /sbin/mount -v usbfs /proc/bus/usb -t usbfs
+ else
+ /sbin/mount -v /proc/bus/usb
+ fi
+ fi
+fi
+
+# Mount non-root file systems in fstab, but not NFS or SMB
+# because TCP/IP is not yet configured, and not proc or sysfs
+# because those have already been mounted. Also check that
+# devpts is not already mounted before attempting to mount
+# it. With a 2.6.x or newer kernel udev mounts devpts.
+# We also need to wait a little bit to let USB and other
+# hotplugged devices settle (sorry to slow down the boot):
+echo "Mounting non-root local filesystems:"
+sleep 3
+if /bin/grep -wq devpts /proc/mounts ; then
+ /sbin/mount -a -v -t nonfs,nosmbfs,nocifs,noproc,nosysfs,nodevpts
+else
+ /sbin/mount -a -v -t nonfs,nosmbfs,nocifs,noproc,nosysfs
+fi
+
+# Enable swapping again. This is needed in case a swapfile is used,
+# as it can't be enabled until the filesystem it resides on has been
+# mounted read-write.
+/sbin/swapon -a
+
+# Clean up some temporary files:
+rm -f /var/run/* /var/run/*/* /var/run/*/*/* /etc/nologin \
+ /etc/dhcpc/*.pid /etc/forcefsck /etc/fastboot \
+ /var/state/saslauthd/saslauthd.pid \
+ /tmp/.Xauth* 1> /dev/null 2> /dev/null
+ ( cd /var/log/setup/tmp && rm -rf * )
+ ( cd /tmp && rm -rf kde-[a-zA-Z]* ksocket-[a-zA-Z]* hsperfdata_[a-zA-Z]* plugtmp* )
+
+# Create /tmp/{.ICE-unix,.X11-unix} if they are not present:
+if [ ! -e /tmp/.ICE-unix ]; then
+ mkdir -p /tmp/.ICE-unix
+ chmod 1777 /tmp/.ICE-unix
+fi
+if [ ! -e /tmp/.X11-unix ]; then
+ mkdir -p /tmp/.X11-unix
+ chmod 1777 /tmp/.X11-unix
+fi
+
+# Create a fresh utmp file:
+touch /var/run/utmp
+chown root:utmp /var/run/utmp
+chmod 664 /var/run/utmp
+
+# Update the current kernel level in the /etc/motd (Message Of The Day) file,
+# if the first line of that file begins with the word 'Linux'.
+# You are free to modify the rest of the file as you see fit.
+if [ -x /bin/sed ]; then
+ /bin/sed -i "{1s/^Linux.*/$(/bin/uname -sr)\./}" /etc/motd
+fi
+
+# If there are SystemV init scripts for this runlevel, run them.
+if [ -x /etc/rc.d/rc.sysvinit ]; then
+ . /etc/rc.d/rc.sysvinit
+fi
+
+# Run serial port setup script:
+# CAREFUL! This can make some systems hang if the rc.serial script isn't
+# set up correctly. If this happens, you may have to edit the file from a
+# boot disk, and/or set it as non-executable:
+if [ -x /etc/rc.d/rc.serial ]; then
+ sh /etc/rc.d/rc.serial start
+fi
+
+# Carry an entropy pool between reboots to improve randomness.
+if [ -f /etc/random-seed ]; then
+ echo "Using /etc/random-seed to initialize /dev/urandom."
+ cat /etc/random-seed > /dev/urandom
+fi
+# Use the pool size from /proc, or 512 bytes:
+if [ -r /proc/sys/kernel/random/poolsize ]; then
+ dd if=/dev/urandom of=/etc/random-seed count=1 bs=$(cat /proc/sys/kernel/random/poolsize) 2> /dev/null
+else
+ dd if=/dev/urandom of=/etc/random-seed count=1 bs=512 2> /dev/null
+fi
+chmod 600 /etc/random-seed
+
diff --git a/source/a/sysvinit-scripts/scripts/rc.local b/source/a/sysvinit-scripts/scripts/rc.local
new file mode 100644
index 00000000..65b358bb
--- /dev/null
+++ b/source/a/sysvinit-scripts/scripts/rc.local
@@ -0,0 +1,9 @@
+#!/bin/sh
+#
+# /etc/rc.d/rc.local: Local system initialization script.
+#
+# Put any local startup commands in here. Also, if you have
+# anything that needs to be run at shutdown time you can
+# make an /etc/rc.d/rc.local_shutdown script and put those
+# commands in there.
+
diff --git a/source/a/sysvinit-scripts/scripts/rc.sysvinit b/source/a/sysvinit-scripts/scripts/rc.sysvinit
new file mode 100644
index 00000000..916e59ee
--- /dev/null
+++ b/source/a/sysvinit-scripts/scripts/rc.sysvinit
@@ -0,0 +1,58 @@
+#!/bin/sh
+#
+# rc.sysvinit This file provides basic compatibility with SystemV style
+# startup scripts. The SystemV style init system places
+# start/stop scripts for each runlevel into directories such as
+# /etc/rc.d/rc3.d/ (for runlevel 3) instead of starting them
+# from /etc/rc.d/rc.M. This makes for a lot more init scripts,
+# and a more complicated execution path to follow through if
+# something goes wrong. For this reason, Slackware has always
+# used the traditional BSD style init script layout.
+#
+# However, many binary packages exist that install SystemV
+# init scripts. With rc.sysvinit in place, most well-written
+# startup scripts will work. This is primarily intended to
+# support commercial software, though, and probably shouldn't
+# be considered bug free.
+#
+# Written by Patrick Volkerding <volkerdi@slackware.com>, 1999
+# from an example by Miquel van Smoorenburg <miquels@cistron.nl>.
+
+# Run an init script:
+startup() {
+ case "$1" in
+ *.sh)
+ sh "$@"
+ ;;
+ *)
+ "$@"
+ ;;
+ esac
+}
+
+# Set onlcr to avoid staircase effect.
+stty onlcr 0>&1
+
+if [ "$runlevel" = "" ]; then
+ runlevel=$RUNLEVEL
+ export runlevel
+ prevlevel=$PREVLEVEL
+ export prevlevel
+fi
+
+# Run kill scripts in the previous runlevel if not "none"
+if [ ! "$prevlevel" = "N" ]; then
+ for script in /etc/rc.d/rc$prevlevel.d/K* ; do
+ if [ -x $script ]; then
+ startup $script stop
+ fi
+ done
+fi
+
+# Now do the startup scripts:
+for script in /etc/rc.d/rc$runlevel.d/S* ; do
+ if [ -x $script ]; then
+ startup $script start
+ fi
+done
+
diff --git a/source/a/sysvinit-scripts/scripts/rescan-scsi-bus.sh b/source/a/sysvinit-scripts/scripts/rescan-scsi-bus.sh
new file mode 100644
index 00000000..4378e208
--- /dev/null
+++ b/source/a/sysvinit-scripts/scripts/rescan-scsi-bus.sh
@@ -0,0 +1,558 @@
+#!/bin/bash
+# Skript to rescan SCSI bus, using the
+# scsi add-single-device mechanism
+# (c) 1998--2008 Kurt Garloff <kurt@garloff.de>, GNU GPL v2 or later
+# (c) 2006--2008 Hannes Reinecke, GNU GPL v2 or later
+# $Id: rescan-scsi-bus.sh,v 1.29 2008/10/29 10:03:04 garloff Exp $
+
+setcolor ()
+{
+ red="\e[0;31m"
+ green="\e[0;32m"
+ yellow="\e[0;33m"
+ bold="\e[0;1m"
+ norm="\e[0;0m"
+}
+
+unsetcolor ()
+{
+ red=""; green=""
+ yellow=""; norm=""
+}
+
+# Return hosts. sysfs must be mounted
+findhosts_26 ()
+{
+ hosts=
+ if ! ls /sys/class/scsi_host/host* >/dev/null 2>&1; then
+ echo "No SCSI host adapters found in sysfs"
+ exit 1;
+ fi
+ for hostdir in /sys/class/scsi_host/host*; do
+ hostno=${hostdir#/sys/class/scsi_host/host}
+ if [ -f $hostdir/isp_name ] ; then
+ hostname="qla2xxx"
+ elif [ -f $hostdir/lpfc_drvr_version ] ; then
+ hostname="lpfc"
+ else
+ hostname=`cat $hostdir/proc_name`
+ fi
+ hosts="$hosts $hostno"
+ echo "Host adapter $hostno ($hostname) found."
+ done
+ hosts=`echo $hosts | sed 's/ /\n/g' | sort -n`
+}
+
+# Return hosts. /proc/scsi/HOSTADAPTER/? must exist
+findhosts ()
+{
+ hosts=
+ for driverdir in /proc/scsi/*; do
+ driver=${driverdir#/proc/scsi/}
+ if test $driver = scsi -o $driver = sg -o $driver = dummy -o $driver = device_info; then continue; fi
+ for hostdir in $driverdir/*; do
+ name=${hostdir#/proc/scsi/*/}
+ if test $name = add_map -o $name = map -o $name = mod_parm; then continue; fi
+ num=$name
+ driverinfo=$driver
+ if test -r $hostdir/status; then
+ num=$(printf '%d\n' `sed -n 's/SCSI host number://p' $hostdir/status`)
+ driverinfo="$driver:$name"
+ fi
+ hosts="$hosts $num"
+ echo "Host adapter $num ($driverinfo) found."
+ done
+ done
+}
+
+# Get /proc/scsi/scsi info for device $host:$channel:$id:$lun
+# Optional parameter: Number of lines after first (default = 2),
+# result in SCSISTR, return code 1 means empty.
+procscsiscsi ()
+{
+ if test -z "$1"; then LN=2; else LN=$1; fi
+ CHANNEL=`printf "%02i" $channel`
+ ID=`printf "%02i" $id`
+ LUN=`printf "%02i" $lun`
+ if [ -d /sys/class/scsi_device ]; then
+ SCSIPATH="/sys/class/scsi_device/${host}:${channel}:${id}:${lun}"
+ if [ -d "$SCSIPATH" ] ; then
+ SCSISTR="Host: scsi${host} Channel: $CHANNEL Id: $ID Lun: $LUN"
+ if [ "$LN" -gt 0 ] ; then
+ IVEND=$(cat ${SCSIPATH}/device/vendor)
+ IPROD=$(cat ${SCSIPATH}/device/model)
+ IPREV=$(cat ${SCSIPATH}/device/rev)
+ SCSIDEV=$(printf ' Vendor: %-08s Model: %-16s Rev: %-4s' "$IVEND" "$IPROD" "$IPREV")
+ SCSISTR="$SCSISTR
+$SCSIDEV"
+ fi
+ if [ "$LN" -gt 1 ] ; then
+ ILVL=$(cat ${SCSIPATH}/device/scsi_level)
+ type=$(cat ${SCSIPATH}/device/type)
+ case "$type" in
+ 0) ITYPE="Direct-Access " ;;
+ 1) ITYPE="Sequential-Access" ;;
+ 2) ITYPE="Printer " ;;
+ 3) ITYPE="Processor " ;;
+ 4) ITYPE="WORM " ;;
+ 5) ITYPE="CD-ROM " ;;
+ 6) ITYPE="Scanner " ;;
+ 7) ITYPE="Optical Device " ;;
+ 8) ITYPE="Medium Changer " ;;
+ 9) ITYPE="Communications " ;;
+ 10) ITYPE="Unknown " ;;
+ 11) ITYPE="Unknown " ;;
+ 12) ITYPE="RAID " ;;
+ 13) ITYPE="Enclosure " ;;
+ 14) ITYPE="Direct-Access-RBC" ;;
+ *) ITYPE="Unknown " ;;
+ esac
+ SCSITMP=$(printf ' Type: %-16s ANSI SCSI revision: %02d' "$ITYPE" "$((ILVL - 1))")
+ SCSISTR="$SCSISTR
+$SCSITMP"
+ fi
+
+ else
+ return 1
+ fi
+ else
+ grepstr="scsi$host Channel: $CHANNEL Id: $ID Lun: $LUN"
+ SCSISTR=`cat /proc/scsi/scsi | grep -A$LN -e"$grepstr"`
+ fi
+ if test -z "$SCSISTR"; then return 1; else return 0; fi
+}
+
+# Find sg device with 2.6 sysfs support
+sgdevice26 ()
+{
+ if test -e /sys/class/scsi_device/$host\:$channel\:$id\:$lun/device/generic; then
+ SGDEV=`readlink /sys/class/scsi_device/$host\:$channel\:$id\:$lun/device/generic`
+ SGDEV=`basename $SGDEV`
+ else
+ for SGDEV in /sys/class/scsi_generic/sg*; do
+ DEV=`readlink $SGDEV/device`
+ if test "${DEV##*/}" = "$host:$channel:$id:$lun"; then
+ SGDEV=`basename $SGDEV`; return
+ fi
+ done
+ SGDEV=""
+ fi
+}
+
+# Find sg device with 2.4 report-devs extensions
+sgdevice24 ()
+{
+ if procscsiscsi 3; then
+ SGDEV=`echo "$SCSISTR" | grep 'Attached drivers:' | sed 's/^ *Attached drivers: \(sg[0-9]*\).*/\1/'`
+ fi
+}
+
+# Find sg device that belongs to SCSI device $host $channel $id $lun
+sgdevice ()
+{
+ SGDEV=
+ if test -d /sys/class/scsi_device; then
+ sgdevice26
+ else
+ DRV=`grep 'Attached drivers:' /proc/scsi/scsi 2>/dev/null`
+ repdevstat=$((1-$?))
+ if [ $repdevstat = 0 ]; then
+ echo "scsi report-devs 1" >/proc/scsi/scsi
+ DRV=`grep 'Attached drivers:' /proc/scsi/scsi 2>/dev/null`
+ if [ $? = 1 ]; then return; fi
+ fi
+ if ! `echo $DRV | grep 'drivers: sg' >/dev/null`; then
+ modprobe sg
+ fi
+ sgdevice24
+ if [ $repdevstat = 0 ]; then
+ echo "scsi report-devs 0" >/proc/scsi/scsi
+ fi
+ fi
+}
+
+# Test if SCSI device is still responding to commands
+testonline ()
+{
+ : testonline
+ if test ! -x /usr/bin/sg_turs; then return 0; fi
+ sgdevice
+ if test -z "$SGDEV"; then return 0; fi
+ sg_turs /dev/$SGDEV >/dev/null 2>&1
+ RC=$?
+ # echo -e "\e[A\e[A\e[A${yellow}Test existence of $SGDEV = $RC ${norm} \n\n\n"
+ if test $RC = 1; then return $RC; fi
+ # OK, device online, compare INQUIRY string
+ INQ=`sg_inq $sg_len_arg /dev/$SGDEV`
+ IVEND=`echo "$INQ" | grep 'Vendor identification:' | sed 's/^[^:]*: \(.*\)$/\1/'`
+ IPROD=`echo "$INQ" | grep 'Product identification:' | sed 's/^[^:]*: \(.*\)$/\1/'`
+ IPREV=`echo "$INQ" | grep 'Product revision level:' | sed 's/^[^:]*: \(.*\)$/\1/'`
+ STR=`printf " Vendor: %-08s Model: %-16s Rev: %-4s" "$IVEND" "$IPROD" "$IPREV"`
+ IPTYPE=`echo "$INQ" | sed -n 's/.* Device_type=\([0-9]*\) .*/\1/p'`
+ IPQUAL=`echo "$INQ" | sed -n 's/ *PQual=\([0-9]*\) Device.*/\1/p'`
+ if [ "$IPQUAL" != 0 ] ; then
+ echo -e "\e[A\e[A\e[A\e[A${red}$SGDEV changed: ${bold}\nLU not available (PQual $IPQUAL)${norm}\n\n\n"
+ return 1
+ fi
+
+ procscsiscsi
+ TMPSTR=`echo "$SCSISTR" | grep 'Vendor:'`
+ if [ "$TMPSTR" != "$STR" ]; then
+ echo -e "\e[A\e[A\e[A\e[A${red}$SGDEV changed: ${bold}\nfrom:${TMPSTR#* } \nto: $STR ${norm}\n\n\n"
+ return 1
+ fi
+ TMPSTR=`echo "$SCSISTR" | sed -n 's/.*Type: *\(.*\) *ANSI.*/\1/p'`
+ if [ $TMPSTR != $TYPE ] ; then
+ echo -e "\e[A\e[A\e[A\e[A${red}$SGDEV changed: ${bold}\nfrom:${TMPSTR} \nto: $TYPE ${norm}\n\n\n"
+ return 1
+ fi
+ return $RC
+}
+
+# Test if SCSI device $host $channen $id $lun exists
+# Outputs description from /proc/scsi/scsi, returns SCSISTR
+testexist ()
+{
+ : testexist
+ SCSISTR=
+ if procscsiscsi; then
+ echo "$SCSISTR" | head -n1
+ echo "$SCSISTR" | tail -n2 | pr -o4 -l1
+ fi
+}
+
+# Returns the list of existing channels per host
+chanlist ()
+{
+ local hcil
+ local cil
+ local chan
+ local tmpchan
+
+ for dev in /sys/class/scsi_device/${host}:* ; do
+ hcil=${dev##*/}
+ cil=${hcil#*:}
+ chan=${cil%%:*}
+ for tmpchan in $channelsearch ; do
+ if test "$chan" -eq $tmpchan ; then
+ chan=
+ fi
+ done
+ if test -n "$chan" ; then
+ channelsearch="$channelsearch $chan"
+ fi
+ done
+}
+
+# Returns the list of existing targets per host
+idlist ()
+{
+ local hcil
+ local cil
+ local il
+ local target
+ local tmpid
+
+ for dev in /sys/class/scsi_device/${host}:${channel}:* ; do
+ hcil=${dev##*/}
+ cil=${hcil#*:}
+ il=${cil#*:}
+ target=${il%%:*}
+ for tmpid in $idsearch ; do
+ if test "$target" -eq $tmpid ; then
+ target=
+ fi
+ done
+ if test -n "$target" ; then
+ idsearch="$idsearch $target"
+ fi
+ done
+}
+
+# Returns the list of existing LUNs
+getluns ()
+{
+ if test ! -x /usr/bin/sg_luns; then return; fi
+ sgdevice
+ if test -z "$SGDEV"; then return; fi
+ sg_luns -d /dev/$SGDEV | sed -n 's/.*lun=\(.*\)/\1/p'
+}
+
+# Perform scan on a single lun
+dolunscan()
+{
+ SCSISTR=
+ devnr="$host $channel $id $lun"
+ echo "Scanning for device $devnr ..."
+ printf "${yellow}OLD: $norm"
+ testexist
+ : f $remove s $SCSISTR
+ if test "$remove" -a "$SCSISTR"; then
+ # Device exists: Test whether it's still online
+ # (testonline returns 1 if it's gone or has changed)
+ testonline
+ if test $? = 1 -o ! -z "$forceremove"; then
+ echo -en "\r\e[A\e[A\e[A${red}REM: "
+ echo "$SCSISTR" | head -n1
+ echo -e "${norm}\e[B\e[B"
+ if test -e /sys/class/scsi_device/${host}:${channel}:${id}:${lun}/device; then
+ echo 1 > /sys/class/scsi_device/${host}:${channel}:${id}:${lun}/device/delete
+ # Try reading, should fail if device is gone
+ echo "$channel $id $lun" > /sys/class/scsi_host/host${host}/scan
+ else
+ echo "scsi remove-single-device $devnr" > /proc/scsi/scsi
+ # Try reading, should fail if device is gone
+ echo "scsi add-single-device $devnr" > /proc/scsi/scsi
+ fi
+ fi
+ if test $RC = 0 ; then
+ if test -e /sys/class/scsi_device/${host}:${channel}:${id}:${lun}/device; then
+ echo 1 > /sys/class/scsi_device/${host}:${channel}:${id}:${lun}/device/rescan
+ fi
+ fi
+
+ printf "\r\x1b[A\x1b[A\x1b[A${yellow}OLD: $norm"
+ testexist
+ if test -z "$SCSISTR"; then
+ printf "\r${red}DEL: $norm\r\n\n"
+ let rmvd+=1;
+ fi
+ fi
+ if test -z "$SCSISTR"; then
+ # Device does not exist, try to add
+ printf "\r${green}NEW: $norm"
+ if test -e /sys/class/scsi_host/host${host}/scan; then
+ echo "$channel $id $lun" > /sys/class/scsi_host/host${host}/scan 2> /dev/null
+ else
+ echo "scsi add-single-device $devnr" > /proc/scsi/scsi
+ fi
+ testexist
+ if test -z "$SCSISTR"; then
+ # Device not present
+ printf "\r\x1b[A";
+ # Optimization: if lun==0, stop here (only if in non-remove mode)
+ if test $lun = 0 -a -z "$remove" -a $optscan = 1; then
+ break;
+ fi
+ else
+ let found+=1;
+ fi
+ fi
+}
+
+# Perform report lun scan
+doreportlun()
+{
+ lun=0
+ SCSISTR=
+ devnr="$host $channel $id $lun"
+ echo "Scanning for device $devnr ..."
+ printf "${yellow}OLD: $norm"
+ testexist
+ if test -z "$SCSISTR"; then
+ # Device does not exist, try to add
+ printf "\r${green}NEW: $norm"
+ if test -e /sys/class/scsi_host/host${host}/scan; then
+ echo "$channel $id $lun" > /sys/class/scsi_host/host${host}/scan 2> /dev/null
+ else
+ echo "scsi add-single-device $devnr" > /proc/scsi/scsi
+ fi
+ testexist
+ if test -z "$SCSISTR"; then
+ # Device not present
+ printf "\r\x1b[A";
+ lunsearch=
+ return
+ fi
+ fi
+ lunsearch=`getluns`
+ lunremove=
+ # Check existing luns
+ for dev in /sys/class/scsi_device/$host\:$channel\:$id\:*; do
+ lun=${dev##*:}
+ newsearch=
+ oldsearch="$lunsearch"
+ for tmplun in $lunsearch; do
+ if test $tmplun -eq $lun ; then
+ # Optimization: don't scan lun 0 again
+ if [ $lun -ne 0 ]; then
+ dolunscan
+ fi
+ else
+ newsearch="$newsearch $tmplun"
+ fi
+ done
+ if [ "${#oldsearch}" = "${#newsearch}" ] ; then
+ # Stale lun
+ lunremove="$lunremove $lun"
+ fi
+ lunsearch="$newsearch"
+ done
+ # Add new ones and check stale ones
+ for lun in $lunsearch $lunremove; do
+ dolunscan
+ done
+}
+
+# Perform search (scan $host)
+dosearch ()
+{
+ if test -z "$channelsearch" ; then
+ chanlist
+ fi
+ for channel in $channelsearch; do
+ if test -z "$idsearch" ; then
+ idlist
+ fi
+ for id in $idsearch; do
+ if test -z "$lunsearch"; then
+ doreportlun
+ else
+ for lun in $lunsearch; do
+ dolunscan
+ done
+ fi
+ done
+ done
+}
+
+# main
+if test @$1 = @--help -o @$1 = @-h -o @$1 = @-?; then
+ echo "Usage: rescan-scsi-bus.sh [options] [host [host ...]]"
+ echo "Options:"
+ echo " -l activates scanning for LUNs 0-7 [default: 0]"
+ echo " -L NUM activates scanning for LUNs 0--NUM [default: 0]"
+ echo " -w scan for target device IDs 0 .. 15 [default: 0-7]"
+ echo " -c enables scanning of channels 0 1 [default: 0]"
+ echo " -r enables removing of devices [default: disabled]"
+ echo " -i issue a FibreChannel LIP reset [default: disabled]"
+ echo "--remove: same as -r"
+ echo "--issue-lip: same as -i"
+ echo "--forceremove: Remove and readd every device (DANGEROUS)"
+ echo "--nooptscan: don't stop looking for LUNs is 0 is not found"
+ echo "--color: use coloured prefixes OLD/NEW/DEL"
+ echo "--hosts=LIST: Scan only host(s) in LIST"
+ echo "--channels=LIST: Scan only channel(s) in LIST"
+ echo "--ids=LIST: Scan only target ID(s) in LIST"
+ echo "--luns=LIST: Scan only lun(s) in LIST"
+ echo " Host numbers may thus be specified either directly on cmd line (deprecated) or"
+ echo " or with the --hosts=LIST parameter (recommended)."
+ echo "LIST: A[-B][,C[-D]]... is a comma separated list of single values and ranges"
+ echo " (No spaces allowed.)"
+ exit 0
+fi
+
+expandlist ()
+{
+ list=$1
+ result=""
+ first=${list%%,*}
+ rest=${list#*,}
+ while test ! -z "$first"; do
+ beg=${first%%-*};
+ if test "$beg" = "$first"; then
+ result="$result $beg";
+ else
+ end=${first#*-}
+ result="$result `seq $beg $end`"
+ fi
+ test "$rest" = "$first" && rest=""
+ first=${rest%%,*}
+ rest=${rest#*,}
+ done
+ echo $result
+}
+
+if test ! -d /sys/class/scsi_host/ -a ! -d /proc/scsi/; then
+ echo "Error: SCSI subsystem not active"
+ exit 1
+fi
+
+# Make sure sg is there
+modprobe sg >/dev/null 2>&1
+
+sg_version=$(sg_inq -V 2>&1 | cut -d " " -f 3)
+sg_version=${sg_version##0.}
+if [ "$sg_version" -lt 70 ] ; then
+ sg_len_arg="-36"
+else
+ sg_len_arg="--len=36"
+fi
+
+# defaults
+unsetcolor
+lunsearch=""
+idsearch=`seq 0 7`
+channelsearch="0"
+remove=
+forceremove=
+optscan=1
+if test -d /sys/class/scsi_host; then
+ findhosts_26
+else
+ findhosts
+fi
+
+# Scan options
+opt="$1"
+while test ! -z "$opt" -a -z "${opt##-*}"; do
+ opt=${opt#-}
+ case "$opt" in
+ l) lunsearch=`seq 0 7` ;;
+ L) lunsearch=`seq 0 $2`; shift ;;
+ w) idsearch=`seq 0 15` ;;
+ c) channelsearch="0 1" ;;
+ r) remove=1 ;;
+ i) lipreset=1 ;;
+ -remove) remove=1 ;;
+ -forceremove) remove=1; forceremove=1 ;;
+ -hosts=*) arg=${opt#-hosts=}; hosts=`expandlist $arg` ;;
+ -channels=*) arg=${opt#-channels=};channelsearch=`expandlist $arg` ;;
+ -ids=*) arg=${opt#-ids=}; idsearch=`expandlist $arg` ;;
+ -luns=*) arg=${opt#-luns=}; lunsearch=`expandlist $arg` ;;
+ -color) setcolor ;;
+ -nooptscan) optscan=0 ;;
+ -issue-lip) lipreset=1 ;;
+ *) echo "Unknown option -$opt !" ;;
+ esac
+ shift
+ opt="$1"
+done
+
+# Hosts given ?
+if test "@$1" != "@"; then
+ hosts=$*;
+fi
+
+echo "Scanning SCSI subsystem for new devices"
+test -z "$remove" || echo " and remove devices that have disappeared"
+declare -i found=0
+declare -i rmvd=0
+for host in $hosts; do
+ echo -n "Scanning host $host "
+ if test -e /sys/class/fc_host/host$host ; then
+ # It's pointless to do a target scan on FC
+ if test -n "$lipreset" ; then
+ echo 1 > /sys/class/fc_host/host$host/issue_lip 2> /dev/null;
+ echo "- - -" > /sys/class/scsi_host/host$host/scan 2> /dev/null;
+ fi
+ channelsearch=""
+ idsearch=""
+ fi
+ [ -n "$channelsearch" ] && echo -n "channels $channelsearch "
+ echo -n "for "
+ if [ -n "$idsearch" ] ; then
+ echo -n " SCSI target IDs " $idsearch
+ else
+ echo -n " all SCSI target IDs"
+ fi
+ if [ -n "$lunsearch" ] ; then
+ echo ", LUNs " $lunsearch
+ else
+ echo ", all LUNs"
+ fi
+ dosearch;
+done
+echo "$found new device(s) found. "
+echo "$rmvd device(s) removed. "
+
diff --git a/source/a/sysvinit-scripts/slack-desc b/source/a/sysvinit-scripts/slack-desc
new file mode 100644
index 00000000..95fff611
--- /dev/null
+++ b/source/a/sysvinit-scripts/slack-desc
@@ -0,0 +1,19 @@
+# HOW TO EDIT THIS FILE:
+# The "handy ruler" below makes it easier to edit a package description. Line
+# up the first '|' above the ':' following the base package name, and the '|'
+# on the right side marks the last column you can put a character in. You must
+# make exactly 11 lines for the formatting to be correct. It's also
+# customary to leave one space after the ':'.
+
+ |-----handy-ruler------------------------------------------------------|
+sysvinit-scripts: sysvinit-scripts (the basic scripts used to boot your machine)
+sysvinit-scripts:
+sysvinit-scripts: These are the Slackware boot scripts, which are needed to start the
+sysvinit-scripts: machine. Sysvinit looks for these in /etc/rc.d/.
+sysvinit-scripts:
+sysvinit-scripts:
+sysvinit-scripts:
+sysvinit-scripts:
+sysvinit-scripts:
+sysvinit-scripts:
+sysvinit-scripts:
diff --git a/source/a/sysvinit-scripts/sysvinit-scripts.SlackBuild b/source/a/sysvinit-scripts/sysvinit-scripts.SlackBuild
new file mode 100755
index 00000000..4b9eba04
--- /dev/null
+++ b/source/a/sysvinit-scripts/sysvinit-scripts.SlackBuild
@@ -0,0 +1,60 @@
+#!/bin/sh
+
+# Copyright 2005-2009 Patrick J. Volkerding, Sebeka, MN, USA
+# All rights reserved.
+#
+# Redistribution and use of this script, with or without modification, is
+# permitted provided that the following conditions are met:
+#
+# 1. Redistributions of this script must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# 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.
+
+
+VERSION=${VERSION:-1.2}
+ARCH=noarch
+BUILD=${BUILD:-30}
+
+CWD=$(pwd)
+TMP=${TMP:-/tmp}
+PKG=$TMP/package-sysvinit-scripts
+
+rm -rf $PKG
+mkdir -p $TMP $PKG
+
+# Install Slackware scripts and config files from $CWD/scripts/:
+mkdir -p $PKG/etc/rc.d
+for file in rc.{4,6,K,M,S} rc.local rc.sysvinit ; do
+ cp -a $CWD/scripts/$file $PKG/etc/rc.d/${file}.new
+ chmod 755 $PKG/etc/rc.d/${file}.new
+ chown root:root $PKG/etc/rc.d/${file}.new
+done
+cat $CWD/scripts/inittab > $PKG/etc/inittab.new
+chmod 644 $PKG/etc/inittab.new
+chown root:root $PKG/etc/inittab.new
+
+# Add a very handy tool for scanning new SCSI devices. Most useful for
+# finding new USB and Firewire storage devices which show up as SCSI.
+mkdir -p $PKG/sbin
+cat $CWD/scripts/rescan-scsi-bus.sh > $PKG/sbin/rescan-scsi-bus
+chmod 755 $PKG/sbin/rescan-scsi-bus
+chown root:root $PKG/sbin/rescan-scsi-bus
+
+mkdir -p $PKG/install
+zcat $CWD/doinst.sh > $PKG/install/doinst.sh
+cat $CWD/slack-desc > $PKG/install/slack-desc
+
+# Build the package:
+cd $PKG
+/sbin/makepkg -l y -c n $TMP/sysvinit-scripts-$VERSION-$ARCH-$BUILD.txz
+
diff --git a/source/a/sysvinit/doinst.sh b/source/a/sysvinit/doinst.sh
new file mode 100644
index 00000000..0e476e11
--- /dev/null
+++ b/source/a/sysvinit/doinst.sh
@@ -0,0 +1,48 @@
+
+config() {
+ NEW="$1"
+ OLD="`dirname $NEW`/`basename $NEW .new`"
+ # If there's no config file by that name, mv it over:
+ if [ ! -r $OLD ]; then
+ mv $NEW $OLD
+ elif [ "`cat $OLD | md5sum`" = "`cat $NEW | md5sum`" ]; then # toss the redundant copy
+ rm $NEW
+ fi
+ # Otherwise, we leave the .new copy for the admin to consider...
+}
+# RH functions:
+#config etc/rc.d/init.d/halt.new
+#config etc/rc.d/init.d/killall.new
+#config etc/rc.d/init.d/netfs.new
+#config etc/rc.d/init.d/network.new
+#config etc/rc.d/init.d/single.new
+
+if [ -r sbin/init ]; then
+ mv sbin/init sbin/init.old
+fi
+
+mv sbin/init.new sbin/init
+
+# Add a btmp file to store login failure if one doesn't exist:
+if [ ! -r var/log/btmp ]; then
+ ( cd var/log ; umask 077 ; touch btmp )
+fi
+
+# Notice we use an absolute path below, rather than usr/bin/last. This is because
+# we're testing to see if we are on the bootdisk, which will not have /usr/bin/last.
+# If we aren't, we will signal init to restart using the new binary.
+# The presence of "/etc/slack-installer" is under consideration as a better test.
+if [ -x /usr/bin/last -a ! -r /etc/slack-installer ]; then
+ /sbin/init u
+fi
+
+( cd sbin ; rm -rf telinit )
+( cd sbin ; ln -sf init telinit )
+( cd sbin ; rm -rf reboot )
+( cd sbin ; ln -sf halt reboot )
+( cd sbin ; rm -rf pidof )
+( cd sbin ; ln -sf killall5 pidof )
+( cd sbin ; rm -rf poweroff )
+( cd sbin ; ln -sf halt poweroff )
+
+rm -f sbin/init.old
diff --git a/source/a/sysvinit/slack-desc b/source/a/sysvinit/slack-desc
new file mode 100644
index 00000000..5fc2652c
--- /dev/null
+++ b/source/a/sysvinit/slack-desc
@@ -0,0 +1,19 @@
+# HOW TO EDIT THIS FILE:
+# The "handy ruler" below makes it easier to edit a package description. Line
+# up the first '|' above the ':' following the base package name, and the '|'
+# on the right side marks the last column you can put a character in. You must
+# make exactly 11 lines for the formatting to be correct. It's also
+# customary to leave one space after the ':'.
+
+ |-----handy-ruler------------------------------------------------------|
+sysvinit: sysvinit (init, the parent of all processes)
+sysvinit:
+sysvinit: System V style init programs by Miquel van Smoorenburg that control
+sysvinit: the booting and shutdown of your system. These support a number of
+sysvinit: system runlevels, each with a specific set of utilities spawned.
+sysvinit: For example, the normal system runlevel is 3, which starts agetty
+sysvinit: on virtual consoles tty1 - tty6. Runlevel 4 starts xdm.
+sysvinit: Runlevel 0 shuts the system down.
+sysvinit:
+sysvinit:
+sysvinit:
diff --git a/source/a/sysvinit/sysvinit-2.86-timeval.patch b/source/a/sysvinit/sysvinit-2.86-timeval.patch
new file mode 100644
index 00000000..acb0d5b6
--- /dev/null
+++ b/source/a/sysvinit/sysvinit-2.86-timeval.patch
@@ -0,0 +1,42 @@
+--- sysvinit-2.86/src/utmp.c.timeval 1999-06-09 07:11:33.000000000 -0400
++++ sysvinit-2.86/src/utmp.c 2006-08-09 19:46:26.000000000 -0400
+@@ -47,7 +47,8 @@
+ int fd;
+ struct utmp utmp;
+ struct utsname uname_buf;
+-
++ struct timeval tv;
++
+ /*
+ * Try to open the wtmp file. Note that we even try
+ * this if we have updwtmp() so we can see if the
+@@ -76,7 +77,9 @@
+ */
+ memset(&utmp, 0, sizeof(utmp));
+ #if defined(__GLIBC__)
+- gettimeofday(&utmp.ut_tv, NULL);
++ gettimeofday(&tv, NULL);
++ utmp.ut_tv.tv_sec = tv.tv_sec;
++ utmp.ut_tv.tv_usec = tv.tv_usec;
+ #else
+ time(&utmp.ut_time);
+ #endif
+@@ -113,6 +116,7 @@
+ struct utmp utmp;
+ struct utmp tmp;
+ struct utmp *utmptr;
++ struct timeval tv;
+
+ /*
+ * Can't do much if UTMP_FILE is not present.
+@@ -144,7 +148,9 @@
+ utmp.ut_pid = pid;
+ strncpy(utmp.ut_id, id, sizeof(utmp.ut_id));
+ #if defined(__GLIBC__)
+- gettimeofday(&utmp.ut_tv, NULL);
++ gettimeofday(&tv, NULL);
++ utmp.ut_tv.tv_sec = tv.tv_sec;
++ utmp.ut_tv.tv_usec = tv.tv_usec;
+ #else
+ time(&utmp.ut_time);
+ #endif
diff --git a/source/a/sysvinit/sysvinit.SlackBuild b/source/a/sysvinit/sysvinit.SlackBuild
new file mode 100755
index 00000000..4916e695
--- /dev/null
+++ b/source/a/sysvinit/sysvinit.SlackBuild
@@ -0,0 +1,115 @@
+#!/bin/sh
+
+# Copyright 2005-2009 Patrick J. Volkerding, Sebeka, Minnesota, USA
+# All rights reserved.
+#
+# Redistribution and use of this script, with or without modification, is
+# permitted provided that the following conditions are met:
+#
+# 1. Redistributions of this script must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# 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.
+
+
+VERSION=${VERSION:-2.86}
+ARCH=${ARCH:-x86_64}
+BUILD=${BUILD:-6}
+
+CWD=$(pwd)
+TMP=${TMP:-/tmp}
+PKG=$TMP/package-sysvinit
+
+rm -rf $PKG
+mkdir -p $TMP $PKG
+
+cd $TMP
+rm -rf sysvinit-$VERSION
+tar xzvf $CWD/sysvinit-$VERSION.tar.gz || exit 1
+cd sysvinit-$VERSION
+chown -R root:root .
+zcat $CWD/sysvinit.diff.gz | patch -p1 -E --verbose --backup --suffix=.orig || exit 1
+zcat $CWD/sysvinit.pidof.rhforkseverything.diff.gz | patch -p1 -E --verbose --backup --suffix=.orig || exit 1
+if [ "$ARCH" = "x86_64" ]; then
+ # Don't overwrite ut_addr_v6 in utmp records on 64-bit platforms
+ zcat $CWD/sysvinit-2.86-timeval.diff.gz | patch -p1 -E --verbose --backup --suffix=.orig || exit 1
+fi
+
+cd doc
+mkdir -p $PKG/usr/doc/sysvinit-$VERSION
+cp -a Install Propaganda sysvinit-$VERSION.lsm \
+ $PKG/usr/doc/sysvinit-$VERSION
+chmod -R 644 $PKG/usr/doc/sysvinit-$VERSION/*
+chmod 755 $PKG/usr/doc/sysvinit-$VERSION
+
+cd ../src
+if [ "$ARCH" = "x86_64" ]; then
+ # static 'init' segfaults, so your computer never reaches command prompt:
+ sed -i -e "s/-static//" Makefile
+fi
+make clobber
+make || exit 1
+
+mkdir -p $PKG/sbin
+for program in bootlogd halt init killall5 shutdown runlevel ; do
+ strip --strip-unneeded $program
+ cat $program > $PKG/sbin/$program
+ chmod 755 $PKG/sbin/$program
+ chown root:root $PKG/sbin/$program
+done
+mkdir -p $PKG/usr/bin
+for program in last mountpoint ; do
+ strip --strip-unneeded $program
+ cat $program > $PKG/usr/bin/$program
+ chmod 755 $PKG/usr/bin/$program
+ chown root:root $PKG/usr/bin/$program
+done
+( cd $PKG/usr/bin ; ln -sf last lastb )
+mv $PKG/sbin/init $PKG/sbin/init.new
+chmod 755 $PKG/sbin/init.new
+chown root:root $PKG/sbin/init.new
+
+# This version is old. We use genpower now.
+#cat wall > $PKG/usr/bin/wall
+#strip --strip-unneeded powerd
+#cat powerd > $PKG/sbin/powerd
+#chmod 755 $PKG/usr/bin/wall $PKG/sbin/powerd
+#chown root:root $PKG/usr/bin/wall $PKG/sbin/powerd
+cp initscript.sample $PKG/sbin/initscript.sample
+
+cd ../man
+mkdir -p $PKG/usr/man/man{1,5,8}
+for page in last.1 mountpoint.1 ; do
+ cat $page | gzip -9c > $PKG/usr/man/man1/$page.gz
+done
+for page in inittab.5 initscript.5 ; do
+ cat $page | gzip -9c > $PKG/usr/man/man5/$page.gz
+done
+for page in halt.8 init.8 killall5.8 pidof.8 poweroff.8 reboot.8 runlevel.8 \
+ shutdown.8 telinit.8 bootlogd.8 ; do
+ cat $page | gzip -9c > $PKG/usr/man/man8/$page.gz
+done
+( cd $PKG/usr/man/man1 ; ln -sf last.1.gz lastb.1.gz )
+
+mkdir -p $PKG/install
+zcat $CWD/doinst.sh.gz > $PKG/install/doinst.sh
+cat $CWD/slack-desc > $PKG/install/slack-desc
+
+# Build the package:
+cd $PKG
+makepkg -l y -c n $TMP/sysvinit-$VERSION-$ARCH-$BUILD.txz
+
+# Clean up the extra stuff:
+if [ "$1" = "--cleanup" ]; then
+ rm -rf $TMP/sysvinit-$VERSION
+ rm -rf $PKG
+fi
diff --git a/source/a/sysvinit/sysvinit.diff b/source/a/sysvinit/sysvinit.diff
new file mode 100644
index 00000000..11477be7
--- /dev/null
+++ b/source/a/sysvinit/sysvinit.diff
@@ -0,0 +1,125 @@
+diff -Naur sysvinit-2.86.orig/man/init.8 sysvinit-2.86/man/init.8
+--- sysvinit-2.86.orig/man/init.8 2004-07-29 13:21:31.000000000 +0200
++++ sysvinit-2.86/man/init.8 2007-12-23 12:22:51.000000000 +0100
+@@ -76,7 +76,7 @@
+ 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
++\fI/sbin/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
+@@ -240,7 +240,7 @@
+ .SH FILES
+ .nf
+ /etc/inittab
+-/etc/initscript
++/sbin/initscript
+ /dev/console
+ /var/run/utmp
+ /var/log/wtmp
+diff -Naur sysvinit-2.86.orig/man/initscript.5 sysvinit-2.86/man/initscript.5
+--- sysvinit-2.86.orig/man/initscript.5 2004-06-09 14:47:45.000000000 +0200
++++ sysvinit-2.86/man/initscript.5 2007-12-23 12:22:51.000000000 +0100
+@@ -2,15 +2,15 @@
+ .SH NAME
+ initscript \- script that executes inittab commands.
+ .SH SYNOPSIS
+-/bin/sh /etc/initscript id runlevels action process
++/bin/sh /sbin/initscript id runlevels action process
+ .SH DESCRIPTION
+-When the shell script \fI/etc/initscript\fP is present, \fBinit\fP
++When the shell script \fI/sbin/initscript\fP is present, \fBinit\fP
+ will use it to execute the commands from \fIinittab\fP.
+ This script can be used to set things like \fBulimit\fP and
+ \fBumask\fP default values for every process.
+ .SH EXAMPLES
+ This is a sample initscript, which might be installed on your
+-system as \fI/etc/initscript.sample\fP.
++system as \fI/sbin/initscript.sample\fP.
+ .RS
+ .sp
+ .nf
+@@ -20,7 +20,7 @@
+ # initscript Executed by init(8) for every program it
+ # wants to spawn like this:
+ #
+-# /bin/sh /etc/initscript <id> <level> <action> <process>
++# /bin/sh /sbin/initscript <id> <level> <action> <process>
+ #
+
+ # Set umask to safe level, and enable core dumps.
+@@ -48,7 +48,7 @@
+ .RE
+ .SH FILES
+ /etc/inittab,
+-/etc/initscript.
++/sbin/initscript.
+ .SH AUTHOR
+ Miquel van Smoorenburg ,<miquels@cistron.nl>
+ .SH "SEE ALSO"
+diff -Naur sysvinit-2.86.orig/src/Makefile sysvinit-2.86/src/Makefile
+--- sysvinit-2.86.orig/src/Makefile 2004-06-09 14:47:45.000000000 +0200
++++ sysvinit-2.86/src/Makefile 2007-12-23 12:22:51.000000000 +0100
+@@ -11,7 +11,7 @@
+ CC = gcc
+ CFLAGS = -Wall -O2 -fomit-frame-pointer -D_GNU_SOURCE
+ LDFLAGS = -s
+-STATIC =
++STATIC = -static
+
+ # For some known distributions we do not build all programs, otherwise we do.
+ BIN =
+diff -Naur sysvinit-2.86.orig/src/initscript.sample sysvinit-2.86/src/initscript.sample
+--- sysvinit-2.86.orig/src/initscript.sample 1997-11-26 14:06:33.000000000 +0100
++++ sysvinit-2.86/src/initscript.sample 2007-12-23 12:22:51.000000000 +0100
+@@ -1,14 +1,14 @@
+ #
+-# initscript If this script is intalled as /etc/initscript,
++# initscript If this script is intalled as /sbin/initscript,
+ # it is executed by init(8) for every program it
+ # wants to spawn like this:
+ #
+-# /bin/sh /etc/initscript <id> <level> <action> <process>
++# /bin/sh /sbin/initscript <id> <level> <action> <process>
+ #
+ # It can be used to set the default umask and ulimit
+ # of all processes. By default this script is installed
+-# as /etc/initscript.sample, so to enable it you must
+-# rename this script first to /etc/initscript.
++# as /sbin/initscript.sample, so to enable it you must
++# rename this script first to /sbin/initscript.
+ #
+ # Version: @(#)initscript 1.10 10-Dec-1995 MvS.
+ #
+diff -Naur sysvinit-2.86.orig/src/paths.h sysvinit-2.86/src/paths.h
+--- sysvinit-2.86.orig/src/paths.h 2004-06-09 14:47:45.000000000 +0200
++++ sysvinit-2.86/src/paths.h 2007-12-23 12:23:50.000000000 +0100
+@@ -20,21 +20,21 @@
+ #define INITTAB "/etc/inittab" /* Location of inittab */
+ #define INIT "/sbin/init" /* Location of init itself. */
+ #define NOLOGIN "/etc/nologin" /* Stop user logging in. */
+-#define FASTBOOT "/fastboot" /* Enable fast boot. */
+-#define FORCEFSCK "/forcefsck" /* Force fsck on boot */
++#define FASTBOOT "/etc/fastboot" /* Enable fast boot. */
++#define FORCEFSCK "/etc/forcefsck" /* Force fsck on boot */
+ #define SDPID "/var/run/shutdown.pid" /* PID of shutdown program */
+ #define SHELL "/bin/sh" /* Default shell */
+ #define SULOGIN "/sbin/sulogin" /* Sulogin */
+-#define INITSCRIPT "/etc/initscript" /* Initscript. */
++#define INITSCRIPT "/sbin/initscript" /* Initscript. */
+ #define PWRSTAT "/etc/powerstatus" /* COMPAT: SIGPWR reason (OK/BAD) */
+
+ #if 0
+ #define INITLVL "/etc/initrunlvl" /* COMPAT: New runlevel */
+ #define INITLVL2 "/var/log/initrunlvl" /* COMPAT: New runlevel */
+ /* Note: INITLVL2 definition needs INITLVL */
+-#define HALTSCRIPT1 "/etc/init.d/halt" /* Called by "fast" shutdown */
++#define HALTSCRIPT1 "/etc/init.d/rc.halt" /* Called by "fast" shutdown */
+ #define HALTSCRIPT2 "/etc/rc.d/rc.0" /* Called by "fast" shutdown */
+-#define REBOOTSCRIPT1 "/etc/init.d/reboot" /* Ditto. */
++#define REBOOTSCRIPT1 "/etc/init.d/rc.reboot" /* Ditto. */
+ #define REBOOTSCRIPT2 "/etc/rc.d/rc.6" /* Ditto. */
+ #endif
+
diff --git a/source/a/sysvinit/sysvinit.pidof.rhforkseverything.diff b/source/a/sysvinit/sysvinit.pidof.rhforkseverything.diff
new file mode 100644
index 00000000..db94dcf1
--- /dev/null
+++ b/source/a/sysvinit/sysvinit.pidof.rhforkseverything.diff
@@ -0,0 +1,81 @@
+--- sysvinit-2.86/man/pidof.8.chroot 1998-09-02 08:49:33.000000000 -0400
++++ sysvinit-2.86/man/pidof.8 2005-12-19 15:37:40.000000000 -0500
+@@ -4,6 +4,7 @@
+ .SH SYNOPSIS
+ .B pidof
+ .RB [ \-s ]
++.RB [ \-c ]
+ .RB [ \-x ]
+ .RB [ \-o
+ .IR omitpid ]
+@@ -24,6 +25,10 @@
+ .SH OPTIONS
+ .IP -s
+ Single shot - this instructs the program to only return one \fIpid\fP.
++.IP -c
++Only return process ids that are running with the same root directory.
++This option does not make sense for non-root users, as they will be
++unable to check the current root directory of processes they do not own.
+ .IP -x
+ Scripts too - this causes the program to also return process id's of
+ shells running the named scripts.
+--- sysvinit-2.86/src/killall5.c.chroot 2004-07-30 08:16:23.000000000 -0400
++++ sysvinit-2.86/src/killall5.c 2005-12-19 15:38:47.000000000 -0500
+@@ -476,16 +476,22 @@
+ int f;
+ int first = 1;
+ int i, oind, opt, flags = 0;
++ int chroot_check = 0;
++ struct stat st;
++ char tmp[512];
+
+ for (oind = PIDOF_OMITSZ-1; oind > 0; oind--)
+ opid[oind] = 0;
+ opterr = 0;
+
+- while ((opt = getopt(argc,argv,"ho:sx")) != EOF) switch (opt) {
++ while ((opt = getopt(argc,argv,"hco:sx")) != EOF) switch (opt) {
+ case '?':
+ nsyslog(LOG_ERR,"invalid options on command line!\n");
+ closelog();
+ exit(1);
++ case 'c':
++ chroot_check = 1;
++ break;
+ case 'o':
+ if (oind >= PIDOF_OMITSZ -1) {
+ nsyslog(LOG_ERR,"omit pid buffer size %d "
+@@ -518,6 +524,16 @@
+ argc -= optind;
+ argv += optind;
+
++ /* Check if we are in a chroot */
++ if (chroot_check) {
++ snprintf(tmp, 512, "/proc/%d/root", getpid());
++ if (stat(tmp, &st) < 0) {
++ nsyslog(LOG_ERR, "stat failed for %s!\n", tmp);
++ closelog();
++ exit(1);
++ }
++ }
++
+ /* Print out process-ID's one by one. */
+ readproc();
+ for(f = 0; f < argc; f++) {
+@@ -541,6 +557,16 @@
+ else
+ spid = 1;
+ }
++ if (chroot_check) {
++ struct stat st2;
++ snprintf(tmp, 512, "/proc/%d/root",
++ p->pid);
++ if (stat(tmp, &st2) < 0 ||
++ st.st_dev != st2.st_dev ||
++ st.st_ino != st2.st_ino) {
++ continue;
++ }
++ }
+ if (!first)
+ printf(" ");
+ printf("%d", p->pid);
diff --git a/source/a/tar/rmt.8 b/source/a/tar/rmt.8
new file mode 100644
index 00000000..86d2cf92
--- /dev/null
+++ b/source/a/tar/rmt.8
@@ -0,0 +1,217 @@
+.\" 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.
+.\"
+.\" @(#)rmt.8 6.5 (Berkeley) 3/16/91
+.\"
+.Dd March 16, 1991
+.Dt RMT 8
+.Os BSD 4.2
+.Sh NAME
+.Nm rmt
+.Nd remote magtape protocol module
+.Sh SYNOPSIS
+.Nm rmt
+.Sh DESCRIPTION
+.Nm Rmt
+is a program used by the remote dump and restore programs
+in manipulating a magnetic tape drive through an interprocess
+communication connection.
+.Nm Rmt
+is normally started up with an
+.Xr rexec 3
+or
+.Xr rcmd 3
+call.
+.Pp
+The
+.Nm rmt
+program accepts requests specific to the manipulation of
+magnetic tapes, performs the commands, then responds with
+a status indication. All responses are in
+.Tn ASCII
+and in
+one of two forms.
+Successful commands have responses of:
+.Bd -filled -offset indent
+.Sm off
+.Sy A Ar number No \en
+.Sm on
+.Ed
+.Pp
+.Ar Number
+is an
+.Tn ASCII
+representation of a decimal number.
+Unsuccessful commands are responded to with:
+.Bd -filled -offset indent
+.Sm off
+.Xo Sy E Ar error-number
+.No \en Ar error-message
+.No \en
+.Xc
+.Sm on
+.Ed
+.Pp
+.Ar Error-number
+is one of the possible error
+numbers described in
+.Xr intro 2
+and
+.Ar error-message
+is the corresponding error string as printed
+from a call to
+.Xr perror 3 .
+The protocol is comprised of the
+following commands, which are sent as indicated - no spaces are supplied
+between the command and its arguments, or between its arguments, and
+.Ql \en
+indicates that a newline should be supplied:
+.Bl -tag -width Ds
+.Sm off
+.It Xo Sy \&O Ar device
+.No \en Ar mode No \en
+.Xc
+Open the specified
+.Ar device
+using the indicated
+.Ar mode .
+.Ar Device
+is a full pathname and
+.Ar mode
+is an
+.Tn ASCII
+representation of a decimal
+number suitable for passing to
+.Xr open 2 .
+If a device had already been opened, it is
+closed before a new open is performed.
+.It Xo Sy C Ar device No \en
+.Xc
+Close the currently open device. The
+.Ar device
+specified is ignored.
+.It Xo Sy L
+.Ar whence No \en
+.Ar offset No \en
+.Xc
+.Sm on
+Perform an
+.Xr lseek 2
+operation using the specified parameters.
+The response value is that returned from the
+.Xr lseek
+call.
+.Sm off
+.It Sy W Ar count No \en
+.Sm on
+Write data onto the open device.
+.Nm Rmt
+reads
+.Ar count
+bytes from the connection, aborting if
+a premature end-of-file is encountered.
+The response value is that returned from
+the
+.Xr write 2
+call.
+.Sm off
+.It Sy R Ar count No \en
+.Sm on
+Read
+.Ar count
+bytes of data from the open device.
+If
+.Ar count
+exceeds the size of the data buffer (10 kilobytes), it is
+truncated to the data buffer size.
+.Nm rmt
+then performs the requested
+.Xr read 2
+and responds with
+.Sm off
+.Sy A Ar count-read No \en
+.Sm on
+if the read was
+successful; otherwise an error in the
+standard format is returned. If the read
+was successful, the data read is then sent.
+.Sm off
+.It Xo Sy I Ar operation
+.No \en Ar count No \en
+.Xc
+.Sm on
+Perform a
+.Dv MTIOCOP
+.Xr ioctl 2
+command using the specified parameters.
+The parameters are interpreted as the
+.Tn ASCII
+representations of the decimal values
+to place in the
+.Ar mt_op
+and
+.Ar mt_count
+fields of the structure used in the
+.Xr ioctl
+call. The return value is the
+.Ar count
+parameter when the operation is successful.
+.It Sy S
+Return the status of the open device, as
+obtained with a
+.Dv MTIOCGET
+.Xr ioctl
+call. If the operation was successful,
+an ``ack'' is sent with the size of the
+status buffer, then the status buffer is
+sent (in binary).
+.El
+.Sm on
+.Pp
+Any other command causes
+.Nm rmt
+to exit.
+.Sh DIAGNOSTICS
+All responses are of the form described above.
+.Sh SEE ALSO
+.Xr rcmd 3 ,
+.Xr rexec 3 ,
+.Xr mtio 4 ,
+.Xr rdump 8 ,
+.Xr rrestore 8
+.Sh BUGS
+People tempted to use this for a remote file access protocol
+are discouraged.
+.Sh HISTORY
+The
+.Nm
+command appeared in
+.Bx 4.2 .
diff --git a/source/a/tar/slack-desc b/source/a/tar/slack-desc
new file mode 100644
index 00000000..573b8901
--- /dev/null
+++ b/source/a/tar/slack-desc
@@ -0,0 +1,19 @@
+# HOW TO EDIT THIS FILE:
+# The "handy ruler" below makes it easier to edit a package description. Line
+# up the first '|' above the ':' following the base package name, and the '|'
+# on the right side marks the last column you can put a character in. You must
+# make exactly 11 lines for the formatting to be correct. It's also
+# customary to leave one space after the ':'.
+
+ |-----handy-ruler------------------------------------------------------|
+tar: tar (archiving utility)
+tar:
+tar: This is the GNU version of tar, an archiving program designed to store
+tar: and extract files from an archive file known as a tarfile. A tarfile
+tar: may be made on a tape drive, however, it is also common to write a
+tar: tarfile to a normal file.
+tar:
+tar: Slackware's package system uses tarfiles compressed with GNU gzip.
+tar:
+tar:
+tar:
diff --git a/source/a/tar/tar-1.13.bzip2.diff b/source/a/tar/tar-1.13.bzip2.diff
new file mode 100644
index 00000000..85c03368
--- /dev/null
+++ b/source/a/tar/tar-1.13.bzip2.diff
@@ -0,0 +1,48 @@
+--- ./src/tar.c.orig Wed Jul 7 00:49:50 1999
++++ ./src/tar.c Fri Jul 30 23:00:13 1999
+@@ -16,6 +16,8 @@
+ with this program; if not, write to the Free Software Foundation, Inc.,
+ 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
+
++/* Patched to integrate bzip2 as compression filter (option -j) */
++
+ #include "system.h"
+
+ #include <getopt.h>
+@@ -164,6 +166,8 @@
+ {"block-number", no_argument, NULL, 'R'},
+ {"block-size", required_argument, NULL, OBSOLETE_BLOCKING_FACTOR},
+ {"blocking-factor", required_argument, NULL, 'b'},
++ {"bzip2", required_argument, NULL, 'j'},
++ {"bunzip2", required_argument, NULL, 'j'},
+ {"catenate", no_argument, NULL, 'A'},
+ {"checkpoint", no_argument, &checkpoint_option, 1},
+ {"compare", no_argument, NULL, 'd'},
+@@ -340,6 +344,7 @@
+ PATTERN at list/extract time, a globbing PATTERN\n\
+ -o, --old-archive, --portability write a V7 format archive\n\
+ --posix write a POSIX conformant archive\n\
++ -j, --bzip2, --bunzip2 filter the archive through bzip2\n\
+ -z, --gzip, --ungzip filter the archive through gzip\n\
+ -Z, --compress, --uncompress filter the archive through compress\n\
+ --use-compress-program=PROG filter through PROG (must accept -d)\n"),
+@@ -416,7 +421,7 @@
+ Y per-block gzip compression */
+
+ #define OPTION_STRING \
+- "-01234567ABC:F:GK:L:MN:OPRST:UV:WX:Zb:cdf:g:hiklmoprstuvwxz"
++ "-01234567ABC:F:GK:L:MN:OPRST:UV:WX:Zb:cdf:g:hijklmoprstuvwxz"
+
+ static void
+ set_subcommand_option (enum subcommand subcommand)
+@@ -787,6 +792,10 @@
+ if (add_exclude_file (excluded, optarg, '\n') != 0)
+ FATAL_ERROR ((0, errno, "%s", optarg));
+ break;
++
++ case 'j':
++ set_use_compress_program_option ("bzip2");
++ break;
+
+ case 'z':
+ set_use_compress_program_option ("gzip");
diff --git a/source/a/tar/tar-1.22-support_txz.diff b/source/a/tar/tar-1.22-support_txz.diff
new file mode 100644
index 00000000..5104f563
--- /dev/null
+++ b/source/a/tar/tar-1.22-support_txz.diff
@@ -0,0 +1,11 @@
+diff -Nur tar-1.22.orig/src/suffix.c tar-1.22/src/suffix.c
+--- tar-1.22.orig/src/suffix.c 2009-03-05 01:04:13.000000000 -0600
++++ tar-1.22/src/suffix.c 2009-05-06 15:59:10.695985191 -0500
+@@ -41,6 +41,7 @@
+ { S(tlz, lzma) },
+ { S(lzo, lzop) },
+ { S(xz, xz) },
++ { S(txz, xz) },
+ #undef S
+ };
+
diff --git a/source/a/tar/tar.1 b/source/a/tar/tar.1
new file mode 100644
index 00000000..1d7e02fa
--- /dev/null
+++ b/source/a/tar/tar.1
@@ -0,0 +1,368 @@
+.\" @(#)tar.1 1.11.1 93/19/22 PJV;
+.TH TAR 1 "22 September 1993"
+.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, --bzip2
+]
+[
+.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-names
+]
+[
+.B --preserve
+]
+[
+.B -R, --record-number
+]
+[
+.B --remove-files
+]
+[
+.B -s, --same-order, --preserve-order
+]
+[
+.B --same-owner
+]
+[
+.B --numeric-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 EXAMPLES
+.TP
+.B tar -xvvf foo.tar
+extract foo.tar
+.TP
+.B tar -xvvzf foo.tar.gz
+extract gzipped foo.tar.gz
+.TP
+.B tar -cvvf foo.tar foo/
+tar contents of folder foo in foo.tar
+.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 "-", meaning stdin/stdout)
+.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, --bzip2
+filter archive through bzip2, use to decompress .bz2 files
+.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 --numeric-owner
+always use numbers for user/group names
+.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)
+.TP
+.B --block-compress
+block the output of compression program for tapes
+.TP
+.B -[0-7][lmh]
+specify drive and density
+.SH BUGS
+.LP
+The GNU folks, in general, abhor man pages, and create info documents instead.
+The maintainer of tar falls into this category. This man page is neither
+complete, nor current, and was included in the Debian Linux packaging of tar
+entirely to reduce the frequency with which the lack of a man page gets
+reported as a bug in our defect tracking system.
+
+If you really want to understand tar, then you should run info and read the
+tar info pages, or use the info mode in emacs.
+
diff --git a/source/a/tar/tar.SlackBuild b/source/a/tar/tar.SlackBuild
new file mode 100755
index 00000000..43181ccb
--- /dev/null
+++ b/source/a/tar/tar.SlackBuild
@@ -0,0 +1,145 @@
+#!/bin/sh
+
+# Copyright 2005-2009 Patrick J. Volkerding, Sebeka, MN, USA
+# All rights reserved.
+#
+# Redistribution and use of this script, with or without modification, is
+# permitted provided that the following conditions are met:
+#
+# 1. Redistributions of this script must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# 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.
+
+# Slackware build script for tar
+
+VERSION=1.22
+ARCH=${ARCH:-x86_64}
+BUILD=${BUILD:-2}
+
+NUMJOBS=${NUMJOBS:--j7}
+
+CWD=$(pwd)
+TMP=${TMP:-/tmp}
+PKG=$TMP/package-tar
+
+rm -rf $PKG
+mkdir -p $TMP $PKG
+
+if [ "$ARCH" = "i486" ]; then
+ SLKCFLAGS="-O2 -march=i486 -mtune=i686"
+elif [ "$ARCH" = "s390" ]; then
+ SLKCFLAGS="-O2"
+elif [ "$ARCH" = "x86_64" ]; then
+ SLKCFLAGS="-O2 -fPIC"
+fi
+
+# This old version is the only one that won't clobber symlinks, e.g.:
+# someone moves /opt to /usr/opt and makes a symlink. With newer
+# versions of tar, installing any new package will remove the /opt
+# symlink and plop down a new directory there.
+# Well, there's a lot of other bugs (the remote stuff particularly I'm
+# told is flaky) in tar-1.13, so it'll only be here now for use by the
+# Slackware package utils. And, we'll even let people remove it and
+# the pkgutils will still try to work (but eventually they'll pay the
+# price :)
+cd $TMP
+rm -rf tar-1.13
+tar xvf $CWD/tar-1.13.tar.gz || exit 1
+cd tar-1.13 || exit 1
+zcat $CWD/tar-1.13.bzip2.diff.gz | patch -p1 --verbose || exit 1
+# The original config.{guess,sub} do not work on x86_64
+cp -p /usr/share/libtool/config.{guess,sub} .
+chown -R root:root .
+CFLAGS="$SLKCFLAGS" \
+./configure \
+ --prefix=/usr \
+ --disable-nls \
+ --build=$ARCH-slackware-linux
+make $NUMJOBS || make || exit 1
+mkdir -p $PKG/bin
+cat src/tar > $PKG/bin/tar-1.13
+chmod 0755 $PKG/bin/tar-1.13
+# End building of tar-1.13
+
+cd $TMP
+rm -rf tar-$VERSION
+tar xvf $CWD/tar-$VERSION.tar.bz2 || exit 1
+cd tar-$VERSION || exit 1
+chown -R root:root .
+find . \
+ \( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \
+ -exec chmod 755 {} \; -o \
+ \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
+ -exec chmod 644 {} \;
+
+# Don't spew "Record size = foo blocks" messages:
+zcat $CWD/tar.norecordsizespam.diff.gz | patch -p1 --verbose || exit 1
+
+# The "A lone zero block at %s" messages also cause problems:
+zcat $CWD/tar.nolonezero.diff.gz | patch -p1 --verbose || exit 1
+
+# Add support for *.txz files (our packages)
+zcat $CWD/tar-1.22-support_txz.diff.gz | patch -p1 --verbose || exit1
+
+CFLAGS="$SLKCFLAGS" \
+./configure \
+ --prefix=/usr \
+ --infodir=/usr/info \
+ --docdir=/usr/doc/tar-$VERSION \
+ --enable-backup-scripts \
+ --build=$ARCH-slackware-linux
+
+make $NUMJOBS || make || exit 1
+make install DESTDIR=$PKG || exit 1
+
+( cd $PKG
+ find . | xargs file | grep "executable" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
+ find . | xargs file | grep "shared object" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
+)
+
+mv $PKG/usr/bin/tar $PKG/bin
+( cd $PKG/usr/bin ; ln -sf /bin/tar . )
+( cd $PKG/bin ; ln -sf tar tar-$VERSION )
+
+# Support "historic" rmt locations:
+mkdir -p $PKG/{etc,sbin}
+( cd $PKG/etc
+ ln -sf /usr/libexec/rmt .
+ cd $PKG/sbin
+ ln -sf /usr/libexec/rmt .
+)
+
+mkdir -p $PKG/usr/man/man{1,8}
+cat $CWD/tar.1.gz > $PKG/usr/man/man1/tar.1.gz
+cat $CWD/rmt.8.gz > $PKG/usr/man/man8/rmt.8.gz
+
+rm -f $PKG/usr/info/dir
+gzip -9 $PKG/usr/info/*
+
+mkdir -p $PKG/usr/doc/tar-$VERSION
+cp -a \
+ ABOUT-NLS AUTHORS COPYING NEWS PORTS README THANKS TODO \
+ $PKG/usr/doc/tar-$VERSION
+
+mkdir -p $PKG/install
+cat $CWD/slack-desc > $PKG/install/slack-desc
+
+cd $PKG
+/sbin/makepkg -l y -c n $TMP/tar-$VERSION-$ARCH-$BUILD.tgz
+
+# Clean up the extra stuff:
+if [ "$1" = "--cleanup" ]; then
+ rm -rf $TMP/tar-$VERSION
+ rm -rf $PKG
+fi
+
diff --git a/source/a/tar/tar.nolonezero.diff b/source/a/tar/tar.nolonezero.diff
new file mode 100644
index 00000000..3c6f6f97
--- /dev/null
+++ b/source/a/tar/tar.nolonezero.diff
@@ -0,0 +1,25 @@
+--- ./src/list.c.orig 2004-05-10 04:49:09.000000000 -0700
++++ ./src/list.c 2004-06-06 13:13:23.000000000 -0700
+@@ -138,6 +138,14 @@
+
+ if (!ignore_zeros_option)
+ {
++
++ /*
++ * According to POSIX tar specs, this is wrong, but on the web
++ * there are some tar specs that can trigger this, and some tar
++ * implementations create tars according to that spec. For now,
++ * let's not be pedantic about issuing the warning.
++ */
++#if 0
+ char buf[UINTMAX_STRSIZE_BOUND];
+
+ status = read_header (false);
+@@ -145,6 +153,7 @@
+ break;
+ WARN ((0, 0, _("A lone zero block at %s"),
+ STRINGIFY_BIGINT (current_block_ordinal (), buf)));
++#endif
+ break;
+ }
+ status = prev_status;
diff --git a/source/a/tar/tar.norecordsizespam.diff b/source/a/tar/tar.norecordsizespam.diff
new file mode 100644
index 00000000..b7d1b7a9
--- /dev/null
+++ b/source/a/tar/tar.norecordsizespam.diff
@@ -0,0 +1,20 @@
+--- ./src/buffer.c.orig 2009-03-05 01:04:13.000000000 -0600
++++ ./src/buffer.c 2009-03-09 20:17:50.000000000 -0500
+@@ -688,7 +688,7 @@
+ more = record_start->buffer + status;
+ left = record_size - status;
+
+- if (left && left % BLOCKSIZE == 0
++ /* if (left && left % BLOCKSIZE == 0
+ && verbose_option
+ && record_start_block == 0 && status != 0)
+ {
+@@ -698,7 +698,7 @@
+ "Record size = %lu blocks",
+ rsize),
+ rsize));
+- }
++ } */
+
+ while (left % BLOCKSIZE != 0
+ || (left && status && read_full_records))
diff --git a/source/a/tcsh/doinst.sh b/source/a/tcsh/doinst.sh
new file mode 100644
index 00000000..d351e505
--- /dev/null
+++ b/source/a/tcsh/doinst.sh
@@ -0,0 +1,8 @@
+if fgrep tcsh etc/shells 1> /dev/null 2> /dev/null ; then
+ GOOD=y
+else
+ echo "/bin/tcsh" >> etc/shells
+ echo "/bin/csh" >> etc/shells
+fi
+( cd bin ; rm -rf csh )
+( cd bin ; ln -sf tcsh csh )
diff --git a/source/a/tcsh/slack-desc b/source/a/tcsh/slack-desc
new file mode 100644
index 00000000..623ad458
--- /dev/null
+++ b/source/a/tcsh/slack-desc
@@ -0,0 +1,19 @@
+# HOW TO EDIT THIS FILE:
+# The "handy ruler" below makes it easier to edit a package description. Line
+# up the first '|' above the ':' following the base package name, and the '|'
+# on the right side marks the last column you can put a character in. You must
+# make exactly 11 lines for the formatting to be correct. It's also
+# customary to leave one space after the ':'.
+
+ |-----handy-ruler------------------------------------------------------|
+tcsh: tcsh (C shell)
+tcsh:
+tcsh: tcsh is an enhanced but completely compatible version of the Berkeley
+tcsh: UNIX C shell, csh(1). It is a command language interpreter usable both
+tcsh: as an interactive login shell and a shell script command processor. It
+tcsh: includes a command-line editor, programmable word completion, spelling
+tcsh: correction, a history mechanism, job control, and a C-like syntax.
+tcsh:
+tcsh:
+tcsh:
+tcsh:
diff --git a/source/a/tcsh/tcsh.SlackBuild b/source/a/tcsh/tcsh.SlackBuild
new file mode 100755
index 00000000..65396478
--- /dev/null
+++ b/source/a/tcsh/tcsh.SlackBuild
@@ -0,0 +1,91 @@
+#!/bin/sh
+
+# Copyright 2008, 2009 Patrick J. Volkerding, Sebeka, Minnesota, USA
+# All rights reserved.
+#
+# Redistribution and use of this script, with or without modification, is
+# permitted provided that the following conditions are met:
+#
+# 1. Redistributions of this script must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# 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.
+
+
+VERSION=6.15.00
+ARCH=${ARCH:-x86_64}
+BUILD=${BUILD:-1}
+
+CWD=$(pwd)
+TMP=${TMP:-/tmp}
+PKG=$TMP/package-tcsh
+
+if [ "$ARCH" = "i486" ]; then
+ SLKCFLAGS="-O2 -march=i486 -mtune=i686"
+elif [ "$ARCH" = "s390" ]; then
+ SLKCFLAGS="-O2"
+elif [ "$ARCH" = "x86_64" ]; then
+ SLKCFLAGS="-O2"
+fi
+
+rm -rf $PKG
+mkdir -p $TMP $PKG
+cd $TMP
+rm -rf tcsh-$VERSION
+tar xjvf $CWD/tcsh-$VERSION.tar.bz2 || exit 1
+cd tcsh-$VERSION
+
+# The LS_COLORS variable shared by tcsh has new options in recent
+# versions of coreutils that cause tcsh to exit, so disable the
+# built-in color ls:
+zcat $CWD/tcsh.nobuiltincolorls.diff.gz | patch -p1 --verbose || exit 1
+
+chown -R root:root .
+find . \
+ \( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \
+ -exec chmod 755 {} \; -o \
+ \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
+ -exec chmod 644 {} \;
+
+CFLAGS="$SLKCFLAGS" \
+./configure \
+ --prefix= \
+ $ARCH-slackware-linux
+make -j4 || exit 1
+mkdir -p $PKG/etc
+mkdir -p $PKG/bin
+cat tcsh > $PKG/bin/tcsh
+chmod 755 $PKG/bin/tcsh
+mkdir -p $PKG/usr/man/man1
+cat tcsh.man | gzip -9c > $PKG/usr/man/man1/tcsh.1.gz
+echo '.so man1/tcsh.1' | gzip -9c > $PKG/usr/man/man1/csh.1.gz
+( cd $PKG
+ find . | xargs file | grep "executable" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
+ find . | xargs file | grep "shared object" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
+)
+mkdir -p $PKG/usr/doc/tcsh-$VERSION
+cp -a \
+ BUGS FAQ Fixes NewThings Ported README README.imake WishList Y2K \
+ $PKG/usr/doc/tcsh-$VERSION
+mkdir -p $PKG/install
+cat $CWD/slack-desc > $PKG/install/slack-desc
+zcat $CWD/doinst.sh.gz > $PKG/install/doinst.sh
+
+# Build the package:
+cd $PKG
+makepkg -l y -c n $TMP/tcsh-$VERSION-$ARCH-$BUILD.txz
+
+# Clean up the extra stuff:
+if [ "$1" = "--cleanup" ]; then
+ rm -rf $TMP/tcsh-${VERSION}
+ rm -rf $PKG
+fi
diff --git a/source/a/tcsh/tcsh.nobuiltincolorls.diff b/source/a/tcsh/tcsh.nobuiltincolorls.diff
new file mode 100644
index 00000000..2fd1c289
--- /dev/null
+++ b/source/a/tcsh/tcsh.nobuiltincolorls.diff
@@ -0,0 +1,11 @@
+--- ./config_f.h.orig 2005-03-04 07:46:04.000000000 -0600
++++ ./config_f.h 2006-02-09 14:30:59.000000000 -0600
+@@ -174,7 +174,7 @@
+ * COLOR_LS_F Do you want to use builtin color ls-F ?
+ *
+ */
+-#define COLOR_LS_F
++#undef COLOR_LS_F
+
+ /*
+ * COLORCAT Do you want to colorful message ?
diff --git a/source/a/time/slack-desc b/source/a/time/slack-desc
new file mode 100644
index 00000000..633c5816
--- /dev/null
+++ b/source/a/time/slack-desc
@@ -0,0 +1,19 @@
+# HOW TO EDIT THIS FILE:
+# The "handy ruler" below makes it easier to edit a package description. Line
+# up the first '|' above the ':' following the base package name, and the '|'
+# on the right side marks the last column you can put a character in. You must
+# make exactly 11 lines for the formatting to be correct. It's also
+# customary to leave one space after the ':'.
+
+ |-----handy-ruler------------------------------------------------------|
+time: time (the GNU time command for measuring program resource use)
+time:
+time: The `time' command runs another program, then displays information
+time: about the resources used by that program, collected by the system
+time: while the program was running.
+time:
+time: GNU time was originally written by David Keppel, with later versions
+time: worked on by David MacKenzie, Arne Henrik Juul, and Francois Pinard.
+time:
+time:
+time:
diff --git a/source/a/time/time.SlackBuild b/source/a/time/time.SlackBuild
new file mode 100755
index 00000000..108e7a8b
--- /dev/null
+++ b/source/a/time/time.SlackBuild
@@ -0,0 +1,69 @@
+#!/bin/sh
+
+# Copyright 2008, 2009 Patrick J. Volkerding, Sebeka, Minnesota, USA
+# All rights reserved.
+#
+# Redistribution and use of this script, with or without modification, is
+# permitted provided that the following conditions are met:
+#
+# 1. Redistributions of this script must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# 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.
+
+
+VERSION=1.7
+ARCH=${ARCH:-x86_64}
+BUILD=${BUILD:-1}
+
+CWD=$(pwd)
+TMP=${TMP:-/tmp}
+PKG=$TMP/package-time
+
+if [ "$ARCH" = "i486" ]; then
+ SLKCFLAGS="-O2 -march=i486 -mtune=i686"
+elif [ "$ARCH" = "s390" ]; then
+ SLKCFLAGS="-O2"
+elif [ "$ARCH" = "x86_64" ]; then
+ SLKCFLAGS="-O2 -fPIC"
+fi
+
+cd $TMP
+rm -rf time-${VERSION}
+tar xvzf $CWD/time-${VERSION}.tar.gz
+cd time-${VERSION}
+chown -R root:root .
+CFLAGS="$SLKCFLAGS" \
+./configure \
+ --prefix=/usr \
+ $ARCH-slackware-linux
+make || exit 1
+mkdir -p $PKG/usr/bin
+cat time > $PKG/usr/bin/time
+chmod 755 $PKG/usr/bin/time
+mkdir -p $PKG/usr/info
+cat time.info | gzip -9c > $PKG/usr/info/time.info.gz
+mkdir -p $PKG/usr/doc/time-${VERSION}
+cp -a \
+ AUTHORS COPYING NEWS README \
+ $PKG/usr/doc/time-${VERSION}
+( cd $PKG
+ find . | xargs file | grep "executable" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
+ find . | xargs file | grep "shared object" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
+)
+mkdir -p $PKG/install
+cat $CWD/slack-desc > $PKG/install/slack-desc
+
+# Build the package:
+cd $PKG
+makepkg -l y -c n $TMP/time-$VERSION-$ARCH-$BUILD.txz
+
diff --git a/source/a/tree/slack-desc b/source/a/tree/slack-desc
new file mode 100644
index 00000000..4140d110
--- /dev/null
+++ b/source/a/tree/slack-desc
@@ -0,0 +1,19 @@
+# HOW TO EDIT THIS FILE:
+# The "handy ruler" below makes it easier to edit a package description. Line
+# up the first '|' above the ':' following the base package name, and the '|'
+# on the right side marks the last column you can put a character in. You must
+# make exactly 11 lines for the formatting to be correct. It's also
+# customary to leave one space after the ':'.
+
+ |-----handy-ruler------------------------------------------------------|
+tree: tree (a program to display a directory tree)
+tree:
+tree: Tree is a recursive directory listing program that produces a depth
+tree: indented listing of files, which is colorized ala dircolors if the
+tree: LS_COLORS environment variable is set and output is to tty. With no
+tree: arguments, tree lists the files in the current directory.
+tree:
+tree: The tree utility was written by Steve Baker.
+tree:
+tree:
+tree:
diff --git a/source/a/tree/tree.SlackBuild b/source/a/tree/tree.SlackBuild
new file mode 100755
index 00000000..d20c3c1e
--- /dev/null
+++ b/source/a/tree/tree.SlackBuild
@@ -0,0 +1,65 @@
+#!/bin/sh
+
+# Copyright 2007-2009 Patrick J. Volkerding, Sebeka, Minnesota, USA
+# All rights reserved.
+#
+# Redistribution and use of this script, with or without modification, is
+# permitted provided that the following conditions are met:
+#
+# 1. Redistributions of this script must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# 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.
+
+VERSION=1.5.2.2
+ARCH=${ARCH:-x86_64}
+BUILD=${BUILD:-1}
+
+CWD=$(pwd)
+TMP=${TMP:-/tmp}
+PKG=$TMP/package-tree
+
+rm -rf $PKG
+mkdir -p $TMP $PKG
+
+cd $TMP
+rm -rf tree-$VERSION
+tar xvf $CWD/tree-$VERSION.tar.?z* || exit 1
+cd tree-$VERSION
+chown -R root:root .
+find . \
+ \( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \
+ -exec chmod 755 {} \; -o \
+ \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
+ -exec chmod 644 {} \;
+
+make -j2 || exit 1
+mkdir -p $PKG/usr/bin
+cat tree > $PKG/usr/bin/tree
+chmod 755 $PKG/usr/bin/tree
+mkdir -p $PKG/usr/man/man1
+cat man/tree.1 | gzip -9c > $PKG/usr/man/man1/tree.1.gz
+mkdir -p $PKG/usr/doc/tree-$VERSION
+cp -a \
+ CHANGES LICENSE README \
+ $PKG/usr/doc/tree-$VERSION
+( cd $PKG
+ find . | xargs file | grep "executable" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
+ find . | xargs file | grep "shared object" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
+)
+mkdir -p $PKG/install
+cat $CWD/slack-desc > $PKG/install/slack-desc
+
+# Build the package:
+cd $PKG
+makepkg -l y -c n $TMP/tree-$VERSION-$ARCH-$BUILD.txz
+
diff --git a/source/a/udev/config/modprobe.d/blacklist.conf.new b/source/a/udev/config/modprobe.d/blacklist.conf.new
new file mode 100644
index 00000000..25811703
--- /dev/null
+++ b/source/a/udev/config/modprobe.d/blacklist.conf.new
@@ -0,0 +1,270 @@
+#
+# Listing a module here prevents the hotplug scripts from loading it.
+# Usually that'd be so that some other driver will bind it instead,
+# no matter which driver happens to get probed first. Sometimes user
+# mode tools can also control driver binding.
+
+# PC Speaker support:
+# This one is loaded by /etc/rc.d/rc.modules. If you don't like
+# the beeps and buzz from speaker, edit /etc/rc.d/rc.modules.
+blacklist pcspkr
+
+# tulip ... de4x5, xircom_tulip_cb, dmfe (...) handle same devices
+blacklist de4x5
+
+# At least 2.4.3 and later xircom_tulip doesn't have that conflict
+# xircom_tulip_cb
+blacklist dmfe
+
+#evbug is a debug tool and should be loaded explicitly
+blacklist evbug
+
+# Alternate Intel EtherExpress Pro/100 support driver. List it
+# here so it won't conflict with an already-loaded e100 module.
+blacklist eepro100
+
+# Alternate 8139 driver. Some 8139 cards need this specific driver,
+# though...
+blacklist 8139cp
+
+# Deprecated BCM4318 driver.
+blacklist bcm43xx
+
+# Modules used to run a wireless adaptor as an access point. These
+# conflict with the normal driver for the device, and so should be
+# loaded manually.
+blacklist hostap_cs
+blacklist hostap_pci
+blacklist hostap_plx
+blacklist hostap
+
+# Ethernet over IEEE1394 module. In too many cases this will load
+# when there's no eth1394 device present (just an IEEE1394 port)
+blacklist eth1394
+
+# This module has also been known to cause crashes with some hardware.
+blacklist hw_random
+
+# The kernel lists this as "experimental", but for now it's "broken"
+blacklist via-ircc
+
+# ALSA modules to support sound modems. These should be loaded manually
+# if needed. For most people they just break sound support...
+blacklist snd-atiixp-modem
+blacklist snd-intel8x0m
+blacklist snd-via82xx-modem
+
+# OSS (Open Sound System) modules. This is the old and deprecated Linux
+# sound system. If you want to use OSS, remove the alsa-driver package
+# and cut out (or comment out) this list. With these modules
+# blacklisted ALSA will load by default.
+blacklist ac97
+blacklist ac97_codec
+blacklist aci
+blacklist ad1816
+blacklist ad1848
+blacklist ad1889
+blacklist adlib_card
+blacklist aedsp16
+blacklist ali5455
+blacklist awe_wave
+blacklist btaudio
+blacklist cmpci
+blacklist cs4232
+blacklist cs4281
+blacklist cs46xx
+blacklist emu10k1
+blacklist es1370
+blacklist es1371
+blacklist esssolo1
+blacklist forte
+blacklist gus
+blacklist i810_audio
+blacklist kahlua
+blacklist mad16
+blacklist maestro
+blacklist maestro3
+blacklist maui
+blacklist mpu401
+blacklist msnd
+blacklist msnd_classic
+blacklist msnd_pinnacle
+blacklist nm256_audio
+blacklist opl3
+blacklist opl3sa
+blacklist opl3sa2
+blacklist pas2
+blacklist pss
+blacklist rme96xx
+blacklist sb
+blacklist sb_lib
+blacklist sgalaxy
+blacklist sonicvibes
+blacklist sound
+blacklist sscape
+blacklist trident
+blacklist trix
+blacklist uart401
+blacklist uart6850
+blacklist v_midi
+blacklist via82cxxx_audio
+blacklist wavefront
+blacklist ymfpci
+
+# Hardware specific video framebuffer modules. If the user wants
+# these, they can load them manually or de-blacklist them. Having
+# them load automatically may lead to funny side effects with
+# certain revisions of video hardware.
+blacklist arcfb
+blacklist aty128fb
+blacklist atyfb
+blacklist cirrusfb
+blacklist clgenfb
+blacklist cyber2000fb
+blacklist fbcon-cfb2
+blacklist fbcon-cfb4
+blacklist fbcon-hga
+blacklist fbcon-mfb
+blacklist fbcon-vga-planes
+blacklist fbgen
+blacklist hgafb
+blacklist i2c-matroxfb
+blacklist i810fb
+blacklist intelfb
+blacklist kyrofb
+blacklist matroxfb_DAC1064
+blacklist matroxfb_Ti3026
+blacklist matroxfb_accel
+blacklist matroxfb_base
+blacklist matroxfb_crtc2
+blacklist matroxfb_g450
+blacklist matroxfb_maven
+blacklist matroxfb_misc
+blacklist neofb
+blacklist nvidiafb
+blacklist pm2fb
+blacklist pm3fb
+blacklist radeonfb
+blacklist rivafb
+blacklist savagefb
+blacklist sisfb
+blacklist sstfb
+blacklist tdfxfb
+blacklist tridentfb
+blacklist vga16fb
+
+# SCSI and SATA controller modules. Typically these are either
+# built into the kernel or loaded with an initrd already.
+blacklist 3w-xxxx
+blacklist 53c7,8xx
+blacklist AM53C974
+blacklist BusLogic
+blacklist NCR53c406a
+blacklist a100u2w
+blacklist advansys
+blacklist aha152x
+blacklist aha1542
+blacklist aha1740
+blacklist aic79xx
+blacklist aic7xxx
+blacklist aic7xxx_old
+blacklist aic94xx
+blacklist ata_piix
+blacklist atp870u
+blacklist cpqfc
+blacklist dc395x
+blacklist dmx3191d
+blacklist dpt_i2o
+blacklist dtc
+blacklist eata
+blacklist eata_dma
+blacklist eata_pio
+blacklist fdomain
+blacklist g_NCR5380
+blacklist g_NCR5380_mmio
+blacklist gdth
+blacklist ide-scsi
+blacklist imm
+blacklist in2000
+blacklist initio
+blacklist ipr
+blacklist ips
+blacklist libata
+blacklist megaraid
+blacklist ncr53c8xx
+blacklist nsp32
+blacklist osst
+blacklist pas16
+blacklist pci2000
+blacklist pci2220i
+blacklist ppa
+blacklist psi240i
+blacklist qla1280
+blacklist qla2100
+blacklist qla2200
+blacklist qla2300
+blacklist qla2322
+blacklist qla2xxx
+blacklist qla6312
+blacklist qla6322
+blacklist qlogicfas
+blacklist qlogicfas408
+blacklist qlogicfc
+blacklist qlogicisp
+blacklist seagate
+blacklist sim710
+blacklist sata_promise
+blacklist sata_sil
+blacklist sata_sis
+blacklist sata_svw
+blacklist sata_sx4
+blacklist sata_via
+blacklist sata_vsc
+blacklist scsi_debug
+blacklist scsi_transport_fc
+blacklist scsi_transport_spi
+blacklist sym53c416
+blacklist sym53c8xx
+blacklist sym53c8xx
+blacklist t128
+blacklist tmscsim
+blacklist u14-34f
+
+# Blacklist all watchdog modules. Many motherboards hangs with them and,
+# if you really need an watchdog you probably know how to load the module
+blacklist acquirewdt
+blacklist advantechwdt
+blacklist alim1535_wdt
+blacklist alim7101_wdt
+blacklist cpu5wdt
+blacklist eurotechwdt
+blacklist hpwdt
+blacklist i6300esb
+blacklist iTCO_vendor_support
+blacklist iTCO_wdt
+blacklist ib700wdt
+blacklist ibmasr
+blacklist it8712f_wdt
+blacklist machzwd
+blacklist mixcomwd
+blacklist pc87413_wdt
+blacklist pcwd
+blacklist pcwd_pci
+blacklist pcwd_usb
+blacklist sbc60xxwdt
+blacklist sbc7240_wdt
+blacklist sbc8360
+blacklist sbc_epx_c3
+blacklist sc1200wdt
+blacklist sc520_wdt
+blacklist scx200_wdt
+blacklist smsc37b787_wdt
+blacklist softdog
+blacklist w83627hf_wdt
+blacklist w83697hf_wdt
+blacklist w83877f_wdt
+blacklist w83977f_wdt
+blacklist wafer5823wdt
+blacklist wdt
+blacklist wdt_pci
+
diff --git a/source/a/udev/config/modprobe.d/isapnp.conf.new b/source/a/udev/config/modprobe.d/isapnp.conf.new
new file mode 100644
index 00000000..2ed9305e
--- /dev/null
+++ b/source/a/udev/config/modprobe.d/isapnp.conf.new
@@ -0,0 +1,15 @@
+# These aliases are here because many PnP modules do not
+# provide aliases for them.
+alias pnp:dPNP0400 parport_pc
+alias pnp:dPNP0401 parport_pc
+alias pnp:dPNP0510 irtty-sir
+alias pnp:dPNP0511 irtty-sir
+alias pnp:dPNP0700 floppy
+alias pnp:dPNP0B00 rtc
+alias acpi:PNP0B00: rtc-cmos
+alias acpi:PNP0B01: rtc-cmos
+alias acpi:PNP0B02: rtc-cmos
+alias pnp:dPNPB02F analog
+alias pnp:dPNP0F13 psmouse
+alias pnp:dPNP0800 pcspkr
+alias pnp:dPNP0303 atkbd
diff --git a/source/a/udev/config/modprobe.d/psmouse.conf.new b/source/a/udev/config/modprobe.d/psmouse.conf.new
new file mode 100644
index 00000000..70c0d819
--- /dev/null
+++ b/source/a/udev/config/modprobe.d/psmouse.conf.new
@@ -0,0 +1,6 @@
+# PS/2 mouse support:
+# The default options when the psmouse module can cause problems with KVM
+# switches. If you experience this, you may want to uncomment the line
+# below to use a more basic mouse protocol with the psmouse module:
+#options psmouse proto=imps
+
diff --git a/source/a/udev/config/modprobe.d/usb-controller.conf.new b/source/a/udev/config/modprobe.d/usb-controller.conf.new
new file mode 100644
index 00000000..4b77fd82
--- /dev/null
+++ b/source/a/udev/config/modprobe.d/usb-controller.conf.new
@@ -0,0 +1,4 @@
+# Make sure that ehci-hcd is always loaded before uhci-hci
+# # or ohci-hcd to prevent a kernel warning:
+install uhci-hcd /sbin/modprobe ehci-hcd ; /sbin/modprobe -i uhci-hcd
+install ohci-hcd /sbin/modprobe ehci-hcd ; /sbin/modprobe -i ohci-hcd
diff --git a/source/a/udev/config/rc.d/rc.udev.new b/source/a/udev/config/rc.d/rc.udev.new
new file mode 100644
index 00000000..8c238b0d
--- /dev/null
+++ b/source/a/udev/config/rc.d/rc.udev.new
@@ -0,0 +1,133 @@
+#!/bin/sh
+# This is a script to initialize udev, which populates the /dev
+# directory with device nodes, scans for devices, loads the
+# appropriate kernel modules, and configures the devices.
+
+PATH="/sbin:/bin"
+OPT=""
+
+. /etc/udev/udev.conf
+
+# remove trailing slash from udev_root
+UDEV_ROOT=$(echo "${udev_root}" |sed 's/\/*$//')
+
+case "$1" in
+ start)
+ # Sanity check #1, udev requires that the kernel support tmpfs:
+ if ! grep -wq tmpfs /proc/filesystems ; then
+ echo "Sorry, but you need tmpfs support in the kernel to use udev."
+ echo
+ echo "FATAL: Refusing to run /etc/rc.d/rc.udev."
+ exit 1
+ fi
+
+ # Sanity check #2, make sure that a 2.6.x kernel is new enough:
+ if [ "$(uname -r | cut -f 1,2 -d .)" = "2.6" ]; then
+ if [ "$(uname -r | cut -f 3 -d . | sed 's/[^[:digit:]].*//')" -lt "15" ]; then
+ echo "Sorry, but you need a 2.6.15+ kernel to use udev."
+ echo "Your kernel version is only $(uname -r)."
+ echo
+ echo "FATAL: Refusing to run /etc/rc.d/rc.udev."
+ exit 1
+ fi
+ fi
+
+ # Sanity check #3, make sure the udev package was not removed. If udevd
+ # is not there, this will also shut off this script to prevent further
+ # problems:
+ if [ ! -x /sbin/udevd ]; then
+ chmod 644 /etc/rc.d/rc.udev
+ echo "No udevd daemon found."
+ echo "Turning off udev: chmod 644 /etc/rc.d/rc.udev"
+ echo "FATAL: Refusing to run /etc/rc.d/rc.udev."
+ exit 1
+ fi
+
+ # Disable hotplug helper since udevd listens to netlink:
+ if [ -e /proc/sys/kernel/hotplug ]; then
+ echo "" > /proc/sys/kernel/hotplug
+ fi
+
+ # if udevd is already running, rc.udev start will try to re-run
+ # failed events. Else, it will start udevd.
+ if ps axc | grep -q udevd ; then
+ OPT="--type=failed $OPT"
+ ( cd ${UDEV_ROOT}/.udev
+ for TMPFILE in tmp-rules-*.rules ; do
+ mv $TMPFILE /etc/udev/rules.d/${TMPFILE/tmp-rules--/} 2>/dev/null
+ done
+ )
+ else
+ # Mount tmpfs on $UDEV_ROOT:
+ if ! grep -E -q "^[^[:space:]]+ $UDEV_ROOT tmpfs" /proc/mounts; then
+ # umount shm if needed
+ if grep -E -q "^[^[:space:]]+ $UDEV_ROOT/shm tmpfs" /proc/mounts; then
+ umount -l $UDEV_ROOT/shm
+ fi
+
+ # Umount pts if needed, we will remount it later:
+ if grep -E -q "^[^[:space:]]+ $UDEV_ROOT/pts devpts" /proc/mounts; then
+ umount -l $UDEV_ROOT/pts
+ fi
+
+ # Mount tmpfs on $UDEV_ROOT:
+ # the -n is because we don't want $UDEV_ROOT umounted when
+ # someone (rc.[06]) calls umount -a
+ mount -n -o mode=0755 -t tmpfs tmpfs $UDEV_ROOT
+
+ # Remount pts:
+ mkdir $UDEV_ROOT/pts 2> /dev/null
+ mount -n -o mode=0620,gid=5 -t devpts devpts $UDEV_ROOT/pts
+ fi
+
+ # Add the static nodes to $UDEV_ROOT:
+ cp --preserve=all --recursive --remove-destination /lib/udev/devices/* $UDEV_ROOT
+
+ # Start udevd:
+ echo "Starting udevd: /sbin/udevd --daemon"
+ /sbin/udevd --daemon
+
+ # Create rootdev rules
+ DEVICENUMBER=$( /bin/stat -c %d / )
+ MAJORNUMBER=$(($DEVICENUMBER / 256))
+ MINORNUMBER=$(($DEVICENUMBER % 256))
+
+ echo 'ACTION=="add|change", SUBSYSTEM=="block", ENV{MAJOR}=="'$MAJORNUMBER'", ENV{MINOR}=="'$MINORNUMBER'", SYMLINK+="root"' > /dev/.udev/rules.d/61-dev-root-link.rules
+
+ fi
+
+ echo "Triggering udev events: /sbin/udevadm trigger $OPT"
+ # Call udevtrigger and udevsettle to do the device configuration:
+ /sbin/udevadm trigger $OPT && /sbin/udevadm settle --timeout=120
+
+ ;;
+ stop)
+ echo "Stopping udevd"
+ if [ -e /proc/sys/kernel/hotplug ]; then
+ echo /sbin/hotplug > /proc/sys/kernel/hotplug
+ fi
+ killall udevd
+ ;;
+ restart)
+ echo "Restarting udevd"
+ killall udevd
+ sleep 5
+ udevd --daemon
+ ;;
+ reload)
+ echo "Reloading udev rules"
+ udevadm control --reload-rules
+ cp --preserve=all --recursive --update /lib/udev/devices/* $UDEV_ROOT
+ ;;
+ force-reload)
+ echo "Updating all available device nodes in $UDEV_ROOT"
+ udevadm control --reload-rules
+ rm -rf $UDEV_ROOT/.udev $UDEV_ROOT/disk
+ cp --preserve=all --recursive --update /lib/udev/devices/* $UDEV_ROOT
+ ;;
+
+ *)
+ echo "Usage: $0 {start|stop|restart|reload|force-reload}"
+ exit 1
+ ;;
+esac
diff --git a/source/a/udev/config/rules.d/40-slackware.rules b/source/a/udev/config/rules.d/40-slackware.rules
new file mode 100644
index 00000000..29b6071e
--- /dev/null
+++ b/source/a/udev/config/rules.d/40-slackware.rules
@@ -0,0 +1,16 @@
+# /lib/udev/rules.d/40-slackware.rules
+#
+# Slackware custom udev rules
+# Also see the following Slackware-provided custom rules files:
+# 65-permissions.rules and 90-network.rules
+#
+# Any change in this file will be overwritten in upgrades. Put your
+# custom rules somewhere else (90-local.rules is a good idea).
+#
+# See the udev man page to know the parameters you can use in udev
+# rules.
+#
+
+# input devices
+KERNEL=="mice", SYMLINK+="mouse"
+
diff --git a/source/a/udev/config/rules.d/65-permissions.rules b/source/a/udev/config/rules.d/65-permissions.rules
new file mode 100644
index 00000000..b0cfb259
--- /dev/null
+++ b/source/a/udev/config/rules.d/65-permissions.rules
@@ -0,0 +1,52 @@
+# Slackware permission rules
+#
+# These rules are here instead of 40-slackware.rules because
+# many of them need to run after the block section in
+# 50-udev.default.rules
+#
+# Remember, in any upgrade, this file will be overwritten.
+# Put your custom rules somewhere else (90-local.rules is
+# a good idea).
+#
+
+# all disks with group disk
+KERNEL!="fd*", SUBSYSTEM=="block", GROUP="disk"
+
+# permissions for IDE floppy devices
+KERNEL=="hd*[!0-9]", SUBSYSTEMS=="ide", ATTRS{media}=="floppy", \
+ SYMLINK+="floppy floppy-%k", OPTIONS+="ignore_remove"
+KERNEL=="hd*[0-9]", ATTRS{media}=="floppy", ATTRS{removable}=="1", \
+ SYMLINK+="floppy-%k", OPTIONS+="ignore_remove"
+
+# put all removable devices in group "plugdev"
+KERNEL=="hd*[!0-9]", ATTR{removable}=="1", GROUP="plugdev"
+KERNEL=="hd*[0-9]", ATTRS{removable}=="1", GROUP="plugdev"
+KERNEL=="sd*[!0-9]", ATTR{removable}=="1", GROUP="plugdev"
+KERNEL=="sd*[0-9]", ATTRS{removable}=="1", GROUP="plugdev"
+
+# Many hot-pluggable devices (ZIP, Jazz, LS-120, etc...)
+# need to be in plugdev, too.
+KERNEL=="diskonkey*", GROUP="plugdev"
+KERNEL=="jaz*", GROUP="plugdev"
+KERNEL=="pocketzip*", GROUP="plugdev"
+KERNEL=="zip*", GROUP="plugdev"
+KERNEL=="ls120", GROUP="plugdev"
+KERNEL=="microdrive*", GROUP="plugdev"
+
+# CD group and permissions
+ENV{ID_CDROM}=="?*", GROUP="cdrom", MODE="0660"
+KERNEL=="pktcdvd", GROUP="cdrom", MODE="0660"
+KERNEL=="pktcdvd[0-9]*", GROUP="cdrom", MODE="0660"
+# permissions for SCSI sg devices
+SUBSYSTEMS=="scsi", KERNEL=="s[gt][0-9]*", ATTRS{type}=="5", \
+ GROUP="cdrom", MODE="0660"
+
+# Make DRI video devices usable by anyone in group "video":
+KERNEL=="card[0-9]*",GROUP:="video"
+
+# alsa devices
+SUBSYSTEM=="sound", GROUP="audio"
+
+# Make the real time clock readable by all, and writable by root:
+KERNEL=="rtc|rtc0", MODE="0644"
+
diff --git a/source/a/udev/config/rules.d/90-network.rules b/source/a/udev/config/rules.d/90-network.rules
new file mode 100644
index 00000000..03f2ddc7
--- /dev/null
+++ b/source/a/udev/config/rules.d/90-network.rules
@@ -0,0 +1,5 @@
+# This file will be overwritten in next upgrade. Please put your
+# custom rules somewhere else (90-local.rules is a good idea)
+
+SUBSYSTEM=="net", NAME=="?*", ACTION=="add", RUN+="nethelper.sh $env{INTERFACE} start"
+SUBSYSTEM=="net", NAME=="?*", ACTION=="remove", RUN+="nethelper.sh $env{INTERFACE} stop"
diff --git a/source/a/udev/config/scripts/nethelper.sh b/source/a/udev/config/scripts/nethelper.sh
new file mode 100755
index 00000000..9e172027
--- /dev/null
+++ b/source/a/udev/config/scripts/nethelper.sh
@@ -0,0 +1,62 @@
+#!/bin/sh
+DEVNAME="$1"
+COMMAND="$2"
+
+testwrite() {
+ if touch /var/run/checkrw 2>/dev/null ; then
+ rm -rf /var/run/checkrw
+ RW=1
+ fi
+}
+
+case $DEVNAME in
+ eth*|ath*|wlan*|ra*|sta*|ctc*|lcs*|hsi*)
+ case $COMMAND in
+ 'start')
+ testwrite
+
+ if [ $RW ]; then
+ if [ -x /etc/rc.d/rc.inet1 ]; then
+ if ! /sbin/ifconfig | /bin/grep -q "^${DEVNAME} "; then
+ /etc/rc.d/rc.inet1 ${DEVNAME}_start
+ fi
+ fi
+ exit 0
+ else
+ exit 1
+ fi
+ ;;
+ 'stop')
+ if [ -x /etc/rc.d/rc.inet1 ]; then
+ if /sbin/ifconfig | /bin/grep -q "^${DEVNAME} "; then
+ /etc/rc.d/rc.inet1 ${DEVNAME}_stop
+ fi
+ fi
+ # Does dhcpcd appear to still be running on the
+ # interface? If so, try to stop it.
+ if [ -r /etc/dhcpc/dhcpcd-$DEVNAME.pid -o -r /var/run/dhcpcd-$DEVNAME.pid ]; then
+ /sbin/dhcpcd -k -d $DEVNAME
+ # Force garbage removal, if needed:
+ if [ -r /etc/dhcpc/dhcpcd-$DEVNAME.pid ]; then
+ /bin/rm -f /etc/dhcpc/dhcpcd-$DEVNAME.pid
+ elif [ -r /var/run/dhcpcd-$DEVNAME.pid ]; then
+ /bin/rm -f /var/run/dhcpcd-$DEVNAME.pid
+ fi
+ fi
+ # If the interface is now down, exit with a status of 0:
+ if /sbin/ifconfig | /bin/grep -q "^${DEVNAME} " ; then
+ exit 0
+ fi
+ ;;
+ *)
+ echo "usage $0 interface start|stop"
+ exit 1
+ ;;
+ esac
+ ;;
+ *)
+ echo "Interface $DEVNAME not supported."
+ exit 1
+ ;;
+esac
+exit 0
diff --git a/source/a/udev/config/udev.conf b/source/a/udev/config/udev.conf
new file mode 100644
index 00000000..b0421a08
--- /dev/null
+++ b/source/a/udev/config/udev.conf
@@ -0,0 +1,14 @@
+# udev.conf
+# The main config file for udev
+#
+# This file can be used to override some of udev's default values for where it
+# looks for files, and where it places device nodes.
+
+# udev_root - where in the filesystem to place the device nodes
+udev_root="/dev/"
+
+# udev_log - The initial syslog(3) priority: "err", "info", "debug" or
+# its numerical equivalent. For runtime debugging, the daemons
+# internal state can be changed with: udevcontrol log_priority=<value>
+udev_log="err"
+
diff --git a/source/a/udev/doinst.sh b/source/a/udev/doinst.sh
new file mode 100644
index 00000000..5e737ca0
--- /dev/null
+++ b/source/a/udev/doinst.sh
@@ -0,0 +1,39 @@
+config() {
+ NEW="$1"
+ OLD="$(dirname $NEW)/$(basename $NEW .new)"
+ # If there's no config file by that name, mv it over:
+ if [ ! -r $OLD ]; then
+ mv $NEW $OLD
+ elif [ "$(cat $OLD | md5sum)" = "$(cat $NEW | md5sum)" ]; then # toss the redundant copy
+ rm $NEW
+ fi
+ # Otherwise, we leave the .new copy for the admin to consider...
+}
+
+# Keep same perms on rc.udev.new:
+if [ -e etc/rc.d/rc.udev ]; then
+ cp -a etc/rc.d/rc.udev etc/rc.d/rc.udev.new.incoming
+ cat etc/rc.d/rc.udev.new > etc/rc.d/rc.udev.new.incoming
+ mv etc/rc.d/rc.udev.new.incoming etc/rc.d/rc.udev.new
+fi
+
+# There's no reason for a user to edit rc.udev, so overwrite it:
+if [ -r etc/rc.d/rc.udev.new ]; then
+ mv etc/rc.d/rc.udev.new etc/rc.d/rc.udev
+fi
+
+# This should catch *all* files in /etc/modprobe.d/ and move them over to
+# have .conf extensions
+for modfile in $(ls etc/modprobe.d/ | grep -v "\.\(conf\|bak\|orig\|new\)"); do
+ if [ -e etc/modprobe.d/$modfile -a ! -e etc/modprobe.d/$modfile.conf ]; then
+ mv etc/modprobe.d/$modfile etc/modprobe.d/$modfile.conf
+ elif [ -e etc/modprobe.d/$modfile -a -e etc/modprobe.d/$modfile.conf ]; then
+ mv etc/modprobe.d/$modfile etc/modprobe.d/$modfile.bak
+ fi
+done
+
+config etc/modprobe.d/blacklist.conf.new
+config etc/modprobe.d/isapnp.conf.new
+config etc/modprobe.d/psmouse.conf.new
+config etc/modprobe.d/usb-controller.conf.new
+
diff --git a/source/a/udev/rule_generator.diff b/source/a/udev/rule_generator.diff
new file mode 100644
index 00000000..0ff218a6
--- /dev/null
+++ b/source/a/udev/rule_generator.diff
@@ -0,0 +1,80 @@
+diff -Naur udev-114/extras/rule_generator/write_cd_rules udev-114slk/extras/rule_generator/write_cd_rules
+--- udev-114/extras/rule_generator/write_cd_rules 2007-08-05 09:08:47.000000000 -0300
++++ udev-114slk/extras/rule_generator/write_cd_rules 2007-08-22 20:17:24.000000000 -0300
+@@ -3,7 +3,8 @@
+ # This script is run if an optical drive lacks a rule for persistent naming.
+ #
+ # It adds symlinks for optical drives based on the device class determined
+-# by cdrom_id and used ID_PATH to identify the device.
++# by cdrom_id and used ID_PATH or ID_SERIAL or ID_MODEL and ID_REVISION
++# to identify the device.
+ #
+ # (C) 2006 Marco d'Itri <md@Linux.IT>
+ #
+@@ -97,18 +98,59 @@
+ choose_rules_file
+
+ link_num=$(find_next_available 'cdrom[0-9]*')
++[ "$link_num" = "" ] && link_num=0
+
+ match="ENV{ID_CDROM}==\"?*\", $RULE"
+
+ comment="$ID_MODEL ($ID_PATH)"
+-
+ write_rule "$match" "cdrom$link_num" "$comment"
+-[ "$ID_CDROM_CD_R" -o "$ID_CDROM_CD_RW" ] && \
+- write_rule "$match" "cdrw$link_num"
+-[ "$ID_CDROM_DVD" ] && \
+- write_rule "$match" "dvd$link_num"
+-[ "$ID_CDROM_DVD_R" -o "$ID_CDROM_DVD_RW" -o "$ID_CDROM_DVD_RAM" ] && \
+- write_rule "$match" "dvdrw$link_num"
++ if [ "$(find_all_rules 'SYMLINK+=' cdrom)" = "" ]; then
++ write_rule "$match" "cdrom"
++ fi
++
++ if [ "$ID_CDROM_CD_R" ]; then
++ write_rule "$match" "cdr$link_num"
++ if [ "$(find_all_rules 'SYMLINK+=' cdr)" = "" ]; then
++ write_rule "$match" "cdr"
++ fi
++
++ write_rule "$match" "cdwriter$link_num"
++ if [ "$(find_all_rules 'SYMLINK+=' cdwriter)" = "" ]; then
++ write_rule "$match" "cdwriter"
++ fi
++
++ if [ "$ID_CDROM_CD_RW" ]; then
++ write_rule "$match" "cdrw$link_num"
++ if [ "$(find_all_rules 'SYMLINK+=' cdrw)" = "" ]; then
++ write_rule "$match" "cdrw"
++ fi
++ fi
++
++ if [ "$(find_all_rules 'SYMLINK+=' writer)" = "" ]; then
++ write_rule "$match" "writer"
++ fi
++ fi
++
++ if [ "$ID_CDROM_DVD" ]; then
++ write_rule "$match" "dvd$link_num"
++ if [ "$(find_all_rules 'SYMLINK+=' dvd)" = "" ]; then
++ write_rule "$match" "dvd"
++ fi
++
++ if [ "$ID_CDROM_DVD_R" -o "$ID_CDROM_DVD_RW" -o "$ID_CDROM_DVD_RAM" ]; then
++ write_rule "$match" "dvdrw$link_num"
++ if [ "$(find_all_rules 'SYMLINK+=' dvdrw)" = "" ]; then
++ write_rule "$match" "dvdrw"
++ fi
++
++ write_rule "$match" "dvdwriter$link_num"
++ if [ "$(find_all_rules 'SYMLINK+=' dvdwriter)" = "" ]; then
++ write_rule "$match" "dvdwriter"
++ fi
++ fi
++ fi
++
++
+
+ unlock_rules_file
+
diff --git a/source/a/udev/slack-desc b/source/a/udev/slack-desc
new file mode 100644
index 00000000..c411756c
--- /dev/null
+++ b/source/a/udev/slack-desc
@@ -0,0 +1,19 @@
+# HOW TO EDIT THIS FILE:
+# The "handy ruler" below makes it easier to edit a package description. Line
+# up the first '|' above the ':' following the base package name, and the '|' on
+# the right side marks the last column you can put a character in. You must make
+# exactly 11 lines for the formatting to be correct. It's also customary to
+# leave one space after the ':'.
+
+ |-----handy-ruler-------------------------------------------------------|
+udev: udev (dynamic device directory system)
+udev:
+udev: udev provides a dynamic device directory containing only the files
+udev: for the devices which are actually present. It creates or removes
+udev: device node files usually located in the /dev directory.
+udev:
+udev: udev requires a 2.6 or newer kernel.
+udev:
+udev: Kay Sievers is the udev maintainer.
+udev:
+udev:
diff --git a/source/a/udev/udev-141.tar.bz2.sign b/source/a/udev/udev-141.tar.bz2.sign
new file mode 100644
index 00000000..a3082691
--- /dev/null
+++ b/source/a/udev/udev-141.tar.bz2.sign
@@ -0,0 +1,8 @@
+-----BEGIN PGP SIGNATURE-----
+Version: GnuPG v1.4.9 (GNU/Linux)
+Comment: See http://www.kernel.org/signature.html for info
+
+iD8DBQBJ3TgkyGugalF9Dw4RAtJCAJ4+ns9bz4ZIu+3ecfra/BWrn3euqwCeOFQZ
+6A7UqbHlTlD48sOk249ZATA=
+=AY1A
+-----END PGP SIGNATURE-----
diff --git a/source/a/udev/udev.SlackBuild b/source/a/udev/udev.SlackBuild
new file mode 100755
index 00000000..0c632748
--- /dev/null
+++ b/source/a/udev/udev.SlackBuild
@@ -0,0 +1,140 @@
+#!/bin/sh
+
+# Copyright 2006, 2008, 2009 Patrick J. Volkerding, Sebeka, Minnesota, USA
+# All rights reserved.
+#
+# Redistribution and use of this script, with or without modification, is
+# permitted provided that the following conditions are met:
+#
+# 1. Redistributions of this script must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# 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.
+
+
+VERSION=${VERSION:-141}
+ARCH=${ARCH:-x86_64}
+BUILD=${BUILD:-3}
+
+NUMJOBS=${NUMJOBS:-" -j7 "}
+
+if [ "$ARCH" = "x86_64" ]; then
+ LIBDIRSUFFIX="64"
+else
+ LIBDIRSUFFIX=""
+fi
+
+CWD=$(pwd)
+TMP=${TMP:-/tmp}
+PKG=$TMP/package-udev
+
+rm -rf $PKG
+mkdir -p $TMP $PKG/lib/udev
+cd $TMP
+rm -rf udev-$VERSION
+tar xvf $CWD/udev-$VERSION.tar.bz2 || exit 1
+cd udev-$VERSION || exit 1
+chown -R root:root .
+find . \
+ \( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \
+ -exec chmod 755 {} \; -o \
+ \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
+ -exec chmod 644 {} \;
+
+zcat $CWD/rule_generator.diff.gz | patch -p1 --verbose || exit 1
+
+./configure \
+ --prefix=/usr \
+ --exec-prefix=/ \
+ --sysconfdir=/etc \
+ --mandir=/usr/man \
+ --with-libdir-name=lib${LIBDIRSUFFIX} \
+ --build=$ARCH-slackware-linux
+
+make $NUMJOBS || make || exit 1
+make install DESTDIR=$PKG || exit 1
+
+( cd $PKG
+ find . | xargs file | grep "executable" | grep ELF | cut -f 1 -d : | \
+ xargs strip --strip-unneeded 2> /dev/null || true
+ find . | xargs file | grep "shared object" | grep ELF | cut -f 1 -d : | \
+ xargs strip --strip-unneeded 2> /dev/null
+)
+
+# scsi_id and vol_id are needed by multipath
+( cd $PKG/sbin
+ ln -s ../lib/udev/scsi_id scsi_id
+ ln -s ../lib/udev/vol_id vol_id
+)
+
+mkdir -p \
+ $PKG/etc/modprobe.d \
+ $PKG/etc/rc.d \
+ $PKG/etc/udev/rules.d \
+ $PKG/lib/firmware
+
+# Yes, these will clobber existing config files.
+cp -a $CWD/config/udev.conf $PKG/etc/udev/udev.conf
+# Copy Slackware custom rules
+cp -a $CWD/config/rules.d/* $PKG/lib/udev/rules.d/
+# Copy some files from upstream
+cp -a rules/packages/40-alsa.rules $PKG/lib/udev/rules.d/
+cp -a rules/packages/40-isdn.rules $PKG/lib/udev/rules.d/
+cp -a rules/packages/40-zaptel.rules $PKG/lib/udev/rules.d/
+cp -a rules/packages/40-infiniband.rules $PKG/lib/udev/rules.d/
+#cp -a rules/packages/40-pilot-links.rules $PKG/etc/udev/rules.d/
+#cp -a rules/packages/64-md-raid.rules $PKG/etc/udev/rules.d/
+# Now the init script and module-init-tools stuff
+cp -a $CWD/config/rc.d/rc.udev.new $PKG/etc/rc.d/rc.udev.new
+cp -a $CWD/config/modprobe.d/* $PKG/etc/modprobe.d
+
+chown -R root:root $PKG/etc
+find $PKG/etc -type f -exec chmod 644 {} \;
+find $PKG/etc -type d -exec chmod 755 {} \;
+chmod 755 $PKG/etc/rc.d/rc.udev.new
+
+# Add extra device nodes to the package that udev doesn't make:
+tar xvf $CWD/udev-fixed-devices.tar.gz -C $PKG
+
+# Add various helper scripts:
+for file in $CWD/config/scripts/* ; do
+ cp -a $file $PKG/lib/udev/
+done
+chown -R root:root $PKG/lib/udev
+chmod 755 $PKG/lib/udev/*
+
+mkdir -p $PKG/usr/doc/udev-$VERSION
+cp -a \
+ COPYING* FAQ README* TODO RELEASE-NOTES docs \
+ $PKG/usr/doc/udev-$VERSION
+
+# Compress and fix manpage symlinks:
+if [ -d $PKG/usr/man ]; then
+ ( cd $PKG/usr/man
+ for manpagedir in $(find . -type d -name "man*") ; do
+ ( cd $manpagedir
+ for eachpage in $( find . -type l -maxdepth 1) ; do
+ ln -s $( readlink $eachpage ).gz $eachpage.gz
+ rm $eachpage
+ done
+ gzip -9 *.?
+ )
+ done
+ )
+fi
+
+mkdir -p $PKG/install
+zcat $CWD/doinst.sh.gz > $PKG/install/doinst.sh
+cat $CWD/slack-desc > $PKG/install/slack-desc
+
+cd $PKG
+/sbin/makepkg -l y -c y $TMP/udev-$VERSION-$ARCH-$BUILD.txz
diff --git a/source/a/unarj/Makefile b/source/a/unarj/Makefile
new file mode 100644
index 00000000..95483e75
--- /dev/null
+++ b/source/a/unarj/Makefile
@@ -0,0 +1,21 @@
+#
+# Makefile for unarj under Linux
+# by Arrigo Triulzi ({a.triulzi,agbt}@{imperial,ic}.ac.uk)
+#
+
+CC = gcc
+CFLAGS = -O2 -DUNIX
+INSTALLDIR=/usr/bin
+
+unarj: unarj.o decode.o environ.o
+ gcc $(CFLAGS) -o unarj unarj.o decode.o environ.o
+
+clean:
+ rm -f core unarj *.o *.out
+
+install:
+ cp unarj $(INSTALLDIR)
+
+unarj.o: unarj.c unarj.h Makefile
+environ.o: environ.c unarj.h Makefile
+decode.o: decode.c unarj.h Makefile
diff --git a/source/a/unarj/slack-desc b/source/a/unarj/slack-desc
new file mode 100644
index 00000000..14b08009
--- /dev/null
+++ b/source/a/unarj/slack-desc
@@ -0,0 +1,19 @@
+# HOW TO EDIT THIS FILE:
+# The "handy ruler" below makes it easier to edit a package description. Line
+# up the first '|' above the ':' following the base package name, and the '|'
+# on the right side marks the last column you can put a character in. You must
+# make exactly 11 lines for the formatting to be correct. It's also
+# customary to leave one space after the ':'.
+
+ |-----handy-ruler------------------------------------------------------|
+unarj: unarj (a command-line utility for decompressing .arj archives)
+unarj:
+unarj: This is a simple command-line tool for decompressing .arj files.
+unarj: Thanks to Haruhiko Okumura and ARJ Software, Inc. for providing this
+unarj: source code free of charge.
+unarj:
+unarj: UNARJ software and manual copyright (c) 1990-2002 ARJ Software, Inc.
+unarj: All rights reserved.
+unarj:
+unarj:
+unarj:
diff --git a/source/a/unarj/unarj.SlackBuild b/source/a/unarj/unarj.SlackBuild
new file mode 100755
index 00000000..56097eb2
--- /dev/null
+++ b/source/a/unarj/unarj.SlackBuild
@@ -0,0 +1,61 @@
+#!/bin/sh
+
+# Copyright 2008, 2009 Patrick J. Volkerding, Sebeka, Minnesota, USA
+# All rights reserved.
+#
+# Redistribution and use of this script, with or without modification, is
+# permitted provided that the following conditions are met:
+#
+# 1. Redistributions of this script must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# 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.
+
+
+VERSION=265
+ARCH=${ARCH:-x86_64}
+BUILD=${BUILD:-1}
+
+CWD=$(pwd)
+TMP=${TMP:-/tmp}
+PKG=$TMP/package-unarj
+
+rm -rf $PKG
+mkdir -p $TMP $PKG
+
+cd $TMP
+rm -rf unarj${VERSION}
+tar xzvf $CWD/unarj${VERSION}.tar.gz
+cd unarj${VERSION}
+chown -R root:root .
+cp -a $CWD/Makefile.gz .
+gzip --force -d Makefile.gz
+make || exit 1
+mkdir -p $PKG/usr/bin
+cat unarj > $PKG/usr/bin/unarj
+chmod 755 $PKG/usr/bin/unarj
+mkdir -p $PKG/usr/doc/unarj${VERSION}
+cp -a \
+ *.txt \
+ $PKG/usr/doc/unarj${VERSION}
+( cd $PKG
+ find . | xargs file | grep "executable" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
+ find . | xargs file | grep "shared object" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
+)
+
+mkdir -p $PKG/install
+cat $CWD/slack-desc > $PKG/install/slack-desc
+
+# Build the package:
+cd $PKG
+makepkg -l y -c n $TMP/unarj-$VERSION-$ARCH-$BUILD.txz
+
diff --git a/source/a/usbutils/slack-desc b/source/a/usbutils/slack-desc
new file mode 100644
index 00000000..ffca25c2
--- /dev/null
+++ b/source/a/usbutils/slack-desc
@@ -0,0 +1,19 @@
+# HOW TO EDIT THIS FILE:
+# The "handy ruler" below makes it easier to edit a package description. Line
+# up the first '|' above the ':' following the base package name, and the '|'
+# on the right side marks the last column you can put a character in. You must
+# make exactly 11 lines for the formatting to be correct. It's also
+# customary to leave one space after the ':'.
+
+ |-----handy-ruler------------------------------------------------------|
+usbutils: usbutils (USB utilities)
+usbutils:
+usbutils: lsusb displays detailed information about all USB buses and devices
+usbutils: in the system.
+usbutils:
+usbutils: usbmodules lists the kernel modules for a plugged in USB device.
+usbutils:
+usbutils: See the manual pages for more details.
+usbutils:
+usbutils:
+usbutils:
diff --git a/source/a/usbutils/usbutils.SlackBuild b/source/a/usbutils/usbutils.SlackBuild
new file mode 100755
index 00000000..dcb14b46
--- /dev/null
+++ b/source/a/usbutils/usbutils.SlackBuild
@@ -0,0 +1,120 @@
+#!/bin/sh
+
+# Copyright 2008, 2009 Patrick J. Volkerding, Sebeka, MN, USA
+# All rights reserved.
+#
+# Redistribution and use of this script, with or without modification, is
+# permitted provided that the following conditions are met:
+#
+# 1. Redistributions of this script must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# 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.
+
+
+VERSION=${VERSION:-0.82}
+ARCH=${ARCH:-x86_64}
+BUILD=${BUILD:-2}
+
+NUMJOBS=${NUMJOBS:--j7}
+
+CWD=$(pwd)
+TMP=${TMP:-/tmp}
+PKG=$TMP/package-usbutils
+
+if [ "$ARCH" = "i486" ]; then
+ SLKCFLAGS="-O2 -march=i486 -mtune=i686"
+ LIBDIRSUFFIX=""
+elif [ "$ARCH" = "i686" ]; then
+ SLKCFLAGS="-O2 -march=i686 -mtune=i686"
+ LIBDIRSUFFIX=""
+elif [ "$ARCH" = "x86_64" ]; then
+ SLKCFLAGS="-O2 -fPIC"
+ LIBDIRSUFFIX="64"
+fi
+
+rm -rf $PKG
+mkdir -p $TMP $PKG
+cd $TMP
+rm -rf usbutils-$VERSION
+tar xvf $CWD/usbutils-$VERSION.tar.?z* || exit 1
+cd usbutils-$VERSION || exit 1
+
+chown -R root:root .
+find . \
+ \( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \
+ -exec chmod 755 {} \; -o \
+ \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
+ -exec chmod 644 {} \;
+
+# Fetch the latest usb.ids:
+rm -f usb.ids*
+wget $(grep 'SRC=' update-usbids.sh.in | cut -d= -f2- | tr -d \")
+
+CFLAGS="$SLKCFLAGS" \
+./configure \
+ --prefix=/usr \
+ --libdir=/usr/lib${LIBDIRSUFFIX} \
+ --sbindir=/sbin \
+ --mandir=/usr/man \
+ --build=$ARCH-slackware-linux
+
+make $NUMJOBS || make || exit 1
+make install DESTDIR=$PKG || exit 1
+
+# Get rid of this redundant file:
+rm -f $PKG/usr/share/usb.ids.gz
+
+# The usbids are kept under /usr, so it makes no sense at all to have
+# this util in /sbin rather than /usr/sbin:
+mkdir -p $PKG/usr/sbin
+mv $PKG/sbin/update-usbids.sh $PKG/usr/sbin/update-usbids.sh
+
+# Now that they install the util as "update-usbids.sh" instead of
+# "update-usbids", we have to make a compatibility symlink in case
+# anyone is updating this with a cron job or some such:
+( cd $PKG/usr/sbin ; ln -sf update-usbids.sh update-usbids )
+
+# And, since they put the util in /sbin, we'd better at least make the
+# upstream name available there too...
+( cd $PKG/sbin ; ln -sf /usr/sbin/update-usbids.sh . )
+
+find $PKG | xargs file | grep -e "executable" -e "shared object" \
+ | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
+
+# Compress and if needed symlink the man pages:
+if [ -d $PKG/usr/man ]; then
+ ( cd $PKG/usr/man
+ for manpagedir in $(find . -type d -name "man*") ; do
+ ( cd $manpagedir
+ for eachpage in $( find . -type l -maxdepth 1) ; do
+ ln -s $( readlink $eachpage ).gz $eachpage.gz
+ rm $eachpage
+ done
+ gzip -9 *.?
+ )
+ done
+ )
+fi
+
+mkdir -p $PKG/usr/doc/usbutils-$VERSION
+cp -a \
+ AUTHORS COPYING ChangeLog NEWS README \
+ $PKG/usr/doc/usbutils-$VERSION
+
+mkdir -p $PKG/install
+cat $CWD/slack-desc > $PKG/install/slack-desc
+
+# Build the package:
+cd $PKG
+/sbin/makepkg -l y -c n $TMP/usbutils-$VERSION-$ARCH-$BUILD.txz
+
diff --git a/source/a/usbutils/usbutils.ids.dest b/source/a/usbutils/usbutils.ids.dest
new file mode 100644
index 00000000..67111881
--- /dev/null
+++ b/source/a/usbutils/usbutils.ids.dest
@@ -0,0 +1,11 @@
+--- ./update-usbids.sh.orig 2005-01-22 17:03:47.000000000 -0600
++++ ./update-usbids.sh 2007-01-04 17:14:28.000000000 -0600
+@@ -4,7 +4,7 @@
+
+ set -e
+ SRC="http://www.linux-usb.org/usb.ids"
+-DEST=usb.ids
++DEST=/usr/share/usb.ids
+
+ if which wget >/dev/null ; then
+ DL="wget -O $DEST.new $SRC"
diff --git a/source/a/utempter/doinst.sh b/source/a/utempter/doinst.sh
new file mode 100644
index 00000000..94c6231d
--- /dev/null
+++ b/source/a/utempter/doinst.sh
@@ -0,0 +1,10 @@
+if ! grep "^utmp:" etc/group 1> /dev/null 2> /dev/null ; then
+ if ! grep ":22:" etc/group 1> /dev/null 2> /dev/null ; then
+ # we'll be adding this in the etc package anyway.
+ echo "utmp::22:" >> etc/group
+ # This should be able to handle itself...
+ #chown root:utmp usr/sbin/utempter
+ fi
+fi
+chown root:utmp var/run/utmp var/log/wtmp
+chmod 664 var/run/utmp var/log/wtmp
diff --git a/source/a/utempter/slack-desc b/source/a/utempter/slack-desc
new file mode 100644
index 00000000..ff00f66e
--- /dev/null
+++ b/source/a/utempter/slack-desc
@@ -0,0 +1,19 @@
+# HOW TO EDIT THIS FILE:
+# The "handy ruler" below makes it easier to edit a package description. Line
+# up the first '|' above the ':' following the base package name, and the '|' on
+# the right side marks the last column you can put a character in. You must make
+# exactly 11 lines for the formatting to be correct. It's also customary to
+# leave one space after the ':'.
+
+ |-----handy-ruler------------------------------------------------------|
+utempter: utempter (utmp updating library and utility)
+utempter:
+utempter: The utempter package provides a utility and shared library that
+utempter: allows terminal applications such as xterm and screen to update
+utempter: /var/run/utmp and /var/log/wtmp without requiring root privileges.
+utempter:
+utempter:
+utempter:
+utempter:
+utempter:
+utempter:
diff --git a/source/a/utempter/utempter.SlackBuild b/source/a/utempter/utempter.SlackBuild
new file mode 100755
index 00000000..7d0d24b7
--- /dev/null
+++ b/source/a/utempter/utempter.SlackBuild
@@ -0,0 +1,77 @@
+#!/bin/sh
+
+# Copyright 2008, 2009 Patrick J. Volkerding, Sebeka, Minnesota, USA
+# All rights reserved.
+#
+# Redistribution and use of this script, with or without modification, is
+# permitted provided that the following conditions are met:
+#
+# 1. Redistributions of this script must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# 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.
+
+
+VERSION=1.1.4
+ARCH=${ARCH:-x86_64}
+BUILD=${BUILD:-1}
+
+if [ "$ARCH" = "x86_64" ]; then
+ LIBDIRSUFFIX="64"
+else
+ LIBDIRSUFFIX=""
+fi
+
+CWD=$(pwd)
+TMP=${TMP:-/tmp}
+PKG=$TMP/package-utempter
+rm -rf $PKG
+mkdir -p $TMP $PKG/usr
+
+cd $TMP
+# The original package name was "utempter", but this new version
+# calls itself "libutempter". We'll keep the same old package name
+# to avoid confusing upgrades.
+rm -rf libutempter-$VERSION
+tar xjvf $CWD/libutempter-$VERSION.tar.bz2
+cd libutempter-$VERSION
+chown -R root:root .
+## I see no reason to use different paths than in utempter-0.5.2:
+#zcat $CWD/libutempter.slack.diff.gz | patch -p1 --verbose || exit 1
+find . -perm 664 -exec chmod 644 {} \;
+find . -perm 775 -exec chmod 755 {} \;
+sed -i -e "s#/usr/lib#/usr/lib${LIBDIRSUFFIX}#g" Makefile
+make
+make install DESTDIR=$PKG
+# A static libutempter seems like a bad idea, since it wouldn't work
+# without the making utempter binary. That and the shared lib are a
+# closely matched set.
+rm -f $PKG/usr/lib${LIBDIRSUFFIX}/libutempter.a
+# Set proper permissions:
+chown root:utmp $PKG/usr/lib${LIBDIRSUFFIX}/utempter/utempter
+chmod 2755 $PKG/usr/lib${LIBDIRSUFFIX}/utempter/utempter
+chmod 644 $PKG/usr/include/utempter.h
+mkdir -p $PKG/usr/doc/utempter-$VERSION
+cp -a \
+ COPYING README \
+ $PKG/usr/doc/utempter-$VERSION
+( cd $PKG
+ find . | xargs file | grep "executable" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
+ find . | xargs file | grep "shared object" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
+)
+mkdir -p $PKG/install
+cat $CWD/slack-desc > $PKG/install/slack-desc
+zcat $CWD/doinst.sh > $PKG/install/doinst.sh
+
+cd $PKG
+makepkg -l y -c n $TMP/utempter-$VERSION-$ARCH-$BUILD.txz
+
diff --git a/source/a/util-linux-ng/adjtimex_1.23-1.diff b/source/a/util-linux-ng/adjtimex_1.23-1.diff
new file mode 100644
index 00000000..8c250157
--- /dev/null
+++ b/source/a/util-linux-ng/adjtimex_1.23-1.diff
@@ -0,0 +1,5456 @@
+--- adjtimex-1.23.orig/config.sub
++++ adjtimex-1.23/config.sub
+@@ -0,0 +1,1622 @@
++#! /bin/sh
++# Configuration validation subroutine script.
++# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
++# 2000, 2001, 2002, 2003, 2004, 2005, 2006 Free Software Foundation,
++# Inc.
++
++timestamp='2007-01-18'
++
++# This file is (in principle) common to ALL GNU software.
++# The presence of a machine in this file suggests that SOME GNU software
++# can handle that machine. It does not imply ALL GNU software can.
++#
++# This file 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., 51 Franklin Street - Fifth Floor, Boston, MA
++# 02110-1301, USA.
++#
++# As a special exception to the GNU General Public License, if you
++# distribute this file as part of a program that contains a
++# configuration script generated by Autoconf, you may include it under
++# the same distribution terms that you use for the rest of that program.
++
++
++# Please send patches to <config-patches@gnu.org>. Submit a context
++# diff and a properly formatted ChangeLog entry.
++#
++# Configuration subroutine to validate and canonicalize a configuration type.
++# Supply the specified configuration type as an argument.
++# If it is invalid, we print an error message on stderr and exit with code 1.
++# Otherwise, we print the canonical config type on stdout and succeed.
++
++# This file is supposed to be the same for all GNU packages
++# and recognize all the CPU types, system types and aliases
++# that are meaningful with *any* GNU software.
++# Each package is responsible for reporting which valid configurations
++# it does not support. The user should be able to distinguish
++# a failure to support a valid configuration from a meaningless
++# configuration.
++
++# The goal of this file is to map all the various variations of a given
++# machine specification into a single specification in the form:
++# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM
++# or in some cases, the newer four-part form:
++# CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM
++# It is wrong to echo any other type of specification.
++
++me=`echo "$0" | sed -e 's,.*/,,'`
++
++usage="\
++Usage: $0 [OPTION] CPU-MFR-OPSYS
++ $0 [OPTION] ALIAS
++
++Canonicalize a configuration name.
++
++Operation modes:
++ -h, --help print this help, then exit
++ -t, --time-stamp print date of last modification, then exit
++ -v, --version print version number, then exit
++
++Report bugs and patches to <config-patches@gnu.org>."
++
++version="\
++GNU config.sub ($timestamp)
++
++Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005
++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."
++
++help="
++Try \`$me --help' for more information."
++
++# Parse command line
++while test $# -gt 0 ; do
++ case $1 in
++ --time-stamp | --time* | -t )
++ echo "$timestamp" ; exit ;;
++ --version | -v )
++ echo "$version" ; exit ;;
++ --help | --h* | -h )
++ echo "$usage"; exit ;;
++ -- ) # Stop option processing
++ shift; break ;;
++ - ) # Use stdin as input.
++ break ;;
++ -* )
++ echo "$me: invalid option $1$help"
++ exit 1 ;;
++
++ *local*)
++ # First pass through any local machine types.
++ echo $1
++ exit ;;
++
++ * )
++ break ;;
++ esac
++done
++
++case $# in
++ 0) echo "$me: missing argument$help" >&2
++ exit 1;;
++ 1) ;;
++ *) echo "$me: too many arguments$help" >&2
++ exit 1;;
++esac
++
++# Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any).
++# Here we must recognize all the valid KERNEL-OS combinations.
++maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'`
++case $maybe_os in
++ nto-qnx* | linux-gnu* | linux-dietlibc | linux-newlib* | linux-uclibc* | \
++ uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* | \
++ storm-chaos* | os2-emx* | rtmk-nova*)
++ os=-$maybe_os
++ basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`
++ ;;
++ *)
++ basic_machine=`echo $1 | sed 's/-[^-]*$//'`
++ if [ $basic_machine != $1 ]
++ then os=`echo $1 | sed 's/.*-/-/'`
++ else os=; fi
++ ;;
++esac
++
++### Let's recognize common machines as not being operating systems so
++### that things like config.sub decstation-3100 work. We also
++### recognize some manufacturers as not being operating systems, so we
++### can provide default operating systems below.
++case $os in
++ -sun*os*)
++ # Prevent following clause from handling this invalid input.
++ ;;
++ -dec* | -mips* | -sequent* | -encore* | -pc532* | -sgi* | -sony* | \
++ -att* | -7300* | -3300* | -delta* | -motorola* | -sun[234]* | \
++ -unicom* | -ibm* | -next | -hp | -isi* | -apollo | -altos* | \
++ -convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\
++ -c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \
++ -harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \
++ -apple | -axis | -knuth | -cray)
++ os=
++ basic_machine=$1
++ ;;
++ -sim | -cisco | -oki | -wec | -winbond)
++ os=
++ basic_machine=$1
++ ;;
++ -scout)
++ ;;
++ -wrs)
++ os=-vxworks
++ basic_machine=$1
++ ;;
++ -chorusos*)
++ os=-chorusos
++ basic_machine=$1
++ ;;
++ -chorusrdb)
++ os=-chorusrdb
++ basic_machine=$1
++ ;;
++ -hiux*)
++ os=-hiuxwe2
++ ;;
++ -sco6)
++ os=-sco5v6
++ basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
++ ;;
++ -sco5)
++ os=-sco3.2v5
++ basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
++ ;;
++ -sco4)
++ os=-sco3.2v4
++ basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
++ ;;
++ -sco3.2.[4-9]*)
++ os=`echo $os | sed -e 's/sco3.2./sco3.2v/'`
++ basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
++ ;;
++ -sco3.2v[4-9]*)
++ # Don't forget version if it is 3.2v4 or newer.
++ basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
++ ;;
++ -sco5v6*)
++ # Don't forget version if it is 3.2v4 or newer.
++ basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
++ ;;
++ -sco*)
++ os=-sco3.2v2
++ basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
++ ;;
++ -udk*)
++ basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
++ ;;
++ -isc)
++ os=-isc2.2
++ basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
++ ;;
++ -clix*)
++ basic_machine=clipper-intergraph
++ ;;
++ -isc*)
++ basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
++ ;;
++ -lynx*)
++ os=-lynxos
++ ;;
++ -ptx*)
++ basic_machine=`echo $1 | sed -e 's/86-.*/86-sequent/'`
++ ;;
++ -windowsnt*)
++ os=`echo $os | sed -e 's/windowsnt/winnt/'`
++ ;;
++ -psos*)
++ os=-psos
++ ;;
++ -mint | -mint[0-9]*)
++ basic_machine=m68k-atari
++ os=-mint
++ ;;
++esac
++
++# Decode aliases for certain CPU-COMPANY combinations.
++case $basic_machine in
++ # Recognize the basic CPU types without company name.
++ # Some are omitted here because they have special meanings below.
++ 1750a | 580 \
++ | a29k \
++ | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \
++ | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \
++ | am33_2.0 \
++ | arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr | avr32 \
++ | bfin \
++ | c4x | clipper \
++ | d10v | d30v | dlx | dsp16xx \
++ | fido | fr30 | frv \
++ | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \
++ | i370 | i860 | i960 | ia64 \
++ | ip2k | iq2000 \
++ | m32c | m32r | m32rle | m68000 | m68k | m88k \
++ | maxq | mb | microblaze | mcore | mep \
++ | mips | mipsbe | mipseb | mipsel | mipsle \
++ | mips16 \
++ | mips64 | mips64el \
++ | mips64vr | mips64vrel \
++ | mips64orion | mips64orionel \
++ | mips64vr4100 | mips64vr4100el \
++ | mips64vr4300 | mips64vr4300el \
++ | mips64vr5000 | mips64vr5000el \
++ | mips64vr5900 | mips64vr5900el \
++ | mipsisa32 | mipsisa32el \
++ | mipsisa32r2 | mipsisa32r2el \
++ | mipsisa64 | mipsisa64el \
++ | mipsisa64r2 | mipsisa64r2el \
++ | mipsisa64sb1 | mipsisa64sb1el \
++ | mipsisa64sr71k | mipsisa64sr71kel \
++ | mipstx39 | mipstx39el \
++ | mn10200 | mn10300 \
++ | mt \
++ | msp430 \
++ | nios | nios2 \
++ | ns16k | ns32k \
++ | or32 \
++ | pdp10 | pdp11 | pj | pjl \
++ | powerpc | powerpc64 | powerpc64le | powerpcle | ppcbe \
++ | pyramid \
++ | score \
++ | sh | sh[1234] | sh[24]a | sh[23]e | sh[34]eb | sheb | shbe | shle | sh[1234]le | sh3ele \
++ | sh64 | sh64le \
++ | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet | sparclite \
++ | sparcv8 | sparcv9 | sparcv9b | sparcv9v \
++ | spu | strongarm \
++ | tahoe | thumb | tic4x | tic80 | tron \
++ | v850 | v850e \
++ | we32k \
++ | x86 | xc16x | xscale | xscalee[bl] | xstormy16 | xtensa \
++ | z8k)
++ basic_machine=$basic_machine-unknown
++ ;;
++ m6811 | m68hc11 | m6812 | m68hc12)
++ # Motorola 68HC11/12.
++ basic_machine=$basic_machine-unknown
++ os=-none
++ ;;
++ m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k)
++ ;;
++ ms1)
++ basic_machine=mt-unknown
++ ;;
++
++ # We use `pc' rather than `unknown'
++ # because (1) that's what they normally are, and
++ # (2) the word "unknown" tends to confuse beginning users.
++ i*86 | x86_64)
++ basic_machine=$basic_machine-pc
++ ;;
++ # Object if more than one company name word.
++ *-*-*)
++ echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2
++ exit 1
++ ;;
++ # Recognize the basic CPU types with company name.
++ 580-* \
++ | a29k-* \
++ | alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \
++ | alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \
++ | alphapca5[67]-* | alpha64pca5[67]-* | arc-* \
++ | arm-* | armbe-* | armle-* | armeb-* | armv*-* \
++ | avr-* | avr32-* \
++ | bfin-* | bs2000-* \
++ | c[123]* | c30-* | [cjt]90-* | c4x-* | c54x-* | c55x-* | c6x-* \
++ | clipper-* | craynv-* | cydra-* \
++ | d10v-* | d30v-* | dlx-* \
++ | elxsi-* \
++ | f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \
++ | h8300-* | h8500-* \
++ | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \
++ | i*86-* | i860-* | i960-* | ia64-* \
++ | ip2k-* | iq2000-* \
++ | m32c-* | m32r-* | m32rle-* \
++ | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \
++ | m88110-* | m88k-* | maxq-* | mcore-* \
++ | mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \
++ | mips16-* \
++ | mips64-* | mips64el-* \
++ | mips64vr-* | mips64vrel-* \
++ | mips64orion-* | mips64orionel-* \
++ | mips64vr4100-* | mips64vr4100el-* \
++ | mips64vr4300-* | mips64vr4300el-* \
++ | mips64vr5000-* | mips64vr5000el-* \
++ | mips64vr5900-* | mips64vr5900el-* \
++ | mipsisa32-* | mipsisa32el-* \
++ | mipsisa32r2-* | mipsisa32r2el-* \
++ | mipsisa64-* | mipsisa64el-* \
++ | mipsisa64r2-* | mipsisa64r2el-* \
++ | mipsisa64sb1-* | mipsisa64sb1el-* \
++ | mipsisa64sr71k-* | mipsisa64sr71kel-* \
++ | mipstx39-* | mipstx39el-* \
++ | mmix-* \
++ | mt-* \
++ | msp430-* \
++ | nios-* | nios2-* \
++ | none-* | np1-* | ns16k-* | ns32k-* \
++ | orion-* \
++ | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \
++ | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* | ppcbe-* \
++ | pyramid-* \
++ | romp-* | rs6000-* \
++ | sh-* | sh[1234]-* | sh[24]a-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \
++ | shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \
++ | sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | sparclet-* \
++ | sparclite-* \
++ | sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | strongarm-* | sv1-* | sx?-* \
++ | tahoe-* | thumb-* \
++ | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \
++ | tron-* \
++ | v850-* | v850e-* | vax-* \
++ | we32k-* \
++ | x86-* | x86_64-* | xc16x-* | xps100-* | xscale-* | xscalee[bl]-* \
++ | xstormy16-* | xtensa-* \
++ | ymp-* \
++ | z8k-*)
++ ;;
++ # Recognize the various machine names and aliases which stand
++ # for a CPU type and a company and sometimes even an OS.
++ 386bsd)
++ basic_machine=i386-unknown
++ os=-bsd
++ ;;
++ 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc)
++ basic_machine=m68000-att
++ ;;
++ 3b*)
++ basic_machine=we32k-att
++ ;;
++ a29khif)
++ basic_machine=a29k-amd
++ os=-udi
++ ;;
++ abacus)
++ basic_machine=abacus-unknown
++ ;;
++ adobe68k)
++ basic_machine=m68010-adobe
++ os=-scout
++ ;;
++ alliant | fx80)
++ basic_machine=fx80-alliant
++ ;;
++ altos | altos3068)
++ basic_machine=m68k-altos
++ ;;
++ am29k)
++ basic_machine=a29k-none
++ os=-bsd
++ ;;
++ amd64)
++ basic_machine=x86_64-pc
++ ;;
++ amd64-*)
++ basic_machine=x86_64-`echo $basic_machine | sed 's/^[^-]*-//'`
++ ;;
++ amdahl)
++ basic_machine=580-amdahl
++ os=-sysv
++ ;;
++ amiga | amiga-*)
++ basic_machine=m68k-unknown
++ ;;
++ amigaos | amigados)
++ basic_machine=m68k-unknown
++ os=-amigaos
++ ;;
++ amigaunix | amix)
++ basic_machine=m68k-unknown
++ os=-sysv4
++ ;;
++ apollo68)
++ basic_machine=m68k-apollo
++ os=-sysv
++ ;;
++ apollo68bsd)
++ basic_machine=m68k-apollo
++ os=-bsd
++ ;;
++ aux)
++ basic_machine=m68k-apple
++ os=-aux
++ ;;
++ balance)
++ basic_machine=ns32k-sequent
++ os=-dynix
++ ;;
++ c90)
++ basic_machine=c90-cray
++ os=-unicos
++ ;;
++ convex-c1)
++ basic_machine=c1-convex
++ os=-bsd
++ ;;
++ convex-c2)
++ basic_machine=c2-convex
++ os=-bsd
++ ;;
++ convex-c32)
++ basic_machine=c32-convex
++ os=-bsd
++ ;;
++ convex-c34)
++ basic_machine=c34-convex
++ os=-bsd
++ ;;
++ convex-c38)
++ basic_machine=c38-convex
++ os=-bsd
++ ;;
++ cray | j90)
++ basic_machine=j90-cray
++ os=-unicos
++ ;;
++ craynv)
++ basic_machine=craynv-cray
++ os=-unicosmp
++ ;;
++ cr16c)
++ basic_machine=cr16c-unknown
++ os=-elf
++ ;;
++ crds | unos)
++ basic_machine=m68k-crds
++ ;;
++ crisv32 | crisv32-* | etraxfs*)
++ basic_machine=crisv32-axis
++ ;;
++ cris | cris-* | etrax*)
++ basic_machine=cris-axis
++ ;;
++ crx)
++ basic_machine=crx-unknown
++ os=-elf
++ ;;
++ da30 | da30-*)
++ basic_machine=m68k-da30
++ ;;
++ decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn)
++ basic_machine=mips-dec
++ ;;
++ decsystem10* | dec10*)
++ basic_machine=pdp10-dec
++ os=-tops10
++ ;;
++ decsystem20* | dec20*)
++ basic_machine=pdp10-dec
++ os=-tops20
++ ;;
++ delta | 3300 | motorola-3300 | motorola-delta \
++ | 3300-motorola | delta-motorola)
++ basic_machine=m68k-motorola
++ ;;
++ delta88)
++ basic_machine=m88k-motorola
++ os=-sysv3
++ ;;
++ djgpp)
++ basic_machine=i586-pc
++ os=-msdosdjgpp
++ ;;
++ dpx20 | dpx20-*)
++ basic_machine=rs6000-bull
++ os=-bosx
++ ;;
++ dpx2* | dpx2*-bull)
++ basic_machine=m68k-bull
++ os=-sysv3
++ ;;
++ ebmon29k)
++ basic_machine=a29k-amd
++ os=-ebmon
++ ;;
++ elxsi)
++ basic_machine=elxsi-elxsi
++ os=-bsd
++ ;;
++ encore | umax | mmax)
++ basic_machine=ns32k-encore
++ ;;
++ es1800 | OSE68k | ose68k | ose | OSE)
++ basic_machine=m68k-ericsson
++ os=-ose
++ ;;
++ fx2800)
++ basic_machine=i860-alliant
++ ;;
++ genix)
++ basic_machine=ns32k-ns
++ ;;
++ gmicro)
++ basic_machine=tron-gmicro
++ os=-sysv
++ ;;
++ go32)
++ basic_machine=i386-pc
++ os=-go32
++ ;;
++ h3050r* | hiux*)
++ basic_machine=hppa1.1-hitachi
++ os=-hiuxwe2
++ ;;
++ h8300hms)
++ basic_machine=h8300-hitachi
++ os=-hms
++ ;;
++ h8300xray)
++ basic_machine=h8300-hitachi
++ os=-xray
++ ;;
++ h8500hms)
++ basic_machine=h8500-hitachi
++ os=-hms
++ ;;
++ harris)
++ basic_machine=m88k-harris
++ os=-sysv3
++ ;;
++ hp300-*)
++ basic_machine=m68k-hp
++ ;;
++ hp300bsd)
++ basic_machine=m68k-hp
++ os=-bsd
++ ;;
++ hp300hpux)
++ basic_machine=m68k-hp
++ os=-hpux
++ ;;
++ hp3k9[0-9][0-9] | hp9[0-9][0-9])
++ basic_machine=hppa1.0-hp
++ ;;
++ hp9k2[0-9][0-9] | hp9k31[0-9])
++ basic_machine=m68000-hp
++ ;;
++ hp9k3[2-9][0-9])
++ basic_machine=m68k-hp
++ ;;
++ hp9k6[0-9][0-9] | hp6[0-9][0-9])
++ basic_machine=hppa1.0-hp
++ ;;
++ hp9k7[0-79][0-9] | hp7[0-79][0-9])
++ basic_machine=hppa1.1-hp
++ ;;
++ hp9k78[0-9] | hp78[0-9])
++ # FIXME: really hppa2.0-hp
++ basic_machine=hppa1.1-hp
++ ;;
++ hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893)
++ # FIXME: really hppa2.0-hp
++ basic_machine=hppa1.1-hp
++ ;;
++ hp9k8[0-9][13679] | hp8[0-9][13679])
++ basic_machine=hppa1.1-hp
++ ;;
++ hp9k8[0-9][0-9] | hp8[0-9][0-9])
++ basic_machine=hppa1.0-hp
++ ;;
++ hppa-next)
++ os=-nextstep3
++ ;;
++ hppaosf)
++ basic_machine=hppa1.1-hp
++ os=-osf
++ ;;
++ hppro)
++ basic_machine=hppa1.1-hp
++ os=-proelf
++ ;;
++ i370-ibm* | ibm*)
++ basic_machine=i370-ibm
++ ;;
++# I'm not sure what "Sysv32" means. Should this be sysv3.2?
++ i*86v32)
++ basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
++ os=-sysv32
++ ;;
++ i*86v4*)
++ basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
++ os=-sysv4
++ ;;
++ i*86v)
++ basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
++ os=-sysv
++ ;;
++ i*86sol2)
++ basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
++ os=-solaris2
++ ;;
++ i386mach)
++ basic_machine=i386-mach
++ os=-mach
++ ;;
++ i386-vsta | vsta)
++ basic_machine=i386-unknown
++ os=-vsta
++ ;;
++ iris | iris4d)
++ basic_machine=mips-sgi
++ case $os in
++ -irix*)
++ ;;
++ *)
++ os=-irix4
++ ;;
++ esac
++ ;;
++ isi68 | isi)
++ basic_machine=m68k-isi
++ os=-sysv
++ ;;
++ m88k-omron*)
++ basic_machine=m88k-omron
++ ;;
++ magnum | m3230)
++ basic_machine=mips-mips
++ os=-sysv
++ ;;
++ merlin)
++ basic_machine=ns32k-utek
++ os=-sysv
++ ;;
++ mingw32)
++ basic_machine=i386-pc
++ os=-mingw32
++ ;;
++ miniframe)
++ basic_machine=m68000-convergent
++ ;;
++ *mint | -mint[0-9]* | *MiNT | *MiNT[0-9]*)
++ basic_machine=m68k-atari
++ os=-mint
++ ;;
++ mips3*-*)
++ basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`
++ ;;
++ mips3*)
++ basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown
++ ;;
++ monitor)
++ basic_machine=m68k-rom68k
++ os=-coff
++ ;;
++ morphos)
++ basic_machine=powerpc-unknown
++ os=-morphos
++ ;;
++ msdos)
++ basic_machine=i386-pc
++ os=-msdos
++ ;;
++ ms1-*)
++ basic_machine=`echo $basic_machine | sed -e 's/ms1-/mt-/'`
++ ;;
++ mvs)
++ basic_machine=i370-ibm
++ os=-mvs
++ ;;
++ ncr3000)
++ basic_machine=i486-ncr
++ os=-sysv4
++ ;;
++ netbsd386)
++ basic_machine=i386-unknown
++ os=-netbsd
++ ;;
++ netwinder)
++ basic_machine=armv4l-rebel
++ os=-linux
++ ;;
++ news | news700 | news800 | news900)
++ basic_machine=m68k-sony
++ os=-newsos
++ ;;
++ news1000)
++ basic_machine=m68030-sony
++ os=-newsos
++ ;;
++ news-3600 | risc-news)
++ basic_machine=mips-sony
++ os=-newsos
++ ;;
++ necv70)
++ basic_machine=v70-nec
++ os=-sysv
++ ;;
++ next | m*-next )
++ basic_machine=m68k-next
++ case $os in
++ -nextstep* )
++ ;;
++ -ns2*)
++ os=-nextstep2
++ ;;
++ *)
++ os=-nextstep3
++ ;;
++ esac
++ ;;
++ nh3000)
++ basic_machine=m68k-harris
++ os=-cxux
++ ;;
++ nh[45]000)
++ basic_machine=m88k-harris
++ os=-cxux
++ ;;
++ nindy960)
++ basic_machine=i960-intel
++ os=-nindy
++ ;;
++ mon960)
++ basic_machine=i960-intel
++ os=-mon960
++ ;;
++ nonstopux)
++ basic_machine=mips-compaq
++ os=-nonstopux
++ ;;
++ np1)
++ basic_machine=np1-gould
++ ;;
++ nsr-tandem)
++ basic_machine=nsr-tandem
++ ;;
++ op50n-* | op60c-*)
++ basic_machine=hppa1.1-oki
++ os=-proelf
++ ;;
++ openrisc | openrisc-*)
++ basic_machine=or32-unknown
++ ;;
++ os400)
++ basic_machine=powerpc-ibm
++ os=-os400
++ ;;
++ OSE68000 | ose68000)
++ basic_machine=m68000-ericsson
++ os=-ose
++ ;;
++ os68k)
++ basic_machine=m68k-none
++ os=-os68k
++ ;;
++ pa-hitachi)
++ basic_machine=hppa1.1-hitachi
++ os=-hiuxwe2
++ ;;
++ paragon)
++ basic_machine=i860-intel
++ os=-osf
++ ;;
++ pbd)
++ basic_machine=sparc-tti
++ ;;
++ pbb)
++ basic_machine=m68k-tti
++ ;;
++ pc532 | pc532-*)
++ basic_machine=ns32k-pc532
++ ;;
++ pc98)
++ basic_machine=i386-pc
++ ;;
++ pc98-*)
++ basic_machine=i386-`echo $basic_machine | sed 's/^[^-]*-//'`
++ ;;
++ pentium | p5 | k5 | k6 | nexgen | viac3)
++ basic_machine=i586-pc
++ ;;
++ pentiumpro | p6 | 6x86 | athlon | athlon_*)
++ basic_machine=i686-pc
++ ;;
++ pentiumii | pentium2 | pentiumiii | pentium3)
++ basic_machine=i686-pc
++ ;;
++ pentium4)
++ basic_machine=i786-pc
++ ;;
++ pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*)
++ basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'`
++ ;;
++ pentiumpro-* | p6-* | 6x86-* | athlon-*)
++ basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'`
++ ;;
++ pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*)
++ basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'`
++ ;;
++ pentium4-*)
++ basic_machine=i786-`echo $basic_machine | sed 's/^[^-]*-//'`
++ ;;
++ pn)
++ basic_machine=pn-gould
++ ;;
++ power) basic_machine=power-ibm
++ ;;
++ ppc) basic_machine=powerpc-unknown
++ ;;
++ ppc-*) basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'`
++ ;;
++ ppcle | powerpclittle | ppc-le | powerpc-little)
++ basic_machine=powerpcle-unknown
++ ;;
++ ppcle-* | powerpclittle-*)
++ basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'`
++ ;;
++ ppc64) basic_machine=powerpc64-unknown
++ ;;
++ ppc64-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'`
++ ;;
++ ppc64le | powerpc64little | ppc64-le | powerpc64-little)
++ basic_machine=powerpc64le-unknown
++ ;;
++ ppc64le-* | powerpc64little-*)
++ basic_machine=powerpc64le-`echo $basic_machine | sed 's/^[^-]*-//'`
++ ;;
++ ps2)
++ basic_machine=i386-ibm
++ ;;
++ pw32)
++ basic_machine=i586-unknown
++ os=-pw32
++ ;;
++ rdos)
++ basic_machine=i386-pc
++ os=-rdos
++ ;;
++ rom68k)
++ basic_machine=m68k-rom68k
++ os=-coff
++ ;;
++ rm[46]00)
++ basic_machine=mips-siemens
++ ;;
++ rtpc | rtpc-*)
++ basic_machine=romp-ibm
++ ;;
++ s390 | s390-*)
++ basic_machine=s390-ibm
++ ;;
++ s390x | s390x-*)
++ basic_machine=s390x-ibm
++ ;;
++ sa29200)
++ basic_machine=a29k-amd
++ os=-udi
++ ;;
++ sb1)
++ basic_machine=mipsisa64sb1-unknown
++ ;;
++ sb1el)
++ basic_machine=mipsisa64sb1el-unknown
++ ;;
++ sde)
++ basic_machine=mipsisa32-sde
++ os=-elf
++ ;;
++ sei)
++ basic_machine=mips-sei
++ os=-seiux
++ ;;
++ sequent)
++ basic_machine=i386-sequent
++ ;;
++ sh)
++ basic_machine=sh-hitachi
++ os=-hms
++ ;;
++ sh5el)
++ basic_machine=sh5le-unknown
++ ;;
++ sh64)
++ basic_machine=sh64-unknown
++ ;;
++ sparclite-wrs | simso-wrs)
++ basic_machine=sparclite-wrs
++ os=-vxworks
++ ;;
++ sps7)
++ basic_machine=m68k-bull
++ os=-sysv2
++ ;;
++ spur)
++ basic_machine=spur-unknown
++ ;;
++ st2000)
++ basic_machine=m68k-tandem
++ ;;
++ stratus)
++ basic_machine=i860-stratus
++ os=-sysv4
++ ;;
++ sun2)
++ basic_machine=m68000-sun
++ ;;
++ sun2os3)
++ basic_machine=m68000-sun
++ os=-sunos3
++ ;;
++ sun2os4)
++ basic_machine=m68000-sun
++ os=-sunos4
++ ;;
++ sun3os3)
++ basic_machine=m68k-sun
++ os=-sunos3
++ ;;
++ sun3os4)
++ basic_machine=m68k-sun
++ os=-sunos4
++ ;;
++ sun4os3)
++ basic_machine=sparc-sun
++ os=-sunos3
++ ;;
++ sun4os4)
++ basic_machine=sparc-sun
++ os=-sunos4
++ ;;
++ sun4sol2)
++ basic_machine=sparc-sun
++ os=-solaris2
++ ;;
++ sun3 | sun3-*)
++ basic_machine=m68k-sun
++ ;;
++ sun4)
++ basic_machine=sparc-sun
++ ;;
++ sun386 | sun386i | roadrunner)
++ basic_machine=i386-sun
++ ;;
++ sv1)
++ basic_machine=sv1-cray
++ os=-unicos
++ ;;
++ symmetry)
++ basic_machine=i386-sequent
++ os=-dynix
++ ;;
++ t3e)
++ basic_machine=alphaev5-cray
++ os=-unicos
++ ;;
++ t90)
++ basic_machine=t90-cray
++ os=-unicos
++ ;;
++ tic54x | c54x*)
++ basic_machine=tic54x-unknown
++ os=-coff
++ ;;
++ tic55x | c55x*)
++ basic_machine=tic55x-unknown
++ os=-coff
++ ;;
++ tic6x | c6x*)
++ basic_machine=tic6x-unknown
++ os=-coff
++ ;;
++ tx39)
++ basic_machine=mipstx39-unknown
++ ;;
++ tx39el)
++ basic_machine=mipstx39el-unknown
++ ;;
++ toad1)
++ basic_machine=pdp10-xkl
++ os=-tops20
++ ;;
++ tower | tower-32)
++ basic_machine=m68k-ncr
++ ;;
++ tpf)
++ basic_machine=s390x-ibm
++ os=-tpf
++ ;;
++ udi29k)
++ basic_machine=a29k-amd
++ os=-udi
++ ;;
++ ultra3)
++ basic_machine=a29k-nyu
++ os=-sym1
++ ;;
++ v810 | necv810)
++ basic_machine=v810-nec
++ os=-none
++ ;;
++ vaxv)
++ basic_machine=vax-dec
++ os=-sysv
++ ;;
++ vms)
++ basic_machine=vax-dec
++ os=-vms
++ ;;
++ vpp*|vx|vx-*)
++ basic_machine=f301-fujitsu
++ ;;
++ vxworks960)
++ basic_machine=i960-wrs
++ os=-vxworks
++ ;;
++ vxworks68)
++ basic_machine=m68k-wrs
++ os=-vxworks
++ ;;
++ vxworks29k)
++ basic_machine=a29k-wrs
++ os=-vxworks
++ ;;
++ w65*)
++ basic_machine=w65-wdc
++ os=-none
++ ;;
++ w89k-*)
++ basic_machine=hppa1.1-winbond
++ os=-proelf
++ ;;
++ xbox)
++ basic_machine=i686-pc
++ os=-mingw32
++ ;;
++ xps | xps100)
++ basic_machine=xps100-honeywell
++ ;;
++ ymp)
++ basic_machine=ymp-cray
++ os=-unicos
++ ;;
++ z8k-*-coff)
++ basic_machine=z8k-unknown
++ os=-sim
++ ;;
++ none)
++ basic_machine=none-none
++ os=-none
++ ;;
++
++# Here we handle the default manufacturer of certain CPU types. It is in
++# some cases the only manufacturer, in others, it is the most popular.
++ w89k)
++ basic_machine=hppa1.1-winbond
++ ;;
++ op50n)
++ basic_machine=hppa1.1-oki
++ ;;
++ op60c)
++ basic_machine=hppa1.1-oki
++ ;;
++ romp)
++ basic_machine=romp-ibm
++ ;;
++ mmix)
++ basic_machine=mmix-knuth
++ ;;
++ rs6000)
++ basic_machine=rs6000-ibm
++ ;;
++ vax)
++ basic_machine=vax-dec
++ ;;
++ pdp10)
++ # there are many clones, so DEC is not a safe bet
++ basic_machine=pdp10-unknown
++ ;;
++ pdp11)
++ basic_machine=pdp11-dec
++ ;;
++ we32k)
++ basic_machine=we32k-att
++ ;;
++ sh[1234] | sh[24]a | sh[34]eb | sh[1234]le | sh[23]ele)
++ basic_machine=sh-unknown
++ ;;
++ sparc | sparcv8 | sparcv9 | sparcv9b | sparcv9v)
++ basic_machine=sparc-sun
++ ;;
++ cydra)
++ basic_machine=cydra-cydrome
++ ;;
++ orion)
++ basic_machine=orion-highlevel
++ ;;
++ orion105)
++ basic_machine=clipper-highlevel
++ ;;
++ mac | mpw | mac-mpw)
++ basic_machine=m68k-apple
++ ;;
++ pmac | pmac-mpw)
++ basic_machine=powerpc-apple
++ ;;
++ *-unknown)
++ # Make sure to match an already-canonicalized machine name.
++ ;;
++ *)
++ echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2
++ exit 1
++ ;;
++esac
++
++# Here we canonicalize certain aliases for manufacturers.
++case $basic_machine in
++ *-digital*)
++ basic_machine=`echo $basic_machine | sed 's/digital.*/dec/'`
++ ;;
++ *-commodore*)
++ basic_machine=`echo $basic_machine | sed 's/commodore.*/cbm/'`
++ ;;
++ *)
++ ;;
++esac
++
++# Decode manufacturer-specific aliases for certain operating systems.
++
++if [ x"$os" != x"" ]
++then
++case $os in
++ # First match some system type aliases
++ # that might get confused with valid system types.
++ # -solaris* is a basic system type, with this one exception.
++ -solaris1 | -solaris1.*)
++ os=`echo $os | sed -e 's|solaris1|sunos4|'`
++ ;;
++ -solaris)
++ os=-solaris2
++ ;;
++ -svr4*)
++ os=-sysv4
++ ;;
++ -unixware*)
++ os=-sysv4.2uw
++ ;;
++ -gnu/linux*)
++ os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'`
++ ;;
++ # First accept the basic system types.
++ # The portable systems comes first.
++ # Each alternative MUST END IN A *, to match a version number.
++ # -sysv* is not here because it comes later, after sysvr4.
++ -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \
++ | -*vms* | -sco* | -esix* | -isc* | -aix* | -sunos | -sunos[34]*\
++ | -hpux* | -unos* | -osf* | -luna* | -dgux* | -solaris* | -sym* \
++ | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \
++ | -aos* \
++ | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \
++ | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \
++ | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* \
++ | -openbsd* | -solidbsd* \
++ | -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \
++ | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \
++ | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \
++ | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \
++ | -chorusos* | -chorusrdb* \
++ | -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \
++ | -mingw32* | -linux-gnu* | -linux-newlib* | -linux-uclibc* \
++ | -uxpv* | -beos* | -mpeix* | -udk* \
++ | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \
++ | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \
++ | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \
++ | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \
++ | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \
++ | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \
++ | -skyos* | -haiku* | -rdos* | -toppers* | -drops*)
++ # Remember, each alternative MUST END IN *, to match a version number.
++ ;;
++ -qnx*)
++ case $basic_machine in
++ x86-* | i*86-*)
++ ;;
++ *)
++ os=-nto$os
++ ;;
++ esac
++ ;;
++ -nto-qnx*)
++ ;;
++ -nto*)
++ os=`echo $os | sed -e 's|nto|nto-qnx|'`
++ ;;
++ -sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \
++ | -windows* | -osx | -abug | -netware* | -os9* | -beos* | -haiku* \
++ | -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*)
++ ;;
++ -mac*)
++ os=`echo $os | sed -e 's|mac|macos|'`
++ ;;
++ -linux-dietlibc)
++ os=-linux-dietlibc
++ ;;
++ -linux*)
++ os=`echo $os | sed -e 's|linux|linux-gnu|'`
++ ;;
++ -sunos5*)
++ os=`echo $os | sed -e 's|sunos5|solaris2|'`
++ ;;
++ -sunos6*)
++ os=`echo $os | sed -e 's|sunos6|solaris3|'`
++ ;;
++ -opened*)
++ os=-openedition
++ ;;
++ -os400*)
++ os=-os400
++ ;;
++ -wince*)
++ os=-wince
++ ;;
++ -osfrose*)
++ os=-osfrose
++ ;;
++ -osf*)
++ os=-osf
++ ;;
++ -utek*)
++ os=-bsd
++ ;;
++ -dynix*)
++ os=-bsd
++ ;;
++ -acis*)
++ os=-aos
++ ;;
++ -atheos*)
++ os=-atheos
++ ;;
++ -syllable*)
++ os=-syllable
++ ;;
++ -386bsd)
++ os=-bsd
++ ;;
++ -ctix* | -uts*)
++ os=-sysv
++ ;;
++ -nova*)
++ os=-rtmk-nova
++ ;;
++ -ns2 )
++ os=-nextstep2
++ ;;
++ -nsk*)
++ os=-nsk
++ ;;
++ # Preserve the version number of sinix5.
++ -sinix5.*)
++ os=`echo $os | sed -e 's|sinix|sysv|'`
++ ;;
++ -sinix*)
++ os=-sysv4
++ ;;
++ -tpf*)
++ os=-tpf
++ ;;
++ -triton*)
++ os=-sysv3
++ ;;
++ -oss*)
++ os=-sysv3
++ ;;
++ -svr4)
++ os=-sysv4
++ ;;
++ -svr3)
++ os=-sysv3
++ ;;
++ -sysvr4)
++ os=-sysv4
++ ;;
++ # This must come after -sysvr4.
++ -sysv*)
++ ;;
++ -ose*)
++ os=-ose
++ ;;
++ -es1800*)
++ os=-ose
++ ;;
++ -xenix)
++ os=-xenix
++ ;;
++ -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*)
++ os=-mint
++ ;;
++ -aros*)
++ os=-aros
++ ;;
++ -kaos*)
++ os=-kaos
++ ;;
++ -zvmoe)
++ os=-zvmoe
++ ;;
++ -none)
++ ;;
++ *)
++ # Get rid of the `-' at the beginning of $os.
++ os=`echo $os | sed 's/[^-]*-//'`
++ echo Invalid configuration \`$1\': system \`$os\' not recognized 1>&2
++ exit 1
++ ;;
++esac
++else
++
++# Here we handle the default operating systems that come with various machines.
++# The value should be what the vendor currently ships out the door with their
++# machine or put another way, the most popular os provided with the machine.
++
++# Note that if you're going to try to match "-MANUFACTURER" here (say,
++# "-sun"), then you have to tell the case statement up towards the top
++# that MANUFACTURER isn't an operating system. Otherwise, code above
++# will signal an error saying that MANUFACTURER isn't an operating
++# system, and we'll never get to this point.
++
++case $basic_machine in
++ score-*)
++ os=-elf
++ ;;
++ spu-*)
++ os=-elf
++ ;;
++ *-acorn)
++ os=-riscix1.2
++ ;;
++ arm*-rebel)
++ os=-linux
++ ;;
++ arm*-semi)
++ os=-aout
++ ;;
++ c4x-* | tic4x-*)
++ os=-coff
++ ;;
++ # This must come before the *-dec entry.
++ pdp10-*)
++ os=-tops20
++ ;;
++ pdp11-*)
++ os=-none
++ ;;
++ *-dec | vax-*)
++ os=-ultrix4.2
++ ;;
++ m68*-apollo)
++ os=-domain
++ ;;
++ i386-sun)
++ os=-sunos4.0.2
++ ;;
++ m68000-sun)
++ os=-sunos3
++ # This also exists in the configure program, but was not the
++ # default.
++ # os=-sunos4
++ ;;
++ m68*-cisco)
++ os=-aout
++ ;;
++ mep-*)
++ os=-elf
++ ;;
++ mips*-cisco)
++ os=-elf
++ ;;
++ mips*-*)
++ os=-elf
++ ;;
++ or32-*)
++ os=-coff
++ ;;
++ *-tti) # must be before sparc entry or we get the wrong os.
++ os=-sysv3
++ ;;
++ sparc-* | *-sun)
++ os=-sunos4.1.1
++ ;;
++ *-be)
++ os=-beos
++ ;;
++ *-haiku)
++ os=-haiku
++ ;;
++ *-ibm)
++ os=-aix
++ ;;
++ *-knuth)
++ os=-mmixware
++ ;;
++ *-wec)
++ os=-proelf
++ ;;
++ *-winbond)
++ os=-proelf
++ ;;
++ *-oki)
++ os=-proelf
++ ;;
++ *-hp)
++ os=-hpux
++ ;;
++ *-hitachi)
++ os=-hiux
++ ;;
++ i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent)
++ os=-sysv
++ ;;
++ *-cbm)
++ os=-amigaos
++ ;;
++ *-dg)
++ os=-dgux
++ ;;
++ *-dolphin)
++ os=-sysv3
++ ;;
++ m68k-ccur)
++ os=-rtu
++ ;;
++ m88k-omron*)
++ os=-luna
++ ;;
++ *-next )
++ os=-nextstep
++ ;;
++ *-sequent)
++ os=-ptx
++ ;;
++ *-crds)
++ os=-unos
++ ;;
++ *-ns)
++ os=-genix
++ ;;
++ i370-*)
++ os=-mvs
++ ;;
++ *-next)
++ os=-nextstep3
++ ;;
++ *-gould)
++ os=-sysv
++ ;;
++ *-highlevel)
++ os=-bsd
++ ;;
++ *-encore)
++ os=-bsd
++ ;;
++ *-sgi)
++ os=-irix
++ ;;
++ *-siemens)
++ os=-sysv4
++ ;;
++ *-masscomp)
++ os=-rtu
++ ;;
++ f30[01]-fujitsu | f700-fujitsu)
++ os=-uxpv
++ ;;
++ *-rom68k)
++ os=-coff
++ ;;
++ *-*bug)
++ os=-coff
++ ;;
++ *-apple)
++ os=-macos
++ ;;
++ *-atari*)
++ os=-mint
++ ;;
++ *)
++ os=-none
++ ;;
++esac
++fi
++
++# Here we handle the case where we know the os, and the CPU type, but not the
++# manufacturer. We pick the logical manufacturer.
++vendor=unknown
++case $basic_machine in
++ *-unknown)
++ case $os in
++ -riscix*)
++ vendor=acorn
++ ;;
++ -sunos*)
++ vendor=sun
++ ;;
++ -aix*)
++ vendor=ibm
++ ;;
++ -beos*)
++ vendor=be
++ ;;
++ -hpux*)
++ vendor=hp
++ ;;
++ -mpeix*)
++ vendor=hp
++ ;;
++ -hiux*)
++ vendor=hitachi
++ ;;
++ -unos*)
++ vendor=crds
++ ;;
++ -dgux*)
++ vendor=dg
++ ;;
++ -luna*)
++ vendor=omron
++ ;;
++ -genix*)
++ vendor=ns
++ ;;
++ -mvs* | -opened*)
++ vendor=ibm
++ ;;
++ -os400*)
++ vendor=ibm
++ ;;
++ -ptx*)
++ vendor=sequent
++ ;;
++ -tpf*)
++ vendor=ibm
++ ;;
++ -vxsim* | -vxworks* | -windiss*)
++ vendor=wrs
++ ;;
++ -aux*)
++ vendor=apple
++ ;;
++ -hms*)
++ vendor=hitachi
++ ;;
++ -mpw* | -macos*)
++ vendor=apple
++ ;;
++ -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*)
++ vendor=atari
++ ;;
++ -vos*)
++ vendor=stratus
++ ;;
++ esac
++ basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"`
++ ;;
++esac
++
++echo $basic_machine$os
++exit
++
++# Local variables:
++# eval: (add-hook 'write-file-hooks 'time-stamp)
++# time-stamp-start: "timestamp='"
++# time-stamp-format: "%:y-%02m-%02d"
++# time-stamp-end: "'"
++# End:
+--- adjtimex-1.23.orig/config.guess
++++ adjtimex-1.23/config.guess
+@@ -0,0 +1,1516 @@
++#! /bin/sh
++# Attempt to guess a canonical system name.
++# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
++# 2000, 2001, 2002, 2003, 2004, 2005, 2006 Free Software Foundation,
++# Inc.
++
++timestamp='2007-03-06'
++
++# This file 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., 51 Franklin Street - Fifth Floor, Boston, MA
++# 02110-1301, USA.
++#
++# As a special exception to the GNU General Public License, if you
++# distribute this file as part of a program that contains a
++# configuration script generated by Autoconf, you may include it under
++# the same distribution terms that you use for the rest of that program.
++
++
++# Originally written by Per Bothner <per@bothner.com>.
++# Please send patches to <config-patches@gnu.org>. Submit a context
++# diff and a properly formatted ChangeLog entry.
++#
++# This script attempts to guess a canonical system name similar to
++# config.sub. If it succeeds, it prints the system name on stdout, and
++# exits with 0. Otherwise, it exits with 1.
++#
++# The plan is that this can be called by configure scripts if you
++# don't specify an explicit build system type.
++
++me=`echo "$0" | sed -e 's,.*/,,'`
++
++usage="\
++Usage: $0 [OPTION]
++
++Output the configuration name of the system \`$me' is run on.
++
++Operation modes:
++ -h, --help print this help, then exit
++ -t, --time-stamp print date of last modification, then exit
++ -v, --version print version number, then exit
++
++Report bugs and patches to <config-patches@gnu.org>."
++
++version="\
++GNU config.guess ($timestamp)
++
++Originally written by Per Bothner.
++Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005
++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."
++
++help="
++Try \`$me --help' for more information."
++
++# Parse command line
++while test $# -gt 0 ; do
++ case $1 in
++ --time-stamp | --time* | -t )
++ echo "$timestamp" ; exit ;;
++ --version | -v )
++ echo "$version" ; exit ;;
++ --help | --h* | -h )
++ echo "$usage"; exit ;;
++ -- ) # Stop option processing
++ shift; break ;;
++ - ) # Use stdin as input.
++ break ;;
++ -* )
++ echo "$me: invalid option $1$help" >&2
++ exit 1 ;;
++ * )
++ break ;;
++ esac
++done
++
++if test $# != 0; then
++ echo "$me: too many arguments$help" >&2
++ exit 1
++fi
++
++trap 'exit 1' 1 2 15
++
++# CC_FOR_BUILD -- compiler used by this script. Note that the use of a
++# compiler to aid in system detection is discouraged as it requires
++# temporary files to be created and, as you can see below, it is a
++# headache to deal with in a portable fashion.
++
++# Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still
++# use `HOST_CC' if defined, but it is deprecated.
++
++# Portable tmp directory creation inspired by the Autoconf team.
++
++set_cc_for_build='
++trap "exitcode=\$?; (rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null) && exit \$exitcode" 0 ;
++trap "rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null; exit 1" 1 2 13 15 ;
++: ${TMPDIR=/tmp} ;
++ { tmp=`(umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } ||
++ { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir $tmp) ; } ||
++ { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir $tmp) && echo "Warning: creating insecure temp directory" >&2 ; } ||
++ { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } ;
++dummy=$tmp/dummy ;
++tmpfiles="$dummy.c $dummy.o $dummy.rel $dummy" ;
++case $CC_FOR_BUILD,$HOST_CC,$CC in
++ ,,) echo "int x;" > $dummy.c ;
++ for c in cc gcc c89 c99 ; do
++ if ($c -c -o $dummy.o $dummy.c) >/dev/null 2>&1 ; then
++ CC_FOR_BUILD="$c"; break ;
++ fi ;
++ done ;
++ if test x"$CC_FOR_BUILD" = x ; then
++ CC_FOR_BUILD=no_compiler_found ;
++ fi
++ ;;
++ ,,*) CC_FOR_BUILD=$CC ;;
++ ,*,*) CC_FOR_BUILD=$HOST_CC ;;
++esac ; set_cc_for_build= ;'
++
++# This is needed to find uname on a Pyramid OSx when run in the BSD universe.
++# (ghazi@noc.rutgers.edu 1994-08-24)
++if (test -f /.attbin/uname) >/dev/null 2>&1 ; then
++ PATH=$PATH:/.attbin ; export PATH
++fi
++
++UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown
++UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown
++UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown
++UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown
++
++# Note: order is significant - the case branches are not exclusive.
++
++case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
++ *:NetBSD:*:*)
++ # NetBSD (nbsd) targets should (where applicable) match one or
++ # more of the tupples: *-*-netbsdelf*, *-*-netbsdaout*,
++ # *-*-netbsdecoff* and *-*-netbsd*. For targets that recently
++ # switched to ELF, *-*-netbsd* would select the old
++ # object file format. This provides both forward
++ # compatibility and a consistent mechanism for selecting the
++ # object file format.
++ #
++ # Note: NetBSD doesn't particularly care about the vendor
++ # portion of the name. We always set it to "unknown".
++ sysctl="sysctl -n hw.machine_arch"
++ UNAME_MACHINE_ARCH=`(/sbin/$sysctl 2>/dev/null || \
++ /usr/sbin/$sysctl 2>/dev/null || echo unknown)`
++ case "${UNAME_MACHINE_ARCH}" in
++ armeb) machine=armeb-unknown ;;
++ arm*) machine=arm-unknown ;;
++ sh3el) machine=shl-unknown ;;
++ sh3eb) machine=sh-unknown ;;
++ sh5el) machine=sh5le-unknown ;;
++ *) machine=${UNAME_MACHINE_ARCH}-unknown ;;
++ esac
++ # The Operating System including object format, if it has switched
++ # to ELF recently, or will in the future.
++ case "${UNAME_MACHINE_ARCH}" in
++ arm*|i386|m68k|ns32k|sh3*|sparc|vax)
++ eval $set_cc_for_build
++ if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \
++ | grep __ELF__ >/dev/null
++ then
++ # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout).
++ # Return netbsd for either. FIX?
++ os=netbsd
++ else
++ os=netbsdelf
++ fi
++ ;;
++ *)
++ os=netbsd
++ ;;
++ esac
++ # The OS release
++ # Debian GNU/NetBSD machines have a different userland, and
++ # thus, need a distinct triplet. However, they do not need
++ # kernel version information, so it can be replaced with a
++ # suitable tag, in the style of linux-gnu.
++ case "${UNAME_VERSION}" in
++ Debian*)
++ release='-gnu'
++ ;;
++ *)
++ release=`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'`
++ ;;
++ esac
++ # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM:
++ # contains redundant information, the shorter form:
++ # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used.
++ echo "${machine}-${os}${release}"
++ exit ;;
++ *:OpenBSD:*:*)
++ UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'`
++ echo ${UNAME_MACHINE_ARCH}-unknown-openbsd${UNAME_RELEASE}
++ exit ;;
++ *:ekkoBSD:*:*)
++ echo ${UNAME_MACHINE}-unknown-ekkobsd${UNAME_RELEASE}
++ exit ;;
++ *:SolidBSD:*:*)
++ echo ${UNAME_MACHINE}-unknown-solidbsd${UNAME_RELEASE}
++ exit ;;
++ macppc:MirBSD:*:*)
++ echo powerpc-unknown-mirbsd${UNAME_RELEASE}
++ exit ;;
++ *:MirBSD:*:*)
++ echo ${UNAME_MACHINE}-unknown-mirbsd${UNAME_RELEASE}
++ exit ;;
++ alpha:OSF1:*:*)
++ case $UNAME_RELEASE in
++ *4.0)
++ UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'`
++ ;;
++ *5.*)
++ UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'`
++ ;;
++ esac
++ # According to Compaq, /usr/sbin/psrinfo has been available on
++ # OSF/1 and Tru64 systems produced since 1995. I hope that
++ # covers most systems running today. This code pipes the CPU
++ # types through head -n 1, so we only detect the type of CPU 0.
++ ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^ The alpha \(.*\) processor.*$/\1/p' | head -n 1`
++ case "$ALPHA_CPU_TYPE" in
++ "EV4 (21064)")
++ UNAME_MACHINE="alpha" ;;
++ "EV4.5 (21064)")
++ UNAME_MACHINE="alpha" ;;
++ "LCA4 (21066/21068)")
++ UNAME_MACHINE="alpha" ;;
++ "EV5 (21164)")
++ UNAME_MACHINE="alphaev5" ;;
++ "EV5.6 (21164A)")
++ UNAME_MACHINE="alphaev56" ;;
++ "EV5.6 (21164PC)")
++ UNAME_MACHINE="alphapca56" ;;
++ "EV5.7 (21164PC)")
++ UNAME_MACHINE="alphapca57" ;;
++ "EV6 (21264)")
++ UNAME_MACHINE="alphaev6" ;;
++ "EV6.7 (21264A)")
++ UNAME_MACHINE="alphaev67" ;;
++ "EV6.8CB (21264C)")
++ UNAME_MACHINE="alphaev68" ;;
++ "EV6.8AL (21264B)")
++ UNAME_MACHINE="alphaev68" ;;
++ "EV6.8CX (21264D)")
++ UNAME_MACHINE="alphaev68" ;;
++ "EV6.9A (21264/EV69A)")
++ UNAME_MACHINE="alphaev69" ;;
++ "EV7 (21364)")
++ UNAME_MACHINE="alphaev7" ;;
++ "EV7.9 (21364A)")
++ UNAME_MACHINE="alphaev79" ;;
++ esac
++ # A Pn.n version is a patched version.
++ # A Vn.n version is a released version.
++ # A Tn.n version is a released field test version.
++ # A Xn.n version is an unreleased experimental baselevel.
++ # 1.2 uses "1.2" for uname -r.
++ echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[PVTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
++ exit ;;
++ Alpha\ *:Windows_NT*:*)
++ # How do we know it's Interix rather than the generic POSIX subsystem?
++ # Should we change UNAME_MACHINE based on the output of uname instead
++ # of the specific Alpha model?
++ echo alpha-pc-interix
++ exit ;;
++ 21064:Windows_NT:50:3)
++ echo alpha-dec-winnt3.5
++ exit ;;
++ Amiga*:UNIX_System_V:4.0:*)
++ echo m68k-unknown-sysv4
++ exit ;;
++ *:[Aa]miga[Oo][Ss]:*:*)
++ echo ${UNAME_MACHINE}-unknown-amigaos
++ exit ;;
++ *:[Mm]orph[Oo][Ss]:*:*)
++ echo ${UNAME_MACHINE}-unknown-morphos
++ exit ;;
++ *:OS/390:*:*)
++ echo i370-ibm-openedition
++ exit ;;
++ *:z/VM:*:*)
++ echo s390-ibm-zvmoe
++ exit ;;
++ *:OS400:*:*)
++ echo powerpc-ibm-os400
++ exit ;;
++ arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*)
++ echo arm-acorn-riscix${UNAME_RELEASE}
++ exit ;;
++ arm:riscos:*:*|arm:RISCOS:*:*)
++ echo arm-unknown-riscos
++ exit ;;
++ SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*)
++ echo hppa1.1-hitachi-hiuxmpp
++ exit ;;
++ Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*)
++ # akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE.
++ if test "`(/bin/universe) 2>/dev/null`" = att ; then
++ echo pyramid-pyramid-sysv3
++ else
++ echo pyramid-pyramid-bsd
++ fi
++ exit ;;
++ NILE*:*:*:dcosx)
++ echo pyramid-pyramid-svr4
++ exit ;;
++ DRS?6000:unix:4.0:6*)
++ echo sparc-icl-nx6
++ exit ;;
++ DRS?6000:UNIX_SV:4.2*:7* | DRS?6000:isis:4.2*:7*)
++ case `/usr/bin/uname -p` in
++ sparc) echo sparc-icl-nx7; exit ;;
++ esac ;;
++ sun4H:SunOS:5.*:*)
++ echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
++ exit ;;
++ sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*)
++ echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
++ exit ;;
++ i86pc:SunOS:5.*:*)
++ echo i386-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
++ exit ;;
++ sun4*:SunOS:6*:*)
++ # According to config.sub, this is the proper way to canonicalize
++ # SunOS6. Hard to guess exactly what SunOS6 will be like, but
++ # it's likely to be more like Solaris than SunOS4.
++ echo sparc-sun-solaris3`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
++ exit ;;
++ sun4*:SunOS:*:*)
++ case "`/usr/bin/arch -k`" in
++ Series*|S4*)
++ UNAME_RELEASE=`uname -v`
++ ;;
++ esac
++ # Japanese Language versions have a version number like `4.1.3-JL'.
++ echo sparc-sun-sunos`echo ${UNAME_RELEASE}|sed -e 's/-/_/'`
++ exit ;;
++ sun3*:SunOS:*:*)
++ echo m68k-sun-sunos${UNAME_RELEASE}
++ exit ;;
++ sun*:*:4.2BSD:*)
++ UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null`
++ test "x${UNAME_RELEASE}" = "x" && UNAME_RELEASE=3
++ case "`/bin/arch`" in
++ sun3)
++ echo m68k-sun-sunos${UNAME_RELEASE}
++ ;;
++ sun4)
++ echo sparc-sun-sunos${UNAME_RELEASE}
++ ;;
++ esac
++ exit ;;
++ aushp:SunOS:*:*)
++ echo sparc-auspex-sunos${UNAME_RELEASE}
++ exit ;;
++ # The situation for MiNT is a little confusing. The machine name
++ # can be virtually everything (everything which is not
++ # "atarist" or "atariste" at least should have a processor
++ # > m68000). The system name ranges from "MiNT" over "FreeMiNT"
++ # to the lowercase version "mint" (or "freemint"). Finally
++ # the system name "TOS" denotes a system which is actually not
++ # MiNT. But MiNT is downward compatible to TOS, so this should
++ # be no problem.
++ atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*)
++ echo m68k-atari-mint${UNAME_RELEASE}
++ exit ;;
++ atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*)
++ echo m68k-atari-mint${UNAME_RELEASE}
++ exit ;;
++ *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*)
++ echo m68k-atari-mint${UNAME_RELEASE}
++ exit ;;
++ milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*)
++ echo m68k-milan-mint${UNAME_RELEASE}
++ exit ;;
++ hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*)
++ echo m68k-hades-mint${UNAME_RELEASE}
++ exit ;;
++ *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*)
++ echo m68k-unknown-mint${UNAME_RELEASE}
++ exit ;;
++ m68k:machten:*:*)
++ echo m68k-apple-machten${UNAME_RELEASE}
++ exit ;;
++ powerpc:machten:*:*)
++ echo powerpc-apple-machten${UNAME_RELEASE}
++ exit ;;
++ RISC*:Mach:*:*)
++ echo mips-dec-mach_bsd4.3
++ exit ;;
++ RISC*:ULTRIX:*:*)
++ echo mips-dec-ultrix${UNAME_RELEASE}
++ exit ;;
++ VAX*:ULTRIX*:*:*)
++ echo vax-dec-ultrix${UNAME_RELEASE}
++ exit ;;
++ 2020:CLIX:*:* | 2430:CLIX:*:*)
++ echo clipper-intergraph-clix${UNAME_RELEASE}
++ exit ;;
++ mips:*:*:UMIPS | mips:*:*:RISCos)
++ eval $set_cc_for_build
++ sed 's/^ //' << EOF >$dummy.c
++#ifdef __cplusplus
++#include <stdio.h> /* for printf() prototype */
++ int main (int argc, char *argv[]) {
++#else
++ int main (argc, argv) int argc; char *argv[]; {
++#endif
++ #if defined (host_mips) && defined (MIPSEB)
++ #if defined (SYSTYPE_SYSV)
++ printf ("mips-mips-riscos%ssysv\n", argv[1]); exit (0);
++ #endif
++ #if defined (SYSTYPE_SVR4)
++ printf ("mips-mips-riscos%ssvr4\n", argv[1]); exit (0);
++ #endif
++ #if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD)
++ printf ("mips-mips-riscos%sbsd\n", argv[1]); exit (0);
++ #endif
++ #endif
++ exit (-1);
++ }
++EOF
++ $CC_FOR_BUILD -o $dummy $dummy.c &&
++ dummyarg=`echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` &&
++ SYSTEM_NAME=`$dummy $dummyarg` &&
++ { echo "$SYSTEM_NAME"; exit; }
++ echo mips-mips-riscos${UNAME_RELEASE}
++ exit ;;
++ Motorola:PowerMAX_OS:*:*)
++ echo powerpc-motorola-powermax
++ exit ;;
++ Motorola:*:4.3:PL8-*)
++ echo powerpc-harris-powermax
++ exit ;;
++ Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*)
++ echo powerpc-harris-powermax
++ exit ;;
++ Night_Hawk:Power_UNIX:*:*)
++ echo powerpc-harris-powerunix
++ exit ;;
++ m88k:CX/UX:7*:*)
++ echo m88k-harris-cxux7
++ exit ;;
++ m88k:*:4*:R4*)
++ echo m88k-motorola-sysv4
++ exit ;;
++ m88k:*:3*:R3*)
++ echo m88k-motorola-sysv3
++ exit ;;
++ AViiON:dgux:*:*)
++ # DG/UX returns AViiON for all architectures
++ UNAME_PROCESSOR=`/usr/bin/uname -p`
++ if [ $UNAME_PROCESSOR = mc88100 ] || [ $UNAME_PROCESSOR = mc88110 ]
++ then
++ if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx ] || \
++ [ ${TARGET_BINARY_INTERFACE}x = x ]
++ then
++ echo m88k-dg-dgux${UNAME_RELEASE}
++ else
++ echo m88k-dg-dguxbcs${UNAME_RELEASE}
++ fi
++ else
++ echo i586-dg-dgux${UNAME_RELEASE}
++ fi
++ exit ;;
++ M88*:DolphinOS:*:*) # DolphinOS (SVR3)
++ echo m88k-dolphin-sysv3
++ exit ;;
++ M88*:*:R3*:*)
++ # Delta 88k system running SVR3
++ echo m88k-motorola-sysv3
++ exit ;;
++ XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3)
++ echo m88k-tektronix-sysv3
++ exit ;;
++ Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD)
++ echo m68k-tektronix-bsd
++ exit ;;
++ *:IRIX*:*:*)
++ echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'`
++ exit ;;
++ ????????:AIX?:[12].1:2) # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX.
++ echo romp-ibm-aix # uname -m gives an 8 hex-code CPU id
++ exit ;; # Note that: echo "'`uname -s`'" gives 'AIX '
++ i*86:AIX:*:*)
++ echo i386-ibm-aix
++ exit ;;
++ ia64:AIX:*:*)
++ if [ -x /usr/bin/oslevel ] ; then
++ IBM_REV=`/usr/bin/oslevel`
++ else
++ IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE}
++ fi
++ echo ${UNAME_MACHINE}-ibm-aix${IBM_REV}
++ exit ;;
++ *:AIX:2:3)
++ if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then
++ eval $set_cc_for_build
++ sed 's/^ //' << EOF >$dummy.c
++ #include <sys/systemcfg.h>
++
++ main()
++ {
++ if (!__power_pc())
++ exit(1);
++ puts("powerpc-ibm-aix3.2.5");
++ exit(0);
++ }
++EOF
++ if $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy`
++ then
++ echo "$SYSTEM_NAME"
++ else
++ echo rs6000-ibm-aix3.2.5
++ fi
++ elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then
++ echo rs6000-ibm-aix3.2.4
++ else
++ echo rs6000-ibm-aix3.2
++ fi
++ exit ;;
++ *:AIX:*:[45])
++ IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'`
++ if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then
++ IBM_ARCH=rs6000
++ else
++ IBM_ARCH=powerpc
++ fi
++ if [ -x /usr/bin/oslevel ] ; then
++ IBM_REV=`/usr/bin/oslevel`
++ else
++ IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE}
++ fi
++ echo ${IBM_ARCH}-ibm-aix${IBM_REV}
++ exit ;;
++ *:AIX:*:*)
++ echo rs6000-ibm-aix
++ exit ;;
++ ibmrt:4.4BSD:*|romp-ibm:BSD:*)
++ echo romp-ibm-bsd4.4
++ exit ;;
++ ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC BSD and
++ echo romp-ibm-bsd${UNAME_RELEASE} # 4.3 with uname added to
++ exit ;; # report: romp-ibm BSD 4.3
++ *:BOSX:*:*)
++ echo rs6000-bull-bosx
++ exit ;;
++ DPX/2?00:B.O.S.:*:*)
++ echo m68k-bull-sysv3
++ exit ;;
++ 9000/[34]??:4.3bsd:1.*:*)
++ echo m68k-hp-bsd
++ exit ;;
++ hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*)
++ echo m68k-hp-bsd4.4
++ exit ;;
++ 9000/[34678]??:HP-UX:*:*)
++ HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'`
++ case "${UNAME_MACHINE}" in
++ 9000/31? ) HP_ARCH=m68000 ;;
++ 9000/[34]?? ) HP_ARCH=m68k ;;
++ 9000/[678][0-9][0-9])
++ if [ -x /usr/bin/getconf ]; then
++ sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null`
++ sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null`
++ case "${sc_cpu_version}" in
++ 523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0
++ 528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1
++ 532) # CPU_PA_RISC2_0
++ case "${sc_kernel_bits}" in
++ 32) HP_ARCH="hppa2.0n" ;;
++ 64) HP_ARCH="hppa2.0w" ;;
++ '') HP_ARCH="hppa2.0" ;; # HP-UX 10.20
++ esac ;;
++ esac
++ fi
++ if [ "${HP_ARCH}" = "" ]; then
++ eval $set_cc_for_build
++ sed 's/^ //' << EOF >$dummy.c
++
++ #define _HPUX_SOURCE
++ #include <stdlib.h>
++ #include <unistd.h>
++
++ int main ()
++ {
++ #if defined(_SC_KERNEL_BITS)
++ long bits = sysconf(_SC_KERNEL_BITS);
++ #endif
++ long cpu = sysconf (_SC_CPU_VERSION);
++
++ switch (cpu)
++ {
++ case CPU_PA_RISC1_0: puts ("hppa1.0"); break;
++ case CPU_PA_RISC1_1: puts ("hppa1.1"); break;
++ case CPU_PA_RISC2_0:
++ #if defined(_SC_KERNEL_BITS)
++ switch (bits)
++ {
++ case 64: puts ("hppa2.0w"); break;
++ case 32: puts ("hppa2.0n"); break;
++ default: puts ("hppa2.0"); break;
++ } break;
++ #else /* !defined(_SC_KERNEL_BITS) */
++ puts ("hppa2.0"); break;
++ #endif
++ default: puts ("hppa1.0"); break;
++ }
++ exit (0);
++ }
++EOF
++ (CCOPTS= $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy`
++ test -z "$HP_ARCH" && HP_ARCH=hppa
++ fi ;;
++ esac
++ if [ ${HP_ARCH} = "hppa2.0w" ]
++ then
++ eval $set_cc_for_build
++
++ # hppa2.0w-hp-hpux* has a 64-bit kernel and a compiler generating
++ # 32-bit code. hppa64-hp-hpux* has the same kernel and a compiler
++ # generating 64-bit code. GNU and HP use different nomenclature:
++ #
++ # $ CC_FOR_BUILD=cc ./config.guess
++ # => hppa2.0w-hp-hpux11.23
++ # $ CC_FOR_BUILD="cc +DA2.0w" ./config.guess
++ # => hppa64-hp-hpux11.23
++
++ if echo __LP64__ | (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) |
++ grep __LP64__ >/dev/null
++ then
++ HP_ARCH="hppa2.0w"
++ else
++ HP_ARCH="hppa64"
++ fi
++ fi
++ echo ${HP_ARCH}-hp-hpux${HPUX_REV}
++ exit ;;
++ ia64:HP-UX:*:*)
++ HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'`
++ echo ia64-hp-hpux${HPUX_REV}
++ exit ;;
++ 3050*:HI-UX:*:*)
++ eval $set_cc_for_build
++ sed 's/^ //' << EOF >$dummy.c
++ #include <unistd.h>
++ int
++ main ()
++ {
++ long cpu = sysconf (_SC_CPU_VERSION);
++ /* The order matters, because CPU_IS_HP_MC68K erroneously returns
++ true for CPU_PA_RISC1_0. CPU_IS_PA_RISC returns correct
++ results, however. */
++ if (CPU_IS_PA_RISC (cpu))
++ {
++ switch (cpu)
++ {
++ case CPU_PA_RISC1_0: puts ("hppa1.0-hitachi-hiuxwe2"); break;
++ case CPU_PA_RISC1_1: puts ("hppa1.1-hitachi-hiuxwe2"); break;
++ case CPU_PA_RISC2_0: puts ("hppa2.0-hitachi-hiuxwe2"); break;
++ default: puts ("hppa-hitachi-hiuxwe2"); break;
++ }
++ }
++ else if (CPU_IS_HP_MC68K (cpu))
++ puts ("m68k-hitachi-hiuxwe2");
++ else puts ("unknown-hitachi-hiuxwe2");
++ exit (0);
++ }
++EOF
++ $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` &&
++ { echo "$SYSTEM_NAME"; exit; }
++ echo unknown-hitachi-hiuxwe2
++ exit ;;
++ 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* )
++ echo hppa1.1-hp-bsd
++ exit ;;
++ 9000/8??:4.3bsd:*:*)
++ echo hppa1.0-hp-bsd
++ exit ;;
++ *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*)
++ echo hppa1.0-hp-mpeix
++ exit ;;
++ hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* )
++ echo hppa1.1-hp-osf
++ exit ;;
++ hp8??:OSF1:*:*)
++ echo hppa1.0-hp-osf
++ exit ;;
++ i*86:OSF1:*:*)
++ if [ -x /usr/sbin/sysversion ] ; then
++ echo ${UNAME_MACHINE}-unknown-osf1mk
++ else
++ echo ${UNAME_MACHINE}-unknown-osf1
++ fi
++ exit ;;
++ parisc*:Lites*:*:*)
++ echo hppa1.1-hp-lites
++ exit ;;
++ C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*)
++ echo c1-convex-bsd
++ exit ;;
++ C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*)
++ if getsysinfo -f scalar_acc
++ then echo c32-convex-bsd
++ else echo c2-convex-bsd
++ fi
++ exit ;;
++ C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*)
++ echo c34-convex-bsd
++ exit ;;
++ C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*)
++ echo c38-convex-bsd
++ exit ;;
++ C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*)
++ echo c4-convex-bsd
++ exit ;;
++ CRAY*Y-MP:*:*:*)
++ echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
++ exit ;;
++ CRAY*[A-Z]90:*:*:*)
++ echo ${UNAME_MACHINE}-cray-unicos${UNAME_RELEASE} \
++ | sed -e 's/CRAY.*\([A-Z]90\)/\1/' \
++ -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \
++ -e 's/\.[^.]*$/.X/'
++ exit ;;
++ CRAY*TS:*:*:*)
++ echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
++ exit ;;
++ CRAY*T3E:*:*:*)
++ echo alphaev5-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
++ exit ;;
++ CRAY*SV1:*:*:*)
++ echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
++ exit ;;
++ *:UNICOS/mp:*:*)
++ echo craynv-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
++ exit ;;
++ F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*)
++ FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
++ FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'`
++ FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'`
++ echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
++ exit ;;
++ 5000:UNIX_System_V:4.*:*)
++ FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'`
++ FUJITSU_REL=`echo ${UNAME_RELEASE} | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/ /_/'`
++ echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
++ exit ;;
++ i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*)
++ echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE}
++ exit ;;
++ sparc*:BSD/OS:*:*)
++ echo sparc-unknown-bsdi${UNAME_RELEASE}
++ exit ;;
++ *:BSD/OS:*:*)
++ echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE}
++ exit ;;
++ *:FreeBSD:*:*)
++ case ${UNAME_MACHINE} in
++ pc98)
++ echo i386-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;;
++ amd64)
++ echo x86_64-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;;
++ *)
++ echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;;
++ esac
++ exit ;;
++ i*:CYGWIN*:*)
++ echo ${UNAME_MACHINE}-pc-cygwin
++ exit ;;
++ *:MINGW*:*)
++ echo ${UNAME_MACHINE}-pc-mingw32
++ exit ;;
++ i*:windows32*:*)
++ # uname -m includes "-pc" on this system.
++ echo ${UNAME_MACHINE}-mingw32
++ exit ;;
++ i*:PW*:*)
++ echo ${UNAME_MACHINE}-pc-pw32
++ exit ;;
++ *:Interix*:[3456]*)
++ case ${UNAME_MACHINE} in
++ x86)
++ echo i586-pc-interix${UNAME_RELEASE}
++ exit ;;
++ EM64T | authenticamd)
++ echo x86_64-unknown-interix${UNAME_RELEASE}
++ exit ;;
++ esac ;;
++ [345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*)
++ echo i${UNAME_MACHINE}-pc-mks
++ exit ;;
++ i*:Windows_NT*:* | Pentium*:Windows_NT*:*)
++ # How do we know it's Interix rather than the generic POSIX subsystem?
++ # It also conflicts with pre-2.0 versions of AT&T UWIN. Should we
++ # UNAME_MACHINE based on the output of uname instead of i386?
++ echo i586-pc-interix
++ exit ;;
++ i*:UWIN*:*)
++ echo ${UNAME_MACHINE}-pc-uwin
++ exit ;;
++ amd64:CYGWIN*:*:* | x86_64:CYGWIN*:*:*)
++ echo x86_64-unknown-cygwin
++ exit ;;
++ p*:CYGWIN*:*)
++ echo powerpcle-unknown-cygwin
++ exit ;;
++ prep*:SunOS:5.*:*)
++ echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
++ exit ;;
++ *:GNU:*:*)
++ # the GNU system
++ echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'`
++ exit ;;
++ *:GNU/*:*:*)
++ # other systems with GNU libc and userland
++ echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-gnu
++ exit ;;
++ i*86:Minix:*:*)
++ echo ${UNAME_MACHINE}-pc-minix
++ exit ;;
++ arm*:Linux:*:*)
++ echo ${UNAME_MACHINE}-unknown-linux-gnu
++ exit ;;
++ avr32*:Linux:*:*)
++ echo ${UNAME_MACHINE}-unknown-linux-gnu
++ exit ;;
++ cris:Linux:*:*)
++ echo cris-axis-linux-gnu
++ exit ;;
++ crisv32:Linux:*:*)
++ echo crisv32-axis-linux-gnu
++ exit ;;
++ frv:Linux:*:*)
++ echo frv-unknown-linux-gnu
++ exit ;;
++ ia64:Linux:*:*)
++ echo ${UNAME_MACHINE}-unknown-linux-gnu
++ exit ;;
++ m32r*:Linux:*:*)
++ echo ${UNAME_MACHINE}-unknown-linux-gnu
++ exit ;;
++ m68*:Linux:*:*)
++ echo ${UNAME_MACHINE}-unknown-linux-gnu
++ exit ;;
++ mips:Linux:*:*)
++ eval $set_cc_for_build
++ sed 's/^ //' << EOF >$dummy.c
++ #undef CPU
++ #undef mips
++ #undef mipsel
++ #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL)
++ CPU=mipsel
++ #else
++ #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB)
++ CPU=mips
++ #else
++ CPU=
++ #endif
++ #endif
++EOF
++ eval "`$CC_FOR_BUILD -E $dummy.c 2>/dev/null | sed -n '
++ /^CPU/{
++ s: ::g
++ p
++ }'`"
++ test x"${CPU}" != x && { echo "${CPU}-unknown-linux-gnu"; exit; }
++ ;;
++ mips64:Linux:*:*)
++ eval $set_cc_for_build
++ sed 's/^ //' << EOF >$dummy.c
++ #undef CPU
++ #undef mips64
++ #undef mips64el
++ #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL)
++ CPU=mips64el
++ #else
++ #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB)
++ CPU=mips64
++ #else
++ CPU=
++ #endif
++ #endif
++EOF
++ eval "`$CC_FOR_BUILD -E $dummy.c 2>/dev/null | sed -n '
++ /^CPU/{
++ s: ::g
++ p
++ }'`"
++ test x"${CPU}" != x && { echo "${CPU}-unknown-linux-gnu"; exit; }
++ ;;
++ or32:Linux:*:*)
++ echo or32-unknown-linux-gnu
++ exit ;;
++ ppc:Linux:*:*)
++ echo powerpc-unknown-linux-gnu
++ exit ;;
++ ppc64:Linux:*:*)
++ echo powerpc64-unknown-linux-gnu
++ exit ;;
++ alpha:Linux:*:*)
++ case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in
++ EV5) UNAME_MACHINE=alphaev5 ;;
++ EV56) UNAME_MACHINE=alphaev56 ;;
++ PCA56) UNAME_MACHINE=alphapca56 ;;
++ PCA57) UNAME_MACHINE=alphapca56 ;;
++ EV6) UNAME_MACHINE=alphaev6 ;;
++ EV67) UNAME_MACHINE=alphaev67 ;;
++ EV68*) UNAME_MACHINE=alphaev68 ;;
++ esac
++ objdump --private-headers /bin/sh | grep ld.so.1 >/dev/null
++ if test "$?" = 0 ; then LIBC="libc1" ; else LIBC="" ; fi
++ echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC}
++ exit ;;
++ parisc:Linux:*:* | hppa:Linux:*:*)
++ # Look for CPU level
++ case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in
++ PA7*) echo hppa1.1-unknown-linux-gnu ;;
++ PA8*) echo hppa2.0-unknown-linux-gnu ;;
++ *) echo hppa-unknown-linux-gnu ;;
++ esac
++ exit ;;
++ parisc64:Linux:*:* | hppa64:Linux:*:*)
++ echo hppa64-unknown-linux-gnu
++ exit ;;
++ s390:Linux:*:* | s390x:Linux:*:*)
++ echo ${UNAME_MACHINE}-ibm-linux
++ exit ;;
++ sh64*:Linux:*:*)
++ echo ${UNAME_MACHINE}-unknown-linux-gnu
++ exit ;;
++ sh*:Linux:*:*)
++ echo ${UNAME_MACHINE}-unknown-linux-gnu
++ exit ;;
++ sparc:Linux:*:* | sparc64:Linux:*:*)
++ echo ${UNAME_MACHINE}-unknown-linux-gnu
++ exit ;;
++ vax:Linux:*:*)
++ echo ${UNAME_MACHINE}-dec-linux-gnu
++ exit ;;
++ x86_64:Linux:*:*)
++ echo x86_64-unknown-linux-gnu
++ exit ;;
++ xtensa:Linux:*:*)
++ echo xtensa-unknown-linux-gnu
++ exit ;;
++ i*86:Linux:*:*)
++ # The BFD linker knows what the default object file format is, so
++ # first see if it will tell us. cd to the root directory to prevent
++ # problems with other programs or directories called `ld' in the path.
++ # Set LC_ALL=C to ensure ld outputs messages in English.
++ ld_supported_targets=`cd /; LC_ALL=C ld --help 2>&1 \
++ | sed -ne '/supported targets:/!d
++ s/[ ][ ]*/ /g
++ s/.*supported targets: *//
++ s/ .*//
++ p'`
++ case "$ld_supported_targets" in
++ elf32-i386)
++ TENTATIVE="${UNAME_MACHINE}-pc-linux-gnu"
++ ;;
++ a.out-i386-linux)
++ echo "${UNAME_MACHINE}-pc-linux-gnuaout"
++ exit ;;
++ coff-i386)
++ echo "${UNAME_MACHINE}-pc-linux-gnucoff"
++ exit ;;
++ "")
++ # Either a pre-BFD a.out linker (linux-gnuoldld) or
++ # one that does not give us useful --help.
++ echo "${UNAME_MACHINE}-pc-linux-gnuoldld"
++ exit ;;
++ esac
++ # Determine whether the default compiler is a.out or elf
++ eval $set_cc_for_build
++ sed 's/^ //' << EOF >$dummy.c
++ #include <features.h>
++ #ifdef __ELF__
++ # ifdef __GLIBC__
++ # if __GLIBC__ >= 2
++ LIBC=gnu
++ # else
++ LIBC=gnulibc1
++ # endif
++ # else
++ LIBC=gnulibc1
++ # endif
++ #else
++ #if defined(__INTEL_COMPILER) || defined(__PGI) || defined(__SUNPRO_C) || defined(__SUNPRO_CC)
++ LIBC=gnu
++ #else
++ LIBC=gnuaout
++ #endif
++ #endif
++ #ifdef __dietlibc__
++ LIBC=dietlibc
++ #endif
++EOF
++ eval "`$CC_FOR_BUILD -E $dummy.c 2>/dev/null | sed -n '
++ /^LIBC/{
++ s: ::g
++ p
++ }'`"
++ test x"${LIBC}" != x && {
++ echo "${UNAME_MACHINE}-pc-linux-${LIBC}"
++ exit
++ }
++ test x"${TENTATIVE}" != x && { echo "${TENTATIVE}"; exit; }
++ ;;
++ i*86:DYNIX/ptx:4*:*)
++ # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there.
++ # earlier versions are messed up and put the nodename in both
++ # sysname and nodename.
++ echo i386-sequent-sysv4
++ exit ;;
++ i*86:UNIX_SV:4.2MP:2.*)
++ # Unixware is an offshoot of SVR4, but it has its own version
++ # number series starting with 2...
++ # I am not positive that other SVR4 systems won't match this,
++ # I just have to hope. -- rms.
++ # Use sysv4.2uw... so that sysv4* matches it.
++ echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION}
++ exit ;;
++ i*86:OS/2:*:*)
++ # If we were able to find `uname', then EMX Unix compatibility
++ # is probably installed.
++ echo ${UNAME_MACHINE}-pc-os2-emx
++ exit ;;
++ i*86:XTS-300:*:STOP)
++ echo ${UNAME_MACHINE}-unknown-stop
++ exit ;;
++ i*86:atheos:*:*)
++ echo ${UNAME_MACHINE}-unknown-atheos
++ exit ;;
++ i*86:syllable:*:*)
++ echo ${UNAME_MACHINE}-pc-syllable
++ exit ;;
++ i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.0*:*)
++ echo i386-unknown-lynxos${UNAME_RELEASE}
++ exit ;;
++ i*86:*DOS:*:*)
++ echo ${UNAME_MACHINE}-pc-msdosdjgpp
++ exit ;;
++ i*86:*:4.*:* | i*86:SYSTEM_V:4.*:*)
++ UNAME_REL=`echo ${UNAME_RELEASE} | sed 's/\/MP$//'`
++ if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then
++ echo ${UNAME_MACHINE}-univel-sysv${UNAME_REL}
++ else
++ echo ${UNAME_MACHINE}-pc-sysv${UNAME_REL}
++ fi
++ exit ;;
++ i*86:*:5:[678]*)
++ # UnixWare 7.x, OpenUNIX and OpenServer 6.
++ case `/bin/uname -X | grep "^Machine"` in
++ *486*) UNAME_MACHINE=i486 ;;
++ *Pentium) UNAME_MACHINE=i586 ;;
++ *Pent*|*Celeron) UNAME_MACHINE=i686 ;;
++ esac
++ echo ${UNAME_MACHINE}-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION}
++ exit ;;
++ i*86:*:3.2:*)
++ if test -f /usr/options/cb.name; then
++ UNAME_REL=`sed -n 's/.*Version //p' </usr/options/cb.name`
++ echo ${UNAME_MACHINE}-pc-isc$UNAME_REL
++ elif /bin/uname -X 2>/dev/null >/dev/null ; then
++ UNAME_REL=`(/bin/uname -X|grep Release|sed -e 's/.*= //')`
++ (/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486
++ (/bin/uname -X|grep '^Machine.*Pentium' >/dev/null) \
++ && UNAME_MACHINE=i586
++ (/bin/uname -X|grep '^Machine.*Pent *II' >/dev/null) \
++ && UNAME_MACHINE=i686
++ (/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \
++ && UNAME_MACHINE=i686
++ echo ${UNAME_MACHINE}-pc-sco$UNAME_REL
++ else
++ echo ${UNAME_MACHINE}-pc-sysv32
++ fi
++ exit ;;
++ pc:*:*:*)
++ # Left here for compatibility:
++ # uname -m prints for DJGPP always 'pc', but it prints nothing about
++ # the processor, so we play safe by assuming i386.
++ echo i386-pc-msdosdjgpp
++ exit ;;
++ Intel:Mach:3*:*)
++ echo i386-pc-mach3
++ exit ;;
++ paragon:*:*:*)
++ echo i860-intel-osf1
++ exit ;;
++ i860:*:4.*:*) # i860-SVR4
++ if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then
++ echo i860-stardent-sysv${UNAME_RELEASE} # Stardent Vistra i860-SVR4
++ else # Add other i860-SVR4 vendors below as they are discovered.
++ echo i860-unknown-sysv${UNAME_RELEASE} # Unknown i860-SVR4
++ fi
++ exit ;;
++ mini*:CTIX:SYS*5:*)
++ # "miniframe"
++ echo m68010-convergent-sysv
++ exit ;;
++ mc68k:UNIX:SYSTEM5:3.51m)
++ echo m68k-convergent-sysv
++ exit ;;
++ M680?0:D-NIX:5.3:*)
++ echo m68k-diab-dnix
++ exit ;;
++ M68*:*:R3V[5678]*:*)
++ test -r /sysV68 && { echo 'm68k-motorola-sysv'; exit; } ;;
++ 3[345]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0 | S7501*:*:4.0:3.0)
++ OS_REL=''
++ test -r /etc/.relid \
++ && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid`
++ /bin/uname -p 2>/dev/null | grep 86 >/dev/null \
++ && { echo i486-ncr-sysv4.3${OS_REL}; exit; }
++ /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \
++ && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;;
++ 3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*)
++ /bin/uname -p 2>/dev/null | grep 86 >/dev/null \
++ && { echo i486-ncr-sysv4; exit; } ;;
++ m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*)
++ echo m68k-unknown-lynxos${UNAME_RELEASE}
++ exit ;;
++ mc68030:UNIX_System_V:4.*:*)
++ echo m68k-atari-sysv4
++ exit ;;
++ TSUNAMI:LynxOS:2.*:*)
++ echo sparc-unknown-lynxos${UNAME_RELEASE}
++ exit ;;
++ rs6000:LynxOS:2.*:*)
++ echo rs6000-unknown-lynxos${UNAME_RELEASE}
++ exit ;;
++ PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.0*:*)
++ echo powerpc-unknown-lynxos${UNAME_RELEASE}
++ exit ;;
++ SM[BE]S:UNIX_SV:*:*)
++ echo mips-dde-sysv${UNAME_RELEASE}
++ exit ;;
++ RM*:ReliantUNIX-*:*:*)
++ echo mips-sni-sysv4
++ exit ;;
++ RM*:SINIX-*:*:*)
++ echo mips-sni-sysv4
++ exit ;;
++ *:SINIX-*:*:*)
++ if uname -p 2>/dev/null >/dev/null ; then
++ UNAME_MACHINE=`(uname -p) 2>/dev/null`
++ echo ${UNAME_MACHINE}-sni-sysv4
++ else
++ echo ns32k-sni-sysv
++ fi
++ exit ;;
++ PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort
++ # says <Richard.M.Bartel@ccMail.Census.GOV>
++ echo i586-unisys-sysv4
++ exit ;;
++ *:UNIX_System_V:4*:FTX*)
++ # From Gerald Hewes <hewes@openmarket.com>.
++ # How about differentiating between stratus architectures? -djm
++ echo hppa1.1-stratus-sysv4
++ exit ;;
++ *:*:*:FTX*)
++ # From seanf@swdc.stratus.com.
++ echo i860-stratus-sysv4
++ exit ;;
++ i*86:VOS:*:*)
++ # From Paul.Green@stratus.com.
++ echo ${UNAME_MACHINE}-stratus-vos
++ exit ;;
++ *:VOS:*:*)
++ # From Paul.Green@stratus.com.
++ echo hppa1.1-stratus-vos
++ exit ;;
++ mc68*:A/UX:*:*)
++ echo m68k-apple-aux${UNAME_RELEASE}
++ exit ;;
++ news*:NEWS-OS:6*:*)
++ echo mips-sony-newsos6
++ exit ;;
++ R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*)
++ if [ -d /usr/nec ]; then
++ echo mips-nec-sysv${UNAME_RELEASE}
++ else
++ echo mips-unknown-sysv${UNAME_RELEASE}
++ fi
++ exit ;;
++ BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only.
++ echo powerpc-be-beos
++ exit ;;
++ BeMac:BeOS:*:*) # BeOS running on Mac or Mac clone, PPC only.
++ echo powerpc-apple-beos
++ exit ;;
++ BePC:BeOS:*:*) # BeOS running on Intel PC compatible.
++ echo i586-pc-beos
++ exit ;;
++ SX-4:SUPER-UX:*:*)
++ echo sx4-nec-superux${UNAME_RELEASE}
++ exit ;;
++ SX-5:SUPER-UX:*:*)
++ echo sx5-nec-superux${UNAME_RELEASE}
++ exit ;;
++ SX-6:SUPER-UX:*:*)
++ echo sx6-nec-superux${UNAME_RELEASE}
++ exit ;;
++ SX-7:SUPER-UX:*:*)
++ echo sx7-nec-superux${UNAME_RELEASE}
++ exit ;;
++ SX-8:SUPER-UX:*:*)
++ echo sx8-nec-superux${UNAME_RELEASE}
++ exit ;;
++ SX-8R:SUPER-UX:*:*)
++ echo sx8r-nec-superux${UNAME_RELEASE}
++ exit ;;
++ Power*:Rhapsody:*:*)
++ echo powerpc-apple-rhapsody${UNAME_RELEASE}
++ exit ;;
++ *:Rhapsody:*:*)
++ echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE}
++ exit ;;
++ *:Darwin:*:*)
++ UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown
++ case $UNAME_PROCESSOR in
++ unknown) UNAME_PROCESSOR=powerpc ;;
++ esac
++ echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE}
++ exit ;;
++ *:procnto*:*:* | *:QNX:[0123456789]*:*)
++ UNAME_PROCESSOR=`uname -p`
++ if test "$UNAME_PROCESSOR" = "x86"; then
++ UNAME_PROCESSOR=i386
++ UNAME_MACHINE=pc
++ fi
++ echo ${UNAME_PROCESSOR}-${UNAME_MACHINE}-nto-qnx${UNAME_RELEASE}
++ exit ;;
++ *:QNX:*:4*)
++ echo i386-pc-qnx
++ exit ;;
++ NSE-?:NONSTOP_KERNEL:*:*)
++ echo nse-tandem-nsk${UNAME_RELEASE}
++ exit ;;
++ NSR-?:NONSTOP_KERNEL:*:*)
++ echo nsr-tandem-nsk${UNAME_RELEASE}
++ exit ;;
++ *:NonStop-UX:*:*)
++ echo mips-compaq-nonstopux
++ exit ;;
++ BS2000:POSIX*:*:*)
++ echo bs2000-siemens-sysv
++ exit ;;
++ DS/*:UNIX_System_V:*:*)
++ echo ${UNAME_MACHINE}-${UNAME_SYSTEM}-${UNAME_RELEASE}
++ exit ;;
++ *:Plan9:*:*)
++ # "uname -m" is not consistent, so use $cputype instead. 386
++ # is converted to i386 for consistency with other x86
++ # operating systems.
++ if test "$cputype" = "386"; then
++ UNAME_MACHINE=i386
++ else
++ UNAME_MACHINE="$cputype"
++ fi
++ echo ${UNAME_MACHINE}-unknown-plan9
++ exit ;;
++ *:TOPS-10:*:*)
++ echo pdp10-unknown-tops10
++ exit ;;
++ *:TENEX:*:*)
++ echo pdp10-unknown-tenex
++ exit ;;
++ KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*)
++ echo pdp10-dec-tops20
++ exit ;;
++ XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*)
++ echo pdp10-xkl-tops20
++ exit ;;
++ *:TOPS-20:*:*)
++ echo pdp10-unknown-tops20
++ exit ;;
++ *:ITS:*:*)
++ echo pdp10-unknown-its
++ exit ;;
++ SEI:*:*:SEIUX)
++ echo mips-sei-seiux${UNAME_RELEASE}
++ exit ;;
++ *:DragonFly:*:*)
++ echo ${UNAME_MACHINE}-unknown-dragonfly`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`
++ exit ;;
++ *:*VMS:*:*)
++ UNAME_MACHINE=`(uname -p) 2>/dev/null`
++ case "${UNAME_MACHINE}" in
++ A*) echo alpha-dec-vms ; exit ;;
++ I*) echo ia64-dec-vms ; exit ;;
++ V*) echo vax-dec-vms ; exit ;;
++ esac ;;
++ *:XENIX:*:SysV)
++ echo i386-pc-xenix
++ exit ;;
++ i*86:skyos:*:*)
++ echo ${UNAME_MACHINE}-pc-skyos`echo ${UNAME_RELEASE}` | sed -e 's/ .*$//'
++ exit ;;
++ i*86:rdos:*:*)
++ echo ${UNAME_MACHINE}-pc-rdos
++ exit ;;
++esac
++
++#echo '(No uname command or uname output not recognized.)' 1>&2
++#echo "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" 1>&2
++
++eval $set_cc_for_build
++cat >$dummy.c <<EOF
++#ifdef _SEQUENT_
++# include <sys/types.h>
++# include <sys/utsname.h>
++#endif
++main ()
++{
++#if defined (sony)
++#if defined (MIPSEB)
++ /* BFD wants "bsd" instead of "newsos". Perhaps BFD should be changed,
++ I don't know.... */
++ printf ("mips-sony-bsd\n"); exit (0);
++#else
++#include <sys/param.h>
++ printf ("m68k-sony-newsos%s\n",
++#ifdef NEWSOS4
++ "4"
++#else
++ ""
++#endif
++ ); exit (0);
++#endif
++#endif
++
++#if defined (__arm) && defined (__acorn) && defined (__unix)
++ printf ("arm-acorn-riscix\n"); exit (0);
++#endif
++
++#if defined (hp300) && !defined (hpux)
++ printf ("m68k-hp-bsd\n"); exit (0);
++#endif
++
++#if defined (NeXT)
++#if !defined (__ARCHITECTURE__)
++#define __ARCHITECTURE__ "m68k"
++#endif
++ int version;
++ version=`(hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null`;
++ if (version < 4)
++ printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version);
++ else
++ printf ("%s-next-openstep%d\n", __ARCHITECTURE__, version);
++ exit (0);
++#endif
++
++#if defined (MULTIMAX) || defined (n16)
++#if defined (UMAXV)
++ printf ("ns32k-encore-sysv\n"); exit (0);
++#else
++#if defined (CMU)
++ printf ("ns32k-encore-mach\n"); exit (0);
++#else
++ printf ("ns32k-encore-bsd\n"); exit (0);
++#endif
++#endif
++#endif
++
++#if defined (__386BSD__)
++ printf ("i386-pc-bsd\n"); exit (0);
++#endif
++
++#if defined (sequent)
++#if defined (i386)
++ printf ("i386-sequent-dynix\n"); exit (0);
++#endif
++#if defined (ns32000)
++ printf ("ns32k-sequent-dynix\n"); exit (0);
++#endif
++#endif
++
++#if defined (_SEQUENT_)
++ struct utsname un;
++
++ uname(&un);
++
++ if (strncmp(un.version, "V2", 2) == 0) {
++ printf ("i386-sequent-ptx2\n"); exit (0);
++ }
++ if (strncmp(un.version, "V1", 2) == 0) { /* XXX is V1 correct? */
++ printf ("i386-sequent-ptx1\n"); exit (0);
++ }
++ printf ("i386-sequent-ptx\n"); exit (0);
++
++#endif
++
++#if defined (vax)
++# if !defined (ultrix)
++# include <sys/param.h>
++# if defined (BSD)
++# if BSD == 43
++ printf ("vax-dec-bsd4.3\n"); exit (0);
++# else
++# if BSD == 199006
++ printf ("vax-dec-bsd4.3reno\n"); exit (0);
++# else
++ printf ("vax-dec-bsd\n"); exit (0);
++# endif
++# endif
++# else
++ printf ("vax-dec-bsd\n"); exit (0);
++# endif
++# else
++ printf ("vax-dec-ultrix\n"); exit (0);
++# endif
++#endif
++
++#if defined (alliant) && defined (i860)
++ printf ("i860-alliant-bsd\n"); exit (0);
++#endif
++
++ exit (1);
++}
++EOF
++
++$CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null && SYSTEM_NAME=`$dummy` &&
++ { echo "$SYSTEM_NAME"; exit; }
++
++# Apollos put the system type in the environment.
++
++test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit; }
++
++# Convex versions that predate uname can use getsysinfo(1)
++
++if [ -x /usr/convex/getsysinfo ]
++then
++ case `getsysinfo -f cpu_type` in
++ c1*)
++ echo c1-convex-bsd
++ exit ;;
++ c2*)
++ if getsysinfo -f scalar_acc
++ then echo c32-convex-bsd
++ else echo c2-convex-bsd
++ fi
++ exit ;;
++ c34*)
++ echo c34-convex-bsd
++ exit ;;
++ c38*)
++ echo c38-convex-bsd
++ exit ;;
++ c4*)
++ echo c4-convex-bsd
++ exit ;;
++ esac
++fi
++
++cat >&2 <<EOF
++$0: unable to guess system type
++
++This script, last modified $timestamp, has failed to recognize
++the operating system you are using. It is advised that you
++download the most up to date version of the config scripts from
++
++ http://savannah.gnu.org/cgi-bin/viewcvs/*checkout*/config/config/config.guess
++and
++ http://savannah.gnu.org/cgi-bin/viewcvs/*checkout*/config/config/config.sub
++
++If the version you run ($0) is already up to date, please
++send the following data and any information you think might be
++pertinent to <config-patches@gnu.org> in order to provide the needed
++information to handle your system.
++
++config.guess timestamp = $timestamp
++
++uname -m = `(uname -m) 2>/dev/null || echo unknown`
++uname -r = `(uname -r) 2>/dev/null || echo unknown`
++uname -s = `(uname -s) 2>/dev/null || echo unknown`
++uname -v = `(uname -v) 2>/dev/null || echo unknown`
++
++/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null`
++/bin/uname -X = `(/bin/uname -X) 2>/dev/null`
++
++hostinfo = `(hostinfo) 2>/dev/null`
++/bin/universe = `(/bin/universe) 2>/dev/null`
++/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null`
++/bin/arch = `(/bin/arch) 2>/dev/null`
++/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null`
++/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null`
++
++UNAME_MACHINE = ${UNAME_MACHINE}
++UNAME_RELEASE = ${UNAME_RELEASE}
++UNAME_SYSTEM = ${UNAME_SYSTEM}
++UNAME_VERSION = ${UNAME_VERSION}
++EOF
++
++exit 1
++
++# Local variables:
++# eval: (add-hook 'write-file-hooks 'time-stamp)
++# time-stamp-start: "timestamp='"
++# time-stamp-format: "%:y-%02m-%02d"
++# time-stamp-end: "'"
++# End:
+--- adjtimex-1.23.orig/debian/control
++++ adjtimex-1.23/debian/control
+@@ -0,0 +1,20 @@
++Source: adjtimex
++Section: admin
++Priority: optional
++Maintainer: James R. Van Zandt <jrv@debian.org>
++Build-Depends: debhelper (>= 5), po-debconf
++Standards-Version: 3.7.2
++
++Package: adjtimex
++Architecture: any
++Depends: ${shlibs:Depends}, debconf | debconf-2.0
++Suggests: ntpdate
++Description: Utility to display or set the kernel time variables
++ This program gives you raw access to the kernel time variables. For
++ a machine connected to the Internet, or equipped with a precision
++ oscillator or radio clock, the best way to keep the system clock
++ correct is with ntpd. However, for a standalone or intermittently
++ connected machine, you may use adjtimex instead to at least correct
++ for systematic drift. adjtimex can optionally adjust the system
++ clock using the CMOS clock as a reference, and can log times for
++ long-term estimation of drift rates.
+--- adjtimex-1.23.orig/debian/po/POTFILES.in
++++ adjtimex-1.23/debian/po/POTFILES.in
+@@ -0,0 +1 @@
++[type: gettext/rfc822deb] templates
+--- adjtimex-1.23.orig/debian/po/templates.pot
++++ adjtimex-1.23/debian/po/templates.pot
+@@ -0,0 +1,59 @@
++# SOME DESCRIPTIVE TITLE.
++# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
++# This file is distributed under the same license as the PACKAGE package.
++# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
++#
++#, fuzzy
++msgid ""
++msgstr ""
++"Project-Id-Version: PACKAGE VERSION\n"
++"Report-Msgid-Bugs-To: jrv@debian.org\n"
++"POT-Creation-Date: 2007-08-06 21:41-0400\n"
++"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
++"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
++"Language-Team: LANGUAGE <LL@li.org>\n"
++"MIME-Version: 1.0\n"
++"Content-Type: text/plain; charset=CHARSET\n"
++"Content-Transfer-Encoding: 8bit\n"
++
++#. Type: boolean
++#. Description
++#: ../templates:1001
++msgid "Should adjtimex be run at installation and at every startup?"
++msgstr ""
++
++#. Type: boolean
++#. Description
++#: ../templates:1001
++msgid ""
++"adjtimex can run at system startup to set the kernel time parameters to the "
++"values in /etc/default/adjtimex. Don't accept if you just want to use "
++"adjtimex to inspect the current parameters."
++msgstr ""
++
++#. Type: boolean
++#. Description
++#: ../templates:2001
++msgid "Should adjtimexconfig be run at installation time?"
++msgstr ""
++
++#. Type: boolean
++#. Description
++#: ../templates:2001
++msgid ""
++"The adjtimexconfig script will use adjtimex to find values for the kernel "
++"variables tick and frequency that will make the system clock approximately "
++"agree with the hardware clock (also known as the CMOS clock). It then saves "
++"these values in the configuration file /etc/default/adjtimex so the settings "
++"will be restored on every boot, when /etc/init.d/adjtimex runs."
++msgstr ""
++
++#. Type: boolean
++#. Description
++#: ../templates:2001
++msgid ""
++"The script takes 70 sec to run. Alternatively, you can run adjtimexconfig "
++"yourself at a later time, or determine the kernel variables one of several "
++"other ways (see the adjtimex man page) and install them in /etc/default/"
++"adjtimex."
++msgstr ""
+--- adjtimex-1.23.orig/debian/po/fr.po
++++ adjtimex-1.23/debian/po/fr.po
+@@ -0,0 +1,87 @@
++# translation of fr.po to French
++#
++# Translators, if you are not familiar with the PO format, gettext
++# documentation is worth reading, especially sections dedicated to
++# this format, e.g. by running:
++# info -n '(gettext)PO Files'
++# info -n '(gettext)Header Entry'
++#
++# Some information specific to po-debconf are available at
++# /usr/share/doc/po-debconf/README-trans
++# or http://www.debian.org/intl/l10n/po-debconf/README-trans
++#
++# Developers do not need to manually edit POT or PO files.
++#
++# Christian Perrier <bubulle@debian.org>, 2006.
++msgid ""
++msgstr ""
++"Project-Id-Version: fr\n"
++"Report-Msgid-Bugs-To: jrv@debian.org\n"
++"POT-Creation-Date: 2007-08-06 21:41-0400\n"
++"PO-Revision-Date: 2006-12-17 14:01+0100\n"
++"Last-Translator: Christian Perrier <bubulle@debian.org>\n"
++"Language-Team: French <debian-l10n-french@lists.debian.org>\n"
++"MIME-Version: 1.0\n"
++"Content-Type: text/plain; charset=UTF-8\n"
++"Content-Transfer-Encoding: 8bit\n"
++"X-Generator: KBabel 1.11.4\n"
++
++#. Type: boolean
++#. Description
++#: ../templates:1001
++msgid "Should adjtimex be run at installation and at every startup?"
++msgstr ""
++"Faut-il lancer adjtimex lors de l'installation et à chaque démarrage du "
++"système ?"
++
++#. Type: boolean
++#. Description
++#: ../templates:1001
++msgid ""
++"adjtimex can run at system startup to set the kernel time parameters to the "
++"values in /etc/default/adjtimex. Don't accept if you just want to use "
++"adjtimex to inspect the current parameters."
++msgstr ""
++"Adjtimex peut être lancé au démarrage du système afin de régler les "
++"paramètres d'horloge du noyau en fonction des valeurs contenues dans /etc/"
++"default/adjtimex. Ne choisissez pas cette option si vous souhaitez "
++"simplement vous servir d'adjtimex pour consulter les paramètres actuels."
++
++#. Type: boolean
++#. Description
++#: ../templates:2001
++msgid "Should adjtimexconfig be run at installation time?"
++msgstr "Faut-il lancer adjtimexconfig lors de l'installation ?"
++
++#. Type: boolean
++#. Description
++#: ../templates:2001
++msgid ""
++"The adjtimexconfig script will use adjtimex to find values for the kernel "
++"variables tick and frequency that will make the system clock approximately "
++"agree with the hardware clock (also known as the CMOS clock). It then saves "
++"these values in the configuration file /etc/default/adjtimex so the settings "
++"will be restored on every boot, when /etc/init.d/adjtimex runs."
++msgstr ""
++"Le script adjtimexconfig utilise adjtimex afin de trouver les valeurs "
++"appropriées pour les variables du noyau concernant le battement (« tick ») "
++"et la fréquence d'horloge. Cela permettra à l'horloge du système d'être à "
++"peu près en accord avec l'horloge matérielle (parfois appelée « horloge "
++"CMOS »). Ces valeurs seront alors conservées dans le fichier de "
++"configuration /etc/default/adjtimex ce qui permettra de les restaurer à "
++"chaque démarrage quand /etc/init.d/adjtimex s'exécutera. "
++
++#. Type: boolean
++#. Description
++#: ../templates:2001
++msgid ""
++"The script takes 70 sec to run. Alternatively, you can run adjtimexconfig "
++"yourself at a later time, or determine the kernel variables one of several "
++"other ways (see the adjtimex man page) and install them in /etc/default/"
++"adjtimex."
++msgstr ""
++"La durée d'exécution du script est de 70 secondes. Vous pouvez également "
++"utiliser adjtimexconfig vous-même plus tard ou déterminer les valeurs des "
++"variables du noyau d'une autre manière (il en existe plusieurs : voir la "
++"page de manuel d'adjtimex). Ces valeurs devront ensuite être placées dans /"
++"etc/default/adjtimex."
+--- adjtimex-1.23.orig/debian/po/es.po
++++ adjtimex-1.23/debian/po/es.po
+@@ -0,0 +1,81 @@
++#
++# Translators, if you are not familiar with the PO format, gettext
++# documentation is worth reading, especially sections dedicated to
++# this format, e.g. by running:
++# info -n '(gettext)PO Files'
++# info -n '(gettext)Header Entry'
++#
++# Some information specific to po-debconf are available at
++# /usr/share/doc/po-debconf/README-trans
++# or http://www.debian.org/intl/l10n/po-debconf/README-trans
++#
++# Developers do not need to manually edit POT or PO files.
++#
++#, fuzzy
++msgid ""
++msgstr ""
++"Project-Id-Version: PACKAGE VERSION\n"
++"Report-Msgid-Bugs-To: jrv@debian.org\n"
++"POT-Creation-Date: 2007-08-06 21:41-0400\n"
++"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
++"Last-Translator: Vicente H. <vherrerv@supercable.es>\n"
++"Language-Team: LANGUAGE <LL@li.org>\n"
++"MIME-Version: 1.0\n"
++"Content-Type: text/plain; charset=ISO-8859-15\n"
++"Content-Transfer-Encoding: 8bit\n"
++
++#. Type: boolean
++#. Description
++#: ../templates:1001
++msgid "Should adjtimex be run at installation and at every startup?"
++msgstr "Debe ejecutarse adjtimex ahora y en cada arranque?"
++
++#. Type: boolean
++#. Description
++#: ../templates:1001
++#, fuzzy
++msgid ""
++"adjtimex can run at system startup to set the kernel time parameters to the "
++"values in /etc/default/adjtimex. Don't accept if you just want to use "
++"adjtimex to inspect the current parameters."
++msgstr ""
++"Adjtimex puede ser ejecutado en el arranque del sistema para poner los "
++"parmetros de tiempo del ncleo en /etc/default/adjtimex. Si usted solamente "
++"quiere usar adjtimex para inspeccionar los parmetros actuales, conteste \"No"
++"\"."
++
++#. Type: boolean
++#. Description
++#: ../templates:2001
++msgid "Should adjtimexconfig be run at installation time?"
++msgstr "Debe ejecutarse adjtimexconfig ahora?"
++
++#. Type: boolean
++#. Description
++#: ../templates:2001
++msgid ""
++"The adjtimexconfig script will use adjtimex to find values for the kernel "
++"variables tick and frequency that will make the system clock approximately "
++"agree with the hardware clock (also known as the CMOS clock). It then saves "
++"these values in the configuration file /etc/default/adjtimex so the settings "
++"will be restored on every boot, when /etc/init.d/adjtimex runs."
++msgstr ""
++"El guin adjtimexconfig usar adjtimex para encontrar los valores para el "
++"ncleo de la seal y frecuencia que ser tomada por el reloj del sistema "
++"para estar de acuerdo con el reloj del hardware (tambin conocido como el "
++"reloj CMOS). Este guin guardar los valores en el archivo de configuracin /"
++"etc/default/adjtimex para que los ajustes sean restaurados en cada arranque "
++"del sistema, cuando /etc/init.d/adjtimex sea ejecutado."
++
++#. Type: boolean
++#. Description
++#: ../templates:2001
++msgid ""
++"The script takes 70 sec to run. Alternatively, you can run adjtimexconfig "
++"yourself at a later time, or determine the kernel variables one of several "
++"other ways (see the adjtimex man page) and install them in /etc/default/"
++"adjtimex."
++msgstr ""
++"El guin toma 70 seg. para ser ejecutado. O bien, usted mismo puede ejecutar "
++"adjtimexconfig ms tarde, o determinar las variables del ncleo de varias "
++"formas (mire la pgina man de adjtimex) y antelos en /etc/default/adjtimex."
+--- adjtimex-1.23.orig/debian/po/pl.po
++++ adjtimex-1.23/debian/po/pl.po
+@@ -0,0 +1,83 @@
++#
++# Translators, if you are not familiar with the PO format, gettext
++# documentation is worth reading, especially sections dedicated to
++# this format, e.g. by running:
++# info -n '(gettext)PO Files'
++# info -n '(gettext)Header Entry'
++#
++# Some information specific to po-debconf are available at
++# /usr/share/doc/po-debconf/README-trans
++# or http://www.debian.org/intl/l10n/po-debconf/README-trans
++#
++# Developers do not need to manually edit POT or PO files.
++#
++#, fuzzy
++msgid ""
++msgstr ""
++"Project-Id-Version: PACKAGE VERSION\n"
++"Report-Msgid-Bugs-To: jrv@debian.org\n"
++"POT-Creation-Date: 2007-08-06 21:41-0400\n"
++"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
++"Last-Translator: Bartosz Zapaowski <zapal@debian.linux.org.pl>\n"
++"Language-Team: Polish Debian Documentation Project <pddp@debian.linux.org."
++"pl>\n"
++"MIME-Version: 1.0\n"
++"Content-Type: text/plain; charset=iso-8859-2\n"
++"Content-Transfer-Encoding: 8bit\n"
++
++#. Type: boolean
++#. Description
++#: ../templates:1001
++msgid "Should adjtimex be run at installation and at every startup?"
++msgstr ""
++"Czy adjtimex ma by uruchomiany podczas instalacji i kadego startu systemu?"
++
++#. Type: boolean
++#. Description
++#: ../templates:1001
++msgid ""
++"adjtimex can run at system startup to set the kernel time parameters to the "
++"values in /etc/default/adjtimex. Don't accept if you just want to use "
++"adjtimex to inspect the current parameters."
++msgstr ""
++"adjtimex moe by uruchamiany podczas kadego uruchomienia systemu,by "
++"ustawi parametry czasu w jdrze na wartoci znajdujce si w pliku/etc/"
++"default/adjtimex. Nie wyraaj zgody, jeli chcesz uywa adjtimextylko do "
++"sprawdzania aktualnych wartoci."
++
++#. Type: boolean
++#. Description
++#: ../templates:2001
++msgid "Should adjtimexconfig be run at installation time?"
++msgstr "Czy adjtimexconfig ma by uruchomiony podczas instalacji?"
++
++#. Type: boolean
++#. Description
++#: ../templates:2001
++msgid ""
++"The adjtimexconfig script will use adjtimex to find values for the kernel "
++"variables tick and frequency that will make the system clock approximately "
++"agree with the hardware clock (also known as the CMOS clock). It then saves "
++"these values in the configuration file /etc/default/adjtimex so the settings "
++"will be restored on every boot, when /etc/init.d/adjtimex runs."
++msgstr ""
++"Skrypt adjtimexconfig skorzysta z programu adjtimex do znalezienia "
++"takichwartoci parametrw jdra tick i frequency, eby zegar systemowy by "
++"zblionydo zegara sprztowego (zegara CMOS). Nastpnie zapisze ustawienia w "
++"plikukonfiguracyjnym /etc/default/adjtimex, dziki czemu wartoci te "
++"bdprzywrcane przy kadym starcie systemu w momencie wykonywania skryptu/"
++"etc/init.d/adjtimex."
++
++#. Type: boolean
++#. Description
++#: ../templates:2001
++msgid ""
++"The script takes 70 sec to run. Alternatively, you can run adjtimexconfig "
++"yourself at a later time, or determine the kernel variables one of several "
++"other ways (see the adjtimex man page) and install them in /etc/default/"
++"adjtimex."
++msgstr ""
++"Skrypt bdzie dziaa przez 70 sekund. Moesz te uruchomi "
++"wasnorcznieadjtimexconfig w dowolnym czasie lub dobra paramterty jdra w "
++"innysposb (zapoznaj si ze stron manuala adjtimex) i zapisa je w pliku/"
++"etc/default/adjtimex."
+--- adjtimex-1.23.orig/debian/po/nl.po
++++ adjtimex-1.23/debian/po/nl.po
+@@ -0,0 +1,82 @@
++#
++# Translators, if you are not familiar with the PO format, gettext
++# documentation is worth reading, especially sections dedicated to
++# this format, e.g. by running:
++# info -n '(gettext)PO Files'
++# info -n '(gettext)Header Entry'
++#
++# Some information specific to po-debconf are available at
++# /usr/share/doc/po-debconf/README-trans
++# or http://www.debian.org/intl/l10n/po-debconf/README-trans
++#
++# Developers do not need to manually edit POT or PO files.
++#
++msgid ""
++msgstr ""
++"Project-Id-Version: adjtimex\n"
++"Report-Msgid-Bugs-To: jrv@debian.org\n"
++"POT-Creation-Date: 2007-08-06 21:41-0400\n"
++"PO-Revision-Date: 2003-10-04 16:05+0100\n"
++"Last-Translator: Michiel Sikkes <michiel@sikkes.xs4all.nl>\n"
++"Language-Team: Dutch <debian-l10n-dutch@lists.debian.org>\n"
++"MIME-Version: 1.0\n"
++"Content-Type: text/plain; charset=UTF-8\n"
++"Content-Transfer-Encoding: 8bit\n"
++
++#. Type: boolean
++#. Description
++#: ../templates:1001
++msgid "Should adjtimex be run at installation and at every startup?"
++msgstr ""
++"Wilt u dat adjtimex bij elke installatie en bij elke opstartprocedure "
++"gedraaid wordt?"
++
++#. Type: boolean
++#. Description
++#: ../templates:1001
++msgid ""
++"adjtimex can run at system startup to set the kernel time parameters to the "
++"values in /etc/default/adjtimex. Don't accept if you just want to use "
++"adjtimex to inspect the current parameters."
++msgstr ""
++"adjtimex kan gedraaid worden bij het opstarten van het systeem om de "
++"kerneltijd parameters in te stellen zoals gedefinieerd in /etc/default/"
++"adjtimex. Accepteer deze optie niet als u adjtimex wilt gebruiken om de "
++"huidige parameters te bekijken."
++
++#. Type: boolean
++#. Description
++#: ../templates:2001
++msgid "Should adjtimexconfig be run at installation time?"
++msgstr "Wilt u dat adjtimexconfig bij het installeren wordt gedraaid?"
++
++#. Type: boolean
++#. Description
++#: ../templates:2001
++msgid ""
++"The adjtimexconfig script will use adjtimex to find values for the kernel "
++"variables tick and frequency that will make the system clock approximately "
++"agree with the hardware clock (also known as the CMOS clock). It then saves "
++"these values in the configuration file /etc/default/adjtimex so the settings "
++"will be restored on every boot, when /etc/init.d/adjtimex runs."
++msgstr ""
++"Het adjtimexconfig script zal adjtimex gebruiken om de eigenschappen voor de "
++"kernelvariablen tick en frequency te vinden. Dit zal zorgen dat de "
++"systeemklok gelijk loopt met de hardware klok (ook bekend onder de naam CMOS "
++"klok). Het slaat deze eigenschappen op in het configuratiebestand /etc/"
++"default/adjtimex, dus de instellingen worden bij elke "
++"systeemopstartprocedure hersteld als /etc/init.d/adjtimex draait."
++
++#. Type: boolean
++#. Description
++#: ../templates:2001
++msgid ""
++"The script takes 70 sec to run. Alternatively, you can run adjtimexconfig "
++"yourself at a later time, or determine the kernel variables one of several "
++"other ways (see the adjtimex man page) and install them in /etc/default/"
++"adjtimex."
++msgstr ""
++"Het script doet er 70 seconden over om te draaien. Als alternatief kunt u "
++"adjtimexconfig later handmatig draaien, of de kerneleigenschappen op een "
++"andere manier bepalen (zie de adjtimex man-pagina) en deze zelf in /etc/"
++"default/adjtimex zetten."
+--- adjtimex-1.23.orig/debian/po/da.po
++++ adjtimex-1.23/debian/po/da.po
+@@ -0,0 +1,79 @@
++# translation of adjtimex_1.16-1-da.po to Danish
++# translation of adjtimex_1.16-1_templates.po to Danish
++#
++# Translators, if you are not familiar with the PO format, gettext
++# documentation is worth reading, especially sections dedicated to
++# this format, e.g. by running:
++# info -n '(gettext)PO Files'
++# info -n '(gettext)Header Entry'
++# Some information specific to po-debconf are available at
++# /usr/share/doc/po-debconf/README-trans
++# or http://www.debian.org/intl/l10n/po-debconf/README-trans#
++# Developers do not need to manually edit POT or PO files.
++# Claus Hindsgaul <claus_h@image.dk>, 2004.
++#
++msgid ""
++msgstr ""
++"Project-Id-Version: adjtimex_1.16-1-da\n"
++"Report-Msgid-Bugs-To: jrv@debian.org\n"
++"POT-Creation-Date: 2007-08-06 21:41-0400\n"
++"PO-Revision-Date: 2004-03-24 17:57+0100\n"
++"Last-Translator: Claus Hindsgaul <claus_h@image.dk>\n"
++"Language-Team: Danish <dansk@klid.dk>\n"
++"MIME-Version: 1.0\n"
++"Content-Type: text/plain; charset=UTF-8\n"
++"Content-Transfer-Encoding: 8bit\n"
++"X-Generator: KBabel 1.3.1\n"
++
++#. Type: boolean
++#. Description
++#: ../templates:1001
++msgid "Should adjtimex be run at installation and at every startup?"
++msgstr "Skal adjtimex køres under installation og ved hver opstart?"
++
++#. Type: boolean
++#. Description
++#: ../templates:1001
++msgid ""
++"adjtimex can run at system startup to set the kernel time parameters to the "
++"values in /etc/default/adjtimex. Don't accept if you just want to use "
++"adjtimex to inspect the current parameters."
++msgstr ""
++"adjtimex kan køres under opstart af systemet for at sætte kernens "
++"tidsparametre til værdierne i /etC/default/adjtimex. Acceptér ikke dette, "
++"hvis du kun vil bruge adjtimex til at gennemse de aktuelle parametre."
++
++#. Type: boolean
++#. Description
++#: ../templates:2001
++msgid "Should adjtimexconfig be run at installation time?"
++msgstr "Skal adjtimexconfig køres under installationen?"
++
++#. Type: boolean
++#. Description
++#: ../templates:2001
++msgid ""
++"The adjtimexconfig script will use adjtimex to find values for the kernel "
++"variables tick and frequency that will make the system clock approximately "
++"agree with the hardware clock (also known as the CMOS clock). It then saves "
++"these values in the configuration file /etc/default/adjtimex so the settings "
++"will be restored on every boot, when /etc/init.d/adjtimex runs."
++msgstr ""
++"Skriftet adjtimexconfig vil bruge adjtimex til at finde de værdier til "
++"kernevariablene tick og frequency, der vil få systemuret til at passe med "
++"computerens indbyggede ur (CMOS-uret). Den gemmer derefter værdierne i "
++"opsætningsfilen /etc/default/edjtimex, så indstillingerne bliver sat under "
++"hver opstart, når skriptet /etC/init.d/adjtimex køres."
++
++#. Type: boolean
++#. Description
++#: ../templates:2001
++msgid ""
++"The script takes 70 sec to run. Alternatively, you can run adjtimexconfig "
++"yourself at a later time, or determine the kernel variables one of several "
++"other ways (see the adjtimex man page) and install them in /etc/default/"
++"adjtimex."
++msgstr ""
++"Det tager 70 sekunder at køre skriptet. Alternativt kan du selv køre "
++"adjtimexconfig senere, eller finde kernevariablene på en anden måde (se "
++"manualsiden adjtimex) og installere dem i /etc/default/adjtimex."
+--- adjtimex-1.23.orig/debian/po/ja.po
++++ adjtimex-1.23/debian/po/ja.po
+@@ -0,0 +1,78 @@
++#
++# Translators, if you are not familiar with the PO format, gettext
++# documentation is worth reading, especially sections dedicated to
++# this format, e.g. by running:
++# info -n '(gettext)PO Files'
++# info -n '(gettext)Header Entry'
++#
++# Some information specific to po-debconf are available at
++# /usr/share/doc/po-debconf/README-trans
++# or http://www.debian.org/intl/l10n/po-debconf/README-trans
++#
++# Developers do not need to manually edit POT or PO files.
++#
++#, fuzzy
++msgid ""
++msgstr ""
++"Project-Id-Version: PACKAGE VERSION\n"
++"Report-Msgid-Bugs-To: jrv@debian.org\n"
++"POT-Creation-Date: 2007-08-06 21:41-0400\n"
++"PO-Revision-Date: 2003-11-21 00:02+0900\n"
++"Last-Translator: Hideki Yamane <henrich@samba.gr.jp>\n"
++"Language-Team: Japanese <debian-japanese@lists.debian.org>\n"
++"MIME-Version: 1.0\n"
++"Content-Type: text/plain; charset=EUC-JP\n"
++"Content-Transfer-Encoding: 8bit\n"
++
++#. Type: boolean
++#. Description
++#: ../templates:1001
++msgid "Should adjtimex be run at installation and at every startup?"
++msgstr "adjtimex 򥤥󥹥ȡεưưޤ?"
++
++#. Type: boolean
++#. Description
++#: ../templates:1001
++msgid ""
++"adjtimex can run at system startup to set the kernel time parameters to the "
++"values in /etc/default/adjtimex. Don't accept if you just want to use "
++"adjtimex to inspect the current parameters."
++msgstr ""
++"adjtimex 򥷥ƥεưưƥͥλ֥ѥ᡼ /etc/"
++"default/adjtimex ͤꤹ뤳ȤǽǤ adjtimex 򸽺ߤΥѥ᡼"
++"Ĵˤ˻ȤȤư򤵤ʤǤ"
++
++#. Type: boolean
++#. Description
++#: ../templates:2001
++msgid "Should adjtimexconfig be run at installation time?"
++msgstr "adjtimexconfig 򥤥󥹥ȡưޤ?"
++
++#. Type: boolean
++#. Description
++#: ../templates:2001
++msgid ""
++"The adjtimexconfig script will use adjtimex to find values for the kernel "
++"variables tick and frequency that will make the system clock approximately "
++"agree with the hardware clock (also known as the CMOS clock). It then saves "
++"these values in the configuration file /etc/default/adjtimex so the settings "
++"will be restored on every boot, when /etc/init.d/adjtimex runs."
++msgstr ""
++"adjtimexconfig ץȤ adjtimex Ѥơƥ९åϡɥ"
++"å (CMOS åȤƤΤƤޤ) Ȥ褽Ʊ褦˥"
++"ͥѿ tick frequency Ϳͤ򸫤Ĥޤơͤե"
++" /etc/default/adjtimex ¸뤳Ȥư /etc/init.d/adjtimex "
++"ưݤ꤬ޤ"
++
++#. Type: boolean
++#. Description
++#: ../templates:2001
++msgid ""
++"The script takes 70 sec to run. Alternatively, you can run adjtimexconfig "
++"yourself at a later time, or determine the kernel variables one of several "
++"other ways (see the adjtimex man page) and install them in /etc/default/"
++"adjtimex."
++msgstr ""
++"ץȤư 70 äޤ̲ȤƤ adjtimexconfig ۤɼ¹"
++"롢ޤ¾ˡǥͥѿ (adjtimex man ڡ򻲾) /"
++"etc/default/adjtimex ؤԤʤɤǽǤ"
+--- adjtimex-1.23.orig/debian/po/pt_BR.po
++++ adjtimex-1.23/debian/po/pt_BR.po
+@@ -0,0 +1,82 @@
++#
++# Translators, if you are not familiar with the PO format, gettext
++# documentation is worth reading, especially sections dedicated to
++# this format, e.g. by running:
++# info -n '(gettext)PO Files'
++# info -n '(gettext)Header Entry'
++#
++# Some information specific to po-debconf are available at
++# /usr/share/doc/po-debconf/README-trans
++# or http://www.debian.org/intl/l10n/po-debconf/README-trans
++#
++# Developers do not need to manually edit POT or PO files.
++#
++#, fuzzy
++msgid ""
++msgstr ""
++"Project-Id-Version: adjtimex_1.16-1\n"
++"Report-Msgid-Bugs-To: jrv@debian.org\n"
++"POT-Creation-Date: 2007-08-06 21:41-0400\n"
++"PO-Revision-Date: 2004-01-17 20:55-0300\n"
++"Last-Translator: Andr Lus Lopes <andrelop@debian.org>\n"
++"Language-Team: Debian-BR Project <debian-l10n-portuguese@lists.debian.org>\n"
++"MIME-Version: 1.0\n"
++"Content-Type: text/plain; charset=ISO-8859-1\n"
++"Content-Transfer-Encoding: 8bit\n"
++
++#. Type: boolean
++#. Description
++#: ../templates:1001
++msgid "Should adjtimex be run at installation and at every startup?"
++msgstr "Executar o adjtimex durante a instalao e a cada reinicializao ?"
++
++#. Type: boolean
++#. Description
++#: ../templates:1001
++msgid ""
++"adjtimex can run at system startup to set the kernel time parameters to the "
++"values in /etc/default/adjtimex. Don't accept if you just want to use "
++"adjtimex to inspect the current parameters."
++msgstr ""
++"O adjtimex pode ser executado na inicializao do sistema para definir "
++"parmetros de tempo de kernel para os valores em /etc/default/adjtimex. No "
++"aceite caso voc somente queira usar o adjtimex para inspecionar os "
++"parmetros atuais."
++
++#. Type: boolean
++#. Description
++#: ../templates:2001
++msgid "Should adjtimexconfig be run at installation time?"
++msgstr "Executar o adjtimexconfig durante a instalao ?"
++
++#. Type: boolean
++#. Description
++#: ../templates:2001
++msgid ""
++"The adjtimexconfig script will use adjtimex to find values for the kernel "
++"variables tick and frequency that will make the system clock approximately "
++"agree with the hardware clock (also known as the CMOS clock). It then saves "
++"these values in the configuration file /etc/default/adjtimex so the settings "
++"will be restored on every boot, when /etc/init.d/adjtimex runs."
++msgstr ""
++"O script adjtimex ir utilizar o adjtimex para encontrar valores para "
++"variveis de kernel tick e frequency que faro com que o relgio do sistema "
++"concorde aproimadamente com o relgio de hardware (tambm conhecido como "
++"relgio CMOS). Ele ir ento gravar esses valores no arquivo de "
++"configurao /etc/default/adjtimex de modo que as configuraes sejam "
++"restauradas a cada renicializao, quando o /etc/init.d/adjtimex executado."
++
++#. Type: boolean
++#. Description
++#: ../templates:2001
++msgid ""
++"The script takes 70 sec to run. Alternatively, you can run adjtimexconfig "
++"yourself at a later time, or determine the kernel variables one of several "
++"other ways (see the adjtimex man page) and install them in /etc/default/"
++"adjtimex."
++msgstr ""
++"O script leva cerca de 70 segundos para ser executado. Alternativamente, "
++"voc pode executar o adjtimexconfig voc mesmo posteriormente, ou ainda "
++"determinar as variveis de kernel usando uma das diversas maneiras possveis "
++"(consulte a pgina de manul adjtimex) e instalar as mesmas em /etc/default/"
++"adjtimex."
+--- adjtimex-1.23.orig/debian/po/de.po
++++ adjtimex-1.23/debian/po/de.po
+@@ -0,0 +1,83 @@
++# translation of adjtimex_1.21.1-2_de.po to German
++#
++# Translators, if you are not familiar with the PO format, gettext
++# documentation is worth reading, especially sections dedicated to
++# this format, e.g. by running:
++# info -n '(gettext)PO Files'
++# info -n '(gettext)Header Entry'
++# Some information specific to po-debconf are available at
++# /usr/share/doc/po-debconf/README-trans
++# or http://www.debian.org/intl/l10n/po-debconf/README-trans#
++# Developers do not need to manually edit POT or PO files.
++#
++# Erik Schanze <eriks@debian.org>, 2004-2007.
++msgid ""
++msgstr ""
++"Project-Id-Version: adjtimex_1.21.1-2_de\n"
++"Report-Msgid-Bugs-To: jrv@debian.org\n"
++"POT-Creation-Date: 2007-08-06 21:41-0400\n"
++"PO-Revision-Date: 2007-08-06 20:50+0200\n"
++"Last-Translator: Erik Schanze <eriks@debian.org>\n"
++"Language-Team: German <debian-l10n-german@lists.debian.org>\n"
++"MIME-Version: 1.0\n"
++"Content-Type: text/plain; charset=UTF-8\n"
++"Content-Transfer-Encoding: 8bit\n"
++"X-Generator: KBabel 1.11.4\n"
++"Plural-Forms: nplurals=2; plural=(n != 1);\n"
++
++#. Type: boolean
++#. Description
++#: ../templates:1001
++msgid "Should adjtimex be run at installation and at every startup?"
++msgstr ""
++"Soll Adjtimex nach der Installation und bei jedem Hochfahren gestartet "
++"werden?"
++
++#. Type: boolean
++#. Description
++#: ../templates:1001
++msgid ""
++"adjtimex can run at system startup to set the kernel time parameters to the "
++"values in /etc/default/adjtimex. Don't accept if you just want to use "
++"adjtimex to inspect the current parameters."
++msgstr ""
++"Adjtimex kann beim Hochfahren des Systems ablaufen, um die Zeitparameter im "
++"Kernel auf die Werte in /etc/defaults/adjtimex zu setzen. Stimmen Sie dem "
++"nicht zu, wenn Sie mit Adjtimex nur die aktuellen Parameter ermitteln wollen."
++
++#. Type: boolean
++#. Description
++#: ../templates:2001
++msgid "Should adjtimexconfig be run at installation time?"
++msgstr "Soll »adjtimexconfig« zur Installation aufgerufen werden?"
++
++#. Type: boolean
++#. Description
++#: ../templates:2001
++msgid ""
++"The adjtimexconfig script will use adjtimex to find values for the kernel "
++"variables tick and frequency that will make the system clock approximately "
++"agree with the hardware clock (also known as the CMOS clock). It then saves "
++"these values in the configuration file /etc/default/adjtimex so the settings "
++"will be restored on every boot, when /etc/init.d/adjtimex runs."
++msgstr ""
++"Das Skript »adjtimexconfig« nutzt Adjtimex, um die Werte der Kernelvariablen "
++"»tick« und »frequency« zu finden, damit die Systemuhr ungefähr mit der "
++"Rechneruhr (auch bekannt als CMOS-Uhr) übereinstimmt. Das Skript speichert "
++"diese Werte in der Konfigurationsdatei /etc/default/adjtimex, sodass die "
++"Einstellung bei jedem Systemstart wiederhergestellt wird, wenn /etc/init.d/"
++"adjtimex startet."
++
++#. Type: boolean
++#. Description
++#: ../templates:2001
++msgid ""
++"The script takes 70 sec to run. Alternatively, you can run adjtimexconfig "
++"yourself at a later time, or determine the kernel variables one of several "
++"other ways (see the adjtimex man page) and install them in /etc/default/"
++"adjtimex."
++msgstr ""
++"Das Skript benötigt 70 Sekunden, um durchzulaufen. Andererseits können Sie "
++"»adjtimexconfig« später selbst starten oder finden die Kernelvariablen auf "
++"einem anderen Weg (siehe Handbuchseite von Adjtimex) und speichern die Werte "
++"in der Datei /etc/default/adjtimex."
+--- adjtimex-1.23.orig/debian/po/vi.po
++++ adjtimex-1.23/debian/po/vi.po
+@@ -0,0 +1,75 @@
++# Vietnamese Translation for adjtimex.
++# Copyright © 2005 Free Software Foundation, Inc.
++# Clytie Siddall <clytie@riverland.net.au>, 2005.
++#
++msgid ""
++msgstr ""
++"Project-Id-Version: adjtimex 1.20-4\n"
++"Report-Msgid-Bugs-To: jrv@debian.org\n"
++"POT-Creation-Date: 2007-08-06 21:41-0400\n"
++"PO-Revision-Date: 2005-05-04 15:44+0930\n"
++"Last-Translator: Clytie Siddall <clytie@riverland.net.au>\n"
++"Language-Team: Vietnamese <gnomevi-list@lists.sourceforge.net>\n"
++"MIME-Version: 1.0\n"
++"Content-Type: text/plain; charset=utf-8\n"
++"Content-Transfer-Encoding: 8bit\n"
++"Plural-Forms: nplurals=1; plural=0\n"
++
++#. Type: boolean
++#. Description
++#: ../templates:1001
++msgid "Should adjtimex be run at installation and at every startup?"
++msgstr ""
++"Bạn có muốn chạy trình adjtimex khi cài đặt và mọi khi khởi động không?"
++
++#. Type: boolean
++#. Description
++#: ../templates:1001
++msgid ""
++"adjtimex can run at system startup to set the kernel time parameters to the "
++"values in /etc/default/adjtimex. Don't accept if you just want to use "
++"adjtimex to inspect the current parameters."
++msgstr ""
++"Trình adjtimex (adjust time: điều chỉnh thời gian) thì có thể chạy khi khởi "
++"động hệ thống, để lập những tham số thời gian của hạt nhân thành những giá "
++"trị trong /etc/default/adjtimex. Đừng hiệu lực tùy chọn này nếu bạn chỉ muốn "
++"sử dụng trình adjtimex để kiểm tra những tham số hiện thời."
++
++#. Type: boolean
++#. Description
++#: ../templates:2001
++msgid "Should adjtimexconfig be run at installation time?"
++msgstr "Bạn có muốn chạy tập lệnh adjtimexconfig khi cài đặt không?"
++
++#. Type: boolean
++#. Description
++#: ../templates:2001
++msgid ""
++"The adjtimexconfig script will use adjtimex to find values for the kernel "
++"variables tick and frequency that will make the system clock approximately "
++"agree with the hardware clock (also known as the CMOS clock). It then saves "
++"these values in the configuration file /etc/default/adjtimex so the settings "
++"will be restored on every boot, when /etc/init.d/adjtimex runs."
++msgstr ""
++"Tập lệnh adjtimexconfig (adjust time configuration: điều chỉnh cấu hình thời "
++"gian) thì sẽ dùng trinh adjtimex để tìm giá trị cho biến hạt nhân «tick» và "
++"«frequency» để khớp đồng hồ hệ thống xấp xi với đồng hồ phần cứng (cũng được "
++"biết như là đồng hồ CMOS). Như thế thì nó lưu nhưng giá trị này trong tập "
++"tin cấu hình /etc/default/adjtimex vì vậy sẽ phục hồi cách thiết lập ấy mọi "
++"khi khởi động, khi chạy /etc/init.d/adjtimex."
++
++#. Type: boolean
++#. Description
++#: ../templates:2001
++msgid ""
++"The script takes 70 sec to run. Alternatively, you can run adjtimexconfig "
++"yourself at a later time, or determine the kernel variables one of several "
++"other ways (see the adjtimex man page) and install them in /etc/default/"
++"adjtimex."
++msgstr ""
++"Tập lệnh này chạy được 70 giây. Hoặc bạn có thể tự chạy tập lệnh "
++"adjtimexconfig vào lúc sau, hoặc quyết định những biến hạt nhân một của vài "
++"cách khác (hãy xem trang hướng dẫn: lệnh\n"
++"man adjtimex\n"
++"mà «man» là trình hiển thị trang hướng dẫn), và cài đặt chúng vào /etc/"
++"default/adjtimex."
+--- adjtimex-1.23.orig/debian/po/cs.po
++++ adjtimex-1.23/debian/po/cs.po
+@@ -0,0 +1,67 @@
++# Czech translation of adjtimex templates
++#
++msgid ""
++msgstr ""
++"Project-Id-Version: adjtimex 1.20-3\n"
++"Report-Msgid-Bugs-To: jrv@debian.org\n"
++"POT-Creation-Date: 2007-08-06 21:41-0400\n"
++"PO-Revision-Date: 2005-4-10 22:13+0200\n"
++"Last-Translator: Martin Sin <martin.sin@seznam.cz>\n"
++"Language-Team: Czech <debian-l10n-czech@lists.debian.org>\n"
++"MIME-Version: 1.0\n"
++"Content-Type: text/plain; charset=ISO-8859-2\n"
++"Content-Transfer-Encoding: 8bit\n"
++
++#. Type: boolean
++#. Description
++#: ../templates:1001
++msgid "Should adjtimex be run at installation and at every startup?"
++msgstr "M bt adjtimex sputn pi instalaci a pi kadm sputn?"
++
++#. Type: boolean
++#. Description
++#: ../templates:1001
++msgid ""
++"adjtimex can run at system startup to set the kernel time parameters to the "
++"values in /etc/default/adjtimex. Don't accept if you just want to use "
++"adjtimex to inspect the current parameters."
++msgstr ""
++"adjtimex me bet pi kadm startu systmu a nastavit parametry jdra na "
++"hodnoty z /etc/default/adjtimex. Pi nesouhlasu bude adjtimex nastaven na "
++"zjitn aktulnch parametr."
++
++#. Type: boolean
++#. Description
++#: ../templates:2001
++msgid "Should adjtimexconfig be run at installation time?"
++msgstr "M bt adjtimexconfig sputn pi instalaci?"
++
++#. Type: boolean
++#. Description
++#: ../templates:2001
++msgid ""
++"The adjtimexconfig script will use adjtimex to find values for the kernel "
++"variables tick and frequency that will make the system clock approximately "
++"agree with the hardware clock (also known as the CMOS clock). It then saves "
++"these values in the configuration file /etc/default/adjtimex so the settings "
++"will be restored on every boot, when /etc/init.d/adjtimex runs."
++msgstr ""
++"Skript adjtimexconfig pouije adjtimex k nalezen hodnot pro promnn "
++"asovae a frekvence jdra tak, e nastav systmov hodiny piblin na "
++"hodnotu hardwarovch hodin (tak znmch jako CMOS hodiny). Pak ulo tyto "
++"hodnoty do konfiguranho souboru /etc/default/adjtimex aby mohlo bt "
++"nastaven obnoveno pi kadm startu, vdy pi sputn /etc/init.d/adjtimex."
++
++#. Type: boolean
++#. Description
++#: ../templates:2001
++msgid ""
++"The script takes 70 sec to run. Alternatively, you can run adjtimexconfig "
++"yourself at a later time, or determine the kernel variables one of several "
++"other ways (see the adjtimex man page) and install them in /etc/default/"
++"adjtimex."
++msgstr ""
++"Sputn skriptu zabere 70 sekund. Nebo mete spustit adjtimexconfig "
++"samostatn pozdji, ppadn urit promnn jdra jednm z nkolika rznch "
++"zpsob (podvejte se na manulovou strnku adjtimex) a umstte je do /etc/"
++"default/adjtimex."
+--- adjtimex-1.23.orig/debian/po/pt.po
++++ adjtimex-1.23/debian/po/pt.po
+@@ -0,0 +1,71 @@
++# 2005-10-27 - Marco Ferra <mferra@sdf.lonestar.org> (initial translation)
++#
++msgid ""
++msgstr ""
++"Project-Id-Version: adjtimex 1.20-5\n"
++"Report-Msgid-Bugs-To: jrv@debian.org\n"
++"POT-Creation-Date: 2007-08-06 21:41-0400\n"
++"PO-Revision-Date: 2005-10-27 01:11+0100\n"
++"Last-Translator: Marco Ferra <mferra@sdf.lonestar.org>\n"
++"Language-Team: Portuguese <traduz@debianpt.org>\n"
++"MIME-Version: 1.0\n"
++"Content-Type: text/plain; charset=UTF-8\n"
++"Content-Transfer-Encoding: 8bit\n"
++
++#. Type: boolean
++#. Description
++#: ../templates:1001
++msgid "Should adjtimex be run at installation and at every startup?"
++msgstr ""
++"Deve o adjtimex correr enquanto o instala e depois sempre que o sistema "
++"inicia?"
++
++#. Type: boolean
++#. Description
++#: ../templates:1001
++msgid ""
++"adjtimex can run at system startup to set the kernel time parameters to the "
++"values in /etc/default/adjtimex. Don't accept if you just want to use "
++"adjtimex to inspect the current parameters."
++msgstr ""
++"O adjtimex pode correr quando o sistema inicia para ajustar os paramêtros "
++"temporais do kernel para os valores especificados em /etc/default/adjtimex. "
++"Por favor recuse se apenas deseja usar o adjtimex para inspecionar os "
++"paramêtros actuais."
++
++#. Type: boolean
++#. Description
++#: ../templates:2001
++msgid "Should adjtimexconfig be run at installation time?"
++msgstr "Deve o adjtimexconfig correr enquanto o instala?"
++
++#. Type: boolean
++#. Description
++#: ../templates:2001
++msgid ""
++"The adjtimexconfig script will use adjtimex to find values for the kernel "
++"variables tick and frequency that will make the system clock approximately "
++"agree with the hardware clock (also known as the CMOS clock). It then saves "
++"these values in the configuration file /etc/default/adjtimex so the settings "
++"will be restored on every boot, when /etc/init.d/adjtimex runs."
++msgstr ""
++"O script adjtimexconfig irá usar o comando adjtimex para encontrar os "
++"valores para variáveis do kernel que o farão aproximar e estar de acordo com "
++"o relógio por hardware (tambem conhecido pelo CMOS clock). Este então "
++"guarda esses valores no ficheiro /etc/default/adjtimex para que estes "
++"paramêtros sejam reavidos sempre que o sistema inicia, nomeadamente quando "
++"o /etc/init.d/adjtimex corre."
++
++#. Type: boolean
++#. Description
++#: ../templates:2001
++msgid ""
++"The script takes 70 sec to run. Alternatively, you can run adjtimexconfig "
++"yourself at a later time, or determine the kernel variables one of several "
++"other ways (see the adjtimex man page) and install them in /etc/default/"
++"adjtimex."
++msgstr ""
++"Este script demora 70 segundos a correr. De forma alternativa pode correr o "
++"adjtimexconfig por si próprio numa altura mais tarde ou determinar as "
++"variáveis do kernel de outras formas (leia a página do manual do adjtimex) e "
++"instale-os em /etc/default/adjtimex."
+--- adjtimex-1.23.orig/debian/po/sv.po
++++ adjtimex-1.23/debian/po/sv.po
+@@ -0,0 +1,77 @@
++# Translators, if you are not familiar with the PO format, gettext
++# documentation is worth reading, especially sections dedicated to
++# this format, e.g. by running:
++# info -n '(gettext)PO Files'
++# info -n '(gettext)Header Entry'
++# Some information specific to po-debconf are available at
++# /usr/share/doc/po-debconf/README-trans
++# or http://www.debian.org/intl/l10n/po-debconf/README-trans
++# Developers do not need to manually edit POT or PO files.
++# , fuzzy
++#
++#
++msgid ""
++msgstr ""
++"Project-Id-Version: adjtimex 1.20-5\n"
++"Report-Msgid-Bugs-To: jrv@debian.org\n"
++"POT-Creation-Date: 2007-08-06 21:41-0400\n"
++"PO-Revision-Date: 2005-10-11 16:31+0200\n"
++"Last-Translator: Daniel Nylander <po@danielnylander.se>\n"
++"Language-Team: Swedish <sv@li.org>\n"
++"MIME-Version: 1.0\n"
++"Content-Type: text/plain; charset=iso-8859-1\n"
++"Content-Transfer-Encoding: 8bit\n"
++
++#. Type: boolean
++#. Description
++#: ../templates:1001
++msgid "Should adjtimex be run at installation and at every startup?"
++msgstr "Ska adjtimex kras vid installation och vid varje uppstart?"
++
++#. Type: boolean
++#. Description
++#: ../templates:1001
++msgid ""
++"adjtimex can run at system startup to set the kernel time parameters to the "
++"values in /etc/default/adjtimex. Don't accept if you just want to use "
++"adjtimex to inspect the current parameters."
++msgstr ""
++"adjtimex kan kra vid systemets uppstart fr att stta krntidsparametrar "
++"till vrdena i /etc/default/adjtimex. Acceptera inte om du bara vill anvnda "
++"adjtimex fr att inspektera de nuvarande parametrarna."
++
++#. Type: boolean
++#. Description
++#: ../templates:2001
++msgid "Should adjtimexconfig be run at installation time?"
++msgstr "Ska adjtimexconfig kras vid installationstid?"
++
++#. Type: boolean
++#. Description
++#: ../templates:2001
++msgid ""
++"The adjtimexconfig script will use adjtimex to find values for the kernel "
++"variables tick and frequency that will make the system clock approximately "
++"agree with the hardware clock (also known as the CMOS clock). It then saves "
++"these values in the configuration file /etc/default/adjtimex so the settings "
++"will be restored on every boot, when /etc/init.d/adjtimex runs."
++msgstr ""
++"Skriptet adjtimexconfig kommer att anvnda adjtimex fr att hitta vrden fr "
++"krnvariablerna tick och frequency som gr att systemklockan kommer verens "
++"med hrdvaruklockan (ocks kallad CMOS-klockan). Den sparar sedan dessa "
++"vrden i konfigurationsfilen /etc/default/adjtimex s att instllningarna "
++"kommer att anvndas vid varje uppstart, nr /etc/init.d/adjtimex krs."
++
++#. Type: boolean
++#. Description
++#: ../templates:2001
++msgid ""
++"The script takes 70 sec to run. Alternatively, you can run adjtimexconfig "
++"yourself at a later time, or determine the kernel variables one of several "
++"other ways (see the adjtimex man page) and install them in /etc/default/"
++"adjtimex."
++msgstr ""
++"Skriptet tar 70 sekunder att kras. Alternativt kan du kra adjtimexconfig "
++"sjlv vid en senare tid eller bestmma variabler fr krnan p ett eller "
++"flera stt (se adjtimes manualsida) och installera dom i /etc/default/"
++"adjtimex)."
+--- adjtimex-1.23.orig/debian/po/ru.po
++++ adjtimex-1.23/debian/po/ru.po
+@@ -0,0 +1,80 @@
++# translation of adjtimex_1.20-5_templates_ru.po to Russian
++#
++# Translators, if you are not familiar with the PO format, gettext
++# documentation is worth reading, especially sections dedicated to
++# this format, e.g. by running:
++# info -n '(gettext)PO Files'
++# info -n '(gettext)Header Entry'
++# Some information specific to po-debconf are available at
++# /usr/share/doc/po-debconf/README-trans
++# or http://www.debian.org/intl/l10n/po-debconf/README-trans#
++# Developers do not need to manually edit POT or PO files.
++# Yuri Kozlov <kozlov.y@gmail.com>, 2005.
++#
++msgid ""
++msgstr ""
++"Project-Id-Version: template_adjtimex_1.20-5\n"
++"Report-Msgid-Bugs-To: jrv@debian.org\n"
++"POT-Creation-Date: 2007-08-06 21:41-0400\n"
++"PO-Revision-Date: 2005-11-07 19:24+0300\n"
++"Last-Translator: Yuri Kozlov <kozlov.y@gmail.com>\n"
++"Language-Team: Russian <debian-l10n-russian@lists.debian.org>\n"
++"MIME-Version: 1.0\n"
++"Content-Type: text/plain; charset=UTF-8\n"
++"Content-Transfer-Encoding: 8bit\n"
++"X-Generator: KBabel 1.9.1\n"
++
++#. Type: boolean
++#. Description
++#: ../templates:1001
++msgid "Should adjtimex be run at installation and at every startup?"
++msgstr "Должен adjtimex быть запущен сейчас и каждый раз при старте системы?"
++
++#. Type: boolean
++#. Description
++#: ../templates:1001
++msgid ""
++"adjtimex can run at system startup to set the kernel time parameters to the "
++"values in /etc/default/adjtimex. Don't accept if you just want to use "
++"adjtimex to inspect the current parameters."
++msgstr ""
++"adjtimex можно запускать при старте системы для установки значений "
++"параметров времени ядра из файла /etc/default/adjtimex. Не соглашайтесь, "
++"если просто хотите использовать adjtimex для проверки текущих параметров."
++
++#. Type: boolean
++#. Description
++#: ../templates:2001
++msgid "Should adjtimexconfig be run at installation time?"
++msgstr "Должен adjtimexconfig быть запущен сейчас?"
++
++#. Type: boolean
++#. Description
++#: ../templates:2001
++msgid ""
++"The adjtimexconfig script will use adjtimex to find values for the kernel "
++"variables tick and frequency that will make the system clock approximately "
++"agree with the hardware clock (also known as the CMOS clock). It then saves "
++"these values in the configuration file /etc/default/adjtimex so the settings "
++"will be restored on every boot, when /etc/init.d/adjtimex runs."
++msgstr ""
++"Сценарий adjtimexconfig использует adjtimex для поиска значений переменных "
++"ядра импульса сигнала и частоты, которые помогают согласовывать системные "
++"часы с аппаратными часами (так называемые часы CMOS). Затем он сохраняет эти "
++"значения в конфигурационный файл /etc/default/adjtimex, для того чтобы "
++"восстанавливать их при каждой загрузке с помощью сценария /etc/init.d/"
++"adjtimex."
++
++#. Type: boolean
++#. Description
++#: ../templates:2001
++msgid ""
++"The script takes 70 sec to run. Alternatively, you can run adjtimexconfig "
++"yourself at a later time, or determine the kernel variables one of several "
++"other ways (see the adjtimex man page) and install them in /etc/default/"
++"adjtimex."
++msgstr ""
++"Длительность работы сценария -- 70 секунд. В качестве альтернативы вы можете "
++"запустить adjtimexconfig вручную позже, или определить переменные ядра одним "
++"из нескольких других способов (смотрите страницу руководства по adjtimex) и "
++"сохранить их в файл /etc/default/adjtimex."
+--- adjtimex-1.23.orig/debian/README.Debian
++++ adjtimex-1.23/debian/README.Debian
+@@ -0,0 +1,21 @@
++adjtimex for DEBIAN
++----------------------
++
++This is the Debian Linux prepackaged version of adjtimex.
++
++This package was put together by Jim Van Zandt <jrv@debian.org>,
++who also maintains the program and therefore used the master sources.
++
++further Information:
++
++* adjtimex manpage
++* copying policy
++ /usr/share/doc/adjtimex/copyright
++ (or debian/copyright in the source package)
++* changelog for debian package
++ /usr/share/doc/adjtimex/changelog.Debian
++* adjtimex's README:
++ /usr/share/doc/adjtimex/README
++
++
++James R. Van Zandt <jrv@debian.org>, Sun, 7 Mar 1999 21:58:51 -0500
+--- adjtimex-1.23.orig/debian/templates
++++ adjtimex-1.23/debian/templates
+@@ -0,0 +1,22 @@
++Template: adjtimex/run_daemon
++Type: boolean
++Default: true
++_Description: Should adjtimex be run at installation and at every startup?
++ adjtimex can run at system startup to set the kernel time parameters to
++ the values in /etc/default/adjtimex. Don't accept if you just want to
++ use adjtimex to inspect the current parameters.
++
++Template: adjtimex/compare_rtc
++Type: boolean
++Default: true
++_Description: Should adjtimexconfig be run at installation time?
++ The adjtimexconfig script will use adjtimex to find values for the kernel
++ variables tick and frequency that will make the system clock approximately
++ agree with the hardware clock (also known as the CMOS clock). It then
++ saves these values in the configuration file /etc/default/adjtimex so the
++ settings will be restored on every boot, when /etc/init.d/adjtimex runs.
++ .
++ The script takes 70 sec to run. Alternatively, you can run adjtimexconfig
++ yourself at a later time, or determine the kernel variables one of several
++ other ways (see the adjtimex man page) and install them in
++ /etc/default/adjtimex.
+--- adjtimex-1.23.orig/debian/changelog
++++ adjtimex-1.23/debian/changelog
+@@ -0,0 +1,530 @@
++adjtimex (1.23-1) unstable; urgency=low
++
++ * New upstream release
++
++ * adjtimex.c (compare): In case of absence of /etc/adjtime, do not fail,
++ and do not force users to manually create it with 0.0
++ content. Instead, proceed assuming zero values (meaning RTC does not
++ drift). Also replace redundant code by a call to
++ get_cmos_adjustment(). README: Rewrite USAGE paragraph. Remove point
++ about creating zero adjfile. Document new behaviour without
++ adjfile. Remove reference to the long outdated clock(8). Update URL
++ for hwclock(8). (Thanks to Alain Guibert <alguibert@free.fr>,
++ closes:bug#445448)
++
++ * adjtimex.c (busy_wait): timestamp more closely the RTC clock beat
++ (thanks to Alain Guibert <alguibert at free.fr>, see Debian
++ bug#443814). (usage): --directisa switch forces adjtimex to poll the
++ update-in-process (UIP) flag of the CMOS clock (thanks to Alain
++ Guibert <alguibert at free.fr>, closes:bug#443773).
++
++ -- James R. Van Zandt <jrv@debian.org> Sat, 06 Oct 2007 21:57:04 -0400
++
++adjtimex (1.22-1) unstable; urgency=low
++
++ * New upstream release: fix these bugs in ntpdate output
++ interpretation (closes:bug#438718):
++ adjtimex has a bug in evaluating the output of ntpdate, because
++ 1. it assumes ntpdate outputs "adjust time server", but ntpdate
++ may output "step time server" also
++ 2. it doesnt stop at last line but as soon as it has found "filter
++ offset:" lines, and because of this it will not find the "offset ..."
++ information in the last line.
++
++ -- James R. Van Zandt <jrv@debian.org> Sun, 23 Sep 2007 12:51:52 -0400
++
++adjtimex (1.21.1-3) unstable; urgency=low
++
++ * update German translation of debconf templates, thanks to Erik Schanze
++ <eriks@debian.org> and Helge Kreutzmann
++ <debian@helgefjell.de>(closes:#436080)
++
++ * debian/rules don't ignore failure of "make distclean"
++
++ * debian/adjtimex.init: make LSB compliant
++
++ -- James R. Van Zandt <jrv@debian.org> Mon, 06 Aug 2007 21:39:47 -0400
++
++adjtimex (1.21.1-2) unstable; urgency=low
++
++ * Update French translation of debconf templates, thanks to Christian
++ Perrier <bubulle@debian.org> (closes:Bug#403472)
++
++ -- James R. Van Zandt <jrv@debian.org> Sun, 7 Jan 2007 18:10:32 -0500
++
++adjtimex (1.21.1-1) unstable; urgency=low
++
++ * New upstream release.
++
++ * adjtimex.c: don't declare adjtimex syscall (should already be getting
++ the declaration from sys/timex.h) Thanks to Andreas Jochens
++ <aj@andaco.de> (closes:#390989)
++
++ -- James R. Van Zandt <jrv@debian.org> Sat, 7 Oct 2006 08:04:52 -0400
++
++adjtimex (1.21-2) unstable; urgency=low
++
++ * Makefile: correct version number to 1.21 (error in importing upstream
++ sources)
++
++ * debian/control: depend on po-debconf
++
++ -- James R. Van Zandt <jrv@debian.org> Fri, 6 Oct 2006 20:41:00 -0400
++
++adjtimex (1.21-1) unstable; urgency=low
++
++ * New upstream release. use /dev/rtc if available (closes:#196692). Use
++ heuristic to correct for DST changes or lacking --utc flag
++ (closes:#308396). check return code in probe_time() so if root
++ privileges are needed (e.g. "adjtimex -r") and lacking, command will
++ fail rather than printing bogus results. (closes:#364060)
++
++ * debian/postinst: start with invoke-rc.d if available (closes:#367746)
++
++ * debian/control: update to policy 3.7.2
++
++ -- James R. Van Zandt <jrv@debian.org> Sat, 20 May 2006 08:33:05 -0400
++
++adjtimex (1.20-7) unstable; urgency=low
++
++ * debian/README.Debian: correct references to files, which are no longer
++ in /usr/doc/adjtimex (closes:#365761)
++ * debian/rules: declare debhelper compat level 5
++ * debian/control: build-depends on debhelper ver 5
++
++ -- James R. Van Zandt <jrv@debian.org> Thu, 4 May 2006 21:54:33 -0400
++
++adjtimex (1.20-6) unstable; urgency=low
++
++ * control: depend on debconf | debconf-2.0 (closes: #331733), update to
++ policy 3.6.2
++ * debian/po/de.po: fix spelling error in German translation, thanks to
++ Philipp Meier <meier@meisterbohne.de> (closes: #279254)
++ * debian/po/sv.po: Swedish translation for debconf template, courtesy
++ of Daniel Nylander <yeager@lidkoping.net> (closes: #333124)
++ * debian/po: Add Portugese translation for debconf template, courtesy of
++ Miguel Figueiredo <elmig@debianpt.org> (closes: #336333)
++ * debian/po: Add Russian translation for debconf template, courtesy of
++ Yuri Kozlov <kozlov.y@gmail.com> (closes: #337967)
++ * debian/copyright: update FSF address.
++
++ -- James R. Van Zandt <jrv@debian.org> Fri, 25 Nov 2005 21:04:08 -0500
++
++adjtimex (1.20-5) unstable; urgency=low
++
++ * debian/po/vi.po: Vietnamese translation for debconf template, courtesy
++ of Clytie Siddall <clytie@riverland.net.au> (closes:Bug#307600)
++
++ -- James R. Van Zandt <jrv@debian.org> Sat, 7 May 2005 11:58:47 -0400
++
++adjtimex (1.20-4) unstable; urgency=low
++
++ * debian/po/cs.po: Czech translation for debconf template, courtesy of
++ Martin Šín <martin.sin@seznam.cz> (closes:Bug#304377)
++
++ -- James R. Van Zandt <jrv@debian.org> Mon, 25 Apr 2005 20:14:42 -0400
++
++adjtimex (1.20-3) unstable; urgency=low
++
++ * debian/adjtimex.init: adjust printout to conform to Debian standard,
++ output error to stderr (Thanks to Thomas Hood, closes:bug#294824)
++
++ -- James R. Van Zandt <jrv@debian.org> Sun, 13 Mar 2005 17:20:28 -0500
++
++adjtimex (1.20-2) unstable; urgency=low
++
++ * debian/po/de.po: replace corrupted file (closes: #250250)
++
++ -- James R. Van Zandt <jrv@debian.org> Mon, 20 Sep 2004 20:08:47 -0400
++
++adjtimex (1.20-1) unstable; urgency=low
++
++ * New upstream release
++
++ * adjtimex.c (compare): in "compare" or "adjust", return immediately
++ after printing last result, instead of sleeping an extra $interval
++ seconds. (Thanks to Alain Guibert <derogaton at oreka.com>,
++ closes:Bug#243652)
++
++ * postinst: remove /etc/rcS.d/S20adjtimex link if configured not to run
++ at startup (thanks to Mario 'BitKoenig' Holbe, closes:Bug#267229)
++
++ -- James R. Van Zandt <jrv@debian.org> Sun, 19 Sep 2004 12:41:37 -0400
++
++adjtimex (1.19-1) unstable; urgency=high
++
++ * copyright: report upstream source address (closes:Bug#269691)
++
++ * control: don't depend on either mawk or awk, since either works and
++ awk is required (closes:Bug#267228)
++
++ * New upstream release
++
++ * adjtimex.c (compare): Account for the current frequency value
++ when calculating the recommended frequency value. Simplify
++ calculation of recommended tick. (compare): print estimated system
++ error in ppm instead of obscure "second diff".
++
++ * adjtimex.8: use 2^16 instead of the more obscure 1<<16.
++
++ * adjtimex.c: revert to poll-wait instead of using /dev/rtc, because the
++ latter only provides time with one second precision and so gives
++ wildly inaccurate adjustments. (closes:Bug#269498,Bug#265839)
++
++ -- James R. Van Zandt <jrv@debian.org> Sat, 11 Sep 2004 16:01:52 -0400
++
++adjtimex (1.18-1.1) unstable; urgency=medium
++
++ * Non-maintainer upload prepared by Joshua Kwan and Ken Bloom.
++ * Applied patch from Jurij Smakov <jurij@wooyd.org> to #263401:
++ - Fixes the regular expression used to extract the baseline value
++ from the adjtimex output. Closes: #263401
++ - Replaces non-POSIX compliant calls to ('tail -1') by the
++ POSIX-compliant ones ('tail -n 1')
++ - Cosmetic changes to the adjtimexconfig output, making it
++ consistent with the general Debian style.
++ * Add German debconf template translations (closes: #250250)
++
++ -- Ken Bloom <kabloom@ucdavis.edu> Thu, 12 Aug 2004 23:34:33 -0700
++
++adjtimex (1.18-1) unstable; urgency=low
++
++ * New upstream release
++
++ * call reset_time_status() only when explicitly told to (thanks to Alain
++ Guibert <derogaton at oreka.com>, closes:bug#243031)
++
++ * Add debconf translations for Japanese (closes:bug#223462), Danish
++ (closes:bug#239865), and Brazilian Portuguese (closes:bug#228281).
++
++ -- James R. Van Zandt <jrv@debian.org> Sun, 11 Apr 2004 18:32:33 -0400
++
++adjtimex (1.17-1) unstable; urgency=low
++
++ * New upstream release
++
++ * control: compliant with Debian policy version 3.6.1
++
++ * es.po: decode "quoted-printable" encoding.
++
++ * adjtimex.c: update email
++ (main): If adjtimex() returns an error, print HZ and legal ranges
++ for tick and freq. (thanks to Sami Farin <safari at iki.fi>)
++ (review): calculate reasonable tick and frequency when HZ != 100.
++ (cmos_init): use /dev/rtc when available (thanks to Richard
++ Henderson <rth at twiddle.net>).
++
++ * adjtimex.c: --status switch sets clock status (courtesy of Alain
++ Guibert <derogaton at oreka.com>) (closes:bug#242732)
++
++ * adjtimexconfig: set reasonable tick and frequency when HZ !=
++ 100. (closes:Bug#241726)
++
++ * adjtimex.c (longopt): fix spelling to match documentation: --esterror
++ and --maxerror (thanks to Alain Guibert) (fixes:Bug#241863)
++
++ -- James R. Van Zandt <jrv@debian.org> Sat, 3 Apr 2004 21:13:09 -0500
++
++adjtimex (1.16-3) unstable; urgency=low
++
++ * Dutch translation of gettext debconf templates (courtesy of Michiel Sikkes, closes:bug#215162)
++
++ -- James R. Van Zandt <jrv@debian.org> Sun, 12 Oct 2003 17:33:55 -0400
++
++adjtimex (1.16-2) unstable; urgency=low
++
++ * Polish translation of gettext debconf templates (courtesy of Bartosz
++ Zapalowski, closes:bug#208955)
++
++ -- James R. Van Zandt <jrv@debian.org> Sun, 7 Sep 2003 16:26:30 -0400
++
++adjtimex (1.16-1) unstable; urgency=low
++
++ * New upstream release (closes:Bug#204382)(closes:Bug#204377)
++
++ -- James R. Van Zandt <jrv@vanzandt.mv.com> Sun, 24 Aug 2003 20:52:32 -0400
++
++adjtimex (1.15.1-2) unstable; urgency=low
++
++ * gettext-based debconf templates (closes:bug#205788)
++ * French translation of gettext debconf templates (closes:Bug#206430)
++ * Spanish translation of gettext debconf templates (closes:Bug#197485)
++
++ -- James R. Van Zandt <jrv@debian.org> Sun, 24 Aug 2003 18:01:56 -0400
++
++adjtimex (1.15.1-1) unstable; urgency=low
++
++ * New upstream release. Add explicit newlines in multi-line help text
++ (closes:bug#194858)
++
++ -- James R. Van Zandt <jrv@vanzandt.mv.com> Sat, 31 May 2003 20:53:14 -0400
++
++adjtimex (1.15-1) unstable; urgency=low
++
++ * New upstream release. Now compiles on ia64 (closes:bug#141655).
++
++ -- James R. Van Zandt <jrv@vanzandt.mv.com> Wed, 30 Apr 2003 19:38:11 -0400
++
++adjtimex (1.14-1) unstable; urgency=low
++
++ * New Upstream Release. Expanded documentation (closes:bug#142967)
++ * convert to debhelper
++ * debian/control: depend on debconf
++ * debian/postinst: configure adjtimex to run on startup, and run
++ adjtimexconfig on installation, only if asked by sysadmin (via
++ debconf) (closes:bug#158047)
++ * debian/postrm: purge debconf db entry
++ * debian/adjtimexconfig: config file is now /etc/default/adjtimex
++
++ -- James R. Van Zandt <jrv@debian.org> Sun, 27 Apr 2003 21:28:40 -0400
++
++adjtimex (1.13-1) unstable; urgency=low
++
++ * New upstream release (closes:Bug#127483)
++
++ -- James R. Van Zandt <jrv@debian.org> Sun, 6 Jan 2002 21:06:23 -0500
++
++adjtimex (1.12-3) unstable; urgency=low
++
++ * New maintainer email (fix remaining references)
++
++ -- James R. Van Zandt <jrv@debian.org> Sun, 9 Dec 2001 15:25:06 -0500
++
++adjtimex (1.12-2) unstable; urgency=low
++
++ * New maintainer email
++
++ -- James R. Van Zandt <jrv@debian.org> Sun, 9 Dec 2001 13:24:59 -0500
++
++adjtimex (1.12-1) unstable; urgency=low
++
++ * New upstream release
++ * debian/control: move Build-Depends entry to source section
++ (closes:bug#91928). Policy version 3.5.2
++ * debian/rules: by default, compile without -g option. Honor
++ DEB_BUILD_OPTIONS.
++
++ -- James R. Van Zandt <jrv@vanzandt.mv.com> Wed, 22 Nov 2000 01:37:58 -0500
++
++adjtimex (1.11-3) unstable; urgency=low
++
++ * adjtimexconfig: install new values in /etc/adjtimex.conf rather than
++ the startup script /etc/init.d/adjtimex (thanks to Zsolt Szabo
++ <szazs@mm.bme.hu>).
++
++ -- James R. Van Zandt <jrv@vanzandt.mv.com> Sat, 30 Sep 2000 09:34:58 -0400
++
++adjtimex (1.11-2) unstable; urgency=low
++
++ * build-depends on debmake
++
++ -- James R. Van Zandt <jrv@vanzandt.mv.com> Sun, 3 Sep 2000 13:50:02 -0400
++
++adjtimex (1.11-1) unstable; urgency=low
++
++ * /etc/init.d/adjtimex: restart|force-reload also run adjtimex
++ (closes:bug#69514), add comment explaining precedence of
++ /etc/adjtimex.conf
++
++ * New upstream release
++
++ -- James R. Van Zandt <jrv@vanzandt.mv.com> Mon, 28 Aug 2000 21:19:48 -0400
++
++adjtimex (1.10-1) frozen unstable; urgency=high
++
++ * New upstream release - security fix: use popen() to recover output from
++ ntpdate, instead of an unsafe temporary file (thanks to Colin Phipps
++ <crp22@cam.ac.uk>) (closes:bug#56752)
++
++ -- James R. Van Zandt <jrv@vanzandt.mv.com> Tue, 1 Feb 2000 21:29:03 -0500
++
++adjtimex (1.9-2) unstable; urgency=low
++
++ * Suggest ntpdate (closes:bug#56751)
++
++ -- James R. Van Zandt <jrv@vanzandt.mv.com> Mon, 31 Jan 2000 19:26:16 -0500
++
++adjtimex (1.9-1) unstable; urgency=low
++
++ * New upstream release
++ * Removed pointer to /usr/doc/copyright/GPL
++
++ -- James R. Van Zandt <jrv@vanzandt.mv.com> Mon, 3 Jan 2000 21:34:59 -0500
++
++adjtimex (1.8.1-1) unstable; urgency=low
++
++ * New upstream release (closes:bug#52637)
++
++ -- James R. Van Zandt <jrv@vanzandt.mv.com> Thu, 16 Dec 1999 20:13:43 -0500
++
++adjtimex (1.8-4) unstable; urgency=low
++
++ * Change references from /usr/sbin/adjtimex to /sbin/adjtimex in
++ adjtimexconfig
++
++ -- James R. Van Zandt <jrv@vanzandt.mv.com> Tue, 2 Nov 1999 20:21:48 -0500
++
++adjtimex (1.8-3) unstable; urgency=low
++
++ * *Really* install binary into /sbin, so it is available
++ even if /usr is not mounted (closes:Bug#44399)
++
++ -- James R. Van Zandt <jrv@vanzandt.mv.com> Sat, 30 Oct 1999 17:57:57 -0400
++
++adjtimex (1.8-2) unstable; urgency=low
++
++ * Install compatibility symlink /usr/doc/adjtimex.
++
++ -- James R. Van Zandt <jrv@vanzandt.mv.com> Sun, 24 Oct 1999 10:54:01 -0400
++
++adjtimex (1.8-1) unstable; urgency=low
++
++ * New upstream release: Install binary into /sbin, so it is available
++ even if /usr is not mounted (closes:Bug#44399)
++
++ -- James R. Van Zandt <jrv@vanzandt.mv.com> Mon, 6 Sep 1999 13:08:15 -0400
++
++adjtimex (1.7-2) unstable; urgency=low
++
++ * Link against glibc2.1
++ * Upgrade to FHS
++ * Include full license statement in copyright file
++ * Revise GPL reference in copyright file
++
++ -- James R. Van Zandt <jrv@vanzandt.mv.com> Sat, 4 Sep 1999 12:04:34 -0400
++
++adjtimex (1.7-1) unstable; urgency=low
++
++ * install configuration file in /etc/init.d rather than /etc/rc.boot
++ closes: #30120, #32436.
++ * New upstream release (incorporates Paul Slootman's alpha patch)
++
++ -- James R. Van Zandt <jrv@vanzandt.mv.com> Sat, 28 Nov 1998 20:33:38 -0500
++
++adjtimex (1.6-2) unstable; urgency=low
++
++ * corrected reference in man page: clock -> hwclock (Bug#27854)
++
++ -- James R. Van Zandt <jrv@vanzandt.mv.com> Sat, 24 Oct 1998 14:40:45 -0400
++
++adjtimex (1.6-1.1) unstable; urgency=low
++
++ * non-maintainer (binary-only) upload for Alpha
++ * changed architecture back to 'any'. Why should it be i386 only?
++ * don't use syscall1() to declare adjtimex() for Alpha
++
++ -- Paul Slootman <paul@debian.org> Tue, 8 Sep 1998 20:42:52 +0200
++
++adjtimex (1.6-1) unstable; urgency=low
++
++ * New upstream release: Default log file is "/var/log/clocks.log".
++ Create log file if it does not exist. (Bug#25834)
++
++ -- James R. Van Zandt <jrv@vanzandt.mv.com> Sat, 22 Aug 1998 20:33:22 -0400
++
++adjtimex (1.5-3) unstable; urgency=low
++
++ * architecture is i386 only
++
++ -- James R. Van Zandt <jrv@vanzandt.mv.com> Mon, 29 Jun 1998 19:35:22 -0400
++
++adjtimex (1.5-2) unstable; urgency=low
++
++ * eliminate question in postinst, by eliminating postinst entirely
++ (Bug#22288)
++
++ -- James R. Van Zandt <jrv@vanzandt.mv.com> Sun, 7 Jun 1998 20:51:42 -0400
++
++adjtimex (1.5-1) frozen unstable; urgency=low
++
++ * New upstream release. No functional changes, but adjtimex is now
++ covered by the GNU GPL. (Bug#21358)
++
++ -- James R. Van Zandt <jrv@vanzandt.mv.com> Mon, 20 Apr 1998 21:38:53 -0400
++
++adjtimex (1.4-2) unstable; urgency=low
++
++ * Ensure that changelog is compressed *before* calculating md5sum
++ (Bug#19266)
++
++ -- James R. Van Zandt <jrv@vanzandt.mv.com> Sat, 14 Mar 1998 20:47:52 -0500
++
++adjtimex (1.4-1) unstable; urgency=low
++
++ * New upstream release. Log times for long-term estimation of drifts.
++
++ -- James R. Van Zandt <jrv@vanzandt.mv.com> Thu, 11 Dec 1997 21:48:01 -0500
++
++adjtimex (1.3-3) stable; urgency=medium
++
++ * Moved temporary files from /tmp to /etc, to eliminate security
++ hole (bug #11610).
++
++ -- Jim Van Zandt <jrv@vanzandt.mv.com> Sun, 3 Aug 1997 11:34:48 -0400
++
++adjtimex (1.3-2) stable; urgency=medium
++
++ * Removed conflict with xntp, since ntpdate from the xntp package
++ is still compatible with adjtimex.
++
++ -- Jim Van Zandt <jrv@vanzandt.mv.com> Wed, 12 Mar 1997 21:01:05 -0500
++
++adjtimex (1.3-1) unstable; urgency=HIGH
++
++ * New upstream version: Previous version allows 2.0 kernel to reset
++ the CMOS clock periodically. Now using different method of
++ preventing this.
++ * New --compare switch to compare system and CMOS clocks (replacing
++ the separate program clockdiff) and suggest better values of time
++ parameters. New --adjust switch to actually install the suggested
++ values. GNU format long switches, including --help and --version.
++ * Revised conftimex to use --adjust switch instead of clockdiff.
++ * Renamed conftimex to adjtimexconfig per Debian recommendation.
++ * Added conftimex man page.
++ * Revised messages in postinst to better explain what is going on.
++ * Conflicts with xntp
++ * New maintainer
++
++ -- Jim Van Zandt <jrv@vanzandt.mv.com> Sat, 1 Mar 1997 18:03:35 -0500
++
++adjtimex (1.2-5) unstable; urgency=LOW
++
++ * New packaging format
++ * Corrected comment in /etc/rc.boot/adjtimex
++ * Corrected the installation of doc files
++
++ -- Michael Meskes <meskes@debian.org> Wed, 18 Sep 1996 09:22:51 +0200
++
++Fri May 17 12:48:07 MET DST 1996 Michael Meskes (meskes@debian.org)
++
++ adjtimex (1.2-1):
++
++ * Added Debian Linux package maintenance system files.
++
++Fri May 17 20:39:30 MET DST 1996 Michael Meskes (meskes@debian.org)
++
++ adjtimex (1.2-2):
++
++ * Corrected mode for /etc/rc.boot/adjtimex
++
++ * Added conftimex script
++
++ * Automatically configure system
++
++Sun Jun 30 13:17:53 MET DST 1996 Michael Meskes (meskes@debian.org)
++
++ adjtimex (1.2-3):
++
++ * Corrected rules file for new naming scheme
++
++ * Gzip manpage
++
++ * Strip binaries
++
++Tue Jul 2 10:01:35 MET DST 1996 Michael Meskes (meskes@debian.org)
++
++ adjtimex (1.2-4):
++
++ * Really say what we're doing in postinst (Bug#3474)
++
++
+--- adjtimex-1.23.orig/debian/dirs
++++ adjtimex-1.23/debian/dirs
+@@ -0,0 +1,4 @@
++usr/bin
++usr/sbin
++sbin
++usr/share/man/man8
+--- adjtimex-1.23.orig/debian/postrm
++++ adjtimex-1.23/debian/postrm
+@@ -0,0 +1,25 @@
++#! /bin/sh -e
++
++case "$1" in
++ purge)
++ rm -f /etc/adjtimex.conf /etc/default/adjtimex
++ update-rc.d adjtimex remove >/dev/null
++ if [ -e /usr/share/debconf/confmodule ]; then
++ # Source debconf library.
++ . /usr/share/debconf/confmodule
++ # Remove my changes to the db.
++echo "removing debconf db entries"
++ db_purge
++echo "removed debconf db entries"
++ fi
++ ;;
++ remove|upgrade|failed-upgrade|abort-install|abort-upgrade|disappear)
++ exit 0
++ ;;
++ *)
++ echo "postrm called with unknown argument \`$1'" >&2
++ exit 0
++ ;;
++esac
++
++#DEBHELPER#
+--- adjtimex-1.23.orig/debian/copyright
++++ adjtimex-1.23/debian/copyright
+@@ -0,0 +1,28 @@
++This package was debianized by James R. Van Zandt jrv@debian.org on
++Thu, 11 Dec 1997 21:48:01 -0500.
++
++This package was put together by Jim Van Zandt <jrv@debian.org>,
++who also maintains the program and therefore used the master sources.
++
++Copyright:
++
++adjtimex is Copyright (C) 1997 Steven S. Dick and James R. Van Zandt
++
++ 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; version 2 dated June,
++ 1991, or 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., 51 Franklin St, Fifth Floor, Boston, MA
++ 02110-1301, USA.
++
++On Debian GNU/Linux systems, the complete text of the GNU Public
++License can be found in `/usr/share/common-licenses/'
++
+--- adjtimex-1.23.orig/debian/rules
++++ adjtimex-1.23/debian/rules
+@@ -0,0 +1,113 @@
++#!/usr/bin/make -f
++# Sample debian/rules that uses debhelper.
++# GNU copyright 1997 to 1999 by Joey Hess.
++
++# Uncomment this to turn on verbose mode.
++#export DH_VERBOSE=1
++
++# These are used for cross-compiling and for saving the configure script
++# from having to guess our platform (since we know it already)
++DEB_HOST_GNU_TYPE ?= $(shell dpkg-architecture -qDEB_HOST_GNU_TYPE)
++DEB_BUILD_GNU_TYPE ?= $(shell dpkg-architecture -qDEB_BUILD_GNU_TYPE)
++
++
++package=adjtimex
++
++CFLAGS = -Wall -g
++INSTALL = install
++INSTALL_FILE = $(INSTALL) -p -o root -g root -m 644
++INSTALL_PROGRAM = $(INSTALL) -p -o root -g root -m 755
++INSTALL_SCRIPT = $(INSTALL) -p -o root -g root -m 755
++INSTALL_DIR = $(INSTALL) -p -d -o root -g root -m 755
++
++ifneq (,$(findstring noopt,$(DEB_BUILD_OPTIONS)))
++CFLAGS += -O0
++else
++CFLAGS += -O2
++endif
++ifeq (,$(findstring nostrip,$(DEB_BUILD_OPTIONS)))
++INSTALL_PROGRAM += -s
++endif
++
++
++config.status: configure
++ dh_testdir
++ # configure the package.
++ ./configure --host=$(DEB_HOST_GNU_TYPE) --build=$(DEB_BUILD_GNU_TYPE) --prefix=/usr --mandir=\$${prefix}/share/man --infodir=\$${prefix}/share/info
++
++
++build: build-stamp
++
++build-stamp: config.status
++ dh_testdir
++
++ # compile the package.
++ $(MAKE) CFLAGS="$(CFLAGS)"
++ #/usr/bin/docbook-to-man debian/adjtimex.sgml > adjtimex.1
++
++ touch build-stamp
++
++clean:
++ dh_testdir
++ dh_testroot
++ rm -f build-stamp
++
++ # clean up after the build process.
++ debconf-updatepo
++ [ ! -f Makefile ] || $(MAKE) veryclean
++ rm -rf adjtimex *.o config.*
++ -test -r /usr/share/misc/config.sub && \
++ cp -f /usr/share/misc/config.sub config.sub
++ -test -r /usr/share/misc/config.guess && \
++ cp -f /usr/share/misc/config.guess config.guess
++
++
++ dh_clean
++
++install: build
++ dh_testdir
++ dh_testroot
++ dh_clean -k
++ dh_installdirs
++
++ # install the package into debian/$(package).
++ $(INSTALL_PROGRAM) adjtimex $(CURDIR)/debian/$(package)/sbin
++ $(INSTALL_SCRIPT) debian/adjtimexconfig \
++ $(CURDIR)/debian/$(package)/usr/sbin/adjtimexconfig
++
++# Build architecture-independent files here.
++binary-indep: build install
++# We have nothing to do
++
++# Build architecture-dependent files here.
++binary-arch: build install
++ dh_testdir
++ dh_testroot
++ dh_installdebconf
++ dh_installdocs
++ dh_installexamples
++ dh_installmenu
++# dh_installlogrotate
++# dh_installemacsen
++# dh_installpam
++# dh_installmime
++ dh_installinit -n
++ dh_installcron
++ dh_installman adjtimex.8 debian/adjtimexconfig.8
++ dh_installinfo
++# dh_undocumented
++ dh_installchangelogs ChangeLog
++ dh_link
++ dh_strip
++ dh_compress
++ dh_fixperms
++# dh_makeshlibs
++ dh_installdeb
++# dh_perl
++ dh_shlibdeps
++ dh_gencontrol
++ dh_md5sums
++ dh_builddeb
++
++binary: binary-indep binary-arch
++.PHONY: build clean binary-indep binary-arch binary install
+--- adjtimex-1.23.orig/debian/docs
++++ adjtimex-1.23/debian/docs
+@@ -0,0 +1,2 @@
++README
++README.ru
+--- adjtimex-1.23.orig/debian/adjtimexconfig
++++ adjtimex-1.23/debian/adjtimexconfig
+@@ -0,0 +1,67 @@
++#!/bin/sh
++
++conffile=/etc/default/adjtimex
++startfile=/etc/init.d/adjtimex
++
++echo -n "Comparing clocks (this will take 70 sec)..."
++
++# Get the parameters
++
++/sbin/adjtimex --print --tick 0 >/etc/adj.adjust 2>/dev/null
++baseline=`awk '/<= tick/{print ($1+$NF)/2}' /etc/adj.adjust`
++hz=`awk '/USER_HZ/{print $3}' /etc/adj.adjust`
++/sbin/adjtimex --tick $baseline --frequency 0
++/sbin/adjtimex --adjust >/etc/adj.adjust
++echo "done."
++ticks=`tail -n 1 /etc/adj.adjust|awk '{print $6}'`
++freq=`tail -n 1 /etc/adj.adjust|awk '{print $7}'`
++# cat /etc/adj.adjust
++# echo hz=$hz baseline=$baseline ticks=$ticks freq=$freq
++rm /etc/adj.adjust
++adjt=`awk "BEGIN{print (($ticks-$baseline)*$hz + $freq/65536.)*.0864}"`
++echo -n "Adjusting system time by ${adjt} sec/day to agree with CMOS clock..."
++
++# Recreate /etc/adjtimex.conf if necessary
++
++if [ -f $conffile ]; then
++# echo "using existing $conffile";
++ true;
++else
++cat >$conffile <<EOF
++# $conffile - configuration file for adjtimex(8)
++#
++# you may adjust these values manually or by calling /usr/sbin/adjtimexconfig
++#
++# This file is sourced by $startfile
++#
++TICK=$TICK
++FREQ=$FREQ
++
++EOF
++fi
++
++# Reset values in $conffile
++
++sed -e "s/^TICK=.*/TICK=$ticks/" \
++ -e "s/^FREQ=.*/FREQ=$freq/" \
++ $conffile >$conffile.TMP && \
++ mv $conffile.TMP $conffile
++
++# grep "TICK=" /etc/init.d/adjtimex | cut -d'#' -f1 > /etc/adj.tick
++# grep "FREQ=" /etc/init.d/adjtimex | cut -d'#' -f1 > /etc/adj.freq
++#
++# TICKLINE="`echo -n "TICK="$ticks" # old: "; cat /etc/adj.tick`"
++# FREQLINE="`echo -n "FREQ="$freq" # old: "; cat /etc/adj.freq`"
++#
++# cp /etc/init.d/adjtimex /etc/init.d/adjtimex.TMP
++# sed -e "s/^TICK=.*/$TICKLINE/" -e "s/^FREQ=.*/$FREQLINE/" \
++# < /etc/init.d/adjtimex.TMP > /etc/init.d/adjtimex
++#
++# if [ -s /etc/init.d/adjtimex ]
++# then
++# rm -f /etc/init.d/adjtimex.TMP
++# fi
++# rm -f /etc/adj.tick /etc/adj.freq /etc/adj.adjust
++rm -f /etc/adj.adjust
++echo "done."
++
+--- adjtimex-1.23.orig/debian/adjtimexconfig.8
++++ adjtimex-1.23/debian/adjtimexconfig.8
+@@ -0,0 +1,41 @@
++.\"{{{ Title Emacs major mode should be: -*- nroff -*-
++.TH ADJTIMEXCONFIG 8 "April 27, 2003"
++.\"}}}
++.\"{{{ Name
++.SH NAME
++adjtimexconfig \- find kernel clock variables and save for reboots
++.\"}}}
++.\"{{{ Synopsis
++.SH SYNOPSIS
++.ad l
++.\" commands only
++.B /sbin/adjtimexconfig
++.\"}}}
++.\"{{{ Config
++.SH DESCRIPTION
++This script uses \fBadjtimex\fP(8) to find values for the kernel
++variables \fBtick\fP and \fBfrequency\fP that will make the system
++clock approximately agree with the CMOS clock. It then saves these
++values in the configuration file \fI/etc/default/adjtimex\fP so the
++settings will be restored on every boot, when
++\fI/etc/init.d/adjtimex\fP runs.
++.P
++\fPadjtimexconfig\fP uses the drift rate recorded in
++\fI/etc/adjtime\fP to adjust the times it reads from the CMOS clock.
++If you find the CMOS clock has a systematic drift, read the
++\fBclock\fP(8) or \fBhwclock\fP(8) manual page, modify
++\fI/etc/adjtime\fP as required, and run \fBadjtimexconfig\fP again.
++.SH AUTHOR
++Michael Meskes <meskes@debian.org>.
++.\"}}}
++.\"{{{
++.SH FILES
++.nf
++\fI/etc/default/adjtimex\fP
++\fI/etc/init.d/adjtimex\fP
++.fi
++.\"}}}
++.\"{{{ See also
++.SH "SEE ALSO"
++.BR adjtimex "(8), "clock "(8), "hwclock "(8), "ntpd (8)
++.\"}}}
+--- adjtimex-1.23.orig/debian/config
++++ adjtimex-1.23/debian/config
+@@ -0,0 +1,8 @@
++#! /bin/sh -e
++
++# Source debconf library.
++. /usr/share/debconf/confmodule
++
++db_input medium adjtimex/run_daemon || true
++db_input medium adjtimex/compare_rtc || true
++db_go
+--- adjtimex-1.23.orig/debian/postinst
++++ adjtimex-1.23/debian/postinst
+@@ -0,0 +1,119 @@
++#! /bin/sh
++
++set -e
++
++# Source debconf library.
++. /usr/share/debconf/confmodule
++
++# old scripts
++oldfile=/etc/adjtimex.conf
++olderfile=/etc/rc.boot/adjtimex
++# new starting script
++startfile=/etc/init.d/adjtimex
++# new configuration file
++conffile=/etc/default/adjtimex
++
++create_adjtimex_conf()
++{
++
++ TICK=10000
++ FREQ=0
++
++ if [ -f $oldfile ]; then
++ TICK=`awk '
++ BEGIN{tick=10000;}
++ /[ \t]*TICK[ \t]*=[ \t]*"?[0-9]+"?/ {
++ sub(/[ \t]*TICK[ \t]*=[ \t]*"?/,"");
++ tick=$0+0;
++ }
++ END {print tick;}
++ ' $oldfile`
++
++ FREQ=`awk '
++ BEGIN{freq=0;}
++ /[ \t]*FREQ[ \t]*=[ \t]*"?[0-9]+"?/ {
++ sub(/[ \t]*FREQ[ \t]*=[ \t]*"?/,"");
++ freq=$0+0;
++ }
++ END {print freq;}
++ ' $oldfile`
++
++# echo "parameters from $oldfile: TICK=$TICK FREQ=$FREQ";
++ else
++ if [ -f $olderfile ]; then
++ TICK=`awk '
++ BEGIN{tick=10000;}
++ /[ \t]*TICK[ \t]*=[ \t]*"?[0-9]+"?/ {
++ sub(/[ \t]*TICK[ \t]*=[ \t]*"?/,"");
++ tick=$0+0;
++ }
++ END {print tick;}
++ ' $olderfile`
++
++ FREQ=`awk '
++ BEGIN{freq=0;}
++ /[ \t]*FREQ[ \t]*=[ \t]*"?[0-9]+"?/ {
++ sub(/[ \t]*FREQ[ \t]*=[ \t]*"?/,"");
++ freq=$0+0;
++ }
++ END {print freq;}
++ ' $olderfile`
++
++# echo "parameters from $olderfile: TICK=$TICK FREQ=$FREQ";
++ fi
++ fi
++
++ if [ -f $conffile ]; then
++# echo "using existing $conffile";
++ true;
++ else
++ if [ -d /etc/default ]; then true; else mkdir /etc/default; fi
++ cat >$conffile <<EOF
++# $conffile - configuration file for adjtimex(8)
++#
++# you may adjust these values manually or by calling /usr/sbin/adjtimexconfig
++#
++# This file is sourced by $startfile
++#
++TICK=$TICK
++FREQ=$FREQ
++
++EOF
++ fi
++
++ rm -f $oldfile $olderfile
++}
++
++
++case "$1" in
++ configure)
++
++ create_adjtimex_conf
++
++ db_get adjtimex/run_daemon
++ if [ "$RET" = "true" ]; then
++ update-rc.d adjtimex start 20 S . >/dev/null
++
++ if which invoke-rc.d >/dev/null 2>&1; then
++ invoke-rc.d adjtimex start
++ else
++ /etc/init.d/adjtimex start
++ fi
++ fi
++
++ db_get adjtimex/compare_rtc
++ if [ "$RET" = "true" ]; then
++ /usr/sbin/adjtimexconfig
++ fi
++
++ ;;
++ abort-upgrade|abort-remove|abort-deconfigure)
++ exit 0
++ ;;
++ *)
++ echo "postinst called with unknown argument \`$1'" >&2
++ exit 0
++ ;;
++esac
++
++#DEBHELPER#
+--- adjtimex-1.23.orig/debian/adjtimex.init
++++ adjtimex-1.23/debian/adjtimex.init
+@@ -0,0 +1,45 @@
++#!/bin/sh
++#
++# Run ADJTIMEX at startup.
++
++### BEGIN INIT INFO
++# Provides: adjtimex
++# Required-Start:
++# Required-Stop:
++# Should-Start:
++# Should-Stop:
++# Default-Start: 2 3 4 5
++# Default-Stop: 0 1 6
++# Short-Description: set the kernel time variables
++# Description: set the kernel time variables
++### END INIT INFO
++
++test -x /sbin/adjtimex || exit 0
++
++# default values
++TICK=10000
++FREQ=0
++
++# values in $cfg take precedence over the values here
++cfg=/etc/default/adjtimex
++
++if [ -f $cfg ]; then
++ . $cfg
++fi
++
++case "$1" in
++ start|restart|force-reload)
++ echo -n "Regulating system clock..."
++ /sbin/adjtimex -tick "$TICK" -frequency "$FREQ"
++ echo "done."
++ ;;
++ stop|status)
++ ;;
++ *)
++ echo "/etc/init.d/adjtimex: unknown command $1" >&2
++ echo "Usage: /etc/init.d/adjtimex {start|stop|restart|force-reload}" >&2
++ exit 3
++ ;;
++esac
++
++exit 0
+--- adjtimex-1.23.orig/debian/adjust
++++ adjtimex-1.23/debian/adjust
+@@ -0,0 +1,15 @@
++ mode: 16384
++ offset: 0
++ frequency: 0
++ maxerror: 0
++ esterror: 0
++ status: 0
++time_constant: 0
++ precision: 0
++ tolerance: 0
++ tick: 0
++ raw time: 0s 0us = 0.000000
++for this kernel:
++ USER_HZ = 100 (nominally 100 ticks per second)
++ 9000 <= tick <= 11000
++ -33554432 <= frequency <= 33554432
+--- adjtimex-1.23.orig/debian/compat
++++ adjtimex-1.23/debian/compat
+@@ -0,0 +1 @@
++5
+--- adjtimex-1.23.orig/Makefile
++++ adjtimex-1.23/Makefile
+@@ -0,0 +1,70 @@
++# Generated automatically from Makefile.in by configure.
++#### Start of system configuration section. -*-makefile-*- ####
++ srcdir = .
++
++VERSION=1.22
++
++CFLAGS = -g -O2 -Wall
++prefix = /usr
++man1dir=${prefix}/share/man/man1
++exec_prefix = ${prefix}
++bindir=/sbin
++
++INSTALL=/usr/bin/install -c
++
++# Extension (not including `.') for the manual page filenames.
++manext = 8
++# Where to put the manual pages.
++mandir = $(prefix)/share/man/man$(manext)
++
++#### End of system configuration section. ####
++
++SHELL = /bin/sh
++
++SRC = adjtimex.c adjtimex.8 mat.c mat.h install-sh configure.in \
++ configure Makefile.in README README.ru adjtimex.lsm adjtimex.lsm.in \
++ COPYING COPYRIGHT ChangeLog
++
++all: adjtimex adjtimex.lsm
++
++adjtimex: adjtimex.c mat.o
++ $(CC) $(CFLAGS) -I. -DVERSION=\"$(VERSION)\" -o adjtimex adjtimex.c \
++ mat.o -lm
++
++adjtimex.lsm: adjtimex.lsm.in Makefile.in
++ sed -e 's/@VERSION@/$(VERSION)/' \
++ -e "s/@DATE@/`date +%d%b%y|tr [a-z] [A-Z]`/" \
++ adjtimex.lsm.in >adjtimex.lsm
++
++mat.o: mat.c
++ $(CC) $(CFLAGS) -c mat.c
++
++install: all
++ $(INSTALL) -g bin -m 755 -o root adjtimex $(bindir)/adjtimex
++ $(INSTALL) -d -g root -m 755 -o root $(mandir)
++ -$(INSTALL) -g root -m 644 -o root $(srcdir)/adjtimex.8 \
++ $(mandir)/adjtimex.$(manext)
++
++uninstall:
++ rm -f $(bindir)/adjtimex $(mandir)/adjtimex.$(manext)
++
++clean:
++ rm -f core *.o
++veryclean: clean
++ rm -f adjtimex
++
++shar: $(SRC)
++ distname=adjtimex-$(VERSION); \
++ shar $(SRC) >$$distname.shar
++
++dist: $(SRC)
++ distname=adjtimex-$(VERSION); \
++ rm -fr $$distname; \
++ mkdir $$distname; \
++ for file in $(SRC); do \
++ ln $$file $$distname/$$file \
++ || { echo copying $$file instead; cp -p $$file $$distname/$$file;}; \
++ done; \
++ chmod -R a+rX $$distname; \
++ tar -chz -f $$distname.tar.gz $$distname; \
++ rm -fr $$distname
diff --git a/source/a/util-linux-ng/doinst.sh b/source/a/util-linux-ng/doinst.sh
new file mode 100644
index 00000000..678c228f
--- /dev/null
+++ b/source/a/util-linux-ng/doinst.sh
@@ -0,0 +1,23 @@
+config() {
+ NEW="$1"
+ OLD="$(dirname $NEW)/$(basename $NEW .new)"
+ # If there's no config file by that name, mv it over:
+ if [ ! -r $OLD ]; then
+ mv $NEW $OLD
+ elif [ "$(cat $OLD | md5sum)" = "$(cat $NEW | md5sum)" ]; then
+ # toss the redundant copy
+ rm $NEW
+ fi
+ # Otherwise, we leave the .new copy for the admin to consider...
+}
+
+# Keep same perms on rc.serial.new:
+if [ -e etc/rc.d/rc.serial ]; then
+ cp -a etc/rc.d/rc.serial etc/rc.d/rc.serial.new.incoming
+ cat etc/rc.d/rc.serial.new > etc/rc.d/rc.serial.new.incoming
+ mv etc/rc.d/rc.serial.new.incoming etc/rc.d/rc.serial.new
+fi
+
+config etc/rc.d/rc.serial.new
+config etc/serial.conf.new
+
diff --git a/source/a/util-linux-ng/net-tools.diff b/source/a/util-linux-ng/net-tools.diff
new file mode 100644
index 00000000..a19af202
--- /dev/null
+++ b/source/a/util-linux-ng/net-tools.diff
@@ -0,0 +1,77 @@
+--- ./config.h.orig Wed Mar 21 21:23:31 2001
++++ ./config.h Wed Mar 21 21:23:12 2001
+@@ -0,0 +1,74 @@
++/*
++* config.h Automatically generated configuration includefile
++*
++* NET-TOOLS A collection of programs that form the base set of the
++* NET-3 Networking Distribution for the LINUX operating
++* system.
++*
++* DO NOT EDIT DIRECTLY
++*
++*/
++
++/*
++ *
++ * Internationalization
++ *
++ * The net-tools package has currently been translated to French,
++ * German and Brazilian Portugese. Other translations are, of
++ * course, welcome. Answer `n' here if you have no support for
++ * internationalization on your system.
++ *
++ */
++#define I18N 1
++
++/*
++ *
++ * Protocol Families.
++ *
++ */
++#define HAVE_AFUNIX 1
++#define HAVE_AFINET 1
++#define HAVE_AFINET6 1
++#define HAVE_AFIPX 1
++#define HAVE_AFATALK 1
++#define HAVE_AFAX25 1
++#define HAVE_AFNETROM 1
++#define HAVE_AFROSE 0
++#define HAVE_AFX25 1
++#define HAVE_AFECONET 0
++#define HAVE_AFDECnet 0
++#define HAVE_AFASH 0
++
++/*
++ *
++ * Device Hardware types.
++ *
++ */
++#define HAVE_HWETHER 1
++#define HAVE_HWARC 1
++#define HAVE_HWSLIP 1
++#define HAVE_HWPPP 1
++#define HAVE_HWTUNNEL 1
++#define HAVE_HWSTRIP 1
++#define HAVE_HWTR 1
++#define HAVE_HWAX25 1
++#define HAVE_HWROSE 0
++#define HAVE_HWNETROM 1
++#define HAVE_HWX25 1
++#define HAVE_HWFR 1
++#define HAVE_HWSIT 0
++#define HAVE_HWFDDI 0
++#define HAVE_HWHIPPI 0
++#define HAVE_HWASH 0
++#define HAVE_HWHDLCLAPB 0
++#define HAVE_HWIRDA 1
++#define HAVE_HWEC 0
++
++/*
++ *
++ * Other Features.
++ *
++ */
++#define HAVE_FW_MASQUERADE 1
++#define HAVE_IP_TOOLS 1
++#define HAVE_MII 1
diff --git a/source/a/util-linux-ng/net-tools_1.60-19.diff b/source/a/util-linux-ng/net-tools_1.60-19.diff
new file mode 100644
index 00000000..f754f02d
--- /dev/null
+++ b/source/a/util-linux-ng/net-tools_1.60-19.diff
@@ -0,0 +1,29401 @@
+--- net-tools-1.60.orig/lib/ether.c
++++ net-tools-1.60/lib/ether.c
+@@ -2,7 +2,7 @@
+ * lib/ether.c This file contains an implementation of the "Ethernet"
+ * support functions.
+ *
+- * Version: $Id: ether.c,v 1.7 1999/09/27 11:00:47 philip Exp $
++ * Version: $Id: ether.c,v 1.8 2002/07/30 05:17:29 ecki Exp $
+ *
+ * Author: Fred N. van Kempen, <waltje@uwalt.nl.mugnet.org>
+ * Copyright 1993 MicroWalt Corporation
+@@ -39,7 +39,7 @@
+ {
+ static char buff[64];
+
+- snprintf(buff, sizeof(buff), "%02X:%02X:%02X:%02X:%02X:%02X",
++ snprintf(buff, sizeof(buff), "%02x:%02x:%02x:%02x:%02x:%02x",
+ (ptr[0] & 0377), (ptr[1] & 0377), (ptr[2] & 0377),
+ (ptr[3] & 0377), (ptr[4] & 0377), (ptr[5] & 0377)
+ );
+--- net-tools-1.60.orig/lib/inet6.c
++++ net-tools-1.60/lib/inet6.c
+@@ -3,7 +3,7 @@
+ * support functions for the net-tools.
+ * (most of it copied from lib/inet.c 1.26).
+ *
+- * Version: $Id: inet6.c,v 1.10 2000/10/28 11:04:00 pb Exp $
++ * Version: $Id: inet6.c,v 1.12 2002/12/10 01:03:09 ecki Exp $
+ *
+ * Author: Fred N. van Kempen, <waltje@uwalt.nl.mugnet.org>
+ * Copyright 1993 MicroWalt Corporation
+@@ -44,6 +44,21 @@
+
+ extern int h_errno; /* some netdb.h versions don't export this */
+
++char * fix_v4_address(char *buf, struct in6_addr *in6)
++{
++ if (IN6_IS_ADDR_V4MAPPED(in6->s6_addr)) {
++ char *s =strchr(buf, '.');
++ if (s) {
++ while (s > buf && *s != ':')
++ --s;
++ if (*s == ':') ++s;
++ else s = NULL;
++ }
++ if (s) return s;
++ }
++ return buf;
++}
++
+ static int INET6_resolve(char *name, struct sockaddr_in6 *sin6)
+ {
+ struct addrinfo req, *ai;
+@@ -83,14 +98,14 @@
+ return (-1);
+ }
+ if (numeric & 0x7FFF) {
+- inet_ntop(AF_INET6, &sin6->sin6_addr, name, 80);
++ inet_ntop( AF_INET6, &sin6->sin6_addr, name, 80);
+ return (0);
+ }
+ if (IN6_IS_ADDR_UNSPECIFIED(&sin6->sin6_addr)) {
+ if (numeric & 0x8000)
+ strcpy(name, "default");
+ else
+- strcpy(name, "*");
++ strcpy(name, "[::]");
+ return (0);
+ }
+
+@@ -109,13 +124,14 @@
+ }
+
+
++
+ /* Display an Internet socket address. */
+ static char *INET6_print(unsigned char *ptr)
+ {
+ static char name[80];
+
+ inet_ntop(AF_INET6, (struct in6_addr *) ptr, name, 80);
+- return name;
++ return fix_v4_address(name, (struct in6_addr *)ptr);
+ }
+
+
+@@ -129,13 +145,14 @@
+ return safe_strncpy(buff, _("[NONE SET]"), sizeof(buff));
+ if (INET6_rresolve(buff, (struct sockaddr_in6 *) sap, numeric) != 0)
+ return safe_strncpy(buff, _("[UNKNOWN]"), sizeof(buff));
+- return (buff);
++ return (fix_v4_address(buff, &((struct sockaddr_in6 *)sap)->sin6_addr));
+ }
+
+
+ static int INET6_getsock(char *bufp, struct sockaddr *sap)
+ {
+ struct sockaddr_in6 *sin6;
++ char *p;
+
+ sin6 = (struct sockaddr_in6 *) sap;
+ sin6->sin6_family = AF_INET6;
+@@ -143,7 +160,9 @@
+
+ if (inet_pton(AF_INET6, bufp, sin6->sin6_addr.s6_addr) <= 0)
+ return (-1);
+-
++ p = fix_v4_address(bufp, &sin6->sin6_addr);
++ if (p != bufp)
++ memcpy(bufp, p, strlen(p)+1);
+ return 16; /* ?;) */
+ }
+
+--- net-tools-1.60.orig/lib/inet6_gr.c
++++ net-tools-1.60/lib/inet6_gr.c
+@@ -1,4 +1,4 @@
+-/*
++ /*
+ Modifications:
+ 1998-07-01 - Arnaldo Carvalho de Melo - GNU gettext instead of catgets,
+ snprintf instead of sprintf
+@@ -71,11 +71,15 @@
+ printf(_("INET6 (IPv6) not configured in this system.\n"));
+ return 1;
+ }
+- printf(_("Kernel IPv6 routing table\n"));
+
+- printf(_("Destination "
+- "Next Hop "
+- "Flags Metric Ref Use Iface\n"));
++ if (numeric & RTF_CACHE)
++ printf(_("Kernel IPv6 routing cache\n"));
++ else
++ printf(_("Kernel IPv6 routing table\n"));
++
++ printf(_("Destination "
++ "Next Hop "
++ "Flag Met Ref Use If\n"));
+
+ while (fgets(buff, 1023, fp)) {
+ num = sscanf(buff, "%4s%4s%4s%4s%4s%4s%4s%4s %02x %4s%4s%4s%4s%4s%4s%4s%4s %02x %4s%4s%4s%4s%4s%4s%4s%4s %08x %08x %08x %08x %s\n",
+@@ -87,13 +91,19 @@
+ &slen,
+ naddr6p[0], naddr6p[1], naddr6p[2], naddr6p[3],
+ naddr6p[4], naddr6p[5], naddr6p[6], naddr6p[7],
+- &metric, &use, &refcnt, &iflags, iface);
++ &metric, &refcnt, &use, &iflags, iface);
+ #if 0
+ if (num < 23)
+ continue;
+ #endif
+- if (!(iflags & RTF_UP))
+- continue;
++ if (iflags & RTF_CACHE) {
++ if (!(numeric & RTF_CACHE))
++ continue;
++ } else {
++ if (numeric & RTF_CACHE)
++ continue;
++ }
++
+ /* Fetch and resolve the target address. */
+ snprintf(addr6, sizeof(addr6), "%s:%s:%s:%s:%s:%s:%s:%s",
+ addr6p[0], addr6p[1], addr6p[2], addr6p[3],
+@@ -112,7 +122,12 @@
+ inet6_aftype.sprint((struct sockaddr *) &snaddr6, 1));
+
+ /* Decode the flags. */
+- strcpy(flags, "U");
++
++ flags[0]=0;
++ if (iflags & RTF_UP)
++ strcat(flags, "U");
++ if (iflags & RTF_REJECT)
++ strcat(flags, "!");
+ if (iflags & RTF_GATEWAY)
+ strcat(flags, "G");
+ if (iflags & RTF_HOST)
+@@ -123,9 +138,19 @@
+ strcat(flags, "A");
+ if (iflags & RTF_CACHE)
+ strcat(flags, "C");
++ if (iflags & RTF_ALLONLINK)
++ strcat(flags, "a");
++ if (iflags & RTF_EXPIRES)
++ strcat(flags, "e");
++ if (iflags & RTF_MODIFIED)
++ strcat(flags, "m");
++ if (iflags & RTF_NONEXTHOP)
++ strcat(flags, "n");
++ if (iflags & RTF_FLOW)
++ strcat(flags, "f");
+
+ /* Print the info. */
+- printf("%-43s %-39s %-5s %-6d %-2d %7d %-8s\n",
++ printf("%-30s %-26s %-4s %-3d %-1d%6d %s\n",
+ addr6, naddr6, flags, metric, refcnt, use, iface);
+ }
+
+@@ -144,8 +169,7 @@
+ char addr6p[8][5], haddrp[6][3];
+
+ if (!fp) {
+- ESYSNOT("nd_print", "ND Table");
+- return 1;
++ return rprint_fib6(ext, numeric | RTF_CACHE);
+ }
+ printf(_("Kernel IPv6 Neighbour Cache\n"));
+
+--- net-tools-1.60.orig/lib/ipx_gr.c
++++ net-tools-1.60/lib/ipx_gr.c
+@@ -38,21 +38,27 @@
+ char net[128], router_net[128];
+ char router_node[128];
+ int num;
+- FILE *fp = fopen(_PATH_PROCNET_IPX_ROUTE, "r");
++ FILE *fp;
+ struct aftype *ap;
+ struct sockaddr sa;
+
+- if ((ap = get_afntype(AF_IPX)) == NULL) {
+- EINTERN("lib/ipx_rt.c", "AF_IPX missing");
+- return (-1);
+- }
++ fp = fopen(_PATH_PROCNET_IPX_ROUTE1, "r");
+
+ if (!fp) {
+- perror(_PATH_PROCNET_IPX_ROUTE);
+- printf(_("IPX not configured in this system.\n"));
++ fp = fopen(_PATH_PROCNET_IPX_ROUTE2, "r");
++ }
++
++ if (!fp) {
++ perror(NULL);
++ printf(_("IPX routing not in file %s or %s found.\n"), _PATH_PROCNET_IPX_ROUTE1, _PATH_PROCNET_IPX_ROUTE2);
+ return 1;
+ }
+
++ if ((ap = get_afntype(AF_IPX)) == NULL) {
++ EINTERN("lib/ipx_rt.c", "AF_IPX missing");
++ return (-1);
++ }
++
+ printf(_("Kernel IPX routing table\n")); /* xxx */
+ printf(_("Destination Router Net Router Node\n"));
+
+--- net-tools-1.60.orig/lib/proc.c
++++ net-tools-1.60/lib/proc.c
+@@ -1,11 +1,12 @@
+ /* Tolerant /proc file parser. Copyright 1998 Andi Kleen */
+-/* $Id: proc.c,v 1.4 1999/01/05 20:54:00 philip Exp $ */
++/* $Id: proc.c,v 1.5 2007/12/01 18:44:57 ecki Exp $ */
+ /* Fixme: cannot currently cope with removed fields */
+
+ #include <string.h>
+ #include <stdarg.h>
+ #include <stdio.h>
+ #include <ctype.h>
++#include <unistd.h>
+
+ /* Caller must free return string. */
+
+@@ -72,3 +73,22 @@
+ va_end(ap);
+ return flag;
+ }
++
++
++FILE *proc_fopen(const char *name)
++{
++ static char *buffer;
++ static size_t pagesz;
++ FILE *fd = fopen(name, "r");
++
++ if (fd == NULL)
++ return NULL;
++
++ if (!buffer) {
++ pagesz = getpagesize();
++ buffer = malloc(pagesz);
++ }
++
++ setvbuf(fd, buffer, _IOFBF, pagesz);
++ return fd;
++}
+--- net-tools-1.60.orig/lib/proc.h
++++ net-tools-1.60/lib/proc.h
+@@ -1,5 +1,7 @@
+-
+-
+-/* Generate a suitable scanf format for a column title line */
++/*
++ * prototypes for proc.c
++ */
+ char *proc_gen_fmt(char *name, int more, FILE * fh,...);
+ int proc_guess_fmt(char *name, FILE* fh,...);
++FILE *proc_fopen(const char *name);
++
+--- net-tools-1.60.orig/lib/util-ank.c
++++ net-tools-1.60/lib/util-ank.c
+@@ -293,7 +293,7 @@
+ return 0;
+ }
+
+-const char *format_host(int af, void *addr, __u8 *abuf, int alen)
++const char *format_host(int af, void *addr, char *abuf, int alen)
+ {
+ #ifdef RESOLVE_HOSTNAMES
+ if (resolve_hosts) {
+--- net-tools-1.60.orig/lib/Makefile
++++ net-tools-1.60/lib/Makefile
+@@ -16,7 +16,7 @@
+ #
+
+
+-HWOBJS = hw.o loopback.o slip.o ether.o ax25.o ppp.o arcnet.o tr.o tunnel.o frame.o sit.o rose.o ash.o fddi.o hippi.o hdlclapb.o strip.o irda.o ec_hw.o x25.o
++HWOBJS = hw.o loopback.o slip.o ether.o ax25.o ppp.o arcnet.o tr.o tunnel.o frame.o sit.o rose.o ash.o fddi.o hippi.o hdlclapb.o strip.o irda.o ec_hw.o x25.o eui64.o
+ AFOBJS = unix.o inet.o inet6.o ax25.o ipx.o ddp.o ipx.o netrom.o af.o rose.o econet.o x25.o
+ AFGROBJS = inet_gr.o inet6_gr.o ipx_gr.o ddp_gr.o netrom_gr.o ax25_gr.o rose_gr.o getroute.o x25_gr.o
+ AFSROBJS = inet_sr.o inet6_sr.o netrom_sr.o ipx_sr.o setroute.o x25_sr.o
+--- net-tools-1.60.orig/lib/ddp_gr.c
++++ net-tools-1.60/lib/ddp_gr.c
+@@ -1,3 +1,20 @@
++/*
++ * lib/ddp_gr.c Prinbting of DDP (AppleTalk) routing table
++ * used by the NET-LIB.
++ *
++ * NET-LIB
++ *
++ * Version: $Id: ddp_gr.c,v 1.4 2002/06/02 05:25:15 ecki Exp $
++ *
++ * Author: Ajax <ajax@firest0rm.org>
++ *
++ * Modification:
++ * 2002-06-02 integrated into main source by Bernd Eckenfels
++ *
++ */
++
++/* TODO: name lookups (/etc/atalk.names? NBP?) */
++
+ #include "config.h"
+
+ #if HAVE_AFATALK
+@@ -16,9 +33,61 @@
+ #include "pathnames.h"
+ #include "intl.h"
+
++/* stolen from inet_gr.c */
++#define flags_decode(i,o) do { \
++ o[0] = '\0'; \
++ if (i & RTF_UP) strcat(o, "U"); \
++ if (i & RTF_GATEWAY) strcat(o, "G"); \
++ if (i & RTF_REJECT) strcat(o, "!"); \
++ if (i & RTF_HOST) strcat(o, "H"); \
++ if (i & RTF_REINSTATE) strcat(o, "R"); \
++ if (i & RTF_DYNAMIC) strcat(o, "D"); \
++ if (i & RTF_MODIFIED) strcat(o, "M"); \
++ if (i & RTF_DEFAULT) strcat(o, "d"); \
++ if (i & RTF_ALLONLINK) strcat(o, "a"); \
++ if (i & RTF_ADDRCONF) strcat(o, "c"); \
++ if (i & RTF_NONEXTHOP) strcat(o, "o"); \
++ if (i & RTF_EXPIRES) strcat(o, "e"); \
++ if (i & RTF_CACHE) strcat(o, "c"); \
++ if (i & RTF_FLOW) strcat(o, "f"); \
++ if (i & RTF_POLICY) strcat(o, "p"); \
++ if (i & RTF_LOCAL) strcat(o, "l"); \
++ if (i & RTF_MTU) strcat(o, "u"); \
++ if (i & RTF_WINDOW) strcat(o, "w"); \
++ if (i & RTF_IRTT) strcat(o, "i"); \
++ if (i & RTF_NOTCACHED) strcat(o, "n"); \
++ } while (0)
++
+ int DDP_rprint(int options)
+ {
+- fprintf(stderr, _("Routing table for `ddp' not yet supported.\n"));
+- return (1);
++ FILE *fp;
++ char *dest, *gw, *dev, *flags;
++ char oflags[32];
++ char *hdr = "Destination Gateway Device Flags";
++
++ fp = fopen(_PATH_PROCNET_ATALK_ROUTE, "r");
++
++ if (!fp) {
++ perror("Error opening " _PATH_PROCNET_ATALK_ROUTE);
++ fprintf(stderr, "DDP (AppleTalk) not configured on this system.\n");
++ return 1;
++ }
++
++ fscanf(fp, "%as %as %as %as\n", &dest, &gw, &flags, &dev);
++ free(dest); free(gw); free(dev); free(flags);
++
++ printf("%s\n", hdr);
++
++ while (fscanf(fp, "%as %as %as %as\n", &dest, &gw, &flags, &dev) == 4) {
++ int iflags = atoi(flags);
++ flags_decode(iflags, oflags);
++ printf("%-16s%-16s%-16s%-s\n", dest, gw, dev, oflags);
++ free(dest); free(gw); free(dev); free(flags);
++ }
++
++ fclose(fp);
++
++ return 0;
++
+ }
+ #endif
+--- net-tools-1.60.orig/lib/hw.c
++++ net-tools-1.60/lib/hw.c
+@@ -2,7 +2,7 @@
+ * lib/hw.c This file contains the top-level part of the hardware
+ * support functions module.
+ *
+- * Version: $Id: hw.c,v 1.17 2000/05/20 13:38:10 pb Exp $
++ * Version: $Id: hw.c,v 1.18 2001/11/12 02:12:05 ecki Exp $
+ *
+ * Maintainer: Bernd 'eckes' Eckenfels, <net-tools@lina.inka.de>
+ *
+@@ -73,6 +73,8 @@
+
+ extern struct hwtype ec_hwtype;
+
++extern struct hwtype eui64_hwtype;
++
+ static struct hwtype *hwtypes[] =
+ {
+
+@@ -144,6 +146,9 @@
+ #if HAVE_HWX25
+ &x25_hwtype,
+ #endif
++#if HAVE_HWEUI64
++ &eui64_hwtype,
++#endif
+ &unspec_hwtype,
+ NULL
+ };
+@@ -217,6 +222,9 @@
+ #if HAVE_HWEC
+ ec_hwtype.title = _("Econet");
+ #endif
++#if HAVE_HWEUI64
++ eui64_hwtype.title = _("Generic EUI-64");
++#endif
+ sVhwinit = 1;
+ }
+
+--- net-tools-1.60.orig/lib/inet.c
++++ net-tools-1.60/lib/inet.c
+@@ -3,7 +3,7 @@
+ * support functions for the net-tools.
+ * (NET-3 base distribution).
+ *
+- * Version: $Id: inet.c,v 1.13 1999/12/11 13:35:56 freitag Exp $
++ * Version: $Id: inet.c,v 1.14 2003/10/19 11:57:37 pb Exp $
+ *
+ * Author: Fred N. van Kempen, <waltje@uwalt.nl.mugnet.org>
+ * Copyright 1993 MicroWalt Corporation
+@@ -144,7 +144,7 @@
+ struct hostent *ent;
+ struct netent *np;
+ struct addr *pn;
+- unsigned long ad, host_ad;
++ u_int32_t ad, host_ad;
+ int host = 0;
+
+ /* Grmpf. -FvK */
+@@ -155,7 +155,7 @@
+ errno = EAFNOSUPPORT;
+ return (-1);
+ }
+- ad = (unsigned long) sin->sin_addr.s_addr;
++ ad = sin->sin_addr.s_addr;
+ #ifdef DEBUG
+ fprintf (stderr, "rresolve: %08lx, mask %08x, num %08x \n", ad, netmask, numeric);
+ #endif
+--- net-tools-1.60.orig/lib/inet_sr.c
++++ net-tools-1.60/lib/inet_sr.c
+@@ -3,6 +3,7 @@
+ 1998-07-01 - Arnaldo Carvalho de Melo - GNU gettext instead of catgets
+ 1999-10-07 - Kurt Garloff - for -host and gws: prefer host names
+ over networks (or even reject)
++ 2003-10-11 - Maik Broemme - gcc 3.x warnign fixes (default: break;)
+ */
+
+ #include "config.h"
+@@ -104,7 +105,6 @@
+ isnet = 1; break;
+ case 2:
+ isnet = 0; break;
+- default:
+ }
+
+ /* Fill in the other fields. */
+--- net-tools-1.60.orig/lib/ipx.c
++++ net-tools-1.60/lib/ipx.c
+@@ -133,6 +133,9 @@
+ char *ep;
+ int nbo;
+
++ if (!sai)
++ return (-1);
++
+ sai->sipx_family = AF_IPX;
+ sai->sipx_network = htonl(0);
+ sai->sipx_node[0] = sai->sipx_node[1] = sai->sipx_node[2] =
+--- net-tools-1.60.orig/lib/interface.c
++++ net-tools-1.60/lib/interface.c
+@@ -7,7 +7,7 @@
+ 8/2000 Andi Kleen make the list operations a bit more efficient.
+ People are crazy enough to use thousands of aliases now.
+
+- $Id: interface.c,v 1.14 2001/02/10 19:31:15 pb Exp $
++ $Id: interface.c,v 1.28 2003/05/29 02:09:14 ecki Exp $
+ */
+
+ #include "config.h"
+@@ -23,6 +23,7 @@
+ #include <string.h>
+ #include <unistd.h>
+ #include <ctype.h>
++#include <string.h>
+
+ #if HAVE_AFIPX
+ #if (__GLIBC__ > 2) || (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 1)
+@@ -87,14 +88,20 @@
+
+ int ife_short;
+
++int if_list_all = 0; /* do we have requested the complete proc list, yet? */
++
+ static struct interface *int_list, *int_last;
+
+ static int if_readlist_proc(char *);
+
+-static struct interface *add_interface(char *name)
++static struct interface *if_cache_add(char *name)
+ {
+ struct interface *ife, **nextp, *new;
+
++ if (!int_list)
++ int_last = NULL;
++
++ /* the cache is sorted, so if we hit a smaller if, exit */
+ for (ife = int_last; ife; ife = ife->prev) {
+ int n = nstrcmp(ife->name, name);
+ if (n == 0)
+@@ -104,7 +111,7 @@
+ }
+ new(new);
+ safe_strncpy(new->name, name, IFNAMSIZ);
+- nextp = ife ? &ife->next : &int_list;
++ nextp = ife ? &ife->next : &int_list; // keep sorting
+ new->prev = ife;
+ new->next = *nextp;
+ if (new->next)
+@@ -117,19 +124,22 @@
+
+ struct interface *lookup_interface(char *name)
+ {
+- struct interface *ife = NULL;
+-
+- if (if_readlist_proc(name) < 0)
+- return NULL;
+- ife = add_interface(name);
+- return ife;
++ /* if we have read all, use it */
++ if (if_list_all)
++ return if_cache_add(name);
++
++ /* otherwise we read a limited list */
++ if (if_readlist_proc(name) < 0)
++ return NULL;
++
++ return if_cache_add(name);
+ }
+
+ int for_all_interfaces(int (*doit) (struct interface *, void *), void *cookie)
+ {
+ struct interface *ife;
+
+- if (!int_list && (if_readlist() < 0))
++ if (!if_list_all && (if_readlist() < 0))
+ return -1;
+ for (ife = int_list; ife; ife = ife->next) {
+ int err = doit(ife, cookie);
+@@ -139,13 +149,15 @@
+ return 0;
+ }
+
+-int free_interface_list(void)
++int if_cache_free(void)
+ {
+ struct interface *ife;
+ while ((ife = int_list) != NULL) {
+ int_list = ife->next;
+ free(ife);
+ }
++ int_last = NULL;
++ if_list_all = 0;
+ return 0;
+ }
+
+@@ -180,7 +192,7 @@
+ }
+ if (ifc.ifc_len == sizeof(struct ifreq) * numreqs) {
+ /* assume it overflowed and try again */
+- numreqs += 10;
++ numreqs *= 2;
+ continue;
+ }
+ break;
+@@ -188,7 +200,7 @@
+
+ ifr = ifc.ifc_req;
+ for (n = 0; n < ifc.ifc_len; n += sizeof(struct ifreq)) {
+- add_interface(ifr->ifr_name);
++ if_cache_add(ifr->ifr_name);
+ ifr++;
+ }
+ err = 0;
+@@ -198,7 +210,7 @@
+ return err;
+ }
+
+-static char *get_name(char *name, char *p)
++char *get_name(char *name, char *p)
+ {
+ while (isspace(*p))
+ p++;
+@@ -206,16 +218,19 @@
+ if (isspace(*p))
+ break;
+ if (*p == ':') { /* could be an alias */
+- char *dot = p, *dotname = name;
+- *name++ = *p++;
+- while (isdigit(*p))
+- *name++ = *p++;
+- if (*p != ':') { /* it wasn't, backup */
+- p = dot;
+- name = dotname;
++ char *dot = p++;
++ while (*p && isdigit(*p)) p++;
++ if (*p == ':') {
++ /* Yes it is, backup and copy it. */
++ p = dot;
++ *name++ = *p++;
++ while (*p && isdigit(*p)) {
++ *name++ = *p++;
++ }
++ } else {
++ /* No, it isn't */
++ p = dot;
+ }
+- if (*p == '\0')
+- return NULL;
+ p++;
+ break;
+ }
+@@ -225,7 +240,7 @@
+ return p;
+ }
+
+-static int procnetdev_version(char *buf)
++int procnetdev_version(char *buf)
+ {
+ if (strstr(buf, "compressed"))
+ return 3;
+@@ -234,12 +249,12 @@
+ return 1;
+ }
+
+-static int get_dev_fields(char *bp, struct interface *ife)
++int get_dev_fields(char *bp, struct interface *ife)
+ {
+ switch (procnetdev_vsn) {
+ case 3:
+ sscanf(bp,
+- "%llu %llu %lu %lu %lu %lu %lu %lu %llu %llu %lu %lu %lu %lu %lu %lu",
++ "%Lu %Lu %lu %lu %lu %lu %lu %lu %Lu %Lu %lu %lu %lu %lu %lu %lu",
+ &ife->stats.rx_bytes,
+ &ife->stats.rx_packets,
+ &ife->stats.rx_errors,
+@@ -259,7 +274,7 @@
+ &ife->stats.tx_compressed);
+ break;
+ case 2:
+- sscanf(bp, "%llu %llu %lu %lu %lu %lu %llu %llu %lu %lu %lu %lu %lu",
++ sscanf(bp, "%Lu %Lu %lu %lu %lu %lu %Lu %Lu %lu %lu %lu %lu %lu",
+ &ife->stats.rx_bytes,
+ &ife->stats.rx_packets,
+ &ife->stats.rx_errors,
+@@ -277,7 +292,7 @@
+ ife->stats.rx_multicast = 0;
+ break;
+ case 1:
+- sscanf(bp, "%llu %lu %lu %lu %lu %llu %lu %lu %lu %lu %lu",
++ sscanf(bp, "%Lu %lu %lu %lu %lu %Lu %lu %lu %lu %lu %lu",
+ &ife->stats.rx_packets,
+ &ife->stats.rx_errors,
+ &ife->stats.rx_dropped,
+@@ -300,22 +315,16 @@
+
+ static int if_readlist_proc(char *target)
+ {
+- static int proc_read;
+ FILE *fh;
+ char buf[512];
+ struct interface *ife;
+ int err;
+
+- if (proc_read)
+- return 0;
+- if (!target)
+- proc_read = 1;
+-
+ fh = fopen(_PATH_PROCNET_DEV, "r");
+ if (!fh) {
+ fprintf(stderr, _("Warning: cannot open %s (%s). Limited output.\n"),
+ _PATH_PROCNET_DEV, strerror(errno));
+- return if_readconf();
++ return -2;
+ }
+ fgets(buf, sizeof buf, fh); /* eat line */
+ fgets(buf, sizeof buf, fh);
+@@ -350,7 +359,7 @@
+ while (fgets(buf, sizeof buf, fh)) {
+ char *s, name[IFNAMSIZ];
+ s = get_name(name, buf);
+- ife = add_interface(name);
++ ife = if_cache_add(name);
+ get_dev_fields(s, ife);
+ ife->statistics_valid = 1;
+ if (target && !strcmp(target,name))
+@@ -359,7 +368,6 @@
+ if (ferror(fh)) {
+ perror(_PATH_PROCNET_DEV);
+ err = -1;
+- proc_read = 0;
+ }
+
+ #if 0
+@@ -371,9 +379,16 @@
+
+ int if_readlist(void)
+ {
+- int err = if_readlist_proc(NULL);
+- if (!err)
+- err = if_readconf();
++ /* caller will/should check not to call this too often
++ * (i.e. only if if_list_all == 0
++ */
++ int err = 0;
++
++ err |= if_readlist_proc(NULL);
++ err |= if_readconf();
++
++ if_list_all = 1;
++
+ return err;
+ }
+
+@@ -579,11 +594,11 @@
+
+ void ife_print_short(struct interface *ptr)
+ {
+- printf("%-5.5s ", ptr->name);
+- printf("%5d %3d", ptr->mtu, ptr->metric);
++ printf("%-9s ", ptr->name);
++ printf("%5d %-2d ", ptr->mtu, ptr->metric);
+ /* If needed, display the interface statistics. */
+ if (ptr->statistics_valid) {
+- printf("%8llu %6lu %6lu %6lu",
++ printf("%8llu %6lu %6lu %-6lu ",
+ ptr->stats.rx_packets, ptr->stats.rx_errors,
+ ptr->stats.rx_dropped, ptr->stats.rx_fifo_errors);
+ printf("%8llu %6lu %6lu %6lu ",
+@@ -636,8 +651,8 @@
+ int hf;
+ int can_compress = 0;
+ unsigned long long rx, tx, short_rx, short_tx;
+- char Rext[5]="b";
+- char Text[5]="b";
++ const char *Rext = "B";
++ const char *Text = "B";
+
+ #if HAVE_AFIPX
+ static struct aftype *ipxtype = NULL;
+@@ -670,7 +685,7 @@
+ if (hw == NULL)
+ hw = get_hwntype(-1);
+
+- printf(_("%-9.9s Link encap:%s "), ptr->name, hw->title);
++ printf(_("%-9s Link encap:%s "), ptr->name, hw->title);
+ /* For some hardware types (eg Ash, ATM) we don't print the
+ hardware address if it's null. */
+ if (hw->print != NULL && (! (hw_null_address(hw, ptr->hwaddr) &&
+@@ -843,10 +858,38 @@
+ tx = ptr->stats.tx_bytes;
+ short_rx = rx * 10;
+ short_tx = tx * 10;
+- if (rx > 1048576) { short_rx /= 1048576; strcpy(Rext, "Mb"); }
+- else if (rx > 1024) { short_rx /= 1024; strcpy(Rext, "Kb"); }
+- if (tx > 1048576) { short_tx /= 1048576; strcpy(Text, "Mb"); }
+- else if (tx > 1024) { short_tx /= 1024; strcpy(Text, "Kb"); }
++ if (rx > 1125899906842624ull) {
++ short_rx /= 1125899906842624ull;
++ Rext = "PiB";
++ } else if (rx > 1099511627776ull) {
++ short_rx /= 1099511627776ull;
++ Rext = "TiB";
++ } else if (rx > 1073741824ull) {
++ short_rx /= 1073741824ull;
++ Rext = "GiB";
++ } else if (rx > 1048576) {
++ short_rx /= 1048576;
++ Rext = "MiB";
++ } else if (rx > 1024) {
++ short_rx /= 1024;
++ Rext = "KiB";
++ }
++ if (tx > 1125899906842624ull) {
++ short_tx /= 1125899906842624ull;
++ Text = "PiB";
++ } else if (tx > 1099511627776ull) {
++ short_tx /= 1099511627776ull;
++ Text = "TiB";
++ } else if (tx > 1073741824ull) {
++ short_tx /= 1073741824ull;
++ Text = "GiB";
++ } else if (tx > 1048576) {
++ short_tx /= 1048576;
++ Text = "MiB";
++ } else if (tx > 1024) {
++ short_tx /= 1024;
++ Text = "KiB";
++ }
+
+ printf(" ");
+ printf(_("TX packets:%llu errors:%lu dropped:%lu overruns:%lu carrier:%lu\n"),
+@@ -867,7 +910,7 @@
+ }
+
+ if ((ptr->map.irq || ptr->map.mem_start || ptr->map.dma ||
+- ptr->map.base_addr)) {
++ ptr->map.base_addr >= 0x100)) {
+ printf(" ");
+ if (ptr->map.irq)
+ printf(_("Interrupt:%d "), ptr->map.irq);
+--- net-tools-1.60.orig/lib/net-features.h
++++ net-tools-1.60/lib/net-features.h
+@@ -295,6 +295,13 @@
+ "-"
+ #endif
+ "HDLC/LAPB "
++
++#if HAVE_HWEUI64
++"+"
++#else
++"-"
++#endif
++"EUI64 "
+ ;
+
+
+--- net-tools-1.60.orig/lib/nstrcmp.c
++++ net-tools-1.60/lib/nstrcmp.c
+@@ -1,34 +1,157 @@
+ /* Copyright 1998 by Andi Kleen. Subject to the GPL. */
+-/* $Id: nstrcmp.c,v 1.2 1998/11/15 20:11:38 freitag Exp $ */
++/* rewritten by bernd eckenfels because of complicated alias semantic */
++/* $Id: nstrcmp.c,v 1.4 2004/06/03 22:49:17 ecki Exp $ */
+ #include <ctype.h>
+ #include <stdlib.h>
++#include <string.h>
+ #include "util.h"
+
+-/* like strcmp(), but knows about numbers */
+-int nstrcmp(const char *astr, const char *b)
++
++/* return numerical :999 suffix or null. sideeffect: replace ':' with \0 */
++char* cutalias(char* name)
+ {
+- const char *a = astr;
++ int digit = 0;
++ int pos;
++
++ for(pos=strlen(name); pos>0; pos--)
++ {
++ if (name[pos-1]==':' && digit)
++ {
++ name[pos-1]='\0';
++ return name+pos;
++ }
++ if (!isdigit(name[pos-1]))
++ break;
++ digit = 1;
++ }
++ return NULL;
++}
+
+- while (*a == *b) {
+- if (*a == '\0')
+- return 0;
+- a++;
+- b++;
+- }
+- if (isdigit(*a)) {
+- if (!isdigit(*b))
+- return -1;
+- while (a > astr) {
+- a--;
+- if (!isdigit(*a)) {
+- a++;
+- break;
+- }
+- if (!isdigit(*b))
+- return -1;
+- b--;
++
++/* return index of last non digit or -1 if it does not end with digits */
++int rindex_nondigit(char *name)
++{
++ int pos = strlen(name);
++
++ for(pos=strlen(name); pos>0; pos--)
++ {
++ if (!isdigit(name[pos-1]))
++ return pos;
+ }
+- return atoi(a) > atoi(b) ? 1 : -1;
+- }
+- return *a - *b;
++ return 0;
++}
++
++
++/* like strcmp(), but knows about numbers and ':' alias suffix */
++int nstrcmp(const char *ap, const char *bp)
++{
++ char *a = (char*)strdup(ap);
++ char *b = (char*)strdup(bp);
++ char *an, *bn;
++ int av = 0, bv = 0;
++ char *aalias=cutalias(a);
++ char *balias=cutalias(b);
++ int aindex=rindex_nondigit(a);
++ int bindex=rindex_nondigit(b);
++ int complen=(aindex<bindex)?aindex:bindex;
++ int res = strncmp(a, b, complen);
++
++ if (res != 0)
++ { free(a); free(b); return res; }
++
++ if (aindex > bindex)
++ { free(a); free(b); return 1; }
++
++ if (aindex < bindex)
++ { free(a); free(b); return -1; }
++
++ an = a+aindex;
++ bn = b+bindex;
++
++ av = atoi(an);
++ bv = atoi(bn);
++
++ if (av < bv)
++ { free(a); free(b); return -1; }
++
++ if (av > bv)
++ { free(a); free(b); return 1; }
++
++ av = -1;
++ if (aalias != NULL)
++ av = atoi(aalias);
++
++ bv = -1;
++ if (balias != NULL)
++ bv = atoi(balias);
++
++ free(a); free(b);
++
++ if (av < bv)
++ return -1;
++
++ if (av > bv)
++ return 1;
++
++ return 0;
++}
++
++
++#ifdef NSTRCMP_TEST
++
++int cs(int s)
++{
++ if (s < 0) return -1;
++ if (s > 0) return 1;
++ return 0;
++}
++
++
++int dotest(char* a, char* b, int exp)
++{
++ int res = nstrcmp(a, b);
++ int err = (cs(res) != cs(exp));
++ printf("nstrcmp(\"%s\", \"%s\")=%d %d %s\n", a, b, res, exp, err?"WRONG":"OK");
++ return err;
+ }
++
++int main()
++{
++ int err = 0;
++
++ err |= dotest("eth1", "eth1", 0);
++ err |= dotest("eth0:1", "eth0:1", 0);
++ err |= dotest("lan", "lan", 0);
++ err |= dotest("100", "100", 0);
++ err |= dotest("", "", 0);
++ err |= dotest(":", ":", 0);
++ err |= dotest("a:b:c", "a:b:c", 0);
++ err |= dotest("a:", "a:", 0);
++ err |= dotest(":a", ":a", 0);
++
++ err |= dotest("a", "aa", -1);
++ err |= dotest("eth0", "eth1", -1);
++ err |= dotest("eth1", "eth20", -1);
++ err |= dotest("eth20", "eth100", -1);
++ err |= dotest("eth1", "eth13", -1);
++ err |= dotest("eth", "eth2", -1);
++ err |= dotest("eth0:1", "eth0:2", -1);
++ err |= dotest("eth1:10", "eth13:10", -1);
++ err |= dotest("eth1:1", "eth1:13", -1);
++ err |= dotest("a", "a:", -1);
++
++ err |= dotest("aa", "a", 1);
++ err |= dotest("eth2", "eth1", 1);
++ err |= dotest("eth13", "eth1", 1);
++ err |= dotest("eth2", "eth", 1);
++ err |= dotest("eth2:10", "eth2:1", 1);
++ err |= dotest("eth2:5", "eth2:4", 1);
++ err |= dotest("eth3:2", "eth2:3", 1);
++ err |= dotest("eth13:1", "eth1:0", 1);
++ err |= dotest("a:", "a", 1);
++ err |= dotest("a1b12", "a1b2", 1);
++
++ return err;
++}
++
++#endif
+--- net-tools-1.60.orig/lib/pathnames.h
++++ net-tools-1.60/lib/pathnames.h
+@@ -1,4 +1,3 @@
+-
+ /*
+ * lib/pathnames.h This file contains the definitions of the path
+ * names used by the NET-LIB.
+@@ -29,8 +28,10 @@
+ #define _PATH_PROCNET_NR_NODES "/proc/net/nr_nodes"
+ #define _PATH_PROCNET_ARP "/proc/net/arp"
+ #define _PATH_PROCNET_AX25 "/proc/net/ax25"
+-#define _PATH_PROCNET_IPX "/proc/net/ipx"
+-#define _PATH_PROCNET_IPX_ROUTE "/proc/net/ipx_route"
++#define _PATH_PROCNET_IPX_SOCKET1 "/proc/net/ipx/socket"
++#define _PATH_PROCNET_IPX_SOCKET2 "/proc/net/ipx"
++#define _PATH_PROCNET_IPX_ROUTE1 "/proc/net/ipx/route"
++#define _PATH_PROCNET_IPX_ROUTE2 "/proc/net/ipx_route"
+ #define _PATH_PROCNET_ATALK "/proc/net/appletalk"
+ #define _PATH_PROCNET_IP_BLK "/proc/net/ip_block"
+ #define _PATH_PROCNET_IP_FWD "/proc/net/ip_forward"
+@@ -45,6 +46,7 @@
+ #define _PATH_PROCNET_X25 "/proc/net/x25"
+ #define _PATH_PROCNET_X25_ROUTE "/proc/net/x25_routes"
+ #define _PATH_PROCNET_DEV_MCAST "/proc/net/dev_mcast"
++#define _PATH_PROCNET_ATALK_ROUTE "/proc/net/atalk_route"
+
+ /* pathname for the netlink device */
+ #define _PATH_DEV_ROUTE "/dev/route"
+--- net-tools-1.60.orig/lib/tr.c
++++ net-tools-1.60/lib/tr.c
+@@ -2,7 +2,7 @@
+ * lib/tr.c This file contains an implementation of the "Tokenring"
+ * support functions.
+ *
+- * Version: $Id: tr.c,v 1.8 2000/02/02 08:56:30 freitag Exp $
++ * Version: $Id: tr.c,v 1.9 2005/05/16 03:15:12 ecki Exp $
+ *
+ * Author: Fred N. van Kempen, <waltje@uwalt.nl.mugnet.org>
+ * Copyright 1993 MicroWalt Corporation
+@@ -30,8 +30,14 @@
+ #include "net-support.h"
+ #include "pathnames.h"
+ #include "intl.h"
++#include "util.h"
+
++
++/* actual definition at the end of file */
+ extern struct hwtype tr_hwtype;
++#ifdef ARPHRD_IEEE802_TR
++extern struct hwtype tr_hwtype1;
++#endif
+
+ static char *pr_tr(unsigned char *ptr)
+ {
+@@ -42,7 +48,7 @@
+ (ptr[3] & 0377), (ptr[4] & 0377), (ptr[5] & 0377)
+ );
+ return (buff);
+-}
++ }
+
+
+ static int in_tr(char *bufp, struct sockaddr *sap)
+@@ -51,7 +57,17 @@
+ char c, *orig;
+ int i, val;
+
++#ifdef ARPHRD_IEEE802_TR
++ if (kernel_version() < KRELEASE(2,3,30)) {
++ sap->sa_family = tr_hwtype.type;
++ } else {
++ sap->sa_family = tr_hwtype1.type;
++ }
++#else
+ sap->sa_family = tr_hwtype.type;
++ #warning "Limited functionality, no support for ARPHRD_IEEE802_TR (old kernel headers?)"
++#endif
++
+ ptr = sap->sa_data;
+
+ i = 0;
+--- net-tools-1.60.orig/lib/util.h
++++ net-tools-1.60/lib/util.h
+@@ -14,3 +14,6 @@
+
+ char *safe_strncpy(char *dst, const char *src, size_t size);
+
++
++#define netmin(a,b) ((a)<(b) ? (a) : (b))
++#define netmax(a,b) ((a)>(b) ? (a) : (b))
+--- net-tools-1.60.orig/lib/irda.c
++++ net-tools-1.60/lib/irda.c
+@@ -1,13 +1,15 @@
+ /*********************************************************************
+ *
+ * Filename: irda.c
+- * Version: 0.1
+- * Description: A first attempt to make ifconfig understand IrDA
++ * Version: 0.2
++ * Description: A second attempt to make ifconfig understand IrDA
+ * Status: Experimental.
+ * Author: Dag Brattli <dagb@cs.uit.no>
+ * Created at: Wed Apr 21 09:03:09 1999
+ * Modified at: Wed Apr 21 09:17:05 1999
+ * Modified by: Dag Brattli <dagb@cs.uit.no>
++ * Modified at: Wed May 1 11:51:44 CEST 2002
++ * Modified by: Christoph Bartelmus <christoph@bartelmus.de>
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+@@ -59,9 +61,9 @@
+ */
+ static char *irda_print(unsigned char *ptr)
+ {
+- static char buff[8];
++ static char buff[12];
+
+- sprintf(&buff[strlen(buff)], "%02x:%02x:%02x:%02x", ptr[3], ptr[2],
++ snprintf(buff, 12, "%02x:%02x:%02x:%02x", ptr[3], ptr[2],
+ ptr[1], ptr[0]);
+
+ return (buff);
+--- net-tools-1.60.orig/lib/x25_sr.c
++++ net-tools-1.60/lib/x25_sr.c
+@@ -67,7 +67,7 @@
+ strcpy(target, *args++);
+
+ /* Clean out the x25_route_struct structure. */
+- memset((char *) &rt, 0, sizeof(struct x25_route_struct));
++ memset((char *) &rt, 0, sizeof(rt));
+
+
+ if ((sigdigits = x25_aftype.input(0, target, (struct sockaddr *)&sx25)) < 0) {
+@@ -76,8 +76,8 @@
+ }
+ rt.sigdigits=sigdigits;
+
+- /* x25_route_struct.address isn't type struct sockaddr_x25, Why? */
+- memcpy(&rt.address, &sx25.sx25_addr, sizeof(x25_address));
++ /* this works with 2.4 and 2.6 headers struct x25_address vs. typedef */
++ memcpy(&rt.address, &sx25.sx25_addr, sizeof(sx25.sx25_addr));
+
+ while (*args) {
+ if (!strcmp(*args,"device") || !strcmp(*args,"dev")) {
+--- net-tools-1.60.orig/lib/eui64.c
++++ net-tools-1.60/lib/eui64.c
+@@ -0,0 +1,155 @@
++/*
++ * lib/eui64.c This file contains support for generic EUI-64 hw addressing
++ *
++ * Version: $Id: eui64.c,v 1.1 2001/11/12 02:12:05 ecki Exp $
++ *
++ * Author: Daniel Stodden <stodden@in.tum.de>
++ * Copyright 2001 Daniel Stodden
++ *
++ * blueprinted from ether.c
++ * Copyright 1993 MicroWalt Corporation
++ *
++ * 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.
++ */
++#include "config.h"
++
++#if HAVE_HWEUI64
++
++#include <sys/types.h>
++#include <sys/ioctl.h>
++#include <sys/socket.h>
++#include <net/if_arp.h>
++#include <stdlib.h>
++#include <stdio.h>
++#include <ctype.h>
++#include <errno.h>
++#include <fcntl.h>
++#include <string.h>
++#include <termios.h>
++#include <unistd.h>
++#include "net-support.h"
++#include "pathnames.h"
++#include "intl.h"
++
++/*
++ * EUI-64 constants
++ */
++
++#define EUI64_ALEN 8
++
++#ifndef ARPHRD_EUI64
++#define ARPHRD_EUI64 27
++#warning "ARPHRD_EUI64 not defined in <net/if_arp.h>. Using private value 27"
++#endif
++
++struct hwtype eui64_hwtype;
++
++/* Display an EUI-64 address in readable format. */
++static char *pr_eui64( unsigned char *ptr )
++{
++ static char buff[64];
++
++ snprintf(buff, sizeof(buff), "%02X:%02X:%02X:%02X:%02X:%02X:%02X:%02X",
++ (ptr[0] & 0377), (ptr[1] & 0377), (ptr[2] & 0377), (ptr[3] & 0377),
++ (ptr[4] & 0377), (ptr[5] & 0377), (ptr[6] & 0377), (ptr[7] & 0377)
++ );
++ return (buff);
++}
++
++/* Start the PPP encapsulation on the file descriptor. */
++static int in_eui64( char *bufp, struct sockaddr *sap )
++{
++ unsigned char *ptr;
++ char c, *orig;
++ int i;
++ unsigned val;
++
++ sap->sa_family = eui64_hwtype.type;
++ ptr = sap->sa_data;
++
++ i = 0;
++ orig = bufp;
++
++ while ((*bufp != '\0') && (i < EUI64_ALEN)) {
++ val = 0;
++ c = *bufp++;
++ if (isdigit(c))
++ val = c - '0';
++ else if (c >= 'a' && c <= 'f')
++ val = c - 'a' + 10;
++ else if (c >= 'A' && c <= 'F')
++ val = c - 'A' + 10;
++ else {
++#ifdef DEBUG
++ fprintf( stderr, _("in_eui64(%s): invalid eui64 address!\n"),
++ orig );
++#endif
++ errno = EINVAL;
++ return (-1);
++ }
++
++ val <<= 4;
++ c = *bufp;
++ if (isdigit(c))
++ val |= c - '0';
++ else if (c >= 'a' && c <= 'f')
++ val |= c - 'a' + 10;
++ else if (c >= 'A' && c <= 'F')
++ val |= c - 'A' + 10;
++ else if (c == ':' || c == 0)
++ val >>= 4;
++ else {
++#ifdef DEBUG
++ fprintf( stderr, _("in_eui64(%s): invalid eui64 address!\n"),
++ orig );
++#endif
++ errno = EINVAL;
++ return (-1);
++ }
++
++ if (c != 0)
++ bufp++;
++
++ *ptr++ = (unsigned char) (val & 0377);
++ i++;
++
++ /* We might get a semicolon here - not required. */
++ if (*bufp == ':') {
++ if (i == EUI64_ALEN) {
++#ifdef DEBUG
++ fprintf(stderr, _("in_eui64(%s): trailing : ignored!\n"),
++ orig)
++#endif
++ ; /* nothing */
++ }
++ bufp++;
++ }
++ }
++
++ /* That's it. Any trailing junk? */
++ if ((i == EUI64_ALEN) && (*bufp != '\0')) {
++#ifdef DEBUG
++ fprintf(stderr, _("in_eui64(%s): trailing junk!\n"), orig);
++ errno = EINVAL;
++ return (-1);
++#endif
++ }
++#ifdef DEBUG
++ fprintf(stderr, "in_eui64(%s): %s\n", orig, pr_eui64(sap->sa_data));
++#endif
++
++ return (0);
++}
++
++struct hwtype eui64_hwtype =
++{
++ "eui64", NULL, /*"EUI-64 addressing", */ ARPHRD_EUI64, EUI64_ALEN,
++ pr_eui64, in_eui64, NULL, 0
++};
++
++
++#endif /* HAVE_EUI64 */
+--- net-tools-1.60.orig/rarp.c
++++ net-tools-1.60/rarp.c
+@@ -3,7 +3,7 @@
+ * that maintains the kernel's RARP cache. It is derived
+ * from Fred N. van Kempen's arp command.
+ *
+- * Version: $Id: rarp.c,v 1.6 2001/04/08 17:05:05 pb Exp $
++ * Version: $Id: rarp.c,v 1.9 2007/12/02 02:19:52 ecki Exp $
+ *
+ * Usage: rarp -d hostname Delete entry
+ * rarp -s hostname ethernet_address Add entry
+@@ -40,6 +40,7 @@
+ #include "net-support.h"
+ #include "version.h"
+ #include "pathnames.h"
++#include "proc.h"
+
+ static char no_rarp_message[] = N_("This kernel does not support RARP.\n");
+
+@@ -154,7 +155,7 @@
+
+ static int display_cache(void)
+ {
+- FILE *fd = fopen(_PATH_PROCNET_RARP, "r");
++ FILE *fd = proc_fopen(_PATH_PROCNET_RARP);
+ char buffer[256];
+ if (fd == NULL) {
+ if (errno == ENOENT)
+--- net-tools-1.60.orig/slattach.c
++++ net-tools-1.60/slattach.c
+@@ -73,7 +73,7 @@
+
+
+ const char *Release = RELEASE,
+- *Version = "@(#) slattach 1.21 (1999-11-21)",
++ *Version = "$Id: slattach.c,v 1.11 2005/12/04 05:15:36 ecki Exp $",
+ *Signature = "net-tools, Fred N. van Kempen et al.";
+
+
+@@ -115,7 +115,7 @@
+ int opt_k = 0; /* "keepalive" value */
+ #endif
+ int opt_l = 0; /* "lock it" flag */
+-int opt_L = 0; /* clocal flag */
++int opt_L = 0; /* 3-wire mode flag */
+ int opt_m = 0; /* "set RAW mode" flag */
+ int opt_n = 0; /* "set No Mesg" flag */
+ #ifdef SIOCSOUTFILL
+@@ -342,9 +342,11 @@
+ tty->c_oflag = (0); /* output flags */
+ tty->c_lflag = (0); /* local flags */
+ speed = (tty->c_cflag & CBAUD); /* save current speed */
+- tty->c_cflag = (CRTSCTS | HUPCL | CREAD); /* UART flags */
++ tty->c_cflag = (HUPCL | CREAD); /* UART flags */
+ if (opt_L)
+ tty->c_cflag |= CLOCAL;
++ else
++ tty->c_cflag |= CRTSCTS;
+ tty->c_cflag |= speed; /* restore speed */
+ return(0);
+ }
+--- net-tools-1.60.orig/include/util-ank.h
++++ net-tools-1.60/include/util-ank.h
+@@ -75,6 +75,6 @@
+ extern int do_class(int argc, char **argv);
+ extern int do_filter(int argc, char **argv);
+
+-extern const char *format_host(int af, void *addr, __u8 *abuf, int alen);
++extern const char *format_host(int af, void *addr, char *abuf, int alen);
+
+ #endif /* __UTILS_H__ */
+--- net-tools-1.60.orig/include/interface.h
++++ net-tools-1.60/include/interface.h
+@@ -64,13 +64,17 @@
+ extern int if_fetch(struct interface *ife);
+
+ extern int for_all_interfaces(int (*)(struct interface *, void *), void *);
+-extern int free_interface_list(void);
++extern int if_cache_free(void);
+ extern struct interface *lookup_interface(char *name);
+ extern int if_readlist(void);
+
+ extern int do_if_fetch(struct interface *ife);
+ extern int do_if_print(struct interface *ife, void *cookie);
+
++extern int procnetdev_version(char *buf);
++extern int get_dev_fields(char *bp, struct interface *ife);
++extern char * get_name(char *name, char *p);
++
+ extern void ife_print(struct interface *ptr);
+
+ extern int ife_short;
+--- net-tools-1.60.orig/include/mii.h
++++ net-tools-1.60/include/mii.h
+@@ -6,11 +6,14 @@
+ * Copyright (C) 2000 David A. Hinds -- dhinds@pcmcia.sourceforge.org
+ */
+
+-#ifndef _LINUX_MII_H
+-#define _LINUX_MII_H
++#ifndef _NETTOOL_MII_H
++#define _NETTOOLS_MII_H
++
++#include <linux/sockios.h>
+
+ /* network interface ioctl's for MII commands */
+ #ifndef SIOCGMIIPHY
++#warning "SIOCGMIIPHY is not defined by your kernel source"
+ #define SIOCGMIIPHY (SIOCDEVPRIVATE) /* Read from current PHY */
+ #define SIOCGMIIREG (SIOCDEVPRIVATE+1) /* Read any PHY register */
+ #define SIOCSMIIREG (SIOCDEVPRIVATE+2) /* Write any PHY register */
+@@ -38,6 +41,7 @@
+ #define MII_BMCR_RESTART 0x0200
+ #define MII_BMCR_DUPLEX 0x0100
+ #define MII_BMCR_COLTEST 0x0080
++#define MII_BMCR_SPEED1000 0x0040
+
+ /* Basic Mode Status Register */
+ #define MII_BMSR 0x01
+@@ -83,4 +87,17 @@
+ #define MII_ANER_PAGE_RX 0x0002
+ #define MII_ANER_LP_AN_ABLE 0x0001
+
+-#endif /* _LINUX_MII_H */
++#define MII_CTRL1000 0x09
++#define MII_BMCR2_1000FULL 0x0200
++#define MII_BMCR2_1000HALF 0x0100
++
++#define MII_STAT1000 0x0a
++#define MII_LPA2_1000LOCALOK 0x2000
++#define MII_LPA2_1000REMRXOK 0x1000
++#define MII_LPA2_1000FULL 0x0800
++#define MII_LPA2_1000HALF 0x0400
++
++/* Last register we need for show_basic_mii() */
++#define MII_BASIC_MAX (MII_STAT1000+1)
++
++#endif /* _NETTOOLS_MII_H */
+--- net-tools-1.60.orig/man/en_US/rarp.8
++++ net-tools-1.60/man/en_US/rarp.8
+@@ -61,8 +61,8 @@
+ Create a RARP address mapping entry for host
+ .B hostname
+ with hardware address set to
+-.B hw_addr
+-. The format of the hardware address is dependent on the hardware
++.BR hw_addr .
++The format of the hardware address is dependent on the hardware
+ class, but for most classes one can assume that the usual presentation
+ can be used. For the Ethernet class, this is 6 bytes in hexadecimal,
+ separated by colons.
+--- net-tools-1.60.orig/man/en_US/arp.8
++++ net-tools-1.60/man/en_US/arp.8
+@@ -1,56 +1,111 @@
+-.TH ARP 8 "5 Jan 1999" "net-tools" "Linux Programmer's Manual"
++.TH ARP 8 "2007-12-01" "net-tools" "Linux Programmer's Manual"
+ .SH NAME
+ arp \- manipulate the system ARP cache
+ .SH SYNOPSIS
+ .B arp
+ .RB [ \-vn ]
+-.RB [ "\-H type" ]
+-.RB [ "-i if" ]
+-.B -a
+-.RB [ hostname ]
++.RB [ \-H
++.IR type ]
++.RB [ \-i
++.IR if ]
++.RB [ \-a ]
++.RI [ hostname ]
+ .PP
+ .B arp
+ .RB [ \-v ]
+-.RB [ "\-i if" ]
+-.B "\-d hostname"
++.RB [ \-i
++.IR if ]
++.B \-d
++.I hostname
+ .RB [ pub ]
+ .PP
+ .B arp
+ .RB [ \-v ]
+-.RB [ "\-H type" ]
+-.RB [ "\-i if" ]
+-.B -s hostname hw_addr
++.RB [ \-H
++.IR type ]
++.RB [ \-i
++.IR if ]
++.B \-s
++.I hostname hw_addr
+ .RB [ temp ]
+ .PP
+ .B arp
+ .RB [ \-v ]
+-.RB [ "\-H type" ]
+-.RB [ "\-i if" ]
+-.B -s hostname hw_addr
+-.RB [ "netmask nm" ]
++.RB [ \-H
++.IR type ]
++.RB [ \-i
++.IR if ]
++.B \-s
++.I hostname hw_addr
++.RB [ netmask
++.IR nm ]
+ .B pub
+ .PP
+ .B arp
+ .RB [ \-v ]
+-.RB [ "\-H type" ]
+-.RB [ "\-i if" ]
+-.B -Ds hostname ifa
+-.RB [ "netmask nm" ]
++.RB [ \-H
++.IR type ]
++.RB [ \-i
++.IR if ]
++.B \-Ds
++.I hostname
++.I ifname
++.RB [ netmask
++.IR nm ]
+ .B pub
+ .PP
+ .B arp
+ .RB [ \-vnD ]
+-.RB [ "\-H type" ]
+-.RB [ "-i if" ]
+-.B -f [filename]
++.RB [ \-H
++.IR type ]
++.RB [ \-i
++.IR if ]
++.B \-f
++.RI [ filename ]
+
+ .SH DESCRIPTION
+ .B Arp
+-manipulates the kernel's ARP cache in various ways. The primary options
+-are clearing an address mapping entry and manually setting up one. For
+-debugging purposes, the
++manipulates or displays the kernel's IPv4 network neighbour cache. It can add
++entries to the table, delete one or display the current content.
++
++.B ARP
++stands for Address Resolution Protocol, which is used to find the media
++access control address of a network neighbour for a given IPv4 Address.
++.SH MODES
+ .B arp
+-program also allows a complete dump of the ARP cache.
++with no mode specifier will print the current content of the table. It is
++possible to limit the number of entries printed, by specifying an hardware
++address type, interface name or host address.
++
++.B arp -d
++.I address
++will delete a ARP table entry. Root or netadmin priveledge is required to do
++this. The entry is found by IP address. If a hostname is given, it will be
++resolved before looking up the entry in the ARP table.
++
++.B arp -s
++.I address hw_addr
++is used to set up a new table entry. The format of the
++.I hw_addr
++parameter is dependent on the hardware class, but for most classes one can
++assume that the usual presentation can be used. For the Ethernet class,
++this is 6 bytes in hexadecimal, separated by colons. When adding proxy arp
++entries (that is those with the
++.BR pub lish
++flag set a
++.B netmask
++may be specified to proxy arp for entire subnets. This is not good
++practice, but is supported by older kernels because it can be
++useful. If the
++.B temp
++flag is not supplied entries will be permanent stored into the ARP
++cache. To simplyfy setting up entries for one of your own network interfaces, you can use the
++.B "arp \-Ds"
++.I address ifname
++form. In that case the hardware address is taken from the interface with the
++specified name.
++
++.br
+ .SH OPTIONS
+ .TP
+ .B "\-v, \-\-verbose"
+@@ -76,21 +131,13 @@
+ and
+ .RB "NET/ROM (" netrom ")."
+ .TP
+-.B "\-a [hostname], \-\-display [hostname]"
+-Shows the entries of the specified hosts. If the
+-.B hostname
+-parameter is not used,
+-.B all
+-entries will be displayed.
+-.TP
+-.B "\-d hostname, \-\-delete hostname"
+-Remove any entry for the specified host. This can be used if the
+-indicated host is brought down, for example.
++.B \-a
++Use alternate BSD style output format (with no fixed columns).
+ .TP
+ .B "\-D, \-\-use-device"
+-Use the interface
+-.BR ifa "'s"
+-hardware address.
++Instead of a hw_addr, the given argument is the name of an interface.
++.B arp
++will use the MAC address of that interface for the table entry. This is usually the best option to set up a proxy ARP entry to yourself.
+ .TP
+ .B "\-i If, \-\-device If"
+ Select an interface. When dumping the ARP cache only entries matching
+@@ -106,33 +153,15 @@
+ .B NOTE:
+ This has to be different from the interface to which the IP
+ datagrams will be routed.
+-.TP
+-.B "\-s hostname hw_addr, \-\-set hostname"
+-Manually create an ARP address mapping entry for host
+-.B hostname
+-with hardware address set to
+-.B hw_addr
+-. The format of the hardware address is dependent on the hardware
+-class, but for most classes one can assume that the usual presentation
+-can be used. For the Ethernet class, this is 6 bytes in hexadecimal,
+-separated by colons. When adding proxy arp entries (that is those with
+-the
+-.BR pub lish
+-flag set a
+-.B netmask
+-may be specified to proxy arp for entire subnets. This is not good
+-practice, but is supported by older kernels because it can be
+-useful. If the
+-.B temp
+-flag is not supplied entries will be permanent stored into the ARP
+-cache.
+-.br
+ .B NOTE:
+ As of kernel 2.2.0 it is no longer possible to set an ARP entry for an
+ entire subnet. Linux instead does automagic proxy arp when a route
+ exists and it is forwarding. See
+ .BR arp (7)
+-for details.
++for details. Also the
++.B dontpub
++option which is available for delete and set operations cannot be
++used with 2.4 and newer kernels.
+ .TP
+ .B "\-f filename, \-\-file filename"
+ Similar to the
+@@ -167,8 +196,18 @@
+ and published entries have the
+ .B P
+ flag.
++.SH EXSAMPLES
++.B /usr/sbin/arp -i eth0 -Ds 10.0.0.2 eth1 pub
++
++This will answer ARP requests for 10.0.0.2 on eth0 with the MAC address for
++eth1.
++
++.B /usr/sbin/arp -i eth1 -d 10.0.0.1
++
++Delete the ARP table entry for 10.0.0.1 on interface eth1. This will match
++published proxy ARP entries and permanent entries.
+ .SH FILES
+-.I /proc/net/arp,
++.I /proc/net/arp
+ .br
+ .I /etc/networks
+ .br
+@@ -178,5 +217,4 @@
+ .SH SEE ALSO
+ rarp(8), route(8), ifconfig(8), netstat(8)
+ .SH AUTHORS
+-Fred N. van Kempen, <waltje@uwalt.nl.mugnet.org> with a lot of improvements
+-from net-tools Maintainer Bernd Eckenfels <net-tools@lina.inka.de>.
++Fred N. van Kempen <waltje@uwalt.nl.mugnet.org>, Bernd Eckenfels <net-tools@lina.inka.de>.
+--- net-tools-1.60.orig/man/en_US/ethers.5
++++ net-tools-1.60/man/en_US/ethers.5
+@@ -1,4 +1,4 @@
+-.TH ETHERS 5 "April 26th, 1996" "" "File formats"
++.TH ETHERS 5 "May 15th, 2005" "" "File formats"
+ .SH NAME \"{{{roff}}}\"{{{
+ ethers \- Ethernet address to IP number database
+ .\"}}}
+@@ -10,8 +10,8 @@
+ \fIEthernet-address\fP \fIIP-number\fP
+ .RE
+ .sp
+-The two items are separated by any number of SPACE and/or TAB char
+-acters. A \fB#\fP at the beginning of a line starts a comment
++The two items are separated by any number of SPACE and/or TAB characters.
++A \fB#\fP at the beginning of a line starts a comment
+ which extends to the end of the line. The \fIEthernet-address\fP is
+ written as
+ .IR x : x : x : x : x : x ,
+--- net-tools-1.60.orig/man/en_US/ifconfig.8
++++ net-tools-1.60/man/en_US/ifconfig.8
+@@ -1,10 +1,10 @@
+-.TH IFCONFIG 8 "14 August 2000" "net-tools" "Linux Programmer's Manual"
++.TH IFCONFIG 8 "2007-12-02" "net-tools" "Linux Programmer's Manual"
+ .SH NAME
+ ifconfig \- configure a network interface
+ .SH SYNOPSIS
+-.B "ifconfig [interface]"
++.B "ifconfig [-v] [-a] [-s] [interface]"
+ .br
+-.B "ifconfig interface [aftype] options | address ..."
++.B "ifconfig [-v] interface [aftype] options | address ..."
+ .SH DESCRIPTION
+ .B Ifconfig
+ is used to configure the kernel-resident network interfaces. It is
+@@ -41,11 +41,27 @@
+ (AMPR Packet radio).
+ .SH OPTIONS
+ .TP
++.B -a
++display all interfaces which are currently available, even if down
++.TP
++.B -s
++display a short list (like netstat -i)
++.TP
++.B -v
++be more verbose for some error conditions
++.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.
++for the first Ethernet interface. If your kernel supports alias interfaces,
++you can specify them with
++.B eth0:0
++for the first alias of eth0. You can use them to assign a second address. To
++delete an alias interface use
++.BR "ifconfig eth0:0 down" .
++Note: for every scope (i.e. same net with address/netmask combination) all
++aliases are deleted, if you delete the first (primary).
+ .TP
+ .B up
+ This flag causes the interface to be activated. It is implicitly
+@@ -173,11 +189,20 @@
+ 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)
++.BR ipchains (8)
++or
++.BR iptables (8)
+ command.
+ .LP
+-Interrupt problems with Ethernet device drivers fail with EAGAIN. See
+-.I http://cesdis.gsfc.nasa.gov/linux/misc/irq-conflict.html
++Since net-tools 1.60-4 ifconfig is printing byte counters and human readable
++counters with IEC 60027-2 units. So 1 KiB are 2^10 byte. Note, the numbers
++are truncated to one decimal (which can by quite a large error if you
++consider 0.1 PiB is 112.589.990.684.262 bytes :)
++.LP
++Interrupt problems with Ethernet device drivers fail with EAGAIN
++.I (SIOCSIIFLAGS: Resource temporarily unavailable)
++it is most likely a interrupt conflict. See
++.I http://www.scyld.com/expert/irq-conflict.html
+ for more information.
+ .SH FILES
+ .I /proc/net/socket
+@@ -189,7 +214,9 @@
+ 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)
++route(8), netstat(8), arp(8), rarp(8), ipchains(8), iptables(8), ifup(8), interfaces(5).
++.br
++http://physics.nist.gov/cuu/Units/binary.html - Prefixes for binary multiples
+ .SH AUTHORS
+ Fred N. van Kempen, <waltje@uwalt.nl.mugnet.org>
+ .br
+@@ -198,3 +225,5 @@
+ Phil Blundell, <Philip.Blundell@pobox.com>
+ .br
+ Andi Kleen
++.br
++Bernd Eckenfels, <net-tools@lina.inka.de>
+--- net-tools-1.60.orig/man/en_US/netstat.8
++++ net-tools-1.60/man/en_US/netstat.8
+@@ -8,7 +8,7 @@
+ .\" Modified: Tuan Hoang tqhoang@bigfoot.com
+ .\"
+ .\"
+-.TH NETSTAT 8 "19 December 2000" "net-tools" "Linux Programmer's Manual"
++.TH NETSTAT 8 "2007-12-02" "net-tools" "Linux Programmer's Manual"
+
+ .SH NAME
+ netstat \- Print network connections, routing tables, interface statistics, masquerade connections, and multicast memberships
+@@ -23,7 +23,7 @@
+ .RB [ \-\-listening | \-l ]
+ .RB [ \-\-all | \-a ]
+ .RB [ \-\-numeric | \-n ]
+-.RB [ \-\-numeric-hosts ] [ \-\-numeric-ports ] [ \-\-numeric-ports ]
++.RB [ \-\-numeric-hosts "] [" \-\-numeric-ports "] [" \-\-numeric-users ]
+ .RB [ \-\-symbolic | \-N ]
+ .RB [ \-\-extend | \-e [ \-\-extend | \-e] ]
+ .RB [ \-\-timers | \-o ]
+@@ -37,31 +37,30 @@
+ .RB [ \-\-extend | \-e [ \-\-extend | \-e] ]
+ .RB [ \-\-verbose | \-v ]
+ .RB [ \-\-numeric | \-n ]
+-.RB [ \-\-numeric-hosts ] [ \-\-numeric-ports ] [ \-\-numeric-ports ]
++.RB [ \-\-numeric-hosts "] [" \-\-numeric-ports "] [" \-\-numeric-users ]
+ .RB [ \-\-continuous | \-c]
+ .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 [ \-\-numeric-hosts "] [" \-\-numeric-ports "] [" \-\-numeric-users ]
+ .RB [ \-\-continuous | \-c]
+ .P
+ .B netstat
+ .RB { \-\-groups | \-g }
+ .RB [ \-\-numeric | \-n ]
+-.RB [ \-\-numeric-hosts ] [ \-\-numeric-ports ] [ \-\-numeric-ports ]
++.RB [ \-\-numeric-hosts "] [" \-\-numeric-ports "] [" \-\-numeric-users ]
+ .RB [ \-\-continuous | \-c]
+ .P
+ .B netstat
+ .RB { \-\-masquerade | \-M }
+ .RB [ \-\-extend | \-e ]
+ .RB [ \-\-numeric | \-n ]
+-.RB [ \-\-numeric-hosts ] [ \-\-numeric-ports ] [ \-\-numeric-ports ]
++.RB [ \-\-numeric-hosts "] [" \-\-numeric-ports "] [" \-\-numeric-users ]
+ .RB [ \-\-continuous | \-c]
+ .P
+ .B netstat
+@@ -78,6 +77,8 @@
+ .P
+ .IR address_family_options :
+ .PP
++.RB [ -4 ]
++.RB [ -6 ]
+ .RB [ \-\-protocol= { inet , unix , ipx , ax25 , netrom , ddp }[, ...] ]
+ .RB [ \-\-unix | \-x ]
+ .RB [ \-\-inet | \-\-ip ]
+@@ -98,12 +99,17 @@
+ address families, then the active sockets of all configured address
+ families will be printed.
+ .SS "\-\-route , \-r"
+-Display the kernel routing tables.
++Display the kernel routing tables. See the description in
++.BR route (8)
++for details.
++.B netstat -r
++and
++.B route -e
++produce the same output.
+ .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 "\-\-interfaces, \-i"
++Display a table of all network interfaces.
+ .SS "\-\-masquerade , \-M"
+ Display a list of masqueraded connections.
+ .SS "\-\-statistics , \-s"
+@@ -165,12 +171,11 @@
+ .SS "\-a, \-\-all"
+ Show both listening and non-listening sockets. With the
+ .B --interfaces
+-option, show interfaces that are not marked
++option, show interfaces that are not up
+ .SS "\-F"
+ Print routing information from the FIB. (This is the default.)
+ .SS "\-C"
+ Print routing information from the route cache.
+-.IR UP .
+ .P
+ .SH OUTPUT
+ .P
+@@ -221,7 +226,7 @@
+ The socket is waiting after close to handle packets still in the network.
+ .TP
+ .I
+-CLOSED
++CLOSE
+ The socket is not being used.
+ .TP
+ .I
+@@ -438,7 +443,7 @@
+ .P
+ .SH AUTHORS
+ The netstat user interface was written by Fred Baumgarten
+-<dc6iq@insu1.etec.uni-karlsruhe.de> the man page basically
++<dc6iq@insu1.etec.uni-karlsruhe.de>, the man page basically
+ by Matt Welsh <mdw@tc.cornell.edu>. It was updated by
+ Alan Cox <Alan.Cox@linux.org> but could do with a bit more
+ work. It was updated again by Tuan Hoang
+--- net-tools-1.60.orig/man/en_US/route.8
++++ net-tools-1.60/man/en_US/route.8
+@@ -1,4 +1,4 @@
+-.TH ROUTE 8 "2 January 2000" "net-tools" "Linux Programmer's Manual"
++.TH ROUTE 8 "2007-12-02" "net-tools" "Linux Programmer's Manual"
+ .SH NAME
+ route \- show / manipulate the IP routing table
+ .SH SYNOPSIS
+@@ -141,7 +141,7 @@
+ 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
++discovery occurred. 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
+@@ -179,17 +179,20 @@
+
+ .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
++.B route add -net 127.0.0.0 netmask 255.0.0.0 dev lo
++adds the normal loopback entry, using netmask 255.0.0.0 and associated with the
++"lo" device (assuming this device was previously 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.
++adds a route to the local network 192.56.76.x via
++"eth0". The word "dev" can be omitted here.
++
++.TP
++.B route del default
++deletes the current default route, which is labeled "default" or 0.0.0.0
++in the destination field of the current routing table.
+
+ .TP
+ .B route add default gw mango-gw
+@@ -289,7 +292,7 @@
+ Interface to which packets for this route will be sent.
+ .TP
+ .B MSS
+-Default maximum segement size for TCP connections over this route.
++Default maximum segment size for TCP connections over this route.
+ .TP
+ .B Window
+ Default window size for TCP connections over this route.
+@@ -323,4 +326,4 @@
+ 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@pobox.com>.
++Currently maintained by Phil Blundell <Philip.Blundell@pobox.com> and Bernd Eckenfels <net-tools@lina.inka.de>.
+--- net-tools-1.60.orig/man/en_US/slattach.8
++++ net-tools-1.60/man/en_US/slattach.8
+@@ -1,4 +1,4 @@
+-.TH SLATTACH 8 "12 Feb 1994" "" ""
++.TH SLATTACH 8 "10 Oct 2006" "" ""
+ .SH NAME
+ slattach \- attach a network interface to a serial line
+ .SH SYNOPSIS
+@@ -24,6 +24,7 @@
+ .B "[-h]"
+ Exit when the carrier is lost. This works on both /dev/tty and /dev/cua
+ devices by directly monitoring the carrier status every 15 seconds.
++.TP
+ .B "[-v]"
+ Enable verbose output. Useful in shell scripts.
+ .TP
+@@ -41,7 +42,7 @@
+ .TP
+ .B "[-e]"
+ Exit right after initializing device, instead of waiting for the
+-line to hangup.
++line to hang up.
+ .TP
+ .B "[-L]"
+ Enable 3 wire operation. The terminal is moved into CLOCAL mode,
+@@ -50,8 +51,8 @@
+ .B "[-p proto]"
+ Set a specific kind of protocol to use on the line. The default
+ is set to
+-.B "cslip"
+-, i.e. compressed SLIP. Other possible values are
++.BR "cslip" ,
++i.e. compressed SLIP. Other possible values are
+ .B "slip"
+ (normal SLIP),
+ .B "adaptive"
+--- net-tools-1.60.orig/man/en_US/mii-tool.8
++++ net-tools-1.60/man/en_US/mii-tool.8
+@@ -1,7 +1,7 @@
+ .\" Copyright (C) 2000 David A. Hinds -- dhinds@pcmcia.sourceforge.org
+ .\" mii-tool.8 1.5 2000/04/25 22:58:19
+ .\"
+-.TH MII-TOOL 8 "2000/04/25 22:58:19" "net-tools"
++.TH MII-TOOL 8 "2004/03/28 23:30:00" "net-tools"
+
+ .SH NAME
+ mii-tool \- view, manipulate media-independent interface status
+@@ -72,7 +72,24 @@
+ commas. Valid media are \fB100baseT4\fR, \fB100baseTx-FD\fR,
+ \fB100baseTx-HD\fR, \fB10baseT-FD\fR, and \fB10baseT-HD\fR.
+
++.SH DIAGNOSTICS
++.TP
++SIOCGMIIPHY on 'eth?' failed: Invalid argument
++If the interface is not running (up), kernel will refuse to report its link state.
++.TP
++SIOCGMIIPHY on 'eth?' failed: Operation not permitted
++Most kernels restrict access to root.
++.TP
++SIOCGMIIPHY on 'eth?' failed: No such device
++This error is shown, if the kernel does not know about the named device.
++.TP
++SIOCGMIIPHY on 'eth?' failed: Operation not supported
++The interface in question does not support MII queries. Most likely, it does not have
++MII transceivers, at all.
++
+ .SH AUTHORS
+ David Hinds \- dhinds@pcmcia.sourceforge.org
+ .br
+ Donald Becker \- becker@scyld.com
++.br
++Bernd Eckenfels \- ecki@debian.org
+--- net-tools-1.60.orig/man/fr_FR/arp.8
++++ net-tools-1.60/man/fr_FR/arp.8
+@@ -140,8 +140,8 @@
+ Similaire l'option
+ .B \-s
+ , mais cette fois les informations d'adresses sont prises dans le fichier
+-.B nom_de_fichier
+-. Ceci peut tre utilis si les entres ARP configurer sont
++.BR nom_de_fichier .
++Ceci peut tre utilis si les entres ARP configurer sont
+ nombreuses. Le nom du fichier de donnes est trs souvent nomm
+ .B /etc/ethers
+ , mais ce n'est pas officiel.
+@@ -160,8 +160,8 @@
+ .LP
+ Chaque entre complte se trouvant dans le cache ARP est marque de
+ l'indicateur
+-.B C
+-. Les entres permanentes sont marques de l'indicateur
++.BR C .
++Les entres permanentes sont marques de l'indicateur
+ .B M
+ et les entres 'pub' ont l'indicateur
+ .B P
+--- net-tools-1.60.orig/man/fr_FR/hostname.1
++++ net-tools-1.60/man/fr_FR/hostname.1
+@@ -84,8 +84,8 @@
+ .LP
+ .B hostname
+ fournit le nom du systme tel qu'il est retourn par la fonction
+-.BR getdomainname (2)
+-. Ceci est connu comme nom de domaine YP/NIS du systme.
++.BR getdomainname (2).
++Ceci est connu comme nom de domaine YP/NIS du systme.
+
+
+ .LP
+@@ -145,8 +145,8 @@
+ .LP
+ La faon dont vous pouvez le changer dpend de la configuration
+ (habituellement dans
+-.IR /etc/host.conf )
+-. Si le fichier 'hosts' est analys avant d'interroger le DNS ou
++.IR /etc/host.conf ).
++Si le fichier 'hosts' est analys avant d'interroger le DNS ou
+ NIS) vous pouvez le changer dans le fichier
+ .IR /etc/hosts .
+
+--- net-tools-1.60.orig/man/fr_FR/ifconfig.8
++++ net-tools-1.60/man/fr_FR/ifconfig.8
+@@ -1,4 +1,4 @@
+-.TH IFCONFIG 8 "4 August 1997" "net-tools" "Linux Programmer's Manual"
++.TH IFCONFIG 8 "2007-12-02" "net-tools" "Linux Programmer's Manual"
+ .SH NOM
+ ifconfig \- configure une interface rseau
+ .SH SYNOPSIS
+@@ -60,14 +60,14 @@
+ .TP
+ .B "[\-]promisc"
+ Valide ou invalide le mode
+-.B promiscuous
+-. S'il est valid, tous les paquets circulant sur le rseau
++.BR promiscuous .
++S'il est valid, tous les paquets circulant sur le rseau
+ seront reus sur cette interface.
+ .TP
+ .B "[\-]allmulti"
+ Valide ou invalide le fonctionnement de l'interface en mode
+-.B all-multicast
+-. S'il est valid, tous les paquets multicast circulant sur le rseau
++.BR all-multicast .
++S'il est valid, tous les paquets multicast circulant sur le rseau
+ seront reus sur cette interface.
+ .TP
+ .B "metric N"
+@@ -196,7 +196,7 @@
+ Mme si les adresses appletalk DDP et IPX peuvent tre affiches,
+ elles ne peuvent tre modifies avec cette commande.
+ .SH VOIR AUSSI
+-route(8), netstat(8), arp(8), rarp(8), ipchains(8)
++route(8), netstat(8), arp(8), rarp(8), ipchains(8), iptables(8), ifup(8), interfaces(5).
+ .SH AUTHORS
+ Fred N. van Kempen, <waltje@uwalt.nl.mugnet.org>
+ .br
+--- net-tools-1.60.orig/man/fr_FR/netstat.8
++++ net-tools-1.60/man/fr_FR/netstat.8
+@@ -8,7 +8,7 @@
+ .\" Modified: Tuan Hoang tuan@optimus.mitre.org
+ .\"
+ .\"
+-.TH NETSTAT 8 "25 Fv 1999" "net-tools" "Linux Programmer's Manual"
++.TH NETSTAT 8 "2007-12-02" "net-tools" "Linux Programmer's Manual"
+
+ .SH NAME
+ netstat \- Affiche les connexions rseau, les tables de routage, les
+@@ -106,7 +106,7 @@
+ .BR route (8)
+ pour plus de dtails.
+
+-.SS "\-i, \-\-interface \fIiface\fI"
++.SS "\-i, \-\-interfaces \fIiface\fI"
+ Si vous utilisez l'option
+ .BR -i ", " --interfaces
+ , une table de toutes (ou de l'interface
+@@ -118,8 +118,8 @@
+ .BR ifconfig (8).
+ .B "netstat -ei"
+ affiche une table ou une seule entre d'interface comme la commande
+-.B ifconfig
+-. Avec le paramtre
++.BR ifconfig .
++Avec le paramtre
+ .B -a
+ , vous pouvez inclure les interfaces qui ne sont pas configures (c.a.d qui
+ n'ont pas l'indicateur
+@@ -249,7 +249,7 @@
+ avant d'entreprendre la fermeture.
+ .TP
+ .I
+-CLOSED
++CLOSE
+ La socket n'est pas utilise.
+ .TP
+ .I
+@@ -409,8 +409,7 @@
+ Depuis la version 2.2 du noyau, netstat -i n'affiche plus les statistiques
+ des interfaces alias. Pour obtenir les compteurs par interface alias, vous
+ devez dfinir des rgles spcifiques l'aide de la commande
+-.BR ipchains(8)
+-.
++.BR ipchains (8).
+
+ .SH FICHIERS
+ .ta
+--- net-tools-1.60.orig/man/fr_FR/rarp.8
++++ net-tools-1.60/man/fr_FR/rarp.8
+@@ -55,8 +55,8 @@
+ Cre manuellement une correspondance d'adresses RARP pour l'hte
+ .B nom_d_hte
+ avec l'adresse matrielle
+-.B adr_materielle
+-. Le format de l'adresse matrielle est dpendant du matriel,
++.BR adr_materielle .
++Le format de l'adresse matrielle est dpendant du matriel,
+ mais pour la plupart on peut considrer que la prsentation classique
+ peut tre utilise. Pour la classe Ethernet, c'est 6 octets en hexadcimal,
+ spars par des double-points.
+--- net-tools-1.60.orig/man/fr_FR/route.8
++++ net-tools-1.60/man/fr_FR/route.8
+@@ -1,4 +1,4 @@
+-.TH ROUTE 8 "8 Aot 1997" "net-tools" "Linux Programmer's Manual"
++.TH ROUTE 8 "2007-12-02" "net-tools" "Linux Programmer's Manual"
+ .SH NAME
+ route \- affiche / manipule la table de routage IP
+ .SH SYNOPSIS
+@@ -330,6 +330,6 @@
+ la gestion des fentres et MSS pour Linux 1.1.22. Le support de irtt
+ et la fusion avec netstat ont t raliss par Bernd Eckenfels.
+ .SH AUTEUR
+-Maintenu par Phil Blundell <Philip.Blundell@pobox.com>.
++Maintenu par Phil Blundell <Philip.Blundell@pobox.com> et Bernd Eckenfels <net-tools@lina.inka.de>.
+ .SH TRADUCTION
+-Jean-Michel VANSTEENE (vanstee@worldnet.fr)
++Jean-Michel VANSTEENE <vanstee@worldnet.fr>
+--- net-tools-1.60.orig/man/pt_BR/ifconfig.8
++++ net-tools-1.60/man/pt_BR/ifconfig.8
+@@ -1,4 +1,4 @@
+-.TH IFCONFIG 8 "10 de fevereiro de 1996" "net-tools" "Manual do Programador Linux"
++.TH IFCONFIG 8 "2007-12-02" "net-tools" "Manual do Programador Linux"
+ .SH NOME
+ ifconfig \- configura uma interface de rede
+ .SH SINOPSE
+@@ -169,7 +169,7 @@
+ Os endereos appletalk DDP e IPX sero mostrados, mas no podem ser alterados
+ com este comando.
+ .SH VEJA TAMBM
+-route(8), netstat(8), arp(8), rarp(8), ipchains(8)
++route(8), netstat(8), arp(8), rarp(8), ipchains(8), iptables(8), ifup(8), interfaces(5).
+ .SH AUTORES
+ Fred N. van Kempen, <waltje@uwalt.nl.mugnet.org>
+ Alan Cox, <Alan.Cox@linux.org>
+--- net-tools-1.60.orig/man/pt_BR/netstat.8
++++ net-tools-1.60/man/pt_BR/netstat.8
+@@ -8,7 +8,7 @@
+ .\" Traduzido para portugus por Arnaldo Carvalho de Melo <acme@conectiva.com.br>
+ .\" Revisado por Jorge Luiz Godoy Filho <jorge@bestway.com.br>
+ .\"
+-.TH NETSTAT 8 "19 de maio de 1997" "net-tools" "Manual do Programador Linux"
++.TH NETSTAT 8 "2007-12-02" "net-tools" "Manual do Programador Linux"
+
+ .SH NOME
+ netstat \- Mostra conexes de rede, tabelas de roteamento, estatsticas de interface e conexes
+@@ -97,7 +97,7 @@
+ .BR route (8)
+ para maiores detalhes.
+
+-.SS "\-i, \-\-interface \fIiface\fI"
++.SS "\-i, \-\-interfaces \fIiface\fI"
+ Se voc usar a opo
+ .BR -i ", " --interfaces
+ , uma tabela de todas (ou da
+--- net-tools-1.60.orig/man/pt_BR/rarp.8
++++ net-tools-1.60/man/pt_BR/rarp.8
+@@ -50,8 +50,8 @@
+ Cria um mapeamento de endereos RARP para a mquina
+ .B mquina
+ com endereo de hardware configurado para
+-.B endereo_hardware
+-. O formato do endereo de hardware depende da classe do hardware, mas
++.B endereo_hardware.
++O formato do endereo de hardware depende da classe do hardware, mas
+ para a maioria das classes voc pode assumir que a apresentao usual pode
+ ser usada. Para a classe Ethernet, so 6 bytes em hexadecimal, separados
+ por dois pontos (:).
+--- net-tools-1.60.orig/man/pt_BR/route.8
++++ net-tools-1.60/man/pt_BR/route.8
+@@ -1,4 +1,4 @@
+-.TH ROUTE 8 "27 Jan 1996" "net-tools" "Manual do Programador Linux"
++.TH ROUTE 8 "2007-12-02" "net-tools" "Manual do Programador Linux"
+ .SH NOME
+ route \- mostra / manipula a tabela de roteamento IP
+ .SH SINOPSE
+@@ -321,7 +321,7 @@
+ Linus Torvalds para a verso pl15. Alan Cox adicionou as opes para
+ mss e window no kernel 1.1.22. O suporte a irtt (compartilhado com o
+ netstat) foi feito por Bernd Eckenfels.
++.SH AUTHOR
++Currently maintained by Phil Blundell <Philip.Blundell@pobox.com> and Bernd Eckenfels <net-tools@lina.inka.de>.
+ .SH TRADUO
+ Arnaldo Carvalho de Melo <acme@conectiva.com.br> - 13/04/1998
+-.SH BUGS
+-nenhum :)
+--- net-tools-1.60.orig/man/de_DE/ifconfig.8
++++ net-tools-1.60/man/de_DE/ifconfig.8
+@@ -1,4 +1,4 @@
+-.TH IFCONFIG 8 "6. M\(:arz 1999" "net-tools" "Handbuch f\(:ur Linuxprogrammierer"
++.TH IFCONFIG 8 "2007-12-02" "net-tools" "Handbuch f\(:ur Linuxprogrammierer"
+ .SH NAME
+ ifconfig \- Konfiguration einer Netzwerkskarte
+ .SH SYNOPSIS
+@@ -193,7 +193,7 @@
+ W\(:ahrend AppleTalk DDP und IPX Adressen angezeigt werden, k\(:onnen sie mit
+ diesem Kommando nicht ge\(:andert werden.
+ .SH SIEHE AUCH
+-route(8), netstat(8), arp(8), rarp(8), ipchains(8)
++route(8), netstat(8), arp(8), rarp(8), ipchains(8), iptables(8), ifup(8), interfaces(5).
+ .SH AUTOREN
+ Fred N. van Kempen, <waltje@uwalt.nl.mugnet.org>
+ .br
+--- net-tools-1.60.orig/man/de_DE/route.8
++++ net-tools-1.60/man/de_DE/route.8
+@@ -1,4 +1,4 @@
+-.TH ROUTE 8 "6. M\(:arz 1999" "net-tools" "Handbuch f\(:ur Linuxprogrammierer"
++.TH ROUTE 8 "2007-12-02" "net-tools" "Handbuch f\(:ur Linuxprogrammierer"
+ .SH NAME
+ route \- Anzeigen der IP-Routen-Tabelle
+ .SH SYNOPSIS
+@@ -345,6 +345,6 @@
+ irtt beigesteuert und den Code mit dem von Netstat vereinigt.
+ .SH AUTOREN
+ .B Route
+-wird zur Zeit von Phil Blundel (Philip.Blundell@pobox.com) gewartet.
++wird zur Zeit von Phil Blundel <Philip.Blundell@pobox.com> und Bernd Eckenfels <net-tools@lina.inka.de> gewartet.
+ .SH \(:Ubersetzung
+ Ralf B\(:achle <ralf@gnu.org>
+--- net-tools-1.60.orig/man/de_DE/netstat.8
++++ net-tools-1.60/man/de_DE/netstat.8
+@@ -9,7 +9,7 @@
+ .\" Modified: Tuan Hoang tuan@optimus.mitre.org
+ .\"
+ .\"
+-.TH NETSTAT 8 "6. M\(:arz 1999" "net-tools" "Handbuch f\(:ur Linuxprogrammierer"
++.TH NETSTAT 8 "2007-12-02" "net-tools" "Handbuch f\(:ur Linuxprogrammierer"
+
+ .SH NAME
+ netstat \- Anzeige von Netzwerksverbindungen, Routentabellen, Schnittstellenstatistiken, maskierten Verbindungen, Netlink-Nachrichten und Mitgliedschaft in Multicastgruppen
+@@ -44,7 +44,6 @@
+ .B netstat
+ .RB [ \-veenpac ]
+ .RB { \-\-interfaces | \-i }
+-.RI [ Schnittstelle ]
+
+ .PP
+
+@@ -68,6 +67,8 @@
+ .SH BESCHREIBUNG
+ .B Netstat
+ zeigt Informationen des Linux Netzwerkssystems an.
++.PP
++.B Bitte beachten Sie, dass der Inhalt der deutschen man-page nicht vollst\(:andig ist, im Moment.
+
+ .SS "(no option)"
+ Ohne Optionen zeigt
+@@ -103,18 +104,17 @@
+ Wegen Details siehe
+ .BR route (8).
+
+-.SS "\-i, \-\-interface \fISchnittstelle\fI"
++.SS "\-i, \-\-interfaces"
+ Wird die
+ .BR -i ", " --interfaces
+-Option verwendet, so wird eine Tabelle aller (oder der angegebenen
+-.IR Schnittstellen )
++Option verwendet, so wird eine Tabelle aller Schnittstellen
+ ausgedruckt. Die Ausgabe ist im Format von
+ .B "ifconfig -e"
+ und wird in
+ .BR ifconfig (8)
+ beschrieben.
+ .B "netstat -ei"
+-druckt eine Tabelle oder einen Eintrag f\(:ur einen einzelnes Interface wie
++druckt eine Tabelle f\(:ur Interfaces wie
+ .BR ifconfig .
+ Die
+ .B -a
+@@ -182,7 +182,7 @@
+ und
+ .BR \-\-ddp.
+
+-.SS "\-c, \-\-continous"
++.SS "\-c, \-\-continuous"
+ Mit dieser Option wiederholt
+ .B netstat
+ im Sekundenabstand die Ausgabe, bis es abgebrochen wird.
+--- net-tools-1.60.orig/po/pt_BR.po
++++ net-tools-1.60/po/pt_BR.po
+@@ -10,275 +10,287 @@
+ msgid ""
+ msgstr ""
+ "Project-Id-Version: net-tools 1.54\n"
+-"POT-Creation-Date: 2000-02-14 02:31+0100\n"
++"Report-Msgid-Bugs-To: \n"
++"POT-Creation-Date: 2007-06-30 12:28+0900\n"
+ "PO-Revision-Date: 1999-03-01 02:38+0100\n"
+ "Last-Translator: Arnaldo Carvalho de Melo <acme@conectiva.com.br>\n"
+ "MIME-Version: 1.0\n"
+ "Content-Type: text/plain; charset=ISO8859-9\n"
+ "Content-Transfer-Encoding: 8bit\n"
+
+-#: ../arp.c:110 ../arp.c:269
++#: ../arp.c:112 ../arp.c:279
++#, c-format
+ msgid "arp: need host name\n"
+ msgstr "arp: preciso do nome da mquina\n"
+
+-#: ../arp.c:207 ../arp.c:221
++#: ../arp.c:215 ../arp.c:230
+ #, c-format
+ msgid "No ARP entry for %s\n"
+ msgstr "Nenhuma entrada ARP para %s\n"
+
+-#: ../arp.c:239
++#: ../arp.c:248
+ #, c-format
+ msgid "arp: cant get HW-Address for `%s': %s.\n"
+ msgstr "arp: no foi possvel obter o endereo de hardware para `%s': %s.\n"
+
+-#: ../arp.c:243
++#: ../arp.c:252
++#, c-format
+ msgid "arp: protocol type mismatch.\n"
+ msgstr "arp: erro no tipo do protocolo.\n"
+
+-#: ../arp.c:252
++#: ../arp.c:261
+ #, c-format
+ msgid "arp: device `%s' has HW address %s `%s'.\n"
+ msgstr "arp: o dispositivo `%s' tem endereo de hardware %s `%s'.\n"
+
+-#: ../arp.c:282
++#: ../arp.c:293
++#, c-format
+ msgid "arp: need hardware address\n"
+ msgstr "arp: preciso do endereo de hardware\n"
+
+-#: ../arp.c:290
++#: ../arp.c:301
++#, c-format
+ msgid "arp: invalid hardware address\n"
+ msgstr "arp: endereo invlido de hardware\n"
+
+-#: ../arp.c:387
++#: ../arp.c:398
+ #, c-format
+ msgid "arp: cannot open etherfile %s !\n"
+ msgstr "arp: no foi possvel abrir o arquivo etherfile %s!\n"
+
+-#: ../arp.c:403
++#: ../arp.c:414
+ #, c-format
+ msgid "arp: format error on line %u of etherfile %s !\n"
+ msgstr "arp: erro de formato na linha %u do arquivo etherfile %s!\n"
+
+-#: ../arp.c:416
++#: ../arp.c:427
+ #, c-format
+ msgid "arp: cannot set entry on line %u of etherfile %s !\n"
+ msgstr "arp: no foi possvel configurar a linha %u do arquivo etherfile %s!\n"
+
+-#: ../arp.c:437
+-msgid "Address\t\t\tHWtype\tHWaddress\t Flags Mask\t\t Iface\n"
++#: ../arp.c:448
++#, fuzzy, c-format
++msgid ""
++"Address HWtype HWaddress Flags Mask "
++"Iface\n"
+ msgstr "Endereo\t\tTipoHW\tEndereoHW\t Flags Mascara\t\t Iface\n"
+
+-#: ../arp.c:467
++#: ../arp.c:476
++#, fuzzy
++msgid "<from_interface>"
++msgstr "%s: interface desconhecida.\n"
++
++#: ../arp.c:478
+ msgid "(incomplete)"
+ msgstr "(incompleto)"
+
+-#: ../arp.c:484
++#: ../arp.c:495
+ #, c-format
+ msgid "%s (%s) at "
+ msgstr "%s (%s) em "
+
+-#: ../arp.c:490
++#: ../arp.c:501
++#, c-format
+ msgid "<incomplete> "
+ msgstr "<incompleto> "
+
+-#: ../arp.c:496
++#: ../arp.c:507
+ #, c-format
+ msgid "netmask %s "
+ msgstr "mascara %s "
+
+-#: ../arp.c:513
++#: ../arp.c:524
+ #, c-format
+ msgid "on %s\n"
+ msgstr "em %s\n"
+
+-#: ../arp.c:592
++#: ../arp.c:605
+ #, c-format
+ msgid "Entries: %d\tSkipped: %d\tFound: %d\n"
+ msgstr "Entradas: %d\tIgnorada: %d\tEncontrada: %d\n"
+
+-#: ../arp.c:596
++#: ../arp.c:609
+ #, c-format
+ msgid "%s (%s) -- no entry\n"
+ msgstr "%s (%s) -- nenhuma entrada\n"
+
+-#: ../arp.c:598
++#: ../arp.c:611
+ #, c-format
+ msgid "arp: in %d entries no match found.\n"
+ msgstr "arp: em %d entradas no foi encontrado.\n"
+
+-#: ../arp.c:613
++#: ../arp.c:626
++#, c-format
+ msgid ""
+ "Usage:\n"
+ " arp [-vn] [<HW>] [-i <if>] [-a] [<hostname>] <-Display ARP "
+ "cache\n"
+ msgstr ""
+ "Uso:\n"
+-" arp [-vn] [<HW>] [-i <if>] [-a] [<mquina>] <-Mostra cache "
+-"ARP\n"
++" arp [-vn] [<HW>] [-i <if>] [-a] [<mquina>] <-Mostra cache ARP\n"
+
+-#: ../arp.c:614
++#: ../arp.c:627
++#, fuzzy, c-format
+ msgid ""
+-" arp [-v] [-i <if>] -d <hostname> [pub][nopub] <-Delete ARP "
++" arp [-v] [-i <if>] -d <host> [pub] <-Delete ARP "
+ "entry\n"
+-msgstr ""
+-" arp [-v] [-i <if>] -d <mquina> [pub][nopub] <-Remove entrada "
+-"ARP\n"
++msgstr " arp [-v] [-i <if>] -d <mquina> [pub][nopub] <-Remove entrada ARP\n"
+
+-#: ../arp.c:615
++#: ../arp.c:628
++#, fuzzy, c-format
+ msgid ""
+-" arp [-vnD] [<HW>] [-i <if>] -f [<filename>] <-Add entry from "
++" arp [-vnD] [<HW>] [-i <if>] -f [<filename>] <-Add entry from "
+ "file\n"
+ msgstr ""
+ " arp [-vnD] [<HW>] [-i <if>] -f [<arquivo>] <-Inclui entrada de "
+ "arquivo\n"
+
+-#: ../arp.c:616
++#: ../arp.c:629
++#, fuzzy, c-format
+ msgid ""
+-" arp [-v] [<HW>] [-i <if>] -s <hostname> <hwaddr> [temp][nopub] <-Add "
++" arp [-v] [<HW>] [-i <if>] -s <host> <hwaddr> [temp] <-Add "
+ "entry\n"
+-msgstr ""
+-" arp [-v] [<HW>] [-i <if>] -s <mquina> <end_hw> [temp][nopub] <-Inc. "
+-"Entrada\n"
+-
+-#: ../arp.c:617
+-msgid ""
+-" arp [-v] [<HW>] [-i <if>] -s <hostname> <hwaddr> [netmask <nm>] pub "
+-"<-''-\n"
+-msgstr ""
+-" arp [-v] [<HW>] [-i <if>] -s <mquina> <end_hw> [netmask <nm>] pub "
+-"<-''-\n"
++msgstr " arp [-v] [<HW>] [-i <if>] -s <mquina> <end_hw> [temp][nopub] <-Inc. Entrada\n"
+
+-#: ../arp.c:618
++#: ../arp.c:630
++#, fuzzy, c-format
+ msgid ""
+-" arp [-v] [<HW>] [-i <if>] -Ds <hostname> <if> [netmask <nm>] pub "
++" arp [-v] [<HW>] [-i <if>] -Ds <host> <if> [netmask <nm>] pub "
+ "<-''-\n"
+ "\n"
+-msgstr ""
+-" arp [-v] [<HW>] [-i <if>] -Ds <mquina> <if> [netmask <nm>] pub "
+-"<-''-\n"
++msgstr " arp [-v] [<HW>] [-i <if>] -Ds <mquina> <if> [netmask <nm>] pub <-''-\n"
+
+-#: ../arp.c:620
++#: ../arp.c:632
++#, c-format
+ msgid ""
+ " -a display (all) hosts in alternative (BSD) "
+ "style\n"
+-msgstr ""
+-" -a mostra (todas as) mquinas no estilo alternativo "
+-"(BSD)\n"
++msgstr " -a mostra (todas as) mquinas no estilo alternativo (BSD)\n"
+
+-#: ../arp.c:621
++#: ../arp.c:633
++#, c-format
+ msgid " -s, --set set a new ARP entry\n"
+ msgstr " -s, --set define uma nova entrada ARP\n"
+
+-#: ../arp.c:622
++#: ../arp.c:634
++#, c-format
+ msgid " -d, --delete delete a specified entry\n"
+ msgstr " -d, --delete remove a entrada especificada\n"
+
+-#: ../arp.c:623 ../netstat.c:1436 ../route.c:85
++#: ../arp.c:635 ../netstat.c:1503 ../route.c:86
++#, c-format
+ msgid " -v, --verbose be verbose\n"
+ msgstr " -v, --verbose listagem detalhada\n"
+
+-#: ../arp.c:624 ../netstat.c:1437 ../route.c:86
+-msgid " -n, --numeric dont resolve names\n"
++#: ../arp.c:636 ../netstat.c:1504 ../route.c:87
++#, fuzzy, c-format
++msgid " -n, --numeric don't resolve names\n"
+ msgstr " -n, --numeric no resolve nomes\n"
+
+-#: ../arp.c:625
++#: ../arp.c:637
++#, c-format
+ msgid ""
+ " -i, --device specify network interface (e.g. eth0)\n"
+ msgstr ""
+ " -i, --device especifica a interface de rede (ex: eth0)\n"
+
+-#: ../arp.c:626
++#: ../arp.c:638
++#, c-format
+ msgid " -D, --use-device read <hwaddr> from given device\n"
+ msgstr " -D, --use-device leia <hwaddr> de um dispositivo\n"
+
+-#: ../arp.c:627
++#: ../arp.c:639
++#, c-format
+ msgid " -A, -p, --protocol specify protocol family\n"
+ msgstr " -A, -p, --protocol especifica a famlia de protocolos\n"
+
+-#: ../arp.c:628
++#: ../arp.c:640
++#, c-format
+ msgid ""
+-" -f, --file read new entries from file or from "
+-"/etc/ethers\n"
++" -f, --file read new entries from file or from /etc/"
++"ethers\n"
+ "\n"
+ msgstr ""
+-" -f, --file leia novas entradas de arquivo ou de "
+-"/etc/ethers\n"
++" -f, --file leia novas entradas de arquivo ou de /etc/"
++"ethers\n"
+ "\n"
+
+-#: ../arp.c:630 ../rarp.c:181
++#: ../arp.c:642 ../rarp.c:182
+ #, c-format
+ msgid " <HW>=Use '-H <hw>' to specify hardware address type. Default: %s\n"
+-msgstr ""
+-" <HW>=Use '-H <hw>' para especificar o tipo de endereo de hw. Default: %s\n"
++msgstr " <HW>=Use '-H <hw>' para especificar o tipo de endereo de hw. Default: %s\n"
+
+-#: ../arp.c:631 ../rarp.c:182
++#: ../arp.c:643 ../rarp.c:183
++#, c-format
+ msgid " List of possible hardware types (which support ARP):\n"
+ msgstr " Lista dos tipos de hardware possveis (que suportam ARP):\n"
+
+-#: ../arp.c:664
++#: ../arp.c:677 ../arp.c:762
+ #, c-format
+ msgid "%s: hardware type not supported!\n"
+ msgstr "%s: tipo de hardware no suportado!\n"
+
+-#: ../arp.c:668
++#: ../arp.c:681
+ #, c-format
+ msgid "%s: address family not supported!\n"
+ msgstr "%s: famlia de endereos no suportada!\n"
+
+-#: ../arp.c:703
++#: ../arp.c:716
++#, c-format
+ msgid "arp: -N not yet supported.\n"
+ msgstr "arp: -N ainda no suportada.\n"
+
+-#: ../arp.c:713
++#: ../arp.c:726
+ #, c-format
+ msgid "arp: %s: unknown address family.\n"
+ msgstr "arp: %s: famlia de endereos desconhecida.\n"
+
+-#: ../arp.c:722
++#: ../arp.c:735
+ #, c-format
+ msgid "arp: %s: unknown hardware type.\n"
+ msgstr "arp: %s: tipo de hardware desconhecido.\n"
+
+-#: ../arp.c:741
++#: ../arp.c:754
+ #, c-format
+ msgid "arp: %s: kernel only supports 'inet'.\n"
+ msgstr "arp: %s: kernel somente suporta net'.\n"
+
+-#: ../arp.c:746
++#: ../arp.c:767
+ #, c-format
+ msgid "arp: %s: hardware type without ARP support.\n"
+ msgstr "arp: %s: tipo de hardware sem suporte a ARP.\n"
+
+-#: ../hostname.c:69
++#: ../hostname.c:71
+ #, c-format
+ msgid "Setting nodename to `%s'\n"
+ msgstr "Configurando nome do n como `%s'\n"
+
+-#: ../hostname.c:74
++#: ../hostname.c:76
+ #, c-format
+ msgid "%s: you must be root to change the node name\n"
+ msgstr "%s: voc deve ser root para mudar o nome do n\n"
+
+-#: ../hostname.c:77 ../hostname.c:97 ../hostname.c:116
++#: ../hostname.c:79 ../hostname.c:99 ../hostname.c:117
+ #, c-format
+ msgid "%s: name too long\n"
+ msgstr "%s: nome muito longo\n"
+
+-#: ../hostname.c:89
++#: ../hostname.c:91
+ #, c-format
+ msgid "Setting hostname to `%s'\n"
+ msgstr "Configurando nome da mquina para `%s'\n"
+
+-#: ../hostname.c:94
++#: ../hostname.c:96
+ #, c-format
+ msgid "%s: you must be root to change the host name\n"
+ msgstr "%s: voc deve ser root para mudar o nome da mquina\n"
+
+-#: ../hostname.c:108
++#: ../hostname.c:109
+ #, c-format
+ msgid "Setting domainname to `%s'\n"
+ msgstr "Configurando nome do domnio para `%s'\n"
+
+-#: ../hostname.c:113
++#: ../hostname.c:114
+ #, c-format
+ msgid "%s: you must be root to change the domain name\n"
+ msgstr "%s: voc deve ser root para mudar o nome do domnio\n"
+@@ -303,37 +315,38 @@
+ msgid "Result: h_addr_list=`%s'\n"
+ msgstr "Resultado: h_addr_list=`%s'\n"
+
+-#: ../hostname.c:209
++#: ../hostname.c:208
+ #, c-format
+ msgid "%s: can't open `%s'\n"
+ msgstr "%s: no foi possvel abrir `%s'\n"
+
+-#: ../hostname.c:223
++#: ../hostname.c:222
++#, c-format
+ msgid "Usage: hostname [-v] {hostname|-F file} set hostname (from file)\n"
+-msgstr ""
+-"Uso: hostname [-v] {mquina|-F arquivo} configura nome da mquina (de "
+-"arquivo)\n"
++msgstr "Uso: hostname [-v] {mquina|-F arquivo} configura nome da mquina (de arquivo)\n"
+
+-#: ../hostname.c:224
++#: ../hostname.c:223
++#, c-format
+ msgid ""
+ " domainname [-v] {nisdomain|-F file} set NIS domainname (from file)\n"
+ msgstr ""
+ " domainname [-v] {domnio_nis|-F file} configura nome do domnio NIS\n"
+ " (a partir de arquivo)\n"
+
+-#: ../hostname.c:226
++#: ../hostname.c:225
++#, c-format
+ msgid ""
+ " nodename [-v] {nodename|-F file} set DECnet node name (from "
+ "file)\n"
+-msgstr ""
+-"Uso: hostname [-v] {mquina|-F arquivo} configura o nome do n DECnet (de "
+-"arquivo)\n"
++msgstr "Uso: hostname [-v] {mquina|-F arquivo} configura o nome do n DECnet (de arquivo)\n"
+
+-#: ../hostname.c:228
++#: ../hostname.c:227
++#, c-format
+ msgid " hostname [-v] [-d|-f|-s|-a|-i|-y|-n] display formatted name\n"
+ msgstr " hostname [-v] [-d|-f|-s|-a|-i|-y|-n] mostra nome formatado\n"
+
+-#: ../hostname.c:229
++#: ../hostname.c:228
++#, c-format
+ msgid ""
+ " hostname [-v] display hostname\n"
+ "\n"
+@@ -341,7 +354,8 @@
+ " hostname [-v] mostra nome da mquina\n"
+ "\n"
+
+-#: ../hostname.c:230
++#: ../hostname.c:229
++#, c-format
+ msgid ""
+ " hostname -V|--version|-h|--help print info and exit\n"
+ "\n"
+@@ -349,7 +363,8 @@
+ " hostname -V|--version|-h|--help mostra informaes e termina\n"
+ "\n"
+
+-#: ../hostname.c:231
++#: ../hostname.c:230
++#, c-format
+ msgid ""
+ " dnsdomainname=hostname -d, {yp,nis,}domainname=hostname -y\n"
+ "\n"
+@@ -357,35 +372,43 @@
+ " dnsdomainname=mquina -d, {yp,nis,}domainname=hostname -y\n"
+ "\n"
+
+-#: ../hostname.c:232
++#: ../hostname.c:231
++#, c-format
+ msgid " -s, --short short host name\n"
+ msgstr " -s, --short nome curto da mquina\n"
+
+-#: ../hostname.c:233
++#: ../hostname.c:232
++#, c-format
+ msgid " -a, --alias alias names\n"
+ msgstr " -a, --alias aliases para a mquina\n"
+
+-#: ../hostname.c:234
++#: ../hostname.c:233
++#, c-format
+ msgid " -i, --ip-address addresses for the hostname\n"
+ msgstr " -i, --ip-address endereos da mquina\n"
+
+-#: ../hostname.c:235
++#: ../hostname.c:234
++#, c-format
+ msgid " -f, --fqdn, --long long host name (FQDN)\n"
+ msgstr " -f, --fqdn, --long nome longo da mquina (FQDN)\n"
+
+-#: ../hostname.c:236
++#: ../hostname.c:235
++#, c-format
+ msgid " -d, --domain DNS domain name\n"
+ msgstr " -d, --domain nome do domnio DNS\n"
+
+-#: ../hostname.c:237
++#: ../hostname.c:236
++#, c-format
+ msgid " -y, --yp, --nis NIS/YP domainname\n"
+ msgstr " -y, --yp, --nis nome do domnio NIS/YP\n"
+
+-#: ../hostname.c:239
++#: ../hostname.c:238
++#, c-format
+ msgid " -n, --node DECnet node name\n"
+ msgstr " -n, --node nome do n DECnet\n"
+
+-#: ../hostname.c:241
++#: ../hostname.c:240
++#, c-format
+ msgid ""
+ " -F, --file read hostname or NIS domainname from given file\n"
+ "\n"
+@@ -393,7 +416,8 @@
+ " -F, --file leia o nome da mquina ou domnio NIS do arquivo\n"
+ "\n"
+
+-#: ../hostname.c:243
++#: ../hostname.c:242
++#, c-format
+ msgid ""
+ " This command can read or set the hostname or the NIS domainname. You can\n"
+ " also read the DNS domain or the FQDN (fully qualified domain name).\n"
+@@ -413,15 +437,16 @@
+ msgstr "%s: Voc no pode mudar o nome do domnio DNS com este comando\n"
+
+ #: ../hostname.c:339
++#, c-format
+ msgid ""
+ "\n"
+ "Unless you are using bind or NIS for host lookups you can change the DNS\n"
+ msgstr ""
+ "\n"
+-"A menos que esteja usando bind ou NIS para resoluo de nomes voc pode "
+-"mudar\n"
++"A menos que esteja usando bind ou NIS para resoluo de nomes voc pode mudar\n"
+
+ #: ../hostname.c:340
++#, c-format
+ msgid "domain name (which is part of the FQDN) in the /etc/hosts file.\n"
+ msgstr "o nome do domnio DNS (que parte do FQDN) no arquivo /etc/hosts.\n"
+
+@@ -440,552 +465,453 @@
+ msgid "getnodename()=`%s'\n"
+ msgstr "getnodename()=`%s'\n"
+
+-#: ../ifconfig.c:159
+-#, c-format
+-msgid "%-9.9s Link encap:%s "
+-msgstr "%-9.9s Encapsulamento do Link: %s "
++#: ../ifconfig.c:107
++#, fuzzy, c-format
++msgid ""
++"Iface MTU Met RX-OK RX-ERR RX-DRP RX-OVR TX-OK TX-ERR TX-DRP TX-OVR "
++"Flg\n"
++msgstr "Iface MTU Met RX-OK RX-ERR RX-DRP RX-OVR TX-OK TX-ERR TX-DRP TX-OV Opes\n"
+
+-#: ../ifconfig.c:164
+-#, c-format
+-msgid "HWaddr %s "
+-msgstr "Endereo de HW %s "
++#: ../ifconfig.c:129 ../ifconfig.c:161
++#, fuzzy, c-format
++msgid "%s: ERROR while getting interface flags: %s\n"
++msgstr ""
++"%s: erro obtendo informaes da interface: %s\n"
++"\n"
+
+-#: ../ifconfig.c:167
++#: ../ifconfig.c:153 ../ifconfig.c:185 ../ifconfig.c:771 ../ifconfig.c:862
++#: ../ifconfig.c:973
+ #, c-format
+-msgid "Media:%s"
+-msgstr "Mdia:%s"
++msgid "No support for INET on this system.\n"
++msgstr "Este sistema no tem suporte a INET.\n"
+
+-#: ../ifconfig.c:169
+-msgid "(auto)"
+-msgstr "(auto)"
++#: ../ifconfig.c:193
++#, fuzzy, c-format
++msgid "%s: ERROR while testing interface flags: %s\n"
++msgstr ""
++"%s: erro obtendo informaes da interface: %s\n"
++"\n"
+
+-#: ../ifconfig.c:176
+-#, c-format
+-msgid " %s addr:%s "
+-msgstr " %s end.: %s "
++#: ../ifconfig.c:202
++#, fuzzy, c-format
++msgid ""
++"Usage:\n"
++" ifconfig [-a] [-v] [-s] <interface> [[<AF>] <address>]\n"
++msgstr ""
++"Uso:\n"
++" ifconfig [-a] [-i] [-v] <interface> [[<AF>] <endereo>]\n"
+
+-#: ../ifconfig.c:179
++#: ../ifconfig.c:204
+ #, c-format
+-msgid " P-t-P:%s "
+-msgstr " P-a-P:%s "
++msgid " [add <address>[/<prefixlen>]]\n"
++msgstr " [add <endereo>[/<tam_prefixo>]]\n"
+
+-#: ../ifconfig.c:182
++#: ../ifconfig.c:205
+ #, c-format
+-msgid " Bcast:%s "
+-msgstr " Bcast:%s "
++msgid " [del <address>[/<prefixlen>]]\n"
++msgstr " [del <endereo>[/<tam_prefixo>]]\n"
+
+-#: ../ifconfig.c:184
++#: ../ifconfig.c:206
+ #, c-format
+-msgid " Mask:%s\n"
+-msgstr " Masc:%s\n"
++msgid " [[-]broadcast [<address>]] [[-]pointopoint [<address>]]\n"
++msgstr " [[-]broadcast [<endereo>]] [[-]pointopoint [<endereo>]]\n"
+
+-#: ../ifconfig.c:201
++#: ../ifconfig.c:207
+ #, c-format
+-msgid " inet6 addr: %s/%d"
+-msgstr " endereo inet6: %s/%d"
+-
+-#: ../ifconfig.c:203
+-msgid " Scope:"
+-msgstr " Escopo:"
+-
+-#: ../ifconfig.c:206
+-msgid "Global"
+-msgstr "Global"
++msgid " [netmask <address>] [dstaddr <address>] [tunnel <address>]\n"
++msgstr " [netmask <endereo>] [dstaddr <endereo>] [tunnel <endereo>]\n"
+
+-#: ../ifconfig.c:209
+-msgid "Link"
+-msgstr "Link"
++#: ../ifconfig.c:210
++#, c-format
++msgid " [outfill <NN>] [keepalive <NN>]\n"
++msgstr " [outfill <NN>] [keepalive <NN>]\n"
+
+ #: ../ifconfig.c:212
+-msgid "Site"
+-msgstr "Site"
+-
+-#: ../ifconfig.c:215
+-msgid "Compat"
+-msgstr "Compat"
+-
+-#: ../ifconfig.c:218
+-msgid "Host"
+-msgstr "Mquina"
+-
+-#: ../ifconfig.c:221
+-msgid "Unknown"
+-msgstr "Desconhecido"
+-
+-#: ../ifconfig.c:236
+ #, c-format
+-msgid " IPX/Ethernet II addr:%s\n"
+-msgstr " Endereo IPX/Ethernet II:%s\n"
++msgid " [hw <HW> <address>] [metric <NN>] [mtu <NN>]\n"
++msgstr " [hw <HW> <endereo>] [metric <NN>] [mtu <NN>]\n"
+
+-#: ../ifconfig.c:239
++#: ../ifconfig.c:213
+ #, c-format
+-msgid " IPX/Ethernet SNAP addr:%s\n"
+-msgstr " Endereo IPX/Ethernet SNAP:%s\n"
++msgid " [[-]trailers] [[-]arp] [[-]allmulti]\n"
++msgstr " [[-]trailers] [[-]arp] [[-]allmulti]\n"
+
+-#: ../ifconfig.c:242
++#: ../ifconfig.c:214
+ #, c-format
+-msgid " IPX/Ethernet 802.2 addr:%s\n"
+-msgstr " Endereo IPX/Ethernet 802.2:%s\n"
++msgid " [multicast] [[-]promisc]\n"
++msgstr " [multicast] [[-]promisc]\n"
+
+-#: ../ifconfig.c:245
++#: ../ifconfig.c:215
+ #, c-format
+-msgid " IPX/Ethernet 802.3 addr:%s\n"
+-msgstr " Endereo IPX/Ethernet 802.3:%s\n"
++msgid " [mem_start <NN>] [io_addr <NN>] [irq <NN>] [media <type>]\n"
++msgstr " [mem_start <NN>] [io_addr <NN>] [irq <NN>] [media <tipo>]\n"
+
+-#: ../ifconfig.c:255
++#: ../ifconfig.c:217
+ #, c-format
+-msgid " EtherTalk Phase 2 addr:%s\n"
+-msgstr " Endereo EtherTalk fase 2:%s\n"
++msgid " [txqueuelen <NN>]\n"
++msgstr " [txqueuelen <NN>]\n"
+
+-#: ../ifconfig.c:264
++#: ../ifconfig.c:220
+ #, c-format
+-msgid " econet addr:%s\n"
+-msgstr " Endereo econet:%s\n"
+-
+-#: ../ifconfig.c:270
+-msgid "[NO FLAGS] "
+-msgstr "[NENHUMA FLAG] "
+-
+-#: ../ifconfig.c:272
+-msgid "UP "
+-msgstr "UP "
+-
+-#: ../ifconfig.c:274
+-msgid "BROADCAST "
+-msgstr "BROADCAST"
+-
+-#: ../ifconfig.c:276
+-msgid "DEBUG "
+-msgstr "DEBUG "
+-
+-#: ../ifconfig.c:278
+-msgid "LOOPBACK "
+-msgstr "LOOPBACK"
+-
+-#: ../ifconfig.c:280
+-msgid "POINTOPOINT "
+-msgstr "POINTOPOINT "
+-
+-#: ../ifconfig.c:282
+-msgid "NOTRAILERS "
+-msgstr "NOTRAILERS "
+-
+-#: ../ifconfig.c:284
+-msgid "RUNNING "
+-msgstr "RUNNING "
++msgid " [[-]dynamic]\n"
++msgstr " [[-]dynamic]\n"
+
+-#: ../ifconfig.c:286
+-msgid "NOARP "
+-msgstr "NOARP "
++#: ../ifconfig.c:222
++#, c-format
++msgid ""
++" [up|down] ...\n"
++"\n"
++msgstr ""
++" [up|down] ...\n"
++"\n"
+
+-#: ../ifconfig.c:288
+-msgid "PROMISC "
+-msgstr "PROMISC "
++#: ../ifconfig.c:224
++#, c-format
++msgid " <HW>=Hardware Type.\n"
++msgstr " <HW>=Tipo de Hardware.\n"
+
+-#: ../ifconfig.c:290
+-msgid "ALLMULTI "
+-msgstr "ALLMULTI "
++#: ../ifconfig.c:225
++#, c-format
++msgid " List of possible hardware types:\n"
++msgstr " Lista dos tipos possveis de hardware:\n"
+
+-#: ../ifconfig.c:292
+-msgid "SLAVE "
+-msgstr "SLAVE "
++#. 1 = ARPable
++#: ../ifconfig.c:227
++#, c-format
++msgid " <AF>=Address family. Default: %s\n"
++msgstr " <AF>=Famlia de endereos. Default: %s\n"
+
+-#: ../ifconfig.c:294
+-msgid "MASTER "
+-msgstr "MASTER "
++#: ../ifconfig.c:228
++#, c-format
++msgid " List of possible address families:\n"
++msgstr " Lista de famlias de endereos possveis:\n"
+
+-#: ../ifconfig.c:296
+-msgid "MULTICAST "
+-msgstr "MULTICAST "
++#: ../ifconfig.c:303
++#, c-format
++msgid "ifconfig: option `%s' not recognised.\n"
++msgstr ""
+
+-#: ../ifconfig.c:299
+-msgid "DYNAMIC "
+-msgstr "DYNAMIC "
++#: ../ifconfig.c:305 ../ifconfig.c:962
++#, c-format
++msgid "ifconfig: `--help' gives usage information.\n"
++msgstr ""
+
+-#: ../ifconfig.c:302
++#: ../ifconfig.c:380
+ #, c-format
+-msgid " MTU:%d Metric:%d"
+-msgstr " MTU:%d Mtrica:%d"
++msgid "Unknown media type.\n"
++msgstr "Tipo desconhecido de mdia.\n"
+
+-#: ../ifconfig.c:306
++#: ../ifconfig.c:417
+ #, c-format
+-msgid " Outfill:%d Keepalive:%d"
+-msgstr " Outfill:%d Keepalive:%d"
++msgid ""
++"Warning: Interface %s still in promisc mode... maybe other application is "
++"running?\n"
++msgstr ""
+
+-#: ../ifconfig.c:320
++#: ../ifconfig.c:429
+ #, c-format
+-msgid "RX packets:%lu errors:%lu dropped:%lu overruns:%lu frame:%lu\n"
+-msgstr "Pacotes RX:%lu erros:%lu descartados:%lu sobreposies:%lu frame:%lu\n"
++msgid "Warning: Interface %s still in MULTICAST mode.\n"
++msgstr ""
+
+-#: ../ifconfig.c:325
++#: ../ifconfig.c:441
+ #, c-format
+-msgid " compressed:%lu\n"
+-msgstr " compactados:%lu\n"
++msgid "Warning: Interface %s still in ALLMULTI mode.\n"
++msgstr ""
+
+-#: ../ifconfig.c:329
++#: ../ifconfig.c:465
+ #, c-format
+-msgid "TX packets:%lu errors:%lu dropped:%lu overruns:%lu carrier:%lu\n"
++msgid "Warning: Interface %s still in DYNAMIC mode.\n"
+ msgstr ""
+-"Pacotes TX:%lu erros:%lu descartados:%lu sobreposies:%lu portadora:%lu\n"
+
+-#: ../ifconfig.c:333
++#: ../ifconfig.c:523
+ #, c-format
+-msgid " collisions:%lu "
+-msgstr " colises:%lu "
++msgid "Warning: Interface %s still in BROADCAST mode.\n"
++msgstr ""
+
+-#: ../ifconfig.c:335
++#: ../ifconfig.c:652
+ #, c-format
+-msgid "compressed:%lu "
+-msgstr "compactados:%lu "
++msgid "Warning: Interface %s still in POINTOPOINT mode.\n"
++msgstr ""
+
+-#: ../ifconfig.c:337
++#: ../ifconfig.c:684
+ #, c-format
+-msgid "txqueuelen:%d "
+-msgstr "txqueuelen:%d "
+-
+-#: ../ifconfig.c:345
+-#, c-format
+-msgid "Interrupt:%d "
+-msgstr "IRQ:%d "
+-
+-#. Only print devices using it for
+-#. I/O maps
+-#: ../ifconfig.c:348
+-#, c-format
+-msgid "Base address:0x%x "
+-msgstr "Endereo de E/S:0x%x "
++msgid "hw address type `%s' has no handler to set address. failed.\n"
++msgstr ""
+
+-#: ../ifconfig.c:350
++#: ../ifconfig.c:693
+ #, c-format
+-msgid "Memory:%lx-%lx "
+-msgstr "Memria:%lx-%lx "
++msgid "%s: invalid %s address.\n"
++msgstr "%s: endereo %s invlido.\n"
+
+-#: ../ifconfig.c:353
++#: ../ifconfig.c:737 ../ifconfig.c:827 ../ifconfig.c:913
+ #, c-format
+-msgid "DMA chan:%x "
+-msgstr "Canal DMA:%x "
++msgid "No support for INET6 on this system.\n"
++msgstr "Este sistema no tem suporte a INET6.\n"
+
+-#: ../ifconfig.c:384 ../ifconfig.c:405
++#: ../ifconfig.c:780 ../ifconfig.c:871
+ #, c-format
+-msgid "%s: unknown interface: %s\n"
+-msgstr "%s: interface desconhecida: %s\n"
+-
+-#: ../ifconfig.c:421
+-msgid ""
+-"Usage:\n"
+-" ifconfig [-a] [-i] [-v] <interface> [[<AF>] <address>]\n"
+-msgstr ""
+-"Uso:\n"
+-" ifconfig [-a] [-i] [-v] <interface> [[<AF>] <endereo>]\n"
+-
+-#: ../ifconfig.c:425
+-msgid " [add <address>[/<prefixlen>]]\n"
+-msgstr " [add <endereo>[/<tam_prefixo>]]\n"
+-
+-#: ../ifconfig.c:427
+-msgid " [del <address>[/<prefixlen>]]\n"
+-msgstr " [del <endereo>[/<tam_prefixo>]]\n"
+-
+-#: ../ifconfig.c:432
+-msgid " [[-]broadcast [<address>]] [[-]pointopoint [<address>]]\n"
+-msgstr " [[-]broadcast [<endereo>]] [[-]pointopoint [<endereo>]]\n"
+-
+-#: ../ifconfig.c:433
+-msgid " [netmask <address>] [dstaddr <address>] [tunnel <address>]\n"
+-msgstr " [netmask <endereo>] [dstaddr <endereo>] [tunnel <endereo>]\n"
+-
+-#: ../ifconfig.c:436
+-msgid " [outfill <NN>] [keepalive <NN>]\n"
+-msgstr " [outfill <NN>] [keepalive <NN>]\n"
+-
+-#: ../ifconfig.c:438
+-msgid " [hw <HW> <address>] [metric <NN>] [mtu <NN>]\n"
+-msgstr " [hw <HW> <endereo>] [metric <NN>] [mtu <NN>]\n"
+-
+-#: ../ifconfig.c:439
+-msgid " [[-]trailers] [[-]arp] [[-]allmulti]\n"
+-msgstr " [[-]trailers] [[-]arp] [[-]allmulti]\n"
+-
+-#: ../ifconfig.c:440
+-msgid " [multicast] [[-]promisc]\n"
+-msgstr " [multicast] [[-]promisc]\n"
+-
+-#: ../ifconfig.c:441
+-msgid " [mem_start <NN>] [io_addr <NN>] [irq <NN>] [media <type>]\n"
+-msgstr " [mem_start <NN>] [io_addr <NN>] [irq <NN>] [media <tipo>]\n"
+-
+-#: ../ifconfig.c:443
+-msgid " [txqueuelen <NN>]\n"
+-msgstr " [txqueuelen <NN>]\n"
+-
+-#: ../ifconfig.c:446
+-msgid " [[-]dynamic]\n"
+-msgstr " [[-]dynamic]\n"
+-
+-#: ../ifconfig.c:448
+-msgid ""
+-" [up|down] ...\n"
+-"\n"
++msgid "Interface %s not initialized\n"
+ msgstr ""
+-" [up|down] ...\n"
+-"\n"
+-
+-#: ../ifconfig.c:450
+-msgid " <HW>=Hardware Type.\n"
+-msgstr " <HW>=Tipo de Hardware.\n"
+-
+-#: ../ifconfig.c:451
+-msgid " List of possible hardware types:\n"
+-msgstr " Lista dos tipos possveis de hardware:\n"
+-
+-#. 1 = ARPable
+-#: ../ifconfig.c:453
+-#, c-format
+-msgid " <AF>=Address family. Default: %s\n"
+-msgstr " <AF>=Famlia de endereos. Default: %s\n"
+-
+-#: ../ifconfig.c:454
+-msgid " List of possible address families:\n"
+-msgstr " Lista de famlias de endereos possveis:\n"
+-
+-#: ../ifconfig.c:593
+-msgid "Unknown media type.\n"
+-msgstr "Tipo desconhecido de mdia.\n"
+
+-#: ../ifconfig.c:881
+-#, c-format
+-msgid "%s: invalid %s address.\n"
++#: ../ifconfig.c:792 ../ifconfig.c:882
++#, fuzzy, c-format
++msgid "Bad address.\n"
+ msgstr "%s: endereo %s invlido.\n"
+
+-#: ../ifconfig.c:920 ../ifconfig.c:963 ../ifconfig.c:1011
+-msgid "No support for INET6 on this system.\n"
+-msgstr "Este sistema no tem suporte a INET6.\n"
+-
+-#: ../ifconfig.c:983
++#: ../ifconfig.c:885
++#, c-format
+ msgid "Address deletion not supported on this system.\n"
+ msgstr "Remoo de endereo no suportada neste sistema.\n"
+
+-#: ../ifconfig.c:1066
+-msgid "No support for INET on this system.\n"
+-msgstr "Este sistema no tem suporte a INET.\n"
++#: ../ifconfig.c:957
++#, fuzzy, c-format
++msgid "ifconfig: Cannot set address for this protocol family.\n"
++msgstr "No sei como configurar endereos para a famlia %d.\n"
+
+-#: ../ifconfig.c:1076
++#: ../ifconfig.c:983
++#, c-format
+ msgid "No support for ECONET on this system.\n"
+ msgstr "Este sistema no tem suporte a ECONET.\n"
+
+-#: ../ifconfig.c:1084
++#: ../ifconfig.c:991
+ #, c-format
+ msgid "Don't know how to set addresses for family %d.\n"
+ msgstr "No sei como configurar endereos para a famlia %d.\n"
+
+-#: ../netstat.c:383
++#: ../ifconfig.c:1021
++#, c-format
++msgid "WARNING: at least one error occured. (%d)\n"
++msgstr ""
++
++#: ../netstat.c:434
+ #, c-format
+ msgid ""
+ "(No info could be read for \"-p\": geteuid()=%d but you should be root.)\n"
+-msgstr ""
+-"(No foi possvel ler informaes para \"-p\": geteuid()=%d mas voc deve "
+-"ser root.)\n"
++msgstr "(No foi possvel ler informaes para \"-p\": geteuid()=%d mas voc deve ser root.)\n"
+
+-#: ../netstat.c:387
++#: ../netstat.c:438
++#, c-format
+ msgid ""
+ "(Not all processes could be identified, non-owned process info\n"
+ " will not be shown, you would have to be root to see it all.)\n"
+ msgstr ""
+-"(Nem todos os processos puderam ser identificados, informaes sobre "
+-"processos\n"
++"(Nem todos os processos puderam ser identificados, informaes sobre processos\n"
+ " de outrem no sero mostrados, voc deve ser root para v-los todos.)\n"
+
+-#: ../netstat.c:394 ../netstat.c:1089 ../netstat.c:1166
++#: ../netstat.c:445 ../netstat.c:1189 ../netstat.c:1266
+ msgid "LISTENING"
+ msgstr "OUVINDO"
+
+-#: ../netstat.c:395
++#: ../netstat.c:446
+ msgid "CONN SENT"
+ msgstr "CONN ENVIADO"
+
+-#: ../netstat.c:396 ../netstat.c:1168
++#: ../netstat.c:447 ../netstat.c:1268
+ msgid "DISC SENT"
+ msgstr "DISC ENVIADO"
+
+-#: ../netstat.c:397 ../netstat.c:464 ../netstat.c:809 ../netstat.c:1169
++#: ../netstat.c:448 ../netstat.c:515 ../netstat.c:904 ../netstat.c:1269
+ msgid "ESTABLISHED"
+ msgstr "ESTABELECIDA"
+
+-#: ../netstat.c:419
++#: ../netstat.c:470
++#, c-format
+ msgid "Active NET/ROM sockets\n"
+ msgstr "Ative sockets NET/ROM\n"
+
+-#: ../netstat.c:420
++#: ../netstat.c:471
++#, c-format
+ msgid ""
+-"User Dest Source Device State Vr/Vs Send-Q "
+-"Recv-Q\n"
+-msgstr ""
+-"Usurio Destino Origem Dispositivo Estado Vr/Vs Send-Q Recv-Q\n"
++"User Dest Source Device State Vr/Vs Send-Q Recv-"
++"Q\n"
++msgstr "Usurio Destino Origem Dispositivo Estado Vr/Vs Send-Q Recv-Q\n"
+
+-#: ../netstat.c:430 ../netstat.c:1208
++#: ../netstat.c:481 ../netstat.c:1308
+ #, c-format
+ msgid "Problem reading data from %s\n"
+ msgstr "Problemas lendo dados de %s\n"
+
+-#: ../netstat.c:465
++#: ../netstat.c:516
+ msgid "SYN_SENT"
+ msgstr "SYN_ENVIADO"
+
+-#: ../netstat.c:466
++#: ../netstat.c:517
+ msgid "SYN_RECV"
+ msgstr "SYN_RECEBIDO"
+
+-#: ../netstat.c:467
++#: ../netstat.c:518
+ msgid "FIN_WAIT1"
+ msgstr "ESPERA_FIN1"
+
+-#: ../netstat.c:468
++#: ../netstat.c:519
+ msgid "FIN_WAIT2"
+ msgstr "ESPERA_FIN2"
+
+-#: ../netstat.c:469
++#: ../netstat.c:520
+ msgid "TIME_WAIT"
+ msgstr "TIME_WAIT"
+
+-#: ../netstat.c:470
++#: ../netstat.c:521
+ msgid "CLOSE"
+ msgstr "FECHAR"
+
+-#: ../netstat.c:471
++#: ../netstat.c:522
+ msgid "CLOSE_WAIT"
+ msgstr "ESPERANDO_FECHAR"
+
+-#: ../netstat.c:472
++#: ../netstat.c:523
+ msgid "LAST_ACK"
+ msgstr "LTIMO_ACK"
+
+-#: ../netstat.c:473
++#: ../netstat.c:524
+ msgid "LISTEN"
+ msgstr "OUA"
+
+-#: ../netstat.c:474
++#: ../netstat.c:525
+ msgid "CLOSING"
+ msgstr "FECHANDO"
+
+-#: ../netstat.c:544
++#: ../netstat.c:596
+ #, c-format
+ msgid "warning, got bogus igmp6 line %d.\n"
+ msgstr "ateno, recebi linha igmp6 invlida %d.\n"
+
+-#: ../netstat.c:549 ../netstat.c:587 ../netstat.c:670 ../netstat.c:803
+-#: ../netstat.c:935 ../netstat.c:940
++#: ../netstat.c:601 ../netstat.c:639 ../netstat.c:763 ../netstat.c:898
++#: ../netstat.c:1032 ../netstat.c:1037
+ #, c-format
+ msgid "netstat: unsupported address family %d !\n"
+ msgstr "netstat: famlia de protocolos %d no suportada!\n"
+
+-#: ../netstat.c:562 ../netstat.c:567 ../netstat.c:575 ../netstat.c:582
++#: ../netstat.c:614 ../netstat.c:619 ../netstat.c:627 ../netstat.c:634
+ #, c-format
+ msgid "warning, got bogus igmp line %d.\n"
+ msgstr "ateno, recebi linha igmp invlida %d.\n"
+
+-#: ../netstat.c:666
++#: ../netstat.c:677
++#, fuzzy, c-format
++msgid "Active X.25 sockets\n"
++msgstr "Ativar sockets AX.25\n"
++
++#. IMHO, Vr/Vs is not very usefull --SF
++#: ../netstat.c:679
++#, fuzzy, c-format
++msgid ""
++"Dest Source Device LCI State Vr/Vs Send-Q Recv-"
++"Q\n"
++msgstr "Destino Origem Dispositivo Estado Vr/Vs Send-Q Recv-Q\n"
++
++#: ../netstat.c:759
++#, c-format
+ msgid "warning, got bogus tcp line.\n"
+ msgstr "ateno, recebi linha tcp invlida.\n"
+
+-#: ../netstat.c:704 ../netstat.c:855 ../netstat.c:975
++#: ../netstat.c:800 ../netstat.c:953 ../netstat.c:1075
+ #, c-format
+ msgid "off (0.00/%ld/%d)"
+ msgstr "desligado (0.00/%ld/%ld)"
+
+-#: ../netstat.c:708
++#: ../netstat.c:804
+ #, c-format
+ msgid "on (%2.2f/%ld/%d)"
+ msgstr "em (%2.2f/%ld/%d)"
+
+-#: ../netstat.c:713
++#: ../netstat.c:809
+ #, c-format
+ msgid "keepalive (%2.2f/%ld/%d)"
+ msgstr "keepalive (%2.2f/%ld/%d)"
+
+-#: ../netstat.c:718
++#: ../netstat.c:814
+ #, c-format
+ msgid "timewait (%2.2f/%ld/%d)"
+ msgstr "timewait (%2.2f/%ld/%d)"
+
+-#: ../netstat.c:723 ../netstat.c:864 ../netstat.c:985
++#: ../netstat.c:819 ../netstat.c:962 ../netstat.c:1085
+ #, c-format
+ msgid "unkn-%d (%2.2f/%ld/%d)"
+ msgstr "desconh.-%d (%2.2f/%ld)"
+
+-#: ../netstat.c:799
++#: ../netstat.c:894
++#, c-format
+ msgid "warning, got bogus udp line.\n"
+ msgstr "ateno, recebi linha udp invlida.\n"
+
+-#: ../netstat.c:817 ../netstat.c:1075 ../netstat.c:1108
++#: ../netstat.c:912 ../netstat.c:1175 ../netstat.c:1208
+ msgid "UNKNOWN"
+ msgstr "DESCONHECIDA"
+
+-#: ../netstat.c:860 ../netstat.c:980
++#: ../netstat.c:958 ../netstat.c:1080
+ #, c-format
+ msgid "on%d (%2.2f/%ld/%d)"
+ msgstr "ligado %d (%2.2f/%ld)"
+
+-#: ../netstat.c:949
++#: ../netstat.c:1046
++#, c-format
+ msgid "warning, got bogus raw line.\n"
+ msgstr "ateno, recebi linha raw invlida.\n"
+
+-#: ../netstat.c:1028
++#: ../netstat.c:1128
++#, c-format
+ msgid "warning, got bogus unix line.\n"
+ msgstr "ateno, recebi linha unix invlida.\n"
+
+-#: ../netstat.c:1055
++#: ../netstat.c:1155
+ msgid "STREAM"
+ msgstr "STREAM"
+
+-#: ../netstat.c:1059
++#: ../netstat.c:1159
+ msgid "DGRAM"
+ msgstr "DGRAM"
+
+-#: ../netstat.c:1063
++#: ../netstat.c:1163
+ msgid "RAW"
+ msgstr "RAW"
+
+-#: ../netstat.c:1067
++#: ../netstat.c:1167
+ msgid "RDM"
+ msgstr "RDM"
+
+-#: ../netstat.c:1071
++#: ../netstat.c:1171
+ msgid "SEQPACKET"
+ msgstr "SEQPACKET"
+
+-#: ../netstat.c:1080
++#: ../netstat.c:1180
+ msgid "FREE"
+ msgstr "LIVRE"
+
+-#: ../netstat.c:1096
++#: ../netstat.c:1196
+ msgid "CONNECTING"
+ msgstr "CONECTANDO"
+
+-#: ../netstat.c:1100
++#: ../netstat.c:1200
+ msgid "CONNECTED"
+ msgstr "CONECTADO"
+
+-#: ../netstat.c:1104
++#: ../netstat.c:1204
+ msgid "DISCONNECTING"
+ msgstr "DESCONECTANDO"
+
+-#: ../netstat.c:1135
++#: ../netstat.c:1235
++#, c-format
+ msgid "Active UNIX domain sockets "
+ msgstr "Domain sockets UNIX ativos "
+
+-#: ../netstat.c:1137 ../netstat.c:1666
++#: ../netstat.c:1237 ../netstat.c:1756
++#, c-format
+ msgid "(servers and established)"
+ msgstr "(servidores e estabelecidas)"
+
+-#: ../netstat.c:1140 ../netstat.c:1669
++#: ../netstat.c:1240 ../netstat.c:1759
++#, c-format
+ msgid "(only servers)"
+ msgstr "(sem os servidores)"
+
+-#: ../netstat.c:1142 ../netstat.c:1671
++#: ../netstat.c:1242 ../netstat.c:1761
++#, c-format
+ msgid "(w/o servers)"
+ msgstr "(sem os servidores)"
+
+-#: ../netstat.c:1145
++#: ../netstat.c:1245
++#, c-format
+ msgid ""
+ "\n"
+ "Proto RefCnt Flags Type State I-Node"
+@@ -993,114 +919,118 @@
+ "\n"
+ "Proto CntRef Flags Tipo Estado I-Node Rota"
+
+-#: ../netstat.c:1147
++#: ../netstat.c:1247
++#, c-format
+ msgid " Path\n"
+ msgstr " Caminho\n"
+
+-#: ../netstat.c:1167
++#: ../netstat.c:1267
+ msgid "SABM SENT"
+ msgstr "SABM ENVIADO"
+
+-#: ../netstat.c:1170
++#: ../netstat.c:1270
+ msgid "RECOVERY"
+ msgstr "RECUPERAO"
+
+-#: ../netstat.c:1184
++#: ../netstat.c:1284
++#, c-format
+ msgid "Active AX.25 sockets\n"
+ msgstr "Ativar sockets AX.25\n"
+
+-#: ../netstat.c:1185
++#: ../netstat.c:1285
++#, c-format
+ msgid "Dest Source Device State Vr/Vs Send-Q Recv-Q\n"
+ msgstr "Destino Origem Dispositivo Estado Vr/Vs Send-Q Recv-Q\n"
+
+-#: ../netstat.c:1228
++#: ../netstat.c:1328
+ #, c-format
+ msgid "problem reading data from %s\n"
+ msgstr "problemas lendo dados de %s\n"
+
+-#: ../netstat.c:1279
++#: ../netstat.c:1379
++#, c-format
+ msgid ""
+ "Active IPX sockets\n"
+ "Proto Recv-Q Send-Q Local Address Foreign Address "
+ "State"
+ msgstr ""
+ "Sockets IPX ativos\n"
+-"Proto Recv-Q Send-Q Endereo Local Endereo Remoto "
+-"Estado"
++"Proto Recv-Q Send-Q Endereo Local Endereo Remoto Estado"
+
+-#: ../netstat.c:1281
++#: ../netstat.c:1381
++#, c-format
+ msgid " User"
+ msgstr " Usurio"
+
+-#: ../netstat.c:1315
++#: ../netstat.c:1415
+ msgid "ESTAB"
+ msgstr "ESTAB"
+
+-#: ../netstat.c:1323
++#: ../netstat.c:1423
+ msgid "UNK."
+ msgstr "DESC."
+
+-#: ../netstat.c:1367
+-msgid " - no statistics available -"
+-msgstr " - estatsticas no disponveis -"
+-
+-#: ../netstat.c:1370
+-msgid "[NO FLAGS]"
+-msgstr "[SEM FLAGS]"
+-
+-#: ../netstat.c:1400
++#: ../netstat.c:1461
++#, c-format
+ msgid "Kernel Interface table\n"
+ msgstr "Tabela de Interfaces do Kernel\n"
+
+-#: ../netstat.c:1401
++#: ../netstat.c:1465
++#, fuzzy, c-format
+ msgid ""
+-"Iface MTU Met RX-OK RX-ERR RX-DRP RX-OVR TX-OK TX-ERR TX-DRP TX-OVR "
++"Iface MTU Met RX-OK RX-ERR RX-DRP RX-OVR TX-OK TX-ERR TX-DRP TX-OVR "
+ "Flg\n"
+-msgstr ""
+-"Iface MTU Met RX-OK RX-ERR RX-DRP RX-OVR TX-OK TX-ERR TX-DRP TX-OV "
+-"Opes\n"
++msgstr "Iface MTU Met RX-OK RX-ERR RX-DRP RX-OVR TX-OK TX-ERR TX-DRP TX-OV Opes\n"
+
+-#: ../netstat.c:1404
++#: ../netstat.c:1469
+ msgid "missing interface information"
+ msgstr "falta informao da interface"
+
+-#: ../netstat.c:1425
++#: ../netstat.c:1492
++#, c-format
+ msgid ""
+-"usage: netstat [-veenNcCF] [<Af>] -r netstat "
+-"{-V|--version|-h|--help}\n"
++"usage: netstat [-veenNcCF] [<Af>] -r netstat {-V|--version|-h|--"
++"help}\n"
+ msgstr ""
+ "uso: netstat [-veenNcCF] [<Af>] -r netstat {-V|--version|-h|--help}\n"
+
+-#: ../netstat.c:1426
++#: ../netstat.c:1493
++#, c-format
+ msgid " netstat [-vnNcaeol] [<Socket> ...]\n"
+ msgstr " netstat [-vnNcaeo] [<Socket>]\n"
+
+-#: ../netstat.c:1427
++#: ../netstat.c:1494
++#, c-format
+ msgid ""
+ " netstat { [-veenNac] -i | [-cnNe] -M | -s }\n"
+ "\n"
+ msgstr " netstat [-vnNcaeo] [<Socket>]\n"
+
+-#: ../netstat.c:1429
++#: ../netstat.c:1496
++#, c-format
+ msgid " -r, --route display routing table\n"
+ msgstr " -r, --route mostra tabela de roteamento\n"
+
+-#: ../netstat.c:1430
++#: ../netstat.c:1497
++#, c-format
+ msgid " -i, --interfaces display interface table\n"
+ msgstr " -i, --interfaces mostra tabela de interfaces\n"
+
+-#: ../netstat.c:1431
++#: ../netstat.c:1498
++#, c-format
+ msgid " -g, --groups display multicast group memberships\n"
+ msgstr ""
+ " -o, --timers mostra temporizadores\n"
+ "\n"
+
+-#: ../netstat.c:1432
++#: ../netstat.c:1499
++#, c-format
+ msgid ""
+ " -s, --statistics display networking statistics (like SNMP)\n"
+ msgstr " -i, --interfaces mostra tabela de interfaces\n"
+
+-#: ../netstat.c:1434
++#: ../netstat.c:1501
++#, c-format
+ msgid ""
+ " -M, --masquerade display masqueraded connections\n"
+ "\n"
+@@ -1108,19 +1038,38 @@
+ " -M, --masquerade mostra conexes mascaradas\n"
+ "\n"
+
+-#: ../netstat.c:1438 ../route.c:87
++#: ../netstat.c:1505
++#, fuzzy, c-format
++msgid " --numeric-hosts don't resolve host names\n"
++msgstr " -n, --numeric no resolve nomes\n"
++
++#: ../netstat.c:1506
++#, fuzzy, c-format
++msgid " --numeric-ports don't resolve port names\n"
++msgstr " -n, --numeric no resolve nomes\n"
++
++#: ../netstat.c:1507
++#, fuzzy, c-format
++msgid " --numeric-users don't resolve user names\n"
++msgstr " -n, --numeric no resolve nomes\n"
++
++#: ../netstat.c:1508
++#, c-format
+ msgid " -N, --symbolic resolve hardware names\n"
+ msgstr " -n, --numeric no resolve nomes\n"
+
+-#: ../netstat.c:1439 ../route.c:88
++#: ../netstat.c:1509 ../route.c:88
++#, c-format
+ msgid " -e, --extend display other/more information\n"
+ msgstr " -e, --extend mostra outras/mais informaes\n"
+
+-#: ../netstat.c:1440
++#: ../netstat.c:1510
++#, c-format
+ msgid " -p, --programs display PID/Program name for sockets\n"
+ msgstr " -r, --route mostra tabela de roteamento\n"
+
+-#: ../netstat.c:1441
++#: ../netstat.c:1511
++#, c-format
+ msgid ""
+ " -c, --continuous continuous listing\n"
+ "\n"
+@@ -1128,30 +1077,33 @@
+ " -c, --continuous listagem contnua\n"
+ "\n"
+
+-#: ../netstat.c:1442
++#: ../netstat.c:1512
++#, c-format
+ msgid " -l, --listening display listening server sockets\n"
+ msgstr " -L, --netlink mostra mensagens netlink do kernel\n"
+
+-#: ../netstat.c:1443
++#: ../netstat.c:1513
++#, c-format
+ msgid ""
+ " -a, --all, --listening display all sockets (default: connected)\n"
+ msgstr " -a, --all, --listening mostra tudo\n"
+
+-#: ../netstat.c:1444
++#: ../netstat.c:1514
++#, c-format
+ msgid " -o, --timers display timers\n"
+ msgstr ""
+ " -o, --timers mostra temporizadores\n"
+ "\n"
+
+-#: ../netstat.c:1445 ../route.c:89
++#: ../netstat.c:1515 ../route.c:89
++#, c-format
+ msgid ""
+ " -F, --fib display Forwarding Information Base "
+ "(default)\n"
+-msgstr ""
+-" -F, --fib mostra a Base de Informaes de Repasse "
+-"(default)\n"
++msgstr " -F, --fib mostra a Base de Informaes de Repasse (default)\n"
+
+-#: ../netstat.c:1446 ../route.c:90
++#: ../netstat.c:1516 ../route.c:90
++#, c-format
+ msgid ""
+ " -C, --cache display routing cache instead of FIB\n"
+ "\n"
+@@ -1159,136 +1111,145 @@
+ " -C, --cache mostra cache de roteamento no lugar da FIB\n"
+ "\n"
+
+-#: ../netstat.c:1448
++#: ../netstat.c:1518
++#, c-format
+ msgid ""
+-" <Socket>={-t|--tcp} {-u|--udp} {-w|--raw} {-x|--unix} --ax25 --ipx "
+-"--netrom\n"
++" <Socket>={-t|--tcp} {-u|--udp} {-w|--raw} {-x|--unix} --ax25 --ipx --"
++"netrom\n"
+ msgstr ""
+-" <Socket>={-t|--tcp} {-u|--udp} {-w|--raw} {-x|--unix} --ax25 --ipx "
+-"--netrom\n"
++" <Socket>={-t|--tcp} {-u|--udp} {-w|--raw} {-x|--unix} --ax25 --ipx --"
++"netrom\n"
+
+-#: ../netstat.c:1449 ../route.c:92
+-#, c-format
+-msgid " <AF>=Use '-A <af>' or '--<af>' Default: %s\n"
++#: ../netstat.c:1519
++#, fuzzy, c-format
++msgid " <AF>=Use '-6|-4' or '-A <af>' or '--<af>'; default: %s\n"
+ msgstr " <AF>=Use '-A <af>' ou [--<af>' Default: %s\n"
+
+-#: ../netstat.c:1450 ../route.c:93
++#: ../netstat.c:1520 ../route.c:93
++#, c-format
+ msgid " List of possible address families (which support routing):\n"
+-msgstr ""
+-" Lista das famlias de endereos possveis (que suportam roteamento):\n"
++msgstr " Lista das famlias de endereos possveis (que suportam roteamento):\n"
+
+-#: ../netstat.c:1663
++#: ../netstat.c:1753
++#, c-format
+ msgid "Active Internet connections "
+ msgstr "Conexes Internet Ativas "
+
+-#: ../netstat.c:1673
++#: ../netstat.c:1763
++#, c-format
+ msgid ""
+ "\n"
+-"Proto Recv-Q Send-Q Local Address Foreign Address State "
+-" "
++"Proto Recv-Q Send-Q Local Address Foreign Address "
++"State "
+ msgstr ""
+ "\n"
+-"Proto Recv-Q Send-Q Endereo Local Endereo Remoto Estado "
+-" "
++"Proto Recv-Q Send-Q Endereo Local Endereo Remoto Estado "
+
+-#: ../netstat.c:1675
++#: ../netstat.c:1765
++#, c-format
+ msgid " User Inode "
+ msgstr " Usurio "
+
+-#: ../netstat.c:1678
++#: ../netstat.c:1768
++#, c-format
+ msgid " Timer"
+ msgstr " Temporizador"
+
+-#: ../netstat.c:1708
++#: ../netstat.c:1798
++#, c-format
+ msgid "IPv4 Group Memberships\n"
+ msgstr "IPv4 Group Memberships\n"
+
+-#: ../netstat.c:1709
++#: ../netstat.c:1799
++#, c-format
+ msgid "Interface RefCnt Group\n"
+ msgstr "Interface CntRef Grupo\n"
+
+-#: ../rarp.c:43
++#: ../rarp.c:44
+ msgid "This kernel does not support RARP.\n"
+ msgstr "Este kernel no tem suporte a RARP.\n"
+
+-#: ../rarp.c:82
++#: ../rarp.c:83
+ #, c-format
+ msgid "no RARP entry for %s.\n"
+ msgstr "Sem entrada RARP para %s.\n"
+
+-#: ../rarp.c:95
++#: ../rarp.c:96
+ #, c-format
+ msgid "%s: bad hardware address\n"
+ msgstr "%s: endereo de hardware invlido\n"
+
+-#: ../rarp.c:127
++#: ../rarp.c:128
+ #, c-format
+ msgid "rarp: cannot open file %s:%s.\n"
+ msgstr "rarp: no foi possvel abrir o arquivo %s:%s.\n"
+
+-#: ../rarp.c:139
++#: ../rarp.c:140
+ #, c-format
+ msgid "rarp: format error at %s:%u\n"
+ msgstr "rarp: erro de formato em %s:%u\n"
+
+-#: ../rarp.c:143 ../rarp.c:287
++#: ../rarp.c:144 ../rarp.c:289
+ #, c-format
+ msgid "rarp: %s: unknown host\n"
+ msgstr "rarp: %s: mquina desconhecida\n"
+
+-#: ../rarp.c:146
++#: ../rarp.c:147
+ #, c-format
+ msgid "rarp: cannot set entry from %s:%u\n"
+ msgstr "rarp: no possvel incluir uma entrada para %s:%u\n"
+
+-#: ../rarp.c:175
++#: ../rarp.c:176
++#, c-format
+ msgid "Usage: rarp -a list entries in cache.\n"
+ msgstr ""
+ "Uso: rarp -a lista entradas no cache\n"
+
+-#: ../rarp.c:176
++#: ../rarp.c:177
++#, c-format
+ msgid " rarp -d <hostname> delete entry from cache.\n"
+-msgstr ""
+-" rarp -d mquina remove entrada do cache\n"
++msgstr " rarp -d mquina remove entrada do cache\n"
+
+-#: ../rarp.c:177
++#: ../rarp.c:178
++#, c-format
+ msgid " rarp [<HW>] -s <hostname> <hwaddr> add entry to cache.\n"
+-msgstr ""
+-" rarp [-t tipo-hw] -s mquina endereo-hw adiciona entrada ao cache\n"
++msgstr " rarp [-t tipo-hw] -s mquina endereo-hw adiciona entrada ao cache\n"
+
+-#: ../rarp.c:178
++#: ../rarp.c:179
++#, c-format
+ msgid ""
+ " rarp -f add entries from /etc/ethers.\n"
+ msgstr ""
+ " rarp -f adiciona entradas a partir do\n"
+ " arquivo ethers.\n"
+
+-#: ../rarp.c:179
++#: ../rarp.c:180
++#, c-format
+ msgid ""
+ " rarp -V display program version.\n"
+ "\n"
+-msgstr ""
+-" rarp -V mostra verso do programa\n"
++msgstr " rarp -V mostra verso do programa\n"
+
+-#: ../rarp.c:236
++#: ../rarp.c:238
+ #, c-format
+ msgid "%s: illegal option mix.\n"
+ msgstr "%s: mistura ilegal de opes.\n"
+
+-#: ../rarp.c:267
++#: ../rarp.c:269
+ #, c-format
+ msgid "rarp: %s: unknown hardware type.\n"
+ msgstr "rarp: %s: tipo desconhecido de hardware.\n"
+
+-#: ../route.c:79
++#: ../route.c:80
++#, c-format
+ msgid ""
+ "Usage: route [-nNvee] [-FC] [<AF>] List kernel routing tables\n"
+ msgstr ""
+-"Uso: route [-nNvee] [-FC] [famlias_de_endereos] Lista as tabelas de "
+-"rotea-\n"
++"Uso: route [-nNvee] [-FC] [famlias_de_endereos] Lista as tabelas de rotea-\n"
+ " mento do kernel\n"
+
+-#: ../route.c:80
++#: ../route.c:81
++#, c-format
+ msgid ""
+ " route [-v] [-FC] {add|del|flush} ... Modify routing table for AF.\n"
+ "\n"
+@@ -1298,35 +1259,42 @@
+ " mento da famlia.\n"
+ "\n"
+
+-#: ../route.c:82
++#: ../route.c:83
++#, c-format
+ msgid ""
+ " route {-h|--help} [<AF>] Detailed usage syntax for "
+ "specified AF.\n"
+ msgstr ""
+-" route {-h|--help} [famlia_de_endereos] Sintaxe para a AF "
+-"(Famlia\n"
+-" de endereos) "
+-"espeficicada.\n"
++" route {-h|--help} [famlia_de_endereos] Sintaxe para a AF (Famlia\n"
++" de endereos) espeficicada.\n"
+
+-#: ../route.c:83
++#: ../route.c:84
++#, c-format
+ msgid ""
+ " route {-V|--version} Display version/author and "
+ "exit.\n"
+ "\n"
+ msgstr ""
+-" route {-V|--version} Mostra a verso do "
+-"comando\n"
++" route {-V|--version} Mostra a verso do comando\n"
+ " e sai.\n"
+
++#: ../route.c:92
++#, fuzzy, c-format
++msgid " <AF>=Use '-A <af>' or '--<af>'; default: %s\n"
++msgstr " <AF>=Use '-A <af>' ou [--<af>' Default: %s\n"
++
+ #: ../plipconfig.c:66
++#, c-format
+ msgid "Usage: plipconfig [-a] [-i] [-v] interface\n"
+ msgstr "Uso: ifconfig [-a] [-i] [-v] interface\n"
+
+ #: ../plipconfig.c:67
++#, c-format
+ msgid " [nibble NN] [trigger NN]\n"
+ msgstr " [[famlia] endereo]\n"
+
+ #: ../plipconfig.c:68
++#, c-format
+ msgid " plipconfig -V | --version\n"
+ msgstr " plipconfig -V | --version\n"
+
+@@ -1335,25 +1303,29 @@
+ msgid "%s\tnibble %lu trigger %lu\n"
+ msgstr "%s\tnibble %lu trigger %lu\n"
+
+-#: ../iptunnel.c:79
++#: ../iptunnel.c:85
++#, c-format
+ msgid "Usage: iptunnel { add | change | del | show } [ NAME ]\n"
+ msgstr "Uso: iptunnel { add | change | del | show } [ NOME ]\n"
+
+-#: ../iptunnel.c:80
++#: ../iptunnel.c:86
++#, c-format
+ msgid ""
+ " [ mode { ipip | gre | sit } ] [ remote ADDR ] [ local ADDR ]\n"
+-msgstr ""
+-" [ mode { ipip | gre | sit } ] [ remote END ] [ local END ]\n"
++msgstr " [ mode { ipip | gre | sit } ] [ remote END ] [ local END ]\n"
+
+-#: ../iptunnel.c:81
++#: ../iptunnel.c:87
++#, c-format
+ msgid " [ [i|o]seq ] [ [i|o]key KEY ] [ [i|o]csum ]\n"
+ msgstr " [ [i|o]seq ] [ [i|o]key KEY ] [ [i|o]csum ]\n"
+
+-#: ../iptunnel.c:82
++#: ../iptunnel.c:88
++#, c-format
+ msgid " [ ttl TTL ] [ tos TOS ] [ nopmtudisc ] [ dev PHYS_DEV ]\n"
+ msgstr " [ ttl TTL ] [ tos TOS ] [ nopmtudisc ] [ dev DISP_FSICO ]\n"
+
+-#: ../iptunnel.c:83
++#: ../iptunnel.c:89
++#, c-format
+ msgid ""
+ " iptunnel -V | --version\n"
+ "\n"
+@@ -1361,451 +1333,734 @@
+ " iptunnel -V | --version\n"
+ "\n"
+
+-#: ../iptunnel.c:84
++#: ../iptunnel.c:90
++#, c-format
+ msgid "Where: NAME := STRING\n"
+ msgstr "Onde: NAME := STRING\n"
+
+-#: ../iptunnel.c:85
++#: ../iptunnel.c:91
++#, c-format
+ msgid " ADDR := { IP_ADDRESS | any }\n"
+ msgstr " END := { ENDEREO_IP | any }\n"
+
+-#: ../iptunnel.c:86
++#: ../iptunnel.c:92
++#, c-format
+ msgid " TOS := { NUMBER | inherit }\n"
+ msgstr " TOS := { NMERO | inherit }\n"
+
+-#: ../iptunnel.c:87
++#: ../iptunnel.c:93
++#, c-format
+ msgid " TTL := { 1..255 | inherit }\n"
+ msgstr " TTL := { 1..255 | inherit }\n"
+
+-#: ../iptunnel.c:88
++#: ../iptunnel.c:94
++#, c-format
+ msgid " KEY := { DOTTED_QUAD | NUMBER }\n"
+ msgstr " KEY := { QUATRO_NMEROS_SEPARADOS_POR_PONTOS | NMERO }\n"
+
+-#: ../iptunnel.c:326
++#: ../iptunnel.c:332
++#, c-format
+ msgid "Keys are not allowed with ipip and sit.\n"
+ msgstr "Chaves no so permitidas com ipip e sit.\n"
+
+-#: ../iptunnel.c:346
++#: ../iptunnel.c:352
++#, c-format
+ msgid "Broadcast tunnel requires a source address.\n"
+ msgstr "Um tnel de broadcast precisa de um endereo de origem.\n"
+
+-#: ../iptunnel.c:361
++#: ../iptunnel.c:367
++#, c-format
+ msgid "ttl != 0 and noptmudisc are incompatible\n"
+ msgstr "ttl != 0 e noptmudisc so incompatveis\n"
+
+-#: ../iptunnel.c:373
++#: ../iptunnel.c:379
++#, c-format
+ msgid "cannot determine tunnel mode (ipip, gre or sit)\n"
+ msgstr "no foi possvel determinar o modo do tnel (ip, gre ou sit)\n"
+
+-#: ../iptunnel.c:411
++#: ../iptunnel.c:417
+ #, c-format
+ msgid "%s: %s/ip remote %s local %s "
+ msgstr "%s: %s/ip remoto %s local %s "
+
+-#: ../iptunnel.c:415
++#: ../iptunnel.c:421
+ msgid "unknown"
+ msgstr "Desconhecido"
+
+-#: ../iptunnel.c:447
++#: ../iptunnel.c:453
++#, c-format
+ msgid " Drop packets out of sequence.\n"
+ msgstr " Descarte pacotes fora de seqncia.\n"
+
+-#: ../iptunnel.c:449
++#: ../iptunnel.c:455
++#, c-format
+ msgid " Checksum in received packet is required.\n"
+ msgstr " necessrio checksum nos pacotes recebidos.\n"
+
+-#: ../iptunnel.c:451
++#: ../iptunnel.c:457
++#, c-format
+ msgid " Sequence packets on output.\n"
+ msgstr " Seqencie pacotes na sada.\n"
+
+-#: ../iptunnel.c:453
++#: ../iptunnel.c:459
++#, c-format
+ msgid " Checksum output packets.\n"
+ msgstr " Calcule o checksum para pacotes de sada.\n"
+
+-#: ../iptunnel.c:481
++#: ../iptunnel.c:487
++#, c-format
+ msgid "Wrong format of /proc/net/dev. Sorry.\n"
+ msgstr "Formato errado de /proc/net/dev. Desculpe.\n"
+
+-#: ../iptunnel.c:494
++#: ../iptunnel.c:500
+ #, c-format
+ msgid "Failed to get type of [%s]\n"
+ msgstr "No foi possvel obter o tipo de [%s]\n"
+
+-#: ../iptunnel.c:510
++#: ../iptunnel.c:516
++#, c-format
+ msgid "RX: Packets Bytes Errors CsumErrs OutOfSeq Mcasts\n"
+ msgstr "RX: Pacotes Bytes Erros CsunErrs ForaSeq Mcasts\n"
+
+-#: ../iptunnel.c:513
++#: ../iptunnel.c:519
++#, c-format
+ msgid "TX: Packets Bytes Errors DeadLoop NoRoute NoBufs\n"
+ msgstr "TX: Pacotes Bytes Erros DeadLoop SemRota SemBufs\n"
+
+-#: ../statistics.c:45
++#: ../statistics.c:47
+ msgid "ICMP input histogram:"
+ msgstr "Histograma de entrada ICMP:"
+
+-#: ../statistics.c:46
++#: ../statistics.c:48
+ msgid "ICMP output histogram:"
+ msgstr "Histograma de sada ICMP"
+
+-#: ../statistics.c:63
++#: ../statistics.c:65
+ #, c-format
+ msgid "Forwarding is %s"
+ msgstr "Repassagem est %s"
+
+-#: ../statistics.c:64
+-#, c-format
+-msgid "Default TTL is %d"
++#: ../statistics.c:66
++#, fuzzy, c-format
++msgid "Default TTL is %u"
+ msgstr "Default TTL %d"
+
+-#: ../statistics.c:65
+-#, c-format
+-msgid "%d total packets received"
++#: ../statistics.c:67
++#, fuzzy, c-format
++msgid "%u total packets received"
+ msgstr "%d total de pacotes recebidos"
+
+-#: ../statistics.c:66
+-#, c-format
+-msgid "%d with invalid headers"
++#: ../statistics.c:68
++#, fuzzy, c-format
++msgid "%u with invalid headers"
+ msgstr "%d com cabealhos invlidos"
+
+-#: ../statistics.c:67
+-#, c-format
+-msgid "%d with invalid addresses"
++#: ../statistics.c:69
++#, fuzzy, c-format
++msgid "%u with invalid addresses"
+ msgstr "%d com endereos invlidos"
+
+-#: ../statistics.c:68
+-#, c-format
+-msgid "%d forwarded"
++#: ../statistics.c:70
++#, fuzzy, c-format
++msgid "%u forwarded"
+ msgstr "%d repassados"
+
+-#: ../statistics.c:69
+-#, c-format
+-msgid "%d with unknown protocol"
++#: ../statistics.c:71
++#, fuzzy, c-format
++msgid "%u with unknown protocol"
+ msgstr "%d com protocolo desconhecido"
+
+-#: ../statistics.c:70
+-#, c-format
+-msgid "%d incoming packets discarded"
++#: ../statistics.c:72
++#, fuzzy, c-format
++msgid "%u incoming packets discarded"
+ msgstr "%d pacotes entrantes descartados"
+
+-#: ../statistics.c:71
+-#, c-format
+-msgid "%d incoming packets delivered"
++#: ../statistics.c:73
++#, fuzzy, c-format
++msgid "%u incoming packets delivered"
+ msgstr "%d pacotes entrantes despachados"
+
+-#: ../statistics.c:72
+-#, c-format
+-msgid "%d requests sent out"
++#: ../statistics.c:74
++#, fuzzy, c-format
++msgid "%u requests sent out"
+ msgstr "%d requisies enviadas"
+
+ #. ?
+-#: ../statistics.c:73
+-#, c-format
+-msgid "%d outgoing packets dropped"
++#: ../statistics.c:75
++#, fuzzy, c-format
++msgid "%u outgoing packets dropped"
+ msgstr "%d pacotes saintes descartados"
+
+-#: ../statistics.c:74
+-#, c-format
+-msgid "%d dropped because of missing route"
++#: ../statistics.c:76
++#, fuzzy, c-format
++msgid "%u dropped because of missing route"
+ msgstr "%d descartados devido a falta de rota"
+
+-#: ../statistics.c:75
+-#, c-format
+-msgid "%d fragments dropped after timeout"
++#: ../statistics.c:77
++#, fuzzy, c-format
++msgid "%u fragments dropped after timeout"
+ msgstr "%d fragmentos descartados aps estouro de tempo"
+
+-#: ../statistics.c:76
+-#, c-format
+-msgid "%d reassemblies required"
++#: ../statistics.c:78
++#, fuzzy, c-format
++msgid "%u reassemblies required"
+ msgstr "%d remontagens requeridas"
+
+ #. ?
+-#: ../statistics.c:77
+-#, c-format
+-msgid "%d packets reassembled ok"
++#: ../statistics.c:79
++#, fuzzy, c-format
++msgid "%u packets reassembled ok"
+ msgstr "%d pacotes remontados sem problemas"
+
+-#: ../statistics.c:78
+-#, c-format
+-msgid "%d packet reassembles failed"
++#: ../statistics.c:80
++#, fuzzy, c-format
++msgid "%u packet reassembles failed"
+ msgstr "%d remontagens de pacotes falharam"
+
+-#: ../statistics.c:79
+-#, c-format
+-msgid "%d fragments received ok"
++#: ../statistics.c:81
++#, fuzzy, c-format
++msgid "%u fragments received ok"
+ msgstr "%d fragmentos recebidos sem problemas"
+
+-#: ../statistics.c:80
+-#, c-format
+-msgid "%d fragments failed"
++#: ../statistics.c:82
++#, fuzzy, c-format
++msgid "%u fragments failed"
+ msgstr "%d fragmentos falharam"
+
+-#: ../statistics.c:81
+-#, c-format
+-msgid "%d fragments created"
++#: ../statistics.c:83
++#, fuzzy, c-format
++msgid "%u fragments created"
+ msgstr "%d fragmentos criados"
+
+-#: ../statistics.c:86
+-#, c-format
+-msgid "%d ICMP messages received"
++#: ../statistics.c:88
++#, fuzzy, c-format
++msgid "%u ICMP messages received"
+ msgstr "%d mensagens ICMP recebidas"
+
+-#: ../statistics.c:87
+-#, c-format
+-msgid "%d input ICMP message failed."
++#: ../statistics.c:89
++#, fuzzy, c-format
++msgid "%u input ICMP message failed."
+ msgstr "%d mensagens ICMP entrantes falharam."
+
+-#: ../statistics.c:88 ../statistics.c:101
+-#, c-format
+-msgid "destination unreachable: %d"
++#: ../statistics.c:90 ../statistics.c:103
++#, fuzzy, c-format
++msgid "destination unreachable: %u"
+ msgstr "destino no alcanvel: %d"
+
+-#: ../statistics.c:89
+-#, c-format
+-msgid "timeout in transit: %d"
++#: ../statistics.c:91
++#, fuzzy, c-format
++msgid "timeout in transit: %u"
+ msgstr "estouro de tempo em trnsito: %d"
+
+-#: ../statistics.c:90 ../statistics.c:103
+-#, c-format
+-msgid "wrong parameters: %d"
++#: ../statistics.c:92 ../statistics.c:105
++#, fuzzy, c-format
++msgid "wrong parameters: %u"
+ msgstr "parmetros errados: %d"
+
+ #. ?
+-#: ../statistics.c:91
+-#, c-format
+-msgid "source quenchs: %d"
++#: ../statistics.c:93
++#, fuzzy, c-format
++msgid "source quenches: %u"
+ msgstr "source quenchs: %d"
+
+-#: ../statistics.c:92
+-#, c-format
+-msgid "redirects: %d"
++#: ../statistics.c:94
++#, fuzzy, c-format
++msgid "redirects: %u"
+ msgstr "redirees: %d"
+
+-#: ../statistics.c:93
+-#, c-format
+-msgid "echo requests: %d"
++#: ../statistics.c:95
++#, fuzzy, c-format
++msgid "echo requests: %u"
+ msgstr "requisies de eco: %d"
+
+-#: ../statistics.c:94 ../statistics.c:107
+-#, c-format
+-msgid "echo replies: %d"
++#: ../statistics.c:96 ../statistics.c:109
++#, fuzzy, c-format
++msgid "echo replies: %u"
+ msgstr "respostas de eco: %d"
+
+-#: ../statistics.c:95
+-#, c-format
+-msgid "timestamp request: %d"
++#: ../statistics.c:97
++#, fuzzy, c-format
++msgid "timestamp request: %u"
+ msgstr "requisies de timestamp: %d"
+
+-#: ../statistics.c:96
+-#, c-format
+-msgid "timestamp reply: %d"
++#: ../statistics.c:98
++#, fuzzy, c-format
++msgid "timestamp reply: %u"
+ msgstr "respostas a timestamps: %d"
+
+-#: ../statistics.c:97
+-#, c-format
+-msgid "address mask request: %d"
++#: ../statistics.c:99
++#, fuzzy, c-format
++msgid "address mask request: %u"
+ msgstr "requisies de mascara de endereo: %d"
+
+ #. ?
+-#: ../statistics.c:98
+-msgid "address mask replies"
+-msgstr "resposta a mascara de endereo"
++#: ../statistics.c:100 ../statistics.c:113
++#, fuzzy, c-format
++msgid "address mask replies: %u"
++msgstr "respostas a mscara de endereo: %d"
+
+ #. ?
+-#: ../statistics.c:99
+-#, c-format
+-msgid "%d ICMP messages sent"
++#: ../statistics.c:101
++#, fuzzy, c-format
++msgid "%u ICMP messages sent"
+ msgstr "%d mensagens ICMP enviadas"
+
+-#: ../statistics.c:100
+-#, c-format
+-msgid "%d ICMP messages failed"
++#: ../statistics.c:102
++#, fuzzy, c-format
++msgid "%u ICMP messages failed"
+ msgstr "%d mensagens ICMP falharam"
+
+-#: ../statistics.c:102
+-#, c-format
+-msgid "time exceeded: %d"
++#: ../statistics.c:104
++#, fuzzy, c-format
++msgid "time exceeded: %u"
+ msgstr "tempo excedido: %d"
+
+ #. ?
+-#: ../statistics.c:104
+-#, c-format
+-msgid "source quench: %d"
++#: ../statistics.c:106
++#, fuzzy, c-format
++msgid "source quench: %u"
+ msgstr "source quench: %d"
+
+-#: ../statistics.c:105
+-#, c-format
+-msgid "redirect: %d"
++#: ../statistics.c:107
++#, fuzzy, c-format
++msgid "redirect: %u"
+ msgstr "redirees: %d"
+
+-#: ../statistics.c:106
+-#, c-format
+-msgid "echo request: %d"
++#: ../statistics.c:108
++#, fuzzy, c-format
++msgid "echo request: %u"
+ msgstr "requisies de eco: %d"
+
+-#: ../statistics.c:108
+-#, c-format
+-msgid "timestamp requests: %d"
++#: ../statistics.c:110
++#, fuzzy, c-format
++msgid "timestamp requests: %u"
+ msgstr "requisies de timestamp: %d"
+
+-#: ../statistics.c:109
+-#, c-format
+-msgid "timestamp replies: %d"
++#: ../statistics.c:111
++#, fuzzy, c-format
++msgid "timestamp replies: %u"
+ msgstr "respostas a timestamp: %d"
+
+-#: ../statistics.c:110
+-#, c-format
+-msgid "address mask requests: %d"
++#: ../statistics.c:112
++#, fuzzy, c-format
++msgid "address mask requests: %u"
+ msgstr "requisies de mscara de endereo: %d"
+
+-#: ../statistics.c:111
+-#, c-format
+-msgid "address mask replies: %d"
+-msgstr "respostas a mscara de endereo: %d"
+-
+-#: ../statistics.c:116
++#: ../statistics.c:118
+ #, c-format
+ msgid "RTO algorithm is %s"
+ msgstr "Algortmo RTO %s"
+
+-#: ../statistics.c:120
+-#, c-format
+-msgid "%d active connections openings"
++#: ../statistics.c:122
++#, fuzzy, c-format
++msgid "%u active connections openings"
+ msgstr "%d tentativas de conexo falharam"
+
+-#: ../statistics.c:121
+-#, c-format
+-msgid "%d passive connection openings"
++#: ../statistics.c:123
++#, fuzzy, c-format
++msgid "%u passive connection openings"
+ msgstr "%d opens passivos"
+
+-#: ../statistics.c:122
+-#, c-format
+-msgid "%d failed connection attempts"
++#: ../statistics.c:124
++#, fuzzy, c-format
++msgid "%u failed connection attempts"
+ msgstr "%d tentativas de conexo falharam"
+
+-#: ../statistics.c:123
+-#, c-format
+-msgid "%d connection resets received"
++#: ../statistics.c:125
++#, fuzzy, c-format
++msgid "%u connection resets received"
+ msgstr "%d resets de conexo recebidas"
+
+-#: ../statistics.c:124
+-#, c-format
+-msgid "%d connections established"
++#: ../statistics.c:126
++#, fuzzy, c-format
++msgid "%u connections established"
+ msgstr "%d conexes estabelecidas"
+
+-#: ../statistics.c:125
+-#, c-format
+-msgid "%d segments received"
++#: ../statistics.c:127
++#, fuzzy, c-format
++msgid "%u segments received"
+ msgstr "%d segmentos recebidos"
+
+-#: ../statistics.c:126
+-#, c-format
+-msgid "%d segments send out"
++#: ../statistics.c:128
++#, fuzzy, c-format
++msgid "%u segments send out"
+ msgstr "%d segmentos enviados"
+
+-#: ../statistics.c:127
+-#, c-format
+-msgid "%d segments retransmited"
++#: ../statistics.c:129
++#, fuzzy, c-format
++msgid "%u segments retransmited"
+ msgstr "%d segmentos retransmitidos"
+
+-#: ../statistics.c:128
+-#, c-format
+-msgid "%d bad segments received."
++#: ../statistics.c:130
++#, fuzzy, c-format
++msgid "%u bad segments received."
+ msgstr "%d segmentos ruins recebidos."
+
+-#: ../statistics.c:129
+-#, c-format
+-msgid "%d resets sent"
++#: ../statistics.c:131
++#, fuzzy, c-format
++msgid "%u resets sent"
+ msgstr "%d resets enviados"
+
+-#: ../statistics.c:134
+-#, c-format
+-msgid "%d packets received"
++#: ../statistics.c:136
++#, fuzzy, c-format
++msgid "%u packets received"
+ msgstr "%d pacotes recebidos"
+
+-#: ../statistics.c:135
+-#, c-format
+-msgid "%d packets to unknown port received."
++#: ../statistics.c:137
++#, fuzzy, c-format
++msgid "%u packets to unknown port received."
+ msgstr "%d pacotes para portas desconhecidas recebidos."
+
+-#: ../statistics.c:136
+-#, c-format
+-msgid "%d packet receive errors"
++#: ../statistics.c:138
++#, fuzzy, c-format
++msgid "%u packet receive errors"
+ msgstr "%d erros de recepo de pacotes"
+
+-#: ../statistics.c:137
+-#, c-format
+-msgid "%d packets sent"
++#: ../statistics.c:139
++#, fuzzy, c-format
++msgid "%u packets sent"
+ msgstr "%d pacotes enviados"
+
+-#: ../statistics.c:142
++#: ../statistics.c:144
++#, fuzzy, c-format
++msgid "%u SYN cookies sent"
++msgstr "%d pacotes enviados"
++
++#: ../statistics.c:145
++#, fuzzy, c-format
++msgid "%u SYN cookies received"
++msgstr "%d pacotes recebidos"
++
++#: ../statistics.c:146
++#, fuzzy, c-format
++msgid "%u invalid SYN cookies received"
++msgstr "%d pacotes recebidos"
++
++#: ../statistics.c:148
++#, fuzzy, c-format
++msgid "%u resets received for embryonic SYN_RECV sockets"
++msgstr "%d resets recebidos para sockets embrinicos SYN_RECV"
++
++#: ../statistics.c:150
++#, fuzzy, c-format
++msgid "%u packets pruned from receive queue because of socket buffer overrun"
++msgstr "%d pacotes retirados da fila de recepo devido a sobreposio de buffers de sockets"
++
++#. obsolete: 2.2.0 doesn't do that anymore
++#: ../statistics.c:153
++#, fuzzy, c-format
++msgid "%u packets pruned from receive queue"
++msgstr "%d pacotes retirados da fila de fora de ordem (out-of-order)"
++
++#: ../statistics.c:154
++#, fuzzy, c-format
++msgid ""
++"%u packets dropped from out-of-order queue because of socket buffer overrun"
++msgstr "%d pacotes descartados da fila de fora de ordem devido a sobreposio de buffers de sockets"
++
++#: ../statistics.c:156
++#, fuzzy, c-format
++msgid "%u ICMP packets dropped because they were out-of-window"
++msgstr "%d pacotes ICMP descartados porque estavam fora da janela"
++
++#: ../statistics.c:158
++#, fuzzy, c-format
++msgid "%u ICMP packets dropped because socket was locked"
++msgstr "%d pacotes ICMP descartadas porque o socket estava bloqueado"
++
++#: ../statistics.c:160
++#, c-format
++msgid "%u TCP sockets finished time wait in fast timer"
++msgstr ""
++
++#: ../statistics.c:161
++#, c-format
++msgid "%u time wait sockets recycled by time stamp"
++msgstr ""
++
++#: ../statistics.c:162
++#, c-format
++msgid "%u TCP sockets finished time wait in slow timer"
++msgstr ""
++
++#: ../statistics.c:163
++#, c-format
++msgid "%u passive connections rejected because of time stamp"
++msgstr ""
++
++#: ../statistics.c:165
++#, c-format
++msgid "%u active connections rejected because of time stamp"
++msgstr ""
++
++#: ../statistics.c:167
+ #, c-format
+-msgid "%d SYN cookies sent"
++msgid "%u packets rejects in established connections because of timestamp"
++msgstr ""
++
++#: ../statistics.c:169
++#, fuzzy, c-format
++msgid "%u delayed acks sent"
+ msgstr "%d pacotes enviados"
+
+-#: ../statistics.c:143
++#: ../statistics.c:170
+ #, c-format
+-msgid "%d SYN cookies received"
+-msgstr "%d pacotes recebidos"
++msgid "%u delayed acks further delayed because of locked socket"
++msgstr ""
+
+-#: ../statistics.c:144
++#: ../statistics.c:172
+ #, c-format
+-msgid "%d invalid SYN cookies received"
+-msgstr "%d pacotes recebidos"
++msgid "Quick ack mode was activated %u times"
++msgstr ""
+
+-#: ../statistics.c:146
++#: ../statistics.c:173
+ #, c-format
+-msgid "%d resets received for embryonic SYN_RECV sockets"
+-msgstr "%d resets recebidos para sockets embrinicos SYN_RECV"
++msgid "%u times the listen queue of a socket overflowed"
++msgstr ""
+
+-#: ../statistics.c:148
++#: ../statistics.c:175
+ #, c-format
+-msgid "%d packets pruned from receive queue because of socket buffer overrun"
++msgid "%u SYNs to LISTEN sockets ignored"
+ msgstr ""
+-"%d pacotes retirados da fila de recepo devido a sobreposio de buffers de "
+-"sockets"
+
+-#. obsolete: 2.2.0 doesn't do that anymore
+-#: ../statistics.c:151
++#: ../statistics.c:176
++#, c-format
++msgid "%u packets directly queued to recvmsg prequeue."
++msgstr ""
++
++#: ../statistics.c:178
+ #, c-format
+-msgid "%d packets pruned from out-of-order queue"
++msgid "%u of bytes directly received from backlog"
++msgstr ""
++
++#: ../statistics.c:180
++#, c-format
++msgid "%u of bytes directly received from prequeue"
++msgstr ""
++
++#: ../statistics.c:182
++#, fuzzy, c-format
++msgid "%u packets dropped from prequeue"
+ msgstr "%d pacotes retirados da fila de fora de ordem (out-of-order)"
+
+-#: ../statistics.c:152
++#: ../statistics.c:183
++#, fuzzy, c-format
++msgid "%u packet headers predicted"
++msgstr "%d pacotes recebidos"
++
++#: ../statistics.c:184
+ #, c-format
+-msgid ""
+-"%d packets dropped from out-of-order queue because of socket buffer overrun"
++msgid "%u packets header predicted and directly queued to user"
+ msgstr ""
+-"%d pacotes descartados da fila de fora de ordem devido a sobreposio de "
+-"buffers de sockets"
+
+-#: ../statistics.c:154
++#: ../statistics.c:186
+ #, c-format
+-msgid "%d ICMP packets dropped because they were out-of-window"
+-msgstr "%d pacotes ICMP descartados porque estavam fora da janela"
++msgid "Ran %u times out of system memory during packet sending"
++msgstr ""
+
+-#: ../statistics.c:156
++#: ../statistics.c:188
++#, fuzzy, c-format
++msgid "%u acknowledgments not containing data received"
++msgstr "%d pacotes para portas desconhecidas recebidos."
++
++#: ../statistics.c:189
+ #, c-format
+-msgid "%d ICMP packets dropped because socket was locked"
+-msgstr "%d pacotes ICMP descartadas porque o socket estava bloqueado"
++msgid "%u predicted acknowledgments"
++msgstr ""
++
++#: ../statistics.c:190
++#, c-format
++msgid "%u times recovered from packet loss due to fast retransmit"
++msgstr ""
++
++#: ../statistics.c:191
++#, c-format
++msgid "%u times recovered from packet loss due to SACK data"
++msgstr ""
++
++#: ../statistics.c:192
++#, fuzzy, c-format
++msgid "%u bad SACKs received"
++msgstr "%d segmentos ruins recebidos."
++
++#: ../statistics.c:193
++#, c-format
++msgid "Detected reordering %u times using FACK"
++msgstr ""
++
++#: ../statistics.c:194
++#, c-format
++msgid "Detected reordering %u times using SACK"
++msgstr ""
++
++#: ../statistics.c:195
++#, c-format
++msgid "Detected reordering %u times using time stamp"
++msgstr ""
++
++#: ../statistics.c:196
++#, c-format
++msgid "Detected reordering %u times using reno fast retransmit"
++msgstr ""
++
++#: ../statistics.c:197
++#, c-format
++msgid "%u congestion windows fully recovered"
++msgstr ""
++
++#: ../statistics.c:198
++#, c-format
++msgid "%u congestion windows partially recovered using Hoe heuristic"
++msgstr ""
++
++#: ../statistics.c:199
++#, c-format
++msgid "%u congestion window recovered using DSACK"
++msgstr ""
++
++#: ../statistics.c:200
++#, c-format
++msgid "%u congestion windows recovered after partial ack"
++msgstr ""
++
++#: ../statistics.c:201
++#, fuzzy, c-format
++msgid "%u retransmits lost"
++msgstr "%d resets enviados"
++
++#: ../statistics.c:202
++#, c-format
++msgid "%u timeouts after reno fast retransmit"
++msgstr ""
++
++#: ../statistics.c:203
++#, c-format
++msgid "%u timeouts after SACK recovery"
++msgstr ""
++
++#: ../statistics.c:204
++#, c-format
++msgid "%u timeouts in loss state"
++msgstr ""
++
++#: ../statistics.c:205
++#, fuzzy, c-format
++msgid "%u fast retransmits"
++msgstr "%d segmentos retransmitidos"
++
++#: ../statistics.c:206
++#, c-format
++msgid "%u forward retransmits"
++msgstr ""
++
++#: ../statistics.c:207
++#, c-format
++msgid "%u retransmits in slow start"
++msgstr ""
++
++#: ../statistics.c:208
++#, c-format
++msgid "%u other TCP timeouts"
++msgstr ""
++
++#: ../statistics.c:209
++#, fuzzy, c-format
++msgid "%u reno fast retransmits failed"
++msgstr "%d segmentos retransmitidos"
++
++#: ../statistics.c:210
++#, fuzzy, c-format
++msgid "%u sack retransmits failed"
++msgstr "%d remontagens de pacotes falharam"
++
++#: ../statistics.c:211
++#, c-format
++msgid "%u times receiver scheduled too late for direct processing"
++msgstr ""
++
++#: ../statistics.c:212
++#, fuzzy, c-format
++msgid "%u packets collapsed in receive queue due to low socket buffer"
++msgstr "%d pacotes retirados da fila de recepo devido a sobreposio de buffers de sockets"
++
++#: ../statistics.c:213
++#, c-format
++msgid "%u DSACKs sent for old packets"
++msgstr ""
++
++#: ../statistics.c:214
++#, c-format
++msgid "%u DSACKs sent for out of order packets"
++msgstr ""
++
++#: ../statistics.c:215
++#, fuzzy, c-format
++msgid "%u DSACKs received"
++msgstr "%d pacotes recebidos"
++
++#: ../statistics.c:216
++#, fuzzy, c-format
++msgid "%u DSACKs for out of order packets received"
++msgstr "%d total de pacotes recebidos"
++
++#: ../statistics.c:217
++#, fuzzy, c-format
++msgid "%u connections reset due to unexpected SYN"
++msgstr "%d resets de conexo recebidas"
++
++#: ../statistics.c:218
++#, fuzzy, c-format
++msgid "%u connections reset due to unexpected data"
++msgstr "%d resets de conexo recebidas"
++
++#: ../statistics.c:219
++#, fuzzy, c-format
++msgid "%u connections reset due to early user close"
++msgstr "%d resets de conexo recebidas"
++
++#: ../statistics.c:220
++#, c-format
++msgid "%u connections aborted due to memory pressure"
++msgstr ""
++
++#: ../statistics.c:221
++#, fuzzy, c-format
++msgid "%u connections aborted due to timeout"
++msgstr "%d resets de conexo recebidas"
+
+ #: ../statistics.c:222
++#, c-format
++msgid "%u connections aborted after user close in linger timeout"
++msgstr ""
++
++#: ../statistics.c:223
++#, c-format
++msgid "%u times unabled to send RST due to no memory"
++msgstr ""
++
++#: ../statistics.c:224
++#, c-format
++msgid "TCP ran low on memory %u times"
++msgstr ""
++
++#: ../statistics.c:225
++#, c-format
++msgid "%u TCP data loss events"
++msgstr ""
++
++#: ../statistics.c:292
+ msgid "enabled"
+ msgstr "habilitado"
+
+-#: ../statistics.c:222
++#: ../statistics.c:292
+ msgid "disabled"
+ msgstr "desabilitado"
+
+-#: ../statistics.c:272
+-#, c-format
+-msgid "unknown title %s\n"
+-msgstr "ttulo %s desconhecido\n"
+-
+-#: ../statistics.c:298
++#: ../statistics.c:375
+ msgid "error parsing /proc/net/snmp"
+ msgstr "erro lendo /proc/net/snmp"
+
+-#: ../statistics.c:311
++#: ../statistics.c:388
+ msgid "cannot open /proc/net/snmp"
+ msgstr "no foi possvel abrir /proc/net/snmp"
+
+@@ -1819,89 +2074,95 @@
+ msgid "Cannot change line discipline to `%s'.\n"
+ msgstr "No foi possvel mudar a disciplina da linha para `%s'.\n"
+
+-#: ../lib/af.c:145 ../lib/hw.c:148
++#: ../lib/af.c:153 ../lib/hw.c:161
+ msgid "UNSPEC"
+ msgstr "No Especificado"
+
+-#: ../lib/af.c:147
++#: ../lib/af.c:155
+ msgid "UNIX Domain"
+ msgstr "UNIX Domain"
+
+-#: ../lib/af.c:150
++#: ../lib/af.c:158
+ msgid "DARPA Internet"
+ msgstr "DARPA Internet"
+
+-#: ../lib/af.c:153
++#: ../lib/af.c:161
+ msgid "IPv6"
+ msgstr "IPv6"
+
+-#: ../lib/af.c:156 ../lib/hw.c:169
++#: ../lib/af.c:164 ../lib/hw.c:182
+ msgid "AMPR AX.25"
+ msgstr "AX.25 AMPR"
+
+-#: ../lib/af.c:159 ../lib/hw.c:175
++#: ../lib/af.c:167 ../lib/hw.c:188
+ msgid "AMPR NET/ROM"
+ msgstr "NET/ROM AMPR"
+
+-#: ../lib/af.c:162
++#: ../lib/af.c:170
+ msgid "Novell IPX"
+ msgstr "Novell IPX"
+
+-#: ../lib/af.c:165
++#: ../lib/af.c:173
+ msgid "Appletalk DDP"
+ msgstr "Appletalk DDP"
+
+-#: ../lib/af.c:168 ../lib/hw.c:207
++#: ../lib/af.c:176 ../lib/hw.c:223
+ msgid "Econet"
+ msgstr "Econet"
+
+-#: ../lib/af.c:171 ../lib/hw.c:172
++#: ../lib/af.c:179
++msgid "CCITT X.25"
++msgstr ""
++
++#: ../lib/af.c:182 ../lib/hw.c:185
+ msgid "AMPR ROSE"
+ msgstr "AMPR ROSE"
+
+-#: ../lib/af.c:174 ../lib/hw.c:160
++#: ../lib/af.c:185 ../lib/hw.c:173
+ msgid "Ash"
+ msgstr "Ash"
+
+-#: ../lib/af.c:232
++#: ../lib/af.c:243
++#, c-format
+ msgid "Please don't supply more than one address family.\n"
+ msgstr "Por favor no especifique mais que uma famlia de endereos.\n"
+
+-#: ../lib/af.c:293
++#: ../lib/af.c:304
++#, c-format
+ msgid "Too much address family arguments.\n"
+ msgstr "Excesso no nmero de famlias de endereos.\n"
+
+-#: ../lib/af.c:304
++#: ../lib/af.c:315
+ #, c-format
+ msgid "Unknown address family `%s'.\n"
+ msgstr "Famlia de endereos `%s' desconhecida.\n"
+
+-#: ../lib/arcnet.c:53 ../lib/ax25.c:75 ../lib/ddp.c:50 ../lib/econet.c:52
+-#: ../lib/fddi.c:67 ../lib/hippi.c:68 ../lib/inet.c:244 ../lib/inet.c:259
+-#: ../lib/inet6.c:129 ../lib/ipx.c:81 ../lib/netrom.c:78 ../lib/rose.c:71
+-#: ../lib/rose.c:126 ../lib/unix.c:56 ../lib/unix.c:76
+-msgid "[NONE SET]"
+-msgstr "[Nenhum configurado]"
+-
+-#: ../lib/arcnet.c:81 ../lib/arcnet.c:96
++#: ../lib/arcnet.c:70 ../lib/arcnet.c:85
+ #, c-format
+ msgid "in_arcnet(%s): invalid arcnet address!\n"
+ msgstr "in_arcnet(%s): endereo arcnet invlido!\n"
+
+-#: ../lib/arcnet.c:108
++#: ../lib/arcnet.c:97
+ #, c-format
+ msgid "in_arcnet(%s): trailing : ignored!\n"
+ msgstr "in_arcnet(%s): trailing : ignorado!\n"
+
+-#: ../lib/arcnet.c:120
++#: ../lib/arcnet.c:109
+ #, c-format
+ msgid "in_arcnet(%s): trailing junk!\n"
+ msgstr "in_arcnet(%s): lixo no trailing!\n"
+
+ #: ../lib/ash.c:81
++#, c-format
+ msgid "Malformed Ash address"
+ msgstr "Endereo Ash mal formado"
+
++#: ../lib/ax25.c:75 ../lib/ddp.c:50 ../lib/econet.c:52 ../lib/inet.c:244
++#: ../lib/inet.c:259 ../lib/inet6.c:129 ../lib/ipx.c:81 ../lib/netrom.c:78
++#: ../lib/rose.c:71 ../lib/unix.c:56 ../lib/unix.c:76
++msgid "[NONE SET]"
++msgstr "[Nenhum configurado]"
++
+ #: ../lib/ax25.c:97 ../lib/netrom.c:100
+ msgid "Invalid callsign"
+ msgstr "Callsign invlido"
+@@ -1911,22 +2172,21 @@
+ msgstr "Callsign muito longo"
+
+ #: ../lib/ax25_gr.c:47
++#, c-format
+ msgid "AX.25 not configured in this system.\n"
+ msgstr "O AX.25 no foi configurado neste sistema.\n"
+
+ #: ../lib/ax25_gr.c:50
++#, c-format
+ msgid "Kernel AX.25 routing table\n"
+ msgstr "Tabela de roteamento AX.25 do kernel\n"
+
+ #. xxx
+ #: ../lib/ax25_gr.c:51 ../lib/rose_gr.c:55
++#, c-format
+ msgid "Destination Iface Use\n"
+ msgstr "Destino Iface Uso\n"
+
+-#: ../lib/ddp_gr.c:21
+-msgid "Routing table for `ddp' not yet supported.\n"
+-msgstr "Tabela de roteamento para `ddp' ainda no suportada.\n"
+-
+ #: ../lib/ether.c:74 ../lib/ether.c:91
+ #, c-format
+ msgid "in_ether(%s): invalid ether address!\n"
+@@ -1942,253 +2202,268 @@
+ msgid "in_ether(%s): trailing junk!\n"
+ msgstr "in_ether(%s): lixo no trailing!\n"
+
+-#: ../lib/fddi.c:95 ../lib/fddi.c:110
++#: ../lib/fddi.c:84 ../lib/fddi.c:99
+ #, c-format
+ msgid "in_fddi(%s): invalid fddi address!\n"
+ msgstr "in_fddi(%S): endereo fddi invlido!\n"
+
+-#: ../lib/fddi.c:122
++#: ../lib/fddi.c:111
+ #, c-format
+ msgid "in_fddi(%s): trailing : ignored!\n"
+ msgstr "in_fddi(%s): trailing : ignorado!\n"
+
+-#: ../lib/fddi.c:134
++#: ../lib/fddi.c:123
+ #, c-format
+ msgid "in_fddi(%s): trailing junk!\n"
+ msgstr "in_fddi(%s): lixo no trailing!\n"
+
+-#: ../lib/getroute.c:97 ../lib/setroute.c:76
++#: ../lib/getroute.c:101 ../lib/setroute.c:80
+ #, c-format
+ msgid "Address family `%s' not supported.\n"
+ msgstr "Famlia de endereos `%s' no suportada.\n"
+
+-#: ../lib/getroute.c:103 ../lib/setroute.c:80
++#: ../lib/getroute.c:107 ../lib/setroute.c:84
+ #, c-format
+ msgid "No routing for address family `%s'.\n"
+ msgstr "Nenhum roteamento para a famlia `%s'\n"
+
+-#: ../lib/hippi.c:96 ../lib/hippi.c:111
++#: ../lib/hippi.c:84 ../lib/hippi.c:99
+ #, c-format
+ msgid "in_hippi(%s): invalid hippi address!\n"
+ msgstr "in_fddi(%S): endereo fddi invlido!\n"
+
+-#: ../lib/hippi.c:123
++#: ../lib/hippi.c:111
+ #, c-format
+ msgid "in_hippi(%s): trailing : ignored!\n"
+ msgstr "in_fddi(%s): trailing : ignorado!\n"
+
+-#: ../lib/hippi.c:134
++#: ../lib/hippi.c:122
+ #, c-format
+ msgid "in_hippi(%s): trailing junk!\n"
+ msgstr "in_fddi(%s): lixo no trailing!\n"
+
+-#: ../lib/hw.c:147
++#: ../lib/hw.c:160
+ msgid "Local Loopback"
+ msgstr "Loopback Local"
+
+-#: ../lib/hw.c:150
++#: ../lib/hw.c:163
+ msgid "Serial Line IP"
+ msgstr "SLIP"
+
+-#: ../lib/hw.c:151
++#: ../lib/hw.c:164
+ msgid "VJ Serial Line IP"
+ msgstr "SLIP VJ"
+
+-#: ../lib/hw.c:152
++#: ../lib/hw.c:165
+ msgid "6-bit Serial Line IP"
+ msgstr "SLIP 6 bits"
+
+-#: ../lib/hw.c:153
++#: ../lib/hw.c:166
+ msgid "VJ 6-bit Serial Line IP"
+ msgstr "SLIP VJ 6 bits"
+
+-#: ../lib/hw.c:154
++#: ../lib/hw.c:167
+ msgid "Adaptive Serial Line IP"
+ msgstr "SLIP Adaptativo"
+
+-#: ../lib/hw.c:157
++#: ../lib/hw.c:170
+ msgid "Ethernet"
+ msgstr "Ethernet"
+
+-#: ../lib/hw.c:163
++#: ../lib/hw.c:176
+ msgid "Fiber Distributed Data Interface"
+ msgstr "FDDI - Fibra tica"
+
+-#: ../lib/hw.c:166
++#: ../lib/hw.c:179
+ msgid "HIPPI"
+ msgstr "HIPPI"
+
+-#: ../lib/hw.c:178
++#: ../lib/hw.c:191
++msgid "generic X.25"
++msgstr ""
++
++#: ../lib/hw.c:194
+ msgid "IPIP Tunnel"
+ msgstr "Tnel IPIP"
+
+-#: ../lib/hw.c:181
++#: ../lib/hw.c:197
+ msgid "Point-to-Point Protocol"
+ msgstr "Protocolo Ponto-a-Ponto"
+
+-#: ../lib/hw.c:184
++#: ../lib/hw.c:200
+ msgid "(Cisco)-HDLC"
+ msgstr "(Cisco)-HDLC"
+
+-#: ../lib/hw.c:185
++#: ../lib/hw.c:201
+ msgid "LAPB"
+ msgstr "LAPB"
+
+-#: ../lib/hw.c:188
++#: ../lib/hw.c:204
+ msgid "ARCnet"
+ msgstr "ARCnet"
+
+-#: ../lib/hw.c:191
++#: ../lib/hw.c:207
+ msgid "Frame Relay DLCI"
+ msgstr "Frame Relay DLCI"
+
+-#: ../lib/hw.c:192
++#: ../lib/hw.c:208
+ msgid "Frame Relay Access Device"
+ msgstr "FRAD - Dispositivo de Acesso a Frame Relay"
+
+-#: ../lib/hw.c:195
++#: ../lib/hw.c:211
+ msgid "IPv6-in-IPv4"
+ msgstr "IPv6 sobre IPv4"
+
+-#: ../lib/hw.c:198
++#: ../lib/hw.c:214
+ msgid "IrLAP"
+ msgstr "IrLAP"
+
+-#: ../lib/hw.c:201
++#: ../lib/hw.c:217
+ msgid "16/4 Mbps Token Ring"
+ msgstr "16/4 Mbps Token Ring"
+
+-#: ../lib/hw.c:203
++#: ../lib/hw.c:219
+ msgid "16/4 Mbps Token Ring (New)"
+ msgstr "16/4 Mbps Token Ring (Novo)"
+
++#: ../lib/hw.c:226
++msgid "Generic EUI-64"
++msgstr ""
++
+ #: ../lib/inet.c:153 ../lib/inet6.c:79
+ #, c-format
+ msgid "rresolve: unsupport address family %d !\n"
+ msgstr "rresolve: famlia de endereos %d no suportada!\n"
+
+-#: ../lib/inet6_gr.c:79
++#: ../lib/inet6.c:131
++#, fuzzy
++msgid "[UNKNOWN]"
++msgstr "DESCONHECIDA"
++
++#: ../lib/inet6_gr.c:71
++#, c-format
+ msgid "INET6 (IPv6) not configured in this system.\n"
+ msgstr "NET/ROM no configurado neste sistema.\n"
+
+-#: ../lib/inet6_gr.c:82
++#: ../lib/inet6_gr.c:74
++#, c-format
+ msgid "Kernel IPv6 routing table\n"
+ msgstr "Tabela de Roteamento IPv6 do Kernel\n"
+
+-#: ../lib/inet6_gr.c:84
++#: ../lib/inet6_gr.c:76
++#, c-format
+ msgid ""
+-"Destination Next Hop "
+-" Flags Metric Ref Use Iface\n"
+-msgstr ""
+-"Destino Prximo \"Hop\" "
+-" Opes Mtrica Ref Uso Iface\n"
++"Destination Next "
++"Hop Flags Metric Ref Use Iface\n"
++msgstr "Destino Prximo \"Hop\" Opes Mtrica Ref Uso Iface\n"
+
+-#: ../lib/inet6_gr.c:158
++#: ../lib/inet6_gr.c:150
++#, c-format
+ msgid "Kernel IPv6 Neighbour Cache\n"
+ msgstr "Cache de Vizinhos IPv6 do Kernel\n"
+
+-#: ../lib/inet6_gr.c:161
++#: ../lib/inet6_gr.c:153
++#, c-format
+ msgid ""
+ "Neighbour HW Address Iface Flags "
+ "Ref State\n"
+-msgstr ""
+-"Vizinho Endereo HW Iface Opes "
+-"Estado Ref\n"
++msgstr "Vizinho Endereo HW Iface Opes Estado Ref\n"
+
+-#: ../lib/inet6_gr.c:165
++#: ../lib/inet6_gr.c:157
++#, c-format
+ msgid ""
+ "Neighbour HW Address Iface Flags "
+ "Ref State Stale(sec) Delete(sec)\n"
+ msgstr ""
+-"Vizinho Endereo HW Iface Opes "
+-"Estado Ref\n"
++"Vizinho Endereo HW Iface Opes Estado Ref\n"
+ " Parado(seg) Remover(seg)\n"
+
+ #: ../lib/inet6_sr.c:46
++#, c-format
+ msgid "Usage: inet6_route [-vF] del Target\n"
+ msgstr "Uso: inet6_route [-vF] del Destino\n"
+
+ #: ../lib/inet6_sr.c:47
++#, c-format
+ msgid " inet6_route [-vF] add Target [gw Gw] [metric M] [[dev] If]\n"
+ msgstr " inet6_route [-vF] add Destino [gw Gw] [metric M] [[dev] If]\n"
+
+ #: ../lib/inet6_sr.c:48
++#, c-format
+ msgid " inet6_route [-FC] flush NOT supported\n"
+ msgstr " inet6_route [-FC] flush NO suportado\n"
+
+-#: ../lib/inet6_sr.c:182
++#: ../lib/inet6_sr.c:188
++#, c-format
+ msgid "Flushing `inet6' routing table not supported\n"
+ msgstr "Limpeza da tabela de roteamento `inet6' no suportada\n"
+
+ #: ../lib/inet_gr.c:50 ../lib/inet_gr.c:220
++#, c-format
+ msgid "INET (IPv4) not configured in this system.\n"
+ msgstr "NET/ROM no configurado neste sistema.\n"
+
+ #: ../lib/inet_gr.c:53
++#, c-format
+ msgid "Kernel IP routing table\n"
+ msgstr "Tabela de Roteamento IP do Kernel\n"
+
+ #: ../lib/inet_gr.c:56
++#, c-format
+ msgid ""
+ "Destination Gateway Genmask Flags Metric Ref Use "
+ "Iface\n"
+-msgstr ""
+-"Destino Roteador MscaraGen. Opes Mtrica Ref Uso "
+-"Iface\n"
++msgstr "Destino Roteador MscaraGen. Opes Mtrica Ref Uso Iface\n"
+
+ #: ../lib/inet_gr.c:59
++#, c-format
+ msgid ""
+ "Destination Gateway Genmask Flags MSS Window irtt "
+ "Iface\n"
+-msgstr ""
+-"Destino Roteador MscaraGen. Opes MSS Janela irtt "
+-"Iface\n"
++msgstr "Destino Roteador MscaraGen. Opes MSS Janela irtt Iface\n"
+
+ #: ../lib/inet_gr.c:62
++#, c-format
+ msgid ""
+ "Destination Gateway Genmask Flags Metric Ref Use "
+ "Iface MSS Window irtt\n"
+-msgstr ""
+-"Destino Roteador MscaraGen Opes Mtrica Ref Uso "
+-"Iface MSS Janela irtt\n"
++msgstr "Destino Roteador MscaraGen Opes Mtrica Ref Uso Iface MSS Janela irtt\n"
+
+ #: ../lib/inet_gr.c:237
++#, c-format
+ msgid "Kernel IP routing cache\n"
+ msgstr "Tabela de Roteamento IP do Kernel\n"
+
+ #: ../lib/inet_gr.c:258
++#, c-format
+ msgid ""
+ "Source Destination Gateway Flags Metric Ref Use "
+ "Iface\n"
+-msgstr ""
+-"Destino Roteador MscaraGen. Opes Mtrica Ref Uso "
+-"Iface\n"
++msgstr "Destino Roteador MscaraGen. Opes Mtrica Ref Uso Iface\n"
+
+ #: ../lib/inet_gr.c:261
++#, c-format
+ msgid ""
+ "Source Destination Gateway Flags MSS Window irtt "
+ "Iface\n"
+-msgstr ""
+-"Destino Roteador MscaraGen. Opes MSS Janela irtt "
+-"Iface\n"
++msgstr "Destino Roteador MscaraGen. Opes MSS Janela irtt Iface\n"
+
+ #: ../lib/inet_gr.c:266
++#, c-format
+ msgid ""
+ "Source Destination Gateway Flags Metric Ref Use "
+ "Iface MSS Window irtt HH Arp\n"
+-msgstr ""
+-"Destino Roteador Origem Opes Mtrica Ref Uso "
+-"Iface MSS Janela irtt HH Arp\n"
++msgstr "Destino Roteador Origem Opes Mtrica Ref Uso Iface MSS Janela irtt HH Arp\n"
+
+ #: ../lib/inet_gr.c:290
++#, c-format
+ msgid ""
+ "Source Destination Gateway Flags Metric Ref Use "
+ "Iface MSS Window irtt TOS HHRef HHUptod SpecDst\n"
+-msgstr ""
+-"Destino Roteador Origem Opes Mtrica Ref Uso "
+-"Iface MSS Janela irtt HH Arp\n"
++msgstr "Destino Roteador Origem Opes Mtrica Ref Uso Iface MSS Janela irtt HH Arp\n"
+
+-#: ../lib/inet_sr.c:50
++#: ../lib/inet_sr.c:51
++#, c-format
+ msgid ""
+ "Usage: inet_route [-vF] del {-host|-net} Target[/prefix] [gw Gw] [metric M] "
+ "[[dev] If]\n"
+@@ -2196,31 +2471,36 @@
+ "Uso: inet_route [-vF] del {-host|-net} Destino[/prefixo] [gw Gw] [metric M] "
+ "[[dev] If]\n"
+
+-#: ../lib/inet_sr.c:51
++#: ../lib/inet_sr.c:52
++#, c-format
+ msgid ""
+ " inet_route [-vF] add {-host|-net} Target[/prefix] [gw Gw] [metric M]\n"
+ msgstr ""
+ " inet_route [-vF] add {-host|-net} Destino[/prefixo] [gw Gw] [metric "
+ "M]\n"
+
+-#: ../lib/inet_sr.c:52
++#: ../lib/inet_sr.c:53
++#, c-format
+ msgid ""
+ " [netmask N] [mss Mss] [window W] [irtt I]\n"
+ msgstr ""
+ " [netmask N] [mss Mss] [window W] [irtt I]\n"
+
+-#: ../lib/inet_sr.c:53
++#: ../lib/inet_sr.c:54
++#, c-format
+ msgid " [mod] [dyn] [reinstate] [[dev] If]\n"
+ msgstr " [mod] [dyn] [reinstate] [[dev] If]\n"
+
+-#: ../lib/inet_sr.c:54
++#: ../lib/inet_sr.c:55
++#, c-format
+ msgid ""
+ " inet_route [-vF] add {-host|-net} Target[/prefix] [metric M] reject\n"
+ msgstr ""
+ " inet_route [-vF] add {-host|-net} Destino[/prefixo] [metric M] "
+ "reject\n"
+
+-#: ../lib/inet_sr.c:55
++#: ../lib/inet_sr.c:56
++#, c-format
+ msgid " inet_route [-FC] flush NOT supported\n"
+ msgstr " inet_route [-FC] flush NO suportado\n"
+
+@@ -2230,14 +2510,17 @@
+ msgstr "route: %s: no possvel usar uma REDE como roteador!\n"
+
+ #: ../lib/inet_sr.c:174
++#, c-format
+ msgid "route: Invalid MSS/MTU.\n"
+ msgstr "route: MSS invlido.\n"
+
+ #: ../lib/inet_sr.c:187
++#, c-format
+ msgid "route: Invalid window.\n"
+ msgstr "route: janela invlida.\n"
+
+ #: ../lib/inet_sr.c:203
++#, c-format
+ msgid "route: Invalid initial rtt.\n"
+ msgstr "route: rtt inicial invlido.\n"
+
+@@ -2252,75 +2535,92 @@
+ msgstr "route: netmask %s invlida\n"
+
+ #: ../lib/inet_sr.c:270
++#, c-format
+ msgid "route: netmask doesn't match route address\n"
+ msgstr "route: a netmask no casa com o endereo de rede\n"
+
+ #: ../lib/inet_sr.c:306
++#, c-format
+ msgid "Flushing `inet' routing table not supported\n"
+ msgstr "No suportado limpar a tabela de roteamento `inet'\n"
+
+ #: ../lib/inet_sr.c:310
++#, c-format
+ msgid "Modifying `inet' routing cache not supported\n"
+ msgstr "No suportado modificar o cache de roteamento `inet'\n"
+
+ #: ../lib/ipx_gr.c:52
++#, c-format
+ msgid "IPX not configured in this system.\n"
+ msgstr "O AX.25 no foi configurado neste sistema.\n"
+
+ #: ../lib/ipx_gr.c:56
++#, c-format
+ msgid "Kernel IPX routing table\n"
+ msgstr "Tabela de roteamento IPX do kernel\n"
+
+ #. xxx
+ #: ../lib/ipx_gr.c:57
++#, c-format
+ msgid "Destination Router Net Router Node\n"
+ msgstr "Destino Rede Roteadora N Roteador\n"
+
+ #: ../lib/ipx_sr.c:33
++#, c-format
+ msgid "IPX: this needs to be written\n"
+ msgstr "NET/ROM: isto precisa ser escrito\n"
+
+-#: ../lib/masq_info.c:197
++#: ../lib/masq_info.c:198
++#, c-format
+ msgid "IP masquerading entries\n"
+ msgstr "Entradas de IP mascarado\n"
+
+-#: ../lib/masq_info.c:200
++#: ../lib/masq_info.c:201
++#, c-format
+ msgid "prot expire source destination ports\n"
+ msgstr "prot expira origem destino portas\n"
+
+-#: ../lib/masq_info.c:203
++#: ../lib/masq_info.c:204
++#, c-format
+ msgid ""
+-"prot expire initseq delta prevd source destination "
+-" ports\n"
++"prot expire initseq delta prevd source "
++"destination ports\n"
+ msgstr ""
+-"prot expira initseq delta prevd origem destino "
+-" portas\n"
++"prot expira initseq delta prevd origem "
++"destino portas\n"
+
+ #: ../lib/netrom_gr.c:48
++#, c-format
+ msgid "NET/ROM not configured in this system.\n"
+ msgstr "NET/ROM no configurado neste sistema.\n"
+
+ #: ../lib/netrom_gr.c:51
++#, c-format
+ msgid "Kernel NET/ROM routing table\n"
+ msgstr "Tabela de roteamento NET/ROM do kernel\n"
+
+ #: ../lib/netrom_gr.c:52
++#, c-format
+ msgid "Destination Mnemonic Quality Neighbour Iface\n"
+ msgstr "Destino Mnemnico Qualidade Vizinho Iface\n"
+
+ #: ../lib/netrom_sr.c:34
++#, c-format
+ msgid "netrom usage\n"
+ msgstr "uso de netrom\n"
+
+ #: ../lib/netrom_sr.c:44
++#, c-format
+ msgid "NET/ROM: this needs to be written\n"
+ msgstr "NET/ROM: isto precisa ser escrito\n"
+
+ #: ../lib/ppp.c:44
++#, c-format
+ msgid "You cannot start PPP with this program.\n"
+ msgstr "Voc no pode iniciar o PPP com este programa.\n"
+
+ #: ../lib/ppp_ac.c:38
++#, c-format
+ msgid "Sorry, use pppd!\n"
+ msgstr "Desculpe, use o pppd!\n"
+
+@@ -2329,51 +2629,314 @@
+ msgstr "Endereo do n deve ter dez dgitos"
+
+ #: ../lib/rose_gr.c:51
++#, c-format
+ msgid "ROSE not configured in this system.\n"
+ msgstr "ROSE no configurada neste sistema.\n"
+
+ #: ../lib/rose_gr.c:54
++#, c-format
+ msgid "Kernel ROSE routing table\n"
+ msgstr "Tabela de roteamento ROSE do kernel\n"
+
+-#: ../lib/tr.c:70 ../lib/tr.c:85
++#: ../lib/tr.c:86 ../lib/tr.c:101
+ #, c-format
+ msgid "in_tr(%s): invalid token ring address!\n"
+ msgstr "in_tr(%s): endereo token ring invlido!\n"
+
+-#: ../lib/tr.c:97
++#: ../lib/tr.c:113
+ #, c-format
+ msgid "in_tr(%s): trailing : ignored!\n"
+ msgstr "in_tr(%s): trailing : ignorado!\n"
+
+-#: ../lib/tr.c:109
++#: ../lib/tr.c:125
+ #, c-format
+ msgid "in_tr(%s): trailing junk!\n"
+ msgstr "in_tr(%s): lixo no trailing!\n"
+
+-#: ../lib/interface.c:124
++#: ../lib/interface.c:176
+ #, c-format
+ msgid "warning: no inet socket available: %s\n"
+ msgstr "ateno: nenhum socket inet disponvel: %s\n"
+
+-#: ../lib/interface.c:270
++#: ../lib/interface.c:325
+ #, c-format
+ msgid "Warning: cannot open %s (%s). Limited output.\n"
+ msgstr "Ateno: no foi possvel abrir %s (%s). Sada limitada.\n"
+
+ #. Give better error message for this case.
+-#: ../lib/interface.c:504
++#: ../lib/interface.c:571
+ msgid "Device not found"
+ msgstr "%s: dispositivo no encontrado"
+
+-#: ../lib/interface.c:508
++#: ../lib/interface.c:575
+ #, c-format
+ msgid "%s: error fetching interface information: %s\n"
++msgstr "%s: erro obtendo informaes da interface: %s\n"
++
++#: ../lib/interface.c:608
++msgid " - no statistics available -"
++msgstr " - estatsticas no disponveis -"
++
++#: ../lib/interface.c:612
++#, c-format
++msgid "[NO FLAGS]"
++msgstr "[SEM FLAGS]"
++
++#: ../lib/interface.c:688
++#, c-format
++msgid "%-9.9s Link encap:%s "
++msgstr "%-9.9s Encapsulamento do Link: %s "
++
++#: ../lib/interface.c:693
++#, c-format
++msgid "HWaddr %s "
++msgstr "Endereo de HW %s "
++
++#: ../lib/interface.c:696
++#, c-format
++msgid "Media:%s"
++msgstr "Mdia:%s"
++
++#: ../lib/interface.c:698
++#, c-format
++msgid "(auto)"
++msgstr "(auto)"
++
++#: ../lib/interface.c:705
++#, c-format
++msgid " %s addr:%s "
++msgstr " %s end.: %s "
++
++#: ../lib/interface.c:708
++#, c-format
++msgid " P-t-P:%s "
++msgstr " P-a-P:%s "
++
++#: ../lib/interface.c:711
++#, c-format
++msgid " Bcast:%s "
++msgstr " Bcast:%s "
++
++#: ../lib/interface.c:713
++#, c-format
++msgid " Mask:%s\n"
++msgstr " Masc:%s\n"
++
++#: ../lib/interface.c:730
++#, c-format
++msgid " inet6 addr: %s/%d"
++msgstr " endereo inet6: %s/%d"
++
++#: ../lib/interface.c:732
++#, c-format
++msgid " Scope:"
++msgstr " Escopo:"
++
++#: ../lib/interface.c:735
++#, c-format
++msgid "Global"
++msgstr "Global"
++
++#: ../lib/interface.c:738
++#, c-format
++msgid "Link"
++msgstr "Link"
++
++#: ../lib/interface.c:741
++#, c-format
++msgid "Site"
++msgstr "Site"
++
++#: ../lib/interface.c:744
++#, c-format
++msgid "Compat"
++msgstr "Compat"
++
++#: ../lib/interface.c:747
++#, c-format
++msgid "Host"
++msgstr "Mquina"
++
++#: ../lib/interface.c:750
++#, c-format
++msgid "Unknown"
++msgstr "Desconhecido"
++
++#: ../lib/interface.c:765
++#, c-format
++msgid " IPX/Ethernet II addr:%s\n"
++msgstr " Endereo IPX/Ethernet II:%s\n"
++
++#: ../lib/interface.c:768
++#, c-format
++msgid " IPX/Ethernet SNAP addr:%s\n"
++msgstr " Endereo IPX/Ethernet SNAP:%s\n"
++
++#: ../lib/interface.c:771
++#, c-format
++msgid " IPX/Ethernet 802.2 addr:%s\n"
++msgstr " Endereo IPX/Ethernet 802.2:%s\n"
++
++#: ../lib/interface.c:774
++#, c-format
++msgid " IPX/Ethernet 802.3 addr:%s\n"
++msgstr " Endereo IPX/Ethernet 802.3:%s\n"
++
++#: ../lib/interface.c:784
++#, c-format
++msgid " EtherTalk Phase 2 addr:%s\n"
++msgstr " Endereo EtherTalk fase 2:%s\n"
++
++#: ../lib/interface.c:793
++#, c-format
++msgid " econet addr:%s\n"
++msgstr " Endereo econet:%s\n"
++
++#: ../lib/interface.c:800
++#, c-format
++msgid "[NO FLAGS] "
++msgstr "[NENHUMA FLAG] "
++
++#: ../lib/interface.c:802
++#, c-format
++msgid "UP "
++msgstr "UP "
++
++#: ../lib/interface.c:804
++#, c-format
++msgid "BROADCAST "
++msgstr "BROADCAST"
++
++#: ../lib/interface.c:806
++#, c-format
++msgid "DEBUG "
++msgstr "DEBUG "
++
++#: ../lib/interface.c:808
++#, c-format
++msgid "LOOPBACK "
++msgstr "LOOPBACK"
++
++#: ../lib/interface.c:810
++#, c-format
++msgid "POINTOPOINT "
++msgstr "POINTOPOINT "
++
++#: ../lib/interface.c:812
++#, c-format
++msgid "NOTRAILERS "
++msgstr "NOTRAILERS "
++
++#: ../lib/interface.c:814
++#, c-format
++msgid "RUNNING "
++msgstr "RUNNING "
++
++#: ../lib/interface.c:816
++#, c-format
++msgid "NOARP "
++msgstr "NOARP "
++
++#: ../lib/interface.c:818
++#, c-format
++msgid "PROMISC "
++msgstr "PROMISC "
++
++#: ../lib/interface.c:820
++#, c-format
++msgid "ALLMULTI "
++msgstr "ALLMULTI "
++
++#: ../lib/interface.c:822
++#, c-format
++msgid "SLAVE "
++msgstr "SLAVE "
++
++#: ../lib/interface.c:824
++#, c-format
++msgid "MASTER "
++msgstr "MASTER "
++
++#: ../lib/interface.c:826
++#, c-format
++msgid "MULTICAST "
++msgstr "MULTICAST "
++
++#: ../lib/interface.c:829
++#, c-format
++msgid "DYNAMIC "
++msgstr "DYNAMIC "
++
++#. DONT FORGET TO ADD THE FLAGS IN ife_print_short
++#: ../lib/interface.c:832
++#, c-format
++msgid " MTU:%d Metric:%d"
++msgstr " MTU:%d Mtrica:%d"
++
++#: ../lib/interface.c:836
++#, c-format
++msgid " Outfill:%d Keepalive:%d"
++msgstr " Outfill:%d Keepalive:%d"
++
++#: ../lib/interface.c:850
++#, fuzzy, c-format
++msgid "RX packets:%llu errors:%lu dropped:%lu overruns:%lu frame:%lu\n"
++msgstr "Pacotes RX:%lu erros:%lu descartados:%lu sobreposies:%lu frame:%lu\n"
++
++#: ../lib/interface.c:855
++#, c-format
++msgid " compressed:%lu\n"
++msgstr " compactados:%lu\n"
++
++#: ../lib/interface.c:895
++#, fuzzy, c-format
++msgid "TX packets:%llu errors:%lu dropped:%lu overruns:%lu carrier:%lu\n"
++msgstr "Pacotes TX:%lu erros:%lu descartados:%lu sobreposies:%lu portadora:%lu\n"
++
++#: ../lib/interface.c:899
++#, c-format
++msgid " collisions:%lu "
++msgstr " colises:%lu "
++
++#: ../lib/interface.c:901
++#, c-format
++msgid "compressed:%lu "
++msgstr "compactados:%lu "
++
++#: ../lib/interface.c:903
++#, c-format
++msgid "txqueuelen:%d "
++msgstr "txqueuelen:%d "
++
++#: ../lib/interface.c:905
++#, c-format
++msgid "RX bytes:%llu (%lu.%lu %s) TX bytes:%llu (%lu.%lu %s)\n"
+ msgstr ""
+-"%s: erro obtendo informaes da interface: %s\n"
+-"\n"
+
+-#: ../lib/sockets.c:59
++#: ../lib/interface.c:916
++#, c-format
++msgid "Interrupt:%d "
++msgstr "IRQ:%d "
++
++#. Only print devices using it for
++#. I/O maps
++#: ../lib/interface.c:919
++#, c-format
++msgid "Base address:0x%x "
++msgstr "Endereo de E/S:0x%x "
++
++#: ../lib/interface.c:921
++#, c-format
++msgid "Memory:%lx-%lx "
++msgstr "Memria:%lx-%lx "
++
++#: ../lib/interface.c:924
++#, c-format
++msgid "DMA chan:%x "
++msgstr "Canal DMA:%x "
++
++#: ../lib/sockets.c:63
++#, c-format
+ msgid "No usable address families found.\n"
+ msgstr "Nenhuma famlia de endereos que possa ser usada foi encontrada.\n"
+
+@@ -2397,29 +2960,32 @@
+ msgid "ip: argument is wrong: %s\n"
+ msgstr "ip: argumento errado: %s\n"
+
+-#: ../ipmaddr.c:56
++#: ../ipmaddr.c:61
++#, c-format
+ msgid "Usage: ipmaddr [ add | del ] MULTIADDR dev STRING\n"
+ msgstr "Uso: ipmaddr [ add | del ] ENDMULTI dev STRING\n"
+
+-#: ../ipmaddr.c:57
++#: ../ipmaddr.c:62
++#, c-format
+ msgid " ipmaddr show [ dev STRING ] [ ipv4 | ipv6 | link | all ]\n"
+ msgstr " ipmaddr show [ dev STRING ] [ ipv4 | ipv6 | link | all ]\n"
+
+-#: ../ipmaddr.c:58
++#: ../ipmaddr.c:63
++#, c-format
+ msgid " ipmaddr -V | -version\n"
+ msgstr " ipmaddr -V | -version\n"
+
+-#: ../ipmaddr.c:258
++#: ../ipmaddr.c:263
+ #, c-format
+ msgid "family %d "
+ msgstr "famlia %d "
+
+-#: ../ipmaddr.c:267
++#: ../ipmaddr.c:272
+ #, c-format
+ msgid " users %d"
+ msgstr " usurios %d"
+
+-#: ../ipmaddr.c:353
++#: ../ipmaddr.c:358
+ msgid "Cannot create socket"
+ msgstr "No foi possvel criar o socket"
+
+@@ -2434,6 +3000,7 @@
+ msgstr "slattach: tty_lock: (%s): %s\n"
+
+ #: ../slattach.c:192
++#, c-format
+ msgid "slattach: cannot write PID file\n"
+ msgstr "slattach: no foi possvel escrever o arquivo PID\n"
+
+@@ -2452,39 +3019,69 @@
+ msgid "slattach: tty_hangup(RAISE): %s\n"
+ msgstr "slattach: tty_hangup(RAISE): %s\n"
+
+-#: ../slattach.c:486
++#: ../slattach.c:468
++#, fuzzy, c-format
++msgid "slattach: tty name too long\n"
++msgstr "%s: nome muito longo\n"
++
++#: ../slattach.c:498
++#, c-format
+ msgid "slattach: tty_open: cannot get current state!\n"
+ msgstr "slattach: tty_open: no foi possvel obter o estado corrente!\n"
+
+-#: ../slattach.c:493
++#: ../slattach.c:505
++#, c-format
+ msgid "slattach: tty_open: cannot get current line disc!\n"
+-msgstr ""
+-"slattach: tty_open: no foi possvel obter a disciplina de linha corrente!\n"
++msgstr "slattach: tty_open: no foi possvel obter a disciplina de linha corrente!\n"
+
+-#: ../slattach.c:501
++#: ../slattach.c:513
++#, c-format
+ msgid "slattach: tty_open: cannot set RAW mode!\n"
+ msgstr "slattach: tty_open: no foi possvel configurar o modo RAW!\n"
+
+-#: ../slattach.c:508
++#: ../slattach.c:520
+ #, c-format
+ msgid "slattach: tty_open: cannot set %s bps!\n"
+ msgstr "slattach: tty_open: no foi possvel configurar %s bps!\n"
+
+-#: ../slattach.c:518
++#: ../slattach.c:530
++#, c-format
+ msgid "slattach: tty_open: cannot set 8N1 mode!\n"
+ msgstr "slattach: tty_open: no foi possvel configurar modo 8N1!\n"
+
+-#: ../slattach.c:686
++#: ../slattach.c:672
++#, c-format
++msgid "slattach: setvbuf(stdout,0,_IOLBF,0) : %s\n"
++msgstr ""
++
++#: ../slattach.c:704
+ #, c-format
+ msgid "%s started"
+ msgstr "%s inicializado"
+
+-#: ../slattach.c:687
++#: ../slattach.c:705
+ #, c-format
+ msgid " on %s"
+ msgstr " em %s"
+
+-#: ../slattach.c:688
++#: ../slattach.c:706
+ #, c-format
+ msgid " interface %s\n"
+ msgstr "%s: interface desconhecida.\n"
++
++#~ msgid ""
++#~ " arp [-v] [<HW>] [-i <if>] -s <hostname> <hwaddr> [netmask <nm>] pub "
++#~ "<-''-\n"
++#~ msgstr " arp [-v] [<HW>] [-i <if>] -s <mquina> <end_hw> [netmask <nm>] pub <-''-\n"
++
++#~ msgid "%s: unknown interface: %s\n"
++#~ msgstr "%s: interface desconhecida: %s\n"
++
++#~ msgid "address mask replies"
++#~ msgstr "resposta a mascara de endereo"
++
++#~ msgid "unknown title %s\n"
++#~ msgstr "ttulo %s desconhecido\n"
++
++#~ msgid "Routing table for `ddp' not yet supported.\n"
++#~ msgstr "Tabela de roteamento para `ddp' ainda no suportada.\n"
+--- net-tools-1.60.orig/po/Makefile
++++ net-tools-1.60/po/Makefile
+@@ -3,13 +3,13 @@
+ INSTALL_DATA= ${INSTALL} -m 644
+ INSTALLNLSDIR=${BASEDIR}/usr/share/locale
+
+-TUPDATE = tupdate
++TUPDATE = msgmerge
+
+ NLSPACKAGE = net-tools
+
+ -include ../config.make
+ ifeq ($(I18N),1)
+-CATALOGS = de.mo fr.mo pt_BR.mo et_EE.mo cs.mo
++CATALOGS = de.mo fr.mo pt_BR.mo et_EE.mo cs.mo ja.mo
+ else
+ CATALOGS =
+ endif
+@@ -49,7 +49,7 @@
+ lang=`echo $$cat | sed 's/.mo//'`; \
+ mv $$lang.po $$lang.old.po; \
+ echo "$$lang:"; \
+- if $(TUPDATE) $(NLSPACKAGE).pot $$lang.old.po > $$lang.po; then \
++ if $(TUPDATE) $$lang.old.po $(NLSPACKAGE).pot > $$lang.po; then \
+ rm -f $$lang.old.po; \
+ else \
+ echo "tupdate for $$cat failed!"; \
+--- net-tools-1.60.orig/po/et_EE.po
++++ net-tools-1.60/po/et_EE.po
+@@ -6,7 +6,8 @@
+ msgid ""
+ msgstr ""
+ "Project-Id-Version: net-tools 1.58\n"
+-"POT-Creation-Date: 2001-02-15 21:28+0200\n"
++"Report-Msgid-Bugs-To: \n"
++"POT-Creation-Date: 2007-06-30 12:28+0900\n"
+ "PO-Revision-Date: 2001-02-15 18:00+0300\n"
+ "Last-Translator: Meelis Roos <mroos@linux.ee>\n"
+ "Language-Team: Estonian <linux-ee@eenet.ee>\n"
+@@ -14,53 +15,58 @@
+ "Content-Type: text/plain; charset=iso-8859-15\n"
+ "Content-Transfer-Encoding: 8bit\n"
+
+-#: ../arp.c:110 ../arp.c:269
++#: ../arp.c:112 ../arp.c:279
++#, c-format
+ msgid "arp: need host name\n"
+ msgstr "arp: puudub hosti nimi\n"
+
+-#: ../arp.c:207 ../arp.c:221
++#: ../arp.c:215 ../arp.c:230
+ #, c-format
+ msgid "No ARP entry for %s\n"
+ msgstr "%s jaoks pole ARP kirjet\n"
+
+-#: ../arp.c:239
++#: ../arp.c:248
+ #, c-format
+ msgid "arp: cant get HW-Address for `%s': %s.\n"
+ msgstr "arp: ei saa riistvaralist aadressi `%s' jaoks: %s\n"
+
+-#: ../arp.c:243
++#: ../arp.c:252
++#, c-format
+ msgid "arp: protocol type mismatch.\n"
+ msgstr "arp: vale protokolli tp\n"
+
+-#: ../arp.c:252
++#: ../arp.c:261
+ #, c-format
+ msgid "arp: device `%s' has HW address %s `%s'.\n"
+ msgstr "arp: seadmel `%s' on riistvaraline aadress %s `%s'\n"
+
+-#: ../arp.c:282
++#: ../arp.c:293
++#, c-format
+ msgid "arp: need hardware address\n"
+ msgstr "arp: puudub riistvaraline aadress\n"
+
+-#: ../arp.c:290
++#: ../arp.c:301
++#, c-format
+ msgid "arp: invalid hardware address\n"
+ msgstr "arp: vigane riistvaraline aadress\n"
+
+-#: ../arp.c:387
++#: ../arp.c:398
+ #, c-format
+ msgid "arp: cannot open etherfile %s !\n"
+ msgstr "arp: ei saa avada faili %s\n"
+
+-#: ../arp.c:403
++#: ../arp.c:414
+ #, c-format
+ msgid "arp: format error on line %u of etherfile %s !\n"
+ msgstr "arp: formaadiviga real %u failis %s\n"
+
+-#: ../arp.c:416
++#: ../arp.c:427
+ #, c-format
+ msgid "arp: cannot set entry on line %u of etherfile %s !\n"
+ msgstr "arp: ei saa kehtestada ARP kirjet real %u failis %s\n"
+
+-#: ../arp.c:437
++#: ../arp.c:448
++#, c-format
+ msgid ""
+ "Address HWtype HWaddress Flags Mask "
+ "Iface\n"
+@@ -68,45 +74,52 @@
+ "Aadress HWtp HWaadress Lipud Mask "
+ "Liides\n"
+
+-#: ../arp.c:467
++#: ../arp.c:476
++#, fuzzy
++msgid "<from_interface>"
++msgstr " liides %s\n"
++
++#: ../arp.c:478
+ msgid "(incomplete)"
+ msgstr "(mittetielik)"
+
+-#: ../arp.c:484
++#: ../arp.c:495
+ #, c-format
+ msgid "%s (%s) at "
+ msgstr "%s (%s) aadressil "
+
+-#: ../arp.c:490
++#: ../arp.c:501
++#, c-format
+ msgid "<incomplete> "
+ msgstr "<mittetielik>"
+
+-#: ../arp.c:496
++#: ../arp.c:507
+ #, c-format
+ msgid "netmask %s "
+ msgstr "vrgumask %s "
+
+-#: ../arp.c:513
++#: ../arp.c:524
+ #, c-format
+ msgid "on %s\n"
+ msgstr "liides %s\n"
+
+-#: ../arp.c:592
++#: ../arp.c:605
+ #, c-format
+ msgid "Entries: %d\tSkipped: %d\tFound: %d\n"
+ msgstr "ARP kirjeid kokku: %s\tignoreerisin: %d\tleidsin: %d\n"
+
+-#: ../arp.c:596
++#: ../arp.c:609
+ #, c-format
+ msgid "%s (%s) -- no entry\n"
+ msgstr "%s (%s) -- pole kirjet\n"
+
+-#: ../arp.c:598
++#: ../arp.c:611
+ #, c-format
+ msgid "arp: in %d entries no match found.\n"
+ msgstr "arp: ei leidnud %d kirje hulgast sobivat\n"
+
+-#: ../arp.c:613
++#: ../arp.c:626
++#, c-format
+ msgid ""
+ "Usage:\n"
+ " arp [-vn] [<HW>] [-i <if>] [-a] [<hostname>] <-Display ARP "
+@@ -116,47 +129,45 @@
+ "ARP cache vaatamine:\n"
+ " arp [-vn] [<HW>] [-i <if>] [-a] [<hosti nimi>]\n"
+
+-#: ../arp.c:614
++#: ../arp.c:627
++#, fuzzy, c-format
+ msgid ""
+-" arp [-v] [-i <if>] -d <hostname> [pub][nopub] <-Delete ARP "
++" arp [-v] [-i <if>] -d <host> [pub] <-Delete ARP "
+ "entry\n"
+ msgstr ""
+ "ARP kirje kustutamine:\n"
+ " arp [-v] [-i <if>] -d <hosti nimi> [pub] [nopub]\n"
+
+-#: ../arp.c:615
++#: ../arp.c:628
++#, fuzzy, c-format
+ msgid ""
+-" arp [-vnD] [<HW>] [-i <if>] -f [<filename>] <-Add entry from "
++" arp [-vnD] [<HW>] [-i <if>] -f [<filename>] <-Add entry from "
+ "file\n"
+ msgstr ""
+ "ARP kirjete lisamine failist:\n"
+ " arp [-vnD] [<HW>] [-i <if>] -f [<failinimi>]\n"
+
+-#: ../arp.c:616
++#: ../arp.c:629
++#, fuzzy, c-format
+ msgid ""
+-" arp [-v] [<HW>] [-i <if>] -s <hostname> <hwaddr> [temp][nopub] <-Add "
++" arp [-v] [<HW>] [-i <if>] -s <host> <hwaddr> [temp] <-Add "
+ "entry\n"
+ msgstr ""
+ "ARP kirje lisamine:\n"
+ " arp [-v] [<HW>] [-i <if>] -s <hosti nimi> <hwaddr> [temp] [nopub]\n"
+
+-#: ../arp.c:617
+-msgid ""
+-" arp [-v] [<HW>] [-i <if>] -s <hostname> <hwaddr> [netmask <nm>] pub "
+-"<-''-\n"
+-msgstr ""
+-" arp [-v] [<HW>] [-i <if>] -s <hosti nimi> <hwaddr> [netmask <nm>] pub\n"
+-
+-#: ../arp.c:618
++#: ../arp.c:630
++#, fuzzy, c-format
+ msgid ""
+-" arp [-v] [<HW>] [-i <if>] -Ds <hostname> <if> [netmask <nm>] pub "
++" arp [-v] [<HW>] [-i <if>] -Ds <host> <if> [netmask <nm>] pub "
+ "<-''-\n"
+ "\n"
+ msgstr ""
+ " arp [-v] [<HW>] [-i <if>] -Ds <hosti nimi> <if> [netmask <nm>] pub\n"
+ "\n"
+
+-#: ../arp.c:620
++#: ../arp.c:632
++#, c-format
+ msgid ""
+ " -a display (all) hosts in alternative (BSD) "
+ "style\n"
+@@ -164,122 +175,132 @@
+ " -a nita kiki hoste alternatiivsel (BSD) "
+ "kujul\n"
+
+-#: ../arp.c:621
++#: ../arp.c:633
++#, c-format
+ msgid " -s, --set set a new ARP entry\n"
+ msgstr " -s, --set uue ARP kirje seadmine\n"
+
+-#: ../arp.c:622
++#: ../arp.c:634
++#, c-format
+ msgid " -d, --delete delete a specified entry\n"
+ msgstr " -d, --delete mratud kirje kustutamine\n"
+
+-#: ../arp.c:623 ../netstat.c:1485 ../route.c:85
++#: ../arp.c:635 ../netstat.c:1503 ../route.c:86
++#, c-format
+ msgid " -v, --verbose be verbose\n"
+ msgstr " -v, --verbose jutukas vljund\n"
+
+-#: ../arp.c:624
++#: ../arp.c:636 ../netstat.c:1504 ../route.c:87
++#, c-format
+ msgid " -n, --numeric don't resolve names\n"
+ msgstr " -n, --numeric mitte lahendada nimesid\n"
+
+-#: ../arp.c:625
++#: ../arp.c:637
++#, c-format
+ msgid ""
+ " -i, --device specify network interface (e.g. eth0)\n"
+ msgstr ""
+ " -i, --device vrguliidese tpsustamine (niteks eth0)\n"
+
+-#: ../arp.c:626
++#: ../arp.c:638
++#, c-format
+ msgid " -D, --use-device read <hwaddr> from given device\n"
+ msgstr " -D, --use-device lugeda <hwaddr> vastavalt liideselt\n"
+
+-#: ../arp.c:627
++#: ../arp.c:639
++#, c-format
+ msgid " -A, -p, --protocol specify protocol family\n"
+ msgstr " -A, -p, --protocol protokollipere mramine\n"
+
+-#: ../arp.c:628
++#: ../arp.c:640
++#, c-format
+ msgid ""
+-" -f, --file read new entries from file or from "
+-"/etc/ethers\n"
++" -f, --file read new entries from file or from /etc/"
++"ethers\n"
+ "\n"
+ msgstr ""
+-" -f, --file lugeda kirjed antud failist vi "
+-"/etc/ethers'st\n"
++" -f, --file lugeda kirjed antud failist vi /etc/"
++"ethers'st\n"
+ "\n"
+
+-#: ../arp.c:630 ../rarp.c:181
++#: ../arp.c:642 ../rarp.c:182
+ #, c-format
+ msgid " <HW>=Use '-H <hw>' to specify hardware address type. Default: %s\n"
+ msgstr ""
+ " <HW>=kasutage '-H <hw>' riistvaralise aadressi mramiseks.\n"
+ " Vaikimisi: %s\n"
+
+-#: ../arp.c:631 ../rarp.c:182
++#: ../arp.c:643 ../rarp.c:183
++#, c-format
+ msgid " List of possible hardware types (which support ARP):\n"
+ msgstr " Vimalike ARP-i toetavate riistvara tpide nimekiri:\n"
+
+-#: ../arp.c:664 ../arp.c:749
++#: ../arp.c:677 ../arp.c:762
+ #, c-format
+ msgid "%s: hardware type not supported!\n"
+ msgstr "arp: riistvara tpi %s ei toetata\n"
+
+-#: ../arp.c:668
++#: ../arp.c:681
+ #, c-format
+ msgid "%s: address family not supported!\n"
+ msgstr "arp: aadressiperekonda %s ei toetata\n"
+
+-#: ../arp.c:703
++#: ../arp.c:716
++#, c-format
+ msgid "arp: -N not yet supported.\n"
+ msgstr "arp: -N toetust pole veel\n"
+
+-#: ../arp.c:713
++#: ../arp.c:726
+ #, c-format
+ msgid "arp: %s: unknown address family.\n"
+ msgstr "arp: tundmatu aadressiperekond %s\n"
+
+-#: ../arp.c:722
++#: ../arp.c:735
+ #, c-format
+ msgid "arp: %s: unknown hardware type.\n"
+ msgstr "arp: tundmatu riistvara tp %s\n"
+
+-#: ../arp.c:741
++#: ../arp.c:754
+ #, c-format
+ msgid "arp: %s: kernel only supports 'inet'.\n"
+ msgstr "arp: tuumas on ainult 'inet' aadressiperekonna toetus\n"
+
+-#: ../arp.c:754
++#: ../arp.c:767
+ #, c-format
+ msgid "arp: %s: hardware type without ARP support.\n"
+ msgstr "arp: riistvara tbil %s pole ARP toetust\n"
+
+-#: ../hostname.c:69
++#: ../hostname.c:71
+ #, c-format
+ msgid "Setting nodename to `%s'\n"
+ msgstr "Sean slme nimeks `%s'\n"
+
+-#: ../hostname.c:74
++#: ../hostname.c:76
+ #, c-format
+ msgid "%s: you must be root to change the node name\n"
+ msgstr "%s: ainult root saab slme nime muuta\n"
+
+-#: ../hostname.c:77 ../hostname.c:97 ../hostname.c:116
++#: ../hostname.c:79 ../hostname.c:99 ../hostname.c:117
+ #, c-format
+ msgid "%s: name too long\n"
+ msgstr "%s: nimi on liiga pikk\n"
+
+-#: ../hostname.c:89
++#: ../hostname.c:91
+ #, c-format
+ msgid "Setting hostname to `%s'\n"
+ msgstr "Sean hosti nimeks `%s'\n"
+
+-#: ../hostname.c:94
++#: ../hostname.c:96
+ #, c-format
+ msgid "%s: you must be root to change the host name\n"
+ msgstr "%s: ainult root saab hosti nime muuta\n"
+
+-#: ../hostname.c:108
++#: ../hostname.c:109
+ #, c-format
+ msgid "Setting domainname to `%s'\n"
+ msgstr "Sean domeeni nimeks `%s'\n"
+
+-#: ../hostname.c:113
++#: ../hostname.c:114
+ #, c-format
+ msgid "%s: you must be root to change the domain name\n"
+ msgstr "%s: ainult root saab domeeni nime muuta\n"
+@@ -304,25 +325,28 @@
+ msgid "Result: h_addr_list=`%s'\n"
+ msgstr "Tulemus: h_addr_list=`%s'\n"
+
+-#: ../hostname.c:209
++#: ../hostname.c:208
+ #, c-format
+ msgid "%s: can't open `%s'\n"
+ msgstr "%s: ei saa avada faili `%s'\n"
+
+-#: ../hostname.c:223
++#: ../hostname.c:222
++#, c-format
+ msgid "Usage: hostname [-v] {hostname|-F file} set hostname (from file)\n"
+ msgstr ""
+ "Kasutamine:\n"
+ " hostname [-v] {hosti nimi|-F fail} hosti nime seadmine (ka "
+ "failist)\n"
+
+-#: ../hostname.c:224
++#: ../hostname.c:223
++#, c-format
+ msgid ""
+ " domainname [-v] {nisdomain|-F file} set NIS domainname (from file)\n"
+ msgstr ""
+ " domainname [-v] {nisdomeen|-F fail} NIS domeeni nime seadmine\n"
+
+-#: ../hostname.c:226
++#: ../hostname.c:225
++#, c-format
+ msgid ""
+ " nodename [-v] {nodename|-F file} set DECnet node name (from "
+ "file)\n"
+@@ -330,18 +354,21 @@
+ " nodename [-v] {nodename|-F fail} DECneti vrguslme nime "
+ "seadmine\n"
+
+-#: ../hostname.c:228
++#: ../hostname.c:227
++#, c-format
+ msgid " hostname [-v] [-d|-f|-s|-a|-i|-y|-n] display formatted name\n"
+ msgstr ""
+ " hostname [-v] [-d|-f|-s|-a|-i|-y|-n] nime nitamine antud formaadis\n"
+
+-#: ../hostname.c:229
++#: ../hostname.c:228
++#, c-format
+ msgid ""
+ " hostname [-v] display hostname\n"
+ "\n"
+ msgstr " hostname [-v] hosti nime nitamine\n"
+
+-#: ../hostname.c:230
++#: ../hostname.c:229
++#, c-format
+ msgid ""
+ " hostname -V|--version|-h|--help print info and exit\n"
+ "\n"
+@@ -350,7 +377,8 @@
+ " hostname -h|--help seesama abiinfo\n"
+ "\n"
+
+-#: ../hostname.c:231
++#: ../hostname.c:230
++#, c-format
+ msgid ""
+ " dnsdomainname=hostname -d, {yp,nis,}domainname=hostname -y\n"
+ "\n"
+@@ -358,36 +386,44 @@
+ " dnsdomainname=hostname -d, {yp,nis,}domainname=hostname -y\n"
+ "\n"
+
+-#: ../hostname.c:232
++#: ../hostname.c:231
++#, c-format
+ msgid " -s, --short short host name\n"
+ msgstr " -s, --short lhike hosti nimi\n"
+
+-#: ../hostname.c:233
++#: ../hostname.c:232
++#, c-format
+ msgid " -a, --alias alias names\n"
+ msgstr " -a, --alias alias-nimed\n"
+
+-#: ../hostname.c:234
++#: ../hostname.c:233
++#, c-format
+ msgid " -i, --ip-address addresses for the hostname\n"
+ msgstr " -i, --ip-address hosti IP aadressid\n"
+
+-#: ../hostname.c:235
++#: ../hostname.c:234
++#, c-format
+ msgid " -f, --fqdn, --long long host name (FQDN)\n"
+ msgstr ""
+ " -f, --fqdn, --long pikk hosti nimi (FQDN - tielik ssteeminimi)\n"
+
+-#: ../hostname.c:236
++#: ../hostname.c:235
++#, c-format
+ msgid " -d, --domain DNS domain name\n"
+ msgstr " -d, --domain DNS domeeni nimi\n"
+
+-#: ../hostname.c:237
++#: ../hostname.c:236
++#, c-format
+ msgid " -y, --yp, --nis NIS/YP domainname\n"
+ msgstr " -y, --yp, --nis NIS/YP domeeni nimi\n"
+
+-#: ../hostname.c:239
++#: ../hostname.c:238
++#, c-format
+ msgid " -n, --node DECnet node name\n"
+ msgstr " -n, --node DECneti vrguslme nimi\n"
+
+-#: ../hostname.c:241
++#: ../hostname.c:240
++#, c-format
+ msgid ""
+ " -F, --file read hostname or NIS domainname from given file\n"
+ "\n"
+@@ -395,7 +431,8 @@
+ " -F, --file lugeda hosti vi NIS domeeni nimi failist\n"
+ "\n"
+
+-#: ../hostname.c:243
++#: ../hostname.c:242
++#, c-format
+ msgid ""
+ " This command can read or set the hostname or the NIS domainname. You can\n"
+ " also read the DNS domain or the FQDN (fully qualified domain name).\n"
+@@ -415,6 +452,7 @@
+ msgstr "%s: selle ksuga ei saa muuta DNS domeeni nime\n"
+
+ #: ../hostname.c:339
++#, c-format
+ msgid ""
+ "\n"
+ "Unless you are using bind or NIS for host lookups you can change the DNS\n"
+@@ -423,6 +461,7 @@
+ "Kui Te EI kasuta bind'i ega NIS'i nimede lahendamiseks, saate DNS domeeni\n"
+
+ #: ../hostname.c:340
++#, c-format
+ msgid "domain name (which is part of the FQDN) in the /etc/hosts file.\n"
+ msgstr "(mis on tieliku nime osa) nime muuta failist /etc/hosts.\n"
+
+@@ -441,76 +480,97 @@
+ msgid "getnodename()=`%s'\n"
+ msgstr "getnodename()=`%s'\n"
+
+-#: ../ifconfig.c:110
++#: ../ifconfig.c:107
++#, c-format
+ msgid ""
+-"Iface MTU Met RX-OK RX-ERR RX-DRP RX-OVR TX-OK TX-ERR TX-DRP TX-OVR "
++"Iface MTU Met RX-OK RX-ERR RX-DRP RX-OVR TX-OK TX-ERR TX-DRP TX-OVR "
+ "Flg\n"
+ msgstr ""
+-"Liides MTU Meetr. RX-OK RX-ERR RX-DRP RX-OVR TX-OK TX-ERR TX-DRP TX-OVR "
++"Liides MTU Meetr RX-OK RX-ERR RX-DRP RX-OVR TX-OK TX-ERR TX-DRP TX-OVR "
+ "Lip\n"
+
+-#: ../ifconfig.c:132 ../ifconfig.c:164
+-#, c-format
+-msgid "%s: unknown interface: %s\n"
+-msgstr "ifconfig: tundmatu liides %s: %s\n"
++#: ../ifconfig.c:129 ../ifconfig.c:161
++#, fuzzy, c-format
++msgid "%s: ERROR while getting interface flags: %s\n"
++msgstr "%s: viga liidese info ksimisel: %s\n"
+
+-#: ../ifconfig.c:156 ../ifconfig.c:740 ../ifconfig.c:831 ../ifconfig.c:937
++#: ../ifconfig.c:153 ../ifconfig.c:185 ../ifconfig.c:771 ../ifconfig.c:862
++#: ../ifconfig.c:973
++#, c-format
+ msgid "No support for INET on this system.\n"
+ msgstr "Antud ssteem ei toeta INET aadressiperekonda\n"
+
+-#: ../ifconfig.c:179
++#: ../ifconfig.c:193
++#, fuzzy, c-format
++msgid "%s: ERROR while testing interface flags: %s\n"
++msgstr "%s: viga liidese info ksimisel: %s\n"
++
++#: ../ifconfig.c:202
++#, fuzzy, c-format
+ msgid ""
+ "Usage:\n"
+-" ifconfig [-a] [-i] [-v] [-s] <interface> [[<AF>] <address>]\n"
++" ifconfig [-a] [-v] [-s] <interface> [[<AF>] <address>]\n"
+ msgstr ""
+ "Kasutamine:\n"
+ " ifconfig [-a] [-i] [-v] [-s] <liides> [[<AF>] <aadress>]\n"
+
+-#: ../ifconfig.c:181
++#: ../ifconfig.c:204
++#, c-format
+ msgid " [add <address>[/<prefixlen>]]\n"
+ msgstr " [add <aadress>[/<prefiksi pikkus>]]\n"
+
+-#: ../ifconfig.c:182
++#: ../ifconfig.c:205
++#, c-format
+ msgid " [del <address>[/<prefixlen>]]\n"
+ msgstr " [del <aadress>[/<prefiksi pikkus>]]\n"
+
+-#: ../ifconfig.c:183
++#: ../ifconfig.c:206
++#, c-format
+ msgid " [[-]broadcast [<address>]] [[-]pointopoint [<address>]]\n"
+ msgstr " [[-]broadcast [<aadress>]] [[-]pointopoint [<aadress>]]\n"
+
+-#: ../ifconfig.c:184
++#: ../ifconfig.c:207
++#, c-format
+ msgid " [netmask <address>] [dstaddr <address>] [tunnel <address>]\n"
+ msgstr " [netmask <aadress>] [dstaddr <aadress>] [tunnel <aadress>]\n"
+
+-#: ../ifconfig.c:187
++#: ../ifconfig.c:210
++#, c-format
+ msgid " [outfill <NN>] [keepalive <NN>]\n"
+ msgstr " [outfill <NN>] [keepalive <NN>]\n"
+
+-#: ../ifconfig.c:189
++#: ../ifconfig.c:212
++#, c-format
+ msgid " [hw <HW> <address>] [metric <NN>] [mtu <NN>]\n"
+ msgstr " [hw <HW> <aadress>] [metric <NN>] [mtu <NN>]\n"
+
+-#: ../ifconfig.c:190
++#: ../ifconfig.c:213
++#, c-format
+ msgid " [[-]trailers] [[-]arp] [[-]allmulti]\n"
+ msgstr " [[-]trailers] [[-]arp] [[-]allmulti]\n"
+
+-#: ../ifconfig.c:191
++#: ../ifconfig.c:214
++#, c-format
+ msgid " [multicast] [[-]promisc]\n"
+ msgstr " [multicast] [[-]promisc]\n"
+
+-#: ../ifconfig.c:192
++#: ../ifconfig.c:215
++#, c-format
+ msgid " [mem_start <NN>] [io_addr <NN>] [irq <NN>] [media <type>]\n"
+ msgstr " [mem_start <NN>] [io_addr <NN>] [irq <NN>] [media <tp>]\n"
+
+-#: ../ifconfig.c:194
++#: ../ifconfig.c:217
++#, c-format
+ msgid " [txqueuelen <NN>]\n"
+ msgstr " [txqueuelen <NN>]\n"
+
+-#: ../ifconfig.c:197
++#: ../ifconfig.c:220
++#, c-format
+ msgid " [[-]dynamic]\n"
+ msgstr " [[-]dynamic]\n"
+
+-#: ../ifconfig.c:199
++#: ../ifconfig.c:222
++#, c-format
+ msgid ""
+ " [up|down] ...\n"
+ "\n"
+@@ -518,73 +578,134 @@
+ " [up|down] ...\n"
+ "\n"
+
+-#: ../ifconfig.c:201
++#: ../ifconfig.c:224
++#, c-format
+ msgid " <HW>=Hardware Type.\n"
+ msgstr " <HW>=riistvara tp\n"
+
+-#: ../ifconfig.c:202
++#: ../ifconfig.c:225
++#, c-format
+ msgid " List of possible hardware types:\n"
+ msgstr " Vimalike riistvara tpide nimekiri:\n"
+
+ #. 1 = ARPable
+-#: ../ifconfig.c:204
++#: ../ifconfig.c:227
+ #, c-format
+ msgid " <AF>=Address family. Default: %s\n"
+ msgstr " <AF>=aadressiperekond, vaikimisi %s\n"
+
+-#: ../ifconfig.c:205
++#: ../ifconfig.c:228
++#, c-format
+ msgid " List of possible address families:\n"
+ msgstr " Vimalike aadressiperekondade nimekiri:\n"
+
+-#: ../ifconfig.c:361
++#: ../ifconfig.c:303
++#, c-format
++msgid "ifconfig: option `%s' not recognised.\n"
++msgstr ""
++
++#: ../ifconfig.c:305 ../ifconfig.c:962
++#, c-format
++msgid "ifconfig: `--help' gives usage information.\n"
++msgstr ""
++
++#: ../ifconfig.c:380
++#, c-format
+ msgid "Unknown media type.\n"
+ msgstr "Tundmatu meedia tp\n"
+
+-#: ../ifconfig.c:653
++#: ../ifconfig.c:417
++#, c-format
++msgid ""
++"Warning: Interface %s still in promisc mode... maybe other application is "
++"running?\n"
++msgstr ""
++
++#: ../ifconfig.c:429
++#, c-format
++msgid "Warning: Interface %s still in MULTICAST mode.\n"
++msgstr ""
++
++#: ../ifconfig.c:441
++#, c-format
++msgid "Warning: Interface %s still in ALLMULTI mode.\n"
++msgstr ""
++
++#: ../ifconfig.c:465
++#, c-format
++msgid "Warning: Interface %s still in DYNAMIC mode.\n"
++msgstr ""
++
++#: ../ifconfig.c:523
++#, c-format
++msgid "Warning: Interface %s still in BROADCAST mode.\n"
++msgstr ""
++
++#: ../ifconfig.c:652
++#, c-format
++msgid "Warning: Interface %s still in POINTOPOINT mode.\n"
++msgstr ""
++
++#: ../ifconfig.c:684
+ #, c-format
+ msgid "hw address type `%s' has no handler to set address. failed.\n"
+ msgstr ""
+ "riistvara aadressi tbil `%s' pole ksitlejat aadressi seadmiseks - ebann\n"
+
+-#: ../ifconfig.c:662
++#: ../ifconfig.c:693
+ #, c-format
+ msgid "%s: invalid %s address.\n"
+ msgstr "%s: vigane %s aadress\n"
+
+-#: ../ifconfig.c:706 ../ifconfig.c:796 ../ifconfig.c:882
++#: ../ifconfig.c:737 ../ifconfig.c:827 ../ifconfig.c:913
++#, c-format
+ msgid "No support for INET6 on this system.\n"
+ msgstr "Antud ssteem ei toeta INET6 aadressiperekonda\n"
+
+-#: ../ifconfig.c:749 ../ifconfig.c:840
++#: ../ifconfig.c:780 ../ifconfig.c:871
+ #, c-format
+ msgid "Interface %s not initialized\n"
+ msgstr "Liides %s pole initsialiseeritud\n"
+
+-#: ../ifconfig.c:761 ../ifconfig.c:851
++#: ../ifconfig.c:792 ../ifconfig.c:882
++#, c-format
+ msgid "Bad address.\n"
+ msgstr "Vigane aadress\n"
+
+-#: ../ifconfig.c:854
++#: ../ifconfig.c:885
++#, c-format
+ msgid "Address deletion not supported on this system.\n"
+ msgstr "Antud ssteem ei toeta aadresside kustutamist\n"
+
+-#: ../ifconfig.c:947
++#: ../ifconfig.c:957
++#, fuzzy, c-format
++msgid "ifconfig: Cannot set address for this protocol family.\n"
++msgstr "Ei oska seada aadresse aadressiperekonna %d jaoks\n"
++
++#: ../ifconfig.c:983
++#, c-format
+ msgid "No support for ECONET on this system.\n"
+ msgstr "Antud ssteem ei toeta ECONET aadressiperekonda\n"
+
+-#: ../ifconfig.c:955
++#: ../ifconfig.c:991
+ #, c-format
+ msgid "Don't know how to set addresses for family %d.\n"
+ msgstr "Ei oska seada aadresse aadressiperekonna %d jaoks\n"
+
+-#: ../netstat.c:429
++#: ../ifconfig.c:1021
++#, c-format
++msgid "WARNING: at least one error occured. (%d)\n"
++msgstr ""
++
++#: ../netstat.c:434
+ #, c-format
+ msgid ""
+ "(No info could be read for \"-p\": geteuid()=%d but you should be root.)\n"
+ msgstr ""
+ "(\"-p\" jaoks ei saanud infot lugeda: geteuid()=%d, aga vaja oleks root'u)\n"
+
+-#: ../netstat.c:433
++#: ../netstat.c:438
++#, c-format
+ msgid ""
+ "(Not all processes could be identified, non-owned process info\n"
+ " will not be shown, you would have to be root to see it all.)\n"
+@@ -592,210 +713,223 @@
+ "(Mnesid protsesse ei saanud identifitseerida, teiste kasutajate\n"
+ "info lugemiseks peab olema root)\n"
+
+-#: ../netstat.c:440 ../netstat.c:1171 ../netstat.c:1248
++#: ../netstat.c:445 ../netstat.c:1189 ../netstat.c:1266
+ msgid "LISTENING"
+ msgstr "LISTENING"
+
+-#: ../netstat.c:441
++#: ../netstat.c:446
+ msgid "CONN SENT"
+ msgstr "CONN SENT"
+
+-#: ../netstat.c:442 ../netstat.c:1250
++#: ../netstat.c:447 ../netstat.c:1268
+ msgid "DISC SENT"
+ msgstr "DISC SENT"
+
+-#: ../netstat.c:443 ../netstat.c:510 ../netstat.c:889 ../netstat.c:1251
++#: ../netstat.c:448 ../netstat.c:515 ../netstat.c:904 ../netstat.c:1269
+ msgid "ESTABLISHED"
+ msgstr "ESTABLISHED"
+
+-#: ../netstat.c:465
++#: ../netstat.c:470
++#, c-format
+ msgid "Active NET/ROM sockets\n"
+ msgstr "Aktiivsed NET/ROM soklid\n"
+
+-#: ../netstat.c:466
++#: ../netstat.c:471
++#, c-format
+ msgid ""
+-"User Dest Source Device State Vr/Vs Send-Q "
+-"Recv-Q\n"
++"User Dest Source Device State Vr/Vs Send-Q Recv-"
++"Q\n"
+ msgstr ""
+ "Kasutaja Sihtpunkt Lhtepunkt Liides Olek Vr/Vs SaatJrk "
+ "VvJrk\n"
+
+-#: ../netstat.c:476 ../netstat.c:1290
++#: ../netstat.c:481 ../netstat.c:1308
+ #, c-format
+ msgid "Problem reading data from %s\n"
+ msgstr "Probleem andmete lugemisel failist %s\n"
+
+-#: ../netstat.c:511
++#: ../netstat.c:516
+ msgid "SYN_SENT"
+ msgstr "SYN_SENT"
+
+-#: ../netstat.c:512
++#: ../netstat.c:517
+ msgid "SYN_RECV"
+ msgstr "SYN_RECV"
+
+-#: ../netstat.c:513
++#: ../netstat.c:518
+ msgid "FIN_WAIT1"
+ msgstr "FIN_WAIT1"
+
+-#: ../netstat.c:514
++#: ../netstat.c:519
+ msgid "FIN_WAIT2"
+ msgstr "FIN_WAIT2"
+
+-#: ../netstat.c:515
++#: ../netstat.c:520
+ msgid "TIME_WAIT"
+ msgstr "TIME_WAIT"
+
+-#: ../netstat.c:516
++#: ../netstat.c:521
+ msgid "CLOSE"
+ msgstr "CLOSE"
+
+-#: ../netstat.c:517
++#: ../netstat.c:522
+ msgid "CLOSE_WAIT"
+ msgstr "CLOSE_WAIT"
+
+-#: ../netstat.c:518
++#: ../netstat.c:523
+ msgid "LAST_ACK"
+ msgstr "LAST_ACK"
+
+-#: ../netstat.c:519
++#: ../netstat.c:524
+ msgid "LISTEN"
+ msgstr "LISTEN"
+
+-#: ../netstat.c:520
++#: ../netstat.c:525
+ msgid "CLOSING"
+ msgstr "CLOSING"
+
+-#: ../netstat.c:587
++#: ../netstat.c:596
+ #, c-format
+ msgid "warning, got bogus igmp6 line %d.\n"
+ msgstr "Hoiatus - sain imeliku igmp6 rea (nr. %d)\n"
+
+-#: ../netstat.c:592 ../netstat.c:630 ../netstat.c:751 ../netstat.c:883
+-#: ../netstat.c:1014 ../netstat.c:1019
++#: ../netstat.c:601 ../netstat.c:639 ../netstat.c:763 ../netstat.c:898
++#: ../netstat.c:1032 ../netstat.c:1037
+ #, c-format
+ msgid "netstat: unsupported address family %d !\n"
+ msgstr "netstat: aadressiperekonda %d ei toetata\n"
+
+-#: ../netstat.c:605 ../netstat.c:610 ../netstat.c:618 ../netstat.c:625
++#: ../netstat.c:614 ../netstat.c:619 ../netstat.c:627 ../netstat.c:634
+ #, c-format
+ msgid "warning, got bogus igmp line %d.\n"
+ msgstr "Hoiatus - sain imeliku igmp rea (nr. %d)\n"
+
+-#: ../netstat.c:668
++#: ../netstat.c:677
++#, c-format
+ msgid "Active X.25 sockets\n"
+ msgstr "Aktiivsed X.25 soklid\n"
+
+ #. IMHO, Vr/Vs is not very usefull --SF
+-#: ../netstat.c:670
++#: ../netstat.c:679
++#, c-format
+ msgid ""
+-"Dest Source Device LCI State Vr/Vs Send-Q "
+-"Recv-Q\n"
++"Dest Source Device LCI State Vr/Vs Send-Q Recv-"
++"Q\n"
+ msgstr ""
+ "Sihtpunkt Lhtepunkt Liides LCI Olek Vr/Vs SaatJrk VvJrk\n"
+
+-#: ../netstat.c:747
++#: ../netstat.c:759
++#, c-format
+ msgid "warning, got bogus tcp line.\n"
+ msgstr "Hoiatus - sain imeliku tcp rea\n"
+
+-#: ../netstat.c:788 ../netstat.c:938 ../netstat.c:1057
++#: ../netstat.c:800 ../netstat.c:953 ../netstat.c:1075
+ #, c-format
+ msgid "off (0.00/%ld/%d)"
+ msgstr "eiki ((0.00/%ld/%d)"
+
+-#: ../netstat.c:792
++#: ../netstat.c:804
+ #, c-format
+ msgid "on (%2.2f/%ld/%d)"
+ msgstr "kib (%2.2f/%ld/%d)"
+
+-#: ../netstat.c:797
++#: ../netstat.c:809
+ #, c-format
+ msgid "keepalive (%2.2f/%ld/%d)"
+ msgstr "keepalive (%2.2f/%ld/%d)"
+
+-#: ../netstat.c:802
++#: ../netstat.c:814
+ #, c-format
+ msgid "timewait (%2.2f/%ld/%d)"
+ msgstr "timewait (%2.2f/%ld/%d)"
+
+-#: ../netstat.c:807 ../netstat.c:947 ../netstat.c:1067
++#: ../netstat.c:819 ../netstat.c:962 ../netstat.c:1085
+ #, c-format
+ msgid "unkn-%d (%2.2f/%ld/%d)"
+ msgstr "eitea-%d (%2.2f/%ld/%d)"
+
+-#: ../netstat.c:879
++#: ../netstat.c:894
++#, c-format
+ msgid "warning, got bogus udp line.\n"
+ msgstr "Hoiatus - sain imeliku udp rea\n"
+
+-#: ../netstat.c:897 ../netstat.c:1157 ../netstat.c:1190
++#: ../netstat.c:912 ../netstat.c:1175 ../netstat.c:1208
+ msgid "UNKNOWN"
+ msgstr "TUNDMATU"
+
+-#: ../netstat.c:943 ../netstat.c:1062
++#: ../netstat.c:958 ../netstat.c:1080
+ #, c-format
+ msgid "on%d (%2.2f/%ld/%d)"
+ msgstr "kib-%d (%2.2f/%ld/%d)"
+
+-#: ../netstat.c:1028
++#: ../netstat.c:1046
++#, c-format
+ msgid "warning, got bogus raw line.\n"
+ msgstr "Hoiatus - sain imeliku raw rea\n"
+
+-#: ../netstat.c:1110
++#: ../netstat.c:1128
++#, c-format
+ msgid "warning, got bogus unix line.\n"
+ msgstr "Hoiatus - sain imeliku unix rea\n"
+
+-#: ../netstat.c:1137
++#: ../netstat.c:1155
+ msgid "STREAM"
+ msgstr "STREAM"
+
+-#: ../netstat.c:1141
++#: ../netstat.c:1159
+ msgid "DGRAM"
+ msgstr "DGRAM"
+
+-#: ../netstat.c:1145
++#: ../netstat.c:1163
+ msgid "RAW"
+ msgstr "RAW"
+
+-#: ../netstat.c:1149
++#: ../netstat.c:1167
+ msgid "RDM"
+ msgstr "RDM"
+
+-#: ../netstat.c:1153
++#: ../netstat.c:1171
+ msgid "SEQPACKET"
+ msgstr "SEQPACKET"
+
+-#: ../netstat.c:1162
++#: ../netstat.c:1180
+ msgid "FREE"
+ msgstr "VABA"
+
+-#: ../netstat.c:1178
++#: ../netstat.c:1196
+ msgid "CONNECTING"
+ msgstr "HENDUMAS"
+
+-#: ../netstat.c:1182
++#: ../netstat.c:1200
+ msgid "CONNECTED"
+ msgstr "HENDATUD"
+
+-#: ../netstat.c:1186
++#: ../netstat.c:1204
+ msgid "DISCONNECTING"
+ msgstr "LAHTIHENDUMAS"
+
+-#: ../netstat.c:1217
++#: ../netstat.c:1235
++#, c-format
+ msgid "Active UNIX domain sockets "
+ msgstr "Aktiivsed UNIX domeeni soklid "
+
+-#: ../netstat.c:1219 ../netstat.c:1729
++#: ../netstat.c:1237 ../netstat.c:1756
++#, c-format
+ msgid "(servers and established)"
+ msgstr "(serverid ja hendatud)"
+
+-#: ../netstat.c:1222 ../netstat.c:1732
++#: ../netstat.c:1240 ../netstat.c:1759
++#, c-format
+ msgid "(only servers)"
+ msgstr "(ainult serverid)"
+
+-#: ../netstat.c:1224 ../netstat.c:1734
++#: ../netstat.c:1242 ../netstat.c:1761
++#, c-format
+ msgid "(w/o servers)"
+ msgstr "(ilma serveriteta)"
+
+-#: ../netstat.c:1227
++#: ../netstat.c:1245
++#, c-format
+ msgid ""
+ "\n"
+ "Proto RefCnt Flags Type State I-Node"
+@@ -803,32 +937,36 @@
+ "\n"
+ "Proto Mitu Lipud Tp Olek I-kirje "
+
+-#: ../netstat.c:1229
++#: ../netstat.c:1247
++#, c-format
+ msgid " Path\n"
+ msgstr "Tee\n"
+
+-#: ../netstat.c:1249
++#: ../netstat.c:1267
+ msgid "SABM SENT"
+ msgstr "SABM SENT"
+
+-#: ../netstat.c:1252
++#: ../netstat.c:1270
+ msgid "RECOVERY"
+ msgstr "RECOVERY"
+
+-#: ../netstat.c:1266
++#: ../netstat.c:1284
++#, c-format
+ msgid "Active AX.25 sockets\n"
+ msgstr "Aktiivsed AX.25 soklid\n"
+
+-#: ../netstat.c:1267
++#: ../netstat.c:1285
++#, c-format
+ msgid "Dest Source Device State Vr/Vs Send-Q Recv-Q\n"
+ msgstr "Sihtpunkt Lhtepunkt Liides Olek Vr/Vs SaatJrk VvJrk\n"
+
+-#: ../netstat.c:1310
++#: ../netstat.c:1328
+ #, c-format
+ msgid "problem reading data from %s\n"
+ msgstr "Probleem andmete lugemisel failist %s\n"
+
+-#: ../netstat.c:1361
++#: ../netstat.c:1379
++#, c-format
+ msgid ""
+ "Active IPX sockets\n"
+ "Proto Recv-Q Send-Q Local Address Foreign Address "
+@@ -838,47 +976,53 @@
+ "Proto VvJrk SaatJrk Kohalik aadress Vline aadress "
+ "Olek "
+
+-#: ../netstat.c:1363
++#: ../netstat.c:1381
++#, c-format
+ msgid " User"
+ msgstr " Kasutaja"
+
+-#: ../netstat.c:1397
++#: ../netstat.c:1415
+ msgid "ESTAB"
+ msgstr "ESTAB"
+
+-#: ../netstat.c:1405
++#: ../netstat.c:1423
+ msgid "UNK."
+ msgstr "UNK."
+
+-#: ../netstat.c:1443
++#: ../netstat.c:1461
++#, c-format
+ msgid "Kernel Interface table\n"
+ msgstr "Tuuma liideste tabel\n"
+
+-#: ../netstat.c:1447
++#: ../netstat.c:1465
++#, fuzzy, c-format
+ msgid ""
+-"Iface MTU Met RX-OK RX-ERR RX-DRP RX-OVR TX-OK TX-ERR TX-DRP TX-OVR "
++"Iface MTU Met RX-OK RX-ERR RX-DRP RX-OVR TX-OK TX-ERR TX-DRP TX-OVR "
+ "Flg\n"
+ msgstr ""
+-"Liides MTU Meetr RX-OK RX-ERR RX-DRP RX-OVR TX-OK TX-ERR TX-DRP TX-OVR "
++"Liides MTU Meetr. RX-OK RX-ERR RX-DRP RX-OVR TX-OK TX-ERR TX-DRP TX-OVR "
+ "Lip\n"
+
+-#: ../netstat.c:1451
++#: ../netstat.c:1469
+ msgid "missing interface information"
+ msgstr "Puudulik informatsioon liideste kohta"
+
+-#: ../netstat.c:1474
++#: ../netstat.c:1492
++#, c-format
+ msgid ""
+-"usage: netstat [-veenNcCF] [<Af>] -r netstat "
+-"{-V|--version|-h|--help}\n"
++"usage: netstat [-veenNcCF] [<Af>] -r netstat {-V|--version|-h|--"
++"help}\n"
+ msgstr ""
+ "Kasutamine: netstat [-veenNcCF] [<Af>] -r\n"
+ " netstat {-V|--version|-h|--help}\n"
+
+-#: ../netstat.c:1475
++#: ../netstat.c:1493
++#, c-format
+ msgid " netstat [-vnNcaeol] [<Socket> ...]\n"
+ msgstr " netstat [-vnNcaeol] [<Sokkel> ...]\n"
+
+-#: ../netstat.c:1476
++#: ../netstat.c:1494
++#, c-format
+ msgid ""
+ " netstat { [-veenNac] -i | [-cnNe] -M | -s }\n"
+ "\n"
+@@ -886,25 +1030,30 @@
+ " netstat { [-veenNac] -i | [-cnNe] -M | -s }\n"
+ "\n"
+
+-#: ../netstat.c:1478
++#: ../netstat.c:1496
++#, c-format
+ msgid " -r, --route display routing table\n"
+ msgstr " -r, --route ruutingutabeli nitamine\n"
+
+-#: ../netstat.c:1479
++#: ../netstat.c:1497
++#, c-format
+ msgid " -i, --interfaces display interface table\n"
+ msgstr " -i, --interfaces liideste tabeli nitamine\n"
+
+-#: ../netstat.c:1480
++#: ../netstat.c:1498
++#, c-format
+ msgid " -g, --groups display multicast group memberships\n"
+ msgstr " -g, --groups multiedastuse gruppide nitamine\n"
+
+-#: ../netstat.c:1481
++#: ../netstat.c:1499
++#, c-format
+ msgid ""
+ " -s, --statistics display networking statistics (like SNMP)\n"
+ msgstr ""
+ " -s, --statistics vrgu statistika nitamine (SNMP stiilis)\n"
+
+-#: ../netstat.c:1483
++#: ../netstat.c:1501
++#, c-format
+ msgid ""
+ " -M, --masquerade display masqueraded connections\n"
+ "\n"
+@@ -912,36 +1061,39 @@
+ " -M, --masquerade maskeeritavate henduste nitamine\n"
+ "\n"
+
+-#: ../netstat.c:1486 ../route.c:86
+-msgid " -n, --numeric dont resolve names\n"
+-msgstr " -n, --numeric mitte lahendada numbreid nimedeks\n"
+-
+-#: ../netstat.c:1487
+-msgid " --numeric-hosts dont resolve host names\n"
++#: ../netstat.c:1505
++#, fuzzy, c-format
++msgid " --numeric-hosts don't resolve host names\n"
+ msgstr " --numeric-hosts mitte lahendada hostinimesid\n"
+
+-#: ../netstat.c:1488
+-msgid " --numeric-ports dont resolve port names\n"
++#: ../netstat.c:1506
++#, fuzzy, c-format
++msgid " --numeric-ports don't resolve port names\n"
+ msgstr " --numeric-ports mitte lahendada pordinimesid\n"
+
+-#: ../netstat.c:1489
+-msgid " --numeric-users dont resolve user names\n"
++#: ../netstat.c:1507
++#, fuzzy, c-format
++msgid " --numeric-users don't resolve user names\n"
+ msgstr " --numeric-users mitte lahendada kasutajanimesid\n"
+
+-#: ../netstat.c:1490
++#: ../netstat.c:1508
++#, c-format
+ msgid " -N, --symbolic resolve hardware names\n"
+ msgstr " -N, --symbolic lahendada riistvara aadressid\n"
+
+-#: ../netstat.c:1491 ../route.c:87
++#: ../netstat.c:1509 ../route.c:88
++#, c-format
+ msgid " -e, --extend display other/more information\n"
+ msgstr " -e, --extend muu info/lisainfo nitamine\n"
+
+-#: ../netstat.c:1492
++#: ../netstat.c:1510
++#, c-format
+ msgid " -p, --programs display PID/Program name for sockets\n"
+ msgstr ""
+ " -p, --programs soklite kohta PID/protsessi nime nitamine\n"
+
+-#: ../netstat.c:1493
++#: ../netstat.c:1511
++#, c-format
+ msgid ""
+ " -c, --continuous continuous listing\n"
+ "\n"
+@@ -949,22 +1101,26 @@
+ " -c, --continuous pidevalt uuenev nimekiri\n"
+ "\n"
+
+-#: ../netstat.c:1494
++#: ../netstat.c:1512
++#, c-format
+ msgid " -l, --listening display listening server sockets\n"
+ msgstr " -l, --listening kuulavate serversoklite nitamine\n"
+
+-#: ../netstat.c:1495
++#: ../netstat.c:1513
++#, c-format
+ msgid ""
+ " -a, --all, --listening display all sockets (default: connected)\n"
+ msgstr ""
+ " -a, --all, --listening kigi soklite nitamine (vaikimisi "
+ "hendatud)\n"
+
+-#: ../netstat.c:1496
++#: ../netstat.c:1514
++#, c-format
+ msgid " -o, --timers display timers\n"
+ msgstr " -o, --timers taimerite nitamine\n"
+
+-#: ../netstat.c:1497 ../route.c:88
++#: ../netstat.c:1515 ../route.c:89
++#, c-format
+ msgid ""
+ " -F, --fib display Forwarding Information Base "
+ "(default)\n"
+@@ -972,7 +1128,8 @@
+ " -F, --fib ldiste ruutingutabelite nitamine "
+ "(vaikimisi)\n"
+
+-#: ../netstat.c:1498 ../route.c:89
++#: ../netstat.c:1516 ../route.c:90
++#, c-format
+ msgid ""
+ " -C, --cache display routing cache instead of FIB\n"
+ "\n"
+@@ -981,108 +1138,121 @@
+ "nitamine\n"
+ "\n"
+
+-#: ../netstat.c:1500
++#: ../netstat.c:1518
++#, c-format
+ msgid ""
+-" <Socket>={-t|--tcp} {-u|--udp} {-w|--raw} {-x|--unix} --ax25 --ipx "
+-"--netrom\n"
++" <Socket>={-t|--tcp} {-u|--udp} {-w|--raw} {-x|--unix} --ax25 --ipx --"
++"netrom\n"
+ msgstr ""
+-" <Sokkel>={-t|--tcp} {-u|--udp} {-w|--raw} {-x|--unix} --ax25 --ipx "
+-"--netrom\n"
++" <Sokkel>={-t|--tcp} {-u|--udp} {-w|--raw} {-x|--unix} --ax25 --ipx --"
++"netrom\n"
+
+-#: ../netstat.c:1501 ../route.c:91
+-#, c-format
+-msgid " <AF>=Use '-A <af>' or '--<af>' Default: %s\n"
++#: ../netstat.c:1519
++#, fuzzy, c-format
++msgid " <AF>=Use '-6|-4' or '-A <af>' or '--<af>'; default: %s\n"
+ msgstr " <AF>=kasutage '-A <af>' vi '--<af>' vaikimisi: %s\n"
+
+-#: ../netstat.c:1502 ../route.c:92
++#: ../netstat.c:1520 ../route.c:93
++#, c-format
+ msgid " List of possible address families (which support routing):\n"
+ msgstr " Vimalike ruutingu toetavate aadressiperekondade nimekiri:\n"
+
+-#: ../netstat.c:1726
++#: ../netstat.c:1753
++#, c-format
+ msgid "Active Internet connections "
+ msgstr "Aktiivsed internetihendused "
+
+-#: ../netstat.c:1736
++#: ../netstat.c:1763
++#, c-format
+ msgid ""
+ "\n"
+-"Proto Recv-Q Send-Q Local Address Foreign Address State "
+-" "
++"Proto Recv-Q Send-Q Local Address Foreign Address "
++"State "
+ msgstr ""
+ "\n"
+-"Proto VvJrk SaatJrk Kohalik aadress Vline aadress Olek "
+-" "
++"Proto VvJrk SaatJrk Kohalik aadress Vline aadress "
++"Olek "
+
+-#: ../netstat.c:1738
++#: ../netstat.c:1765
++#, c-format
+ msgid " User Inode "
+ msgstr " Kasutaja I-kirje "
+
+-#: ../netstat.c:1741
++#: ../netstat.c:1768
++#, c-format
+ msgid " Timer"
+ msgstr " Taimer"
+
+-#: ../netstat.c:1771
++#: ../netstat.c:1798
++#, c-format
+ msgid "IPv4 Group Memberships\n"
+ msgstr "IPv4 grupikuuluvused\n"
+
+-#: ../netstat.c:1772
++#: ../netstat.c:1799
++#, c-format
+ msgid "Interface RefCnt Group\n"
+ msgstr "Liides Mitu Grupp\n"
+
+-#: ../rarp.c:43
++#: ../rarp.c:44
+ msgid "This kernel does not support RARP.\n"
+ msgstr "rarp: tuum ei toeta RARP'i\n"
+
+-#: ../rarp.c:82
++#: ../rarp.c:83
+ #, c-format
+ msgid "no RARP entry for %s.\n"
+ msgstr "rarp: %s jaoks pole RARP kirjet\n"
+
+-#: ../rarp.c:95
++#: ../rarp.c:96
+ #, c-format
+ msgid "%s: bad hardware address\n"
+ msgstr "rarp: vigane riistvaraline aadress %s\n"
+
+-#: ../rarp.c:127
++#: ../rarp.c:128
+ #, c-format
+ msgid "rarp: cannot open file %s:%s.\n"
+ msgstr "rarp: ei saa avada faili %s:%s\n"
+
+-#: ../rarp.c:139
++#: ../rarp.c:140
+ #, c-format
+ msgid "rarp: format error at %s:%u\n"
+ msgstr "rarp: vorminguviga failis %s real %u\n"
+
+-#: ../rarp.c:143 ../rarp.c:287
++#: ../rarp.c:144 ../rarp.c:289
+ #, c-format
+ msgid "rarp: %s: unknown host\n"
+ msgstr "rarp: tundmatu host %s\n"
+
+-#: ../rarp.c:146
++#: ../rarp.c:147
+ #, c-format
+ msgid "rarp: cannot set entry from %s:%u\n"
+ msgstr "rarp: ei saa kehtestada kirjet failist %s realt %u\n"
+
+-#: ../rarp.c:175
++#: ../rarp.c:176
++#, c-format
+ msgid "Usage: rarp -a list entries in cache.\n"
+ msgstr ""
+ "Kasutamine:\n"
+ " rarp -a puhvris olevate kirjete vaatamine\n"
+
+-#: ../rarp.c:176
++#: ../rarp.c:177
++#, c-format
+ msgid " rarp -d <hostname> delete entry from cache.\n"
+ msgstr " rarp -d <hosti nimi> kirje kustutamine puhvrist\n"
+
+-#: ../rarp.c:177
++#: ../rarp.c:178
++#, c-format
+ msgid " rarp [<HW>] -s <hostname> <hwaddr> add entry to cache.\n"
+ msgstr " rarp [<HW>] -s <hosti nimi> <hwaddr> kirje lisamine puhvrisse\n"
+
+-#: ../rarp.c:178
++#: ../rarp.c:179
++#, c-format
+ msgid ""
+ " rarp -f add entries from /etc/ethers.\n"
+ msgstr ""
+ " rarp -f kirjete lisamine failist /etc/ethers\n"
+
+-#: ../rarp.c:179
++#: ../rarp.c:180
++#, c-format
+ msgid ""
+ " rarp -V display program version.\n"
+ "\n"
+@@ -1090,24 +1260,26 @@
+ " rarp -V programmi versiooni nitamine\n"
+ "\n"
+
+-#: ../rarp.c:236
++#: ../rarp.c:238
+ #, c-format
+ msgid "%s: illegal option mix.\n"
+ msgstr "%s: lubamatu vtmete kombinatsioon\n"
+
+-#: ../rarp.c:267
++#: ../rarp.c:269
+ #, c-format
+ msgid "rarp: %s: unknown hardware type.\n"
+ msgstr "rarp: tundmatu riistvara tp %s\n"
+
+-#: ../route.c:79
++#: ../route.c:80
++#, c-format
+ msgid ""
+ "Usage: route [-nNvee] [-FC] [<AF>] List kernel routing tables\n"
+ msgstr ""
+ "Kasutamine:\n"
+ " route [-nNvee] [-FC] [<AF>] Tuuma ruutingutabeli nitamine\n"
+
+-#: ../route.c:80
++#: ../route.c:81
++#, c-format
+ msgid ""
+ " route [-v] [-FC] {add|del|flush} ... Modify routing table for AF.\n"
+ "\n"
+@@ -1115,7 +1287,8 @@
+ " route [-v] [-FC] {add|del|flush} ... Tuuma ruutingutabeli muutmine\n"
+ "\n"
+
+-#: ../route.c:82
++#: ../route.c:83
++#, c-format
+ msgid ""
+ " route {-h|--help} [<AF>] Detailed usage syntax for "
+ "specified AF.\n"
+@@ -1123,7 +1296,8 @@
+ " route {-h|--help} [<AF>] Detailne sntaks perekonna AF "
+ "jaoks\n"
+
+-#: ../route.c:83
++#: ../route.c:84
++#, c-format
+ msgid ""
+ " route {-V|--version} Display version/author and "
+ "exit.\n"
+@@ -1132,15 +1306,23 @@
+ " route {-V|--version} Versiooni ja oskuste nitamine\n"
+ "\n"
+
++#: ../route.c:92
++#, fuzzy, c-format
++msgid " <AF>=Use '-A <af>' or '--<af>'; default: %s\n"
++msgstr " <AF>=kasutage '-A <af>' vi '--<af>' vaikimisi: %s\n"
++
+ #: ../plipconfig.c:66
++#, c-format
+ msgid "Usage: plipconfig [-a] [-i] [-v] interface\n"
+ msgstr "Kasutamine: plipconfig [-a] [-i] [-v] liides\n"
+
+ #: ../plipconfig.c:67
++#, c-format
+ msgid " [nibble NN] [trigger NN]\n"
+ msgstr " [nibble NN] [trigger NN]\n"
+
+ #: ../plipconfig.c:68
++#, c-format
+ msgid " plipconfig -V | --version\n"
+ msgstr " plipconfig -V | --version\n"
+
+@@ -1149,25 +1331,30 @@
+ msgid "%s\tnibble %lu trigger %lu\n"
+ msgstr "%s\tnibble %lu trigger %lu\n"
+
+-#: ../iptunnel.c:84
++#: ../iptunnel.c:85
++#, c-format
+ msgid "Usage: iptunnel { add | change | del | show } [ NAME ]\n"
+ msgstr "Kasutamine: iptunnel { add | change | del | show } [ NIMI ]\n"
+
+-#: ../iptunnel.c:85
++#: ../iptunnel.c:86
++#, c-format
+ msgid ""
+ " [ mode { ipip | gre | sit } ] [ remote ADDR ] [ local ADDR ]\n"
+ msgstr ""
+ " [ mode { ipip | gre | sit } ] [ remote AADR ] [ local AADR ]\n"
+
+-#: ../iptunnel.c:86
++#: ../iptunnel.c:87
++#, c-format
+ msgid " [ [i|o]seq ] [ [i|o]key KEY ] [ [i|o]csum ]\n"
+ msgstr " [ [i|o]seq ] [ [i|o]key KEY ] [ [i|o]csum ]\n"
+
+-#: ../iptunnel.c:87
++#: ../iptunnel.c:88
++#, c-format
+ msgid " [ ttl TTL ] [ tos TOS ] [ nopmtudisc ] [ dev PHYS_DEV ]\n"
+ msgstr " [ ttl TTL ] [ tos TOS ] [ nopmtudisc ] [ dev LIIDES ]\n"
+
+-#: ../iptunnel.c:88
++#: ../iptunnel.c:89
++#, c-format
+ msgid ""
+ " iptunnel -V | --version\n"
+ "\n"
+@@ -1175,83 +1362,99 @@
+ " iptunnel -V | --version\n"
+ "\n"
+
+-#: ../iptunnel.c:89
++#: ../iptunnel.c:90
++#, c-format
+ msgid "Where: NAME := STRING\n"
+ msgstr "Kus: NIMI := STRING\n"
+
+-#: ../iptunnel.c:90
++#: ../iptunnel.c:91
++#, c-format
+ msgid " ADDR := { IP_ADDRESS | any }\n"
+ msgstr " AADR := { IP_AADRESS | any }\n"
+
+-#: ../iptunnel.c:91
++#: ../iptunnel.c:92
++#, c-format
+ msgid " TOS := { NUMBER | inherit }\n"
+ msgstr " TOS := { ARV | inherit }\n"
+
+-#: ../iptunnel.c:92
++#: ../iptunnel.c:93
++#, c-format
+ msgid " TTL := { 1..255 | inherit }\n"
+ msgstr " TTL := { 1..255 | inherit }\n"
+
+-#: ../iptunnel.c:93
++#: ../iptunnel.c:94
++#, c-format
+ msgid " KEY := { DOTTED_QUAD | NUMBER }\n"
+ msgstr ""
+ " KEY := { PUNKTIDEGA_ARVUNELIK | ARV }\n"
+ " LIIDES := FSILISE_LIIDESE_NIMI\n"
+
+-#: ../iptunnel.c:331
++#: ../iptunnel.c:332
++#, c-format
+ msgid "Keys are not allowed with ipip and sit.\n"
+ msgstr "ipip ja sit juures ei ole vtmed lubatud\n"
+
+-#: ../iptunnel.c:351
++#: ../iptunnel.c:352
++#, c-format
+ msgid "Broadcast tunnel requires a source address.\n"
+ msgstr "Leviedastusega tunnel vajab lhteaadressi\n"
+
+-#: ../iptunnel.c:366
++#: ../iptunnel.c:367
++#, c-format
+ msgid "ttl != 0 and noptmudisc are incompatible\n"
+ msgstr "ttl != 0 ning noptmudisc ei sobi kokku\n"
+
+-#: ../iptunnel.c:378
++#: ../iptunnel.c:379
++#, c-format
+ msgid "cannot determine tunnel mode (ipip, gre or sit)\n"
+ msgstr "Ei suuda mrata tunneli moodi (ipip, gre vi sit)\n"
+
+-#: ../iptunnel.c:416
++#: ../iptunnel.c:417
+ #, c-format
+ msgid "%s: %s/ip remote %s local %s "
+ msgstr "%s: %s/ip teises otsas %s siin %s "
+
+-#: ../iptunnel.c:420
++#: ../iptunnel.c:421
+ msgid "unknown"
+ msgstr "tundmatu"
+
+-#: ../iptunnel.c:452
++#: ../iptunnel.c:453
++#, c-format
+ msgid " Drop packets out of sequence.\n"
+ msgstr " Jrjekorravlised paketid visatakse minema\n"
+
+-#: ../iptunnel.c:454
++#: ../iptunnel.c:455
++#, c-format
+ msgid " Checksum in received packet is required.\n"
+ msgstr " Vastuvetavates pakettides on kontrollsumma kohustuslik\n"
+
+-#: ../iptunnel.c:456
++#: ../iptunnel.c:457
++#, c-format
+ msgid " Sequence packets on output.\n"
+ msgstr " Vljuvad paketid varustatakse jrjekorranumbritega\n"
+
+-#: ../iptunnel.c:458
++#: ../iptunnel.c:459
++#, c-format
+ msgid " Checksum output packets.\n"
+ msgstr " Vljuvad paketid varustatakse kontrollsummaga\n"
+
+-#: ../iptunnel.c:486
++#: ../iptunnel.c:487
++#, c-format
+ msgid "Wrong format of /proc/net/dev. Sorry.\n"
+ msgstr "/proc/net/dev on vales formaadis. Vale tuuma versioon?\n"
+
+-#: ../iptunnel.c:499
++#: ../iptunnel.c:500
+ #, c-format
+ msgid "Failed to get type of [%s]\n"
+ msgstr "Ei suutnud kindlaks teha liidese %s tpi\n"
+
+-#: ../iptunnel.c:515
++#: ../iptunnel.c:516
++#, c-format
+ msgid "RX: Packets Bytes Errors CsumErrs OutOfSeq Mcasts\n"
+ msgstr "RX: Pakette Baite Vigu KSumVigu JrkVigu Levipakette\n"
+
+-#: ../iptunnel.c:518
++#: ../iptunnel.c:519
++#, c-format
+ msgid "TX: Packets Bytes Errors DeadLoop NoRoute NoBufs\n"
+ msgstr "TX: Pakette Baite Vigu DeadLoop EiRuudi MluOtsas\n"
+
+@@ -1658,13 +1861,13 @@
+ msgstr "%u paketti pandi otse recvmsg eeljrjekorda"
+
+ #: ../statistics.c:178
+-#, c-format
+-msgid "%u packets directly received from backlog"
++#, fuzzy, c-format
++msgid "%u of bytes directly received from backlog"
+ msgstr "%u paketti veti vastu otse backlog-ist"
+
+ #: ../statistics.c:180
+-#, c-format
+-msgid "%u packets directly received from prequeue"
++#, fuzzy, c-format
++msgid "%u of bytes directly received from prequeue"
+ msgstr "%u paketti veti vastu otse eeljrjekorrast"
+
+ #: ../statistics.c:182
+@@ -1673,8 +1876,8 @@
+ msgstr "%u paketti kustutati eeljrjekorrast"
+
+ #: ../statistics.c:183
+-#, c-format
+-msgid "%u packets header predicted"
++#, fuzzy, c-format
++msgid "%u packet headers predicted"
+ msgstr "%u paketti pise ige ennustusega"
+
+ #: ../statistics.c:184
+@@ -1687,19 +1890,210 @@
+ msgid "Ran %u times out of system memory during packet sending"
+ msgstr "Pakettide saatmisel sai %u korda ssteemne mlu otsa"
+
+-#: ../statistics.c:253
++#: ../statistics.c:188
++#, fuzzy, c-format
++msgid "%u acknowledgments not containing data received"
++msgstr "%u sisenevat paketti tundmatule pordile"
++
++#: ../statistics.c:189
++#, c-format
++msgid "%u predicted acknowledgments"
++msgstr ""
++
++#: ../statistics.c:190
++#, c-format
++msgid "%u times recovered from packet loss due to fast retransmit"
++msgstr ""
++
++#: ../statistics.c:191
++#, c-format
++msgid "%u times recovered from packet loss due to SACK data"
++msgstr ""
++
++#: ../statistics.c:192
++#, fuzzy, c-format
++msgid "%u bad SACKs received"
++msgstr "%u vigast segmenti veti vastu"
++
++#: ../statistics.c:193
++#, c-format
++msgid "Detected reordering %u times using FACK"
++msgstr ""
++
++#: ../statistics.c:194
++#, c-format
++msgid "Detected reordering %u times using SACK"
++msgstr ""
++
++#: ../statistics.c:195
++#, c-format
++msgid "Detected reordering %u times using time stamp"
++msgstr ""
++
++#: ../statistics.c:196
++#, c-format
++msgid "Detected reordering %u times using reno fast retransmit"
++msgstr ""
++
++#: ../statistics.c:197
++#, fuzzy, c-format
++msgid "%u congestion windows fully recovered"
++msgstr "%u henduse katkestust saabus"
++
++#: ../statistics.c:198
++#, c-format
++msgid "%u congestion windows partially recovered using Hoe heuristic"
++msgstr ""
++
++#: ../statistics.c:199
++#, c-format
++msgid "%u congestion window recovered using DSACK"
++msgstr ""
++
++#: ../statistics.c:200
++#, c-format
++msgid "%u congestion windows recovered after partial ack"
++msgstr ""
++
++#: ../statistics.c:201
++#, fuzzy, c-format
++msgid "%u retransmits lost"
++msgstr "%u katkestust saadeti"
++
++#: ../statistics.c:202
++#, fuzzy, c-format
++msgid "%u timeouts after reno fast retransmit"
++msgstr "%u segmenti saadeti uuesti"
++
++#: ../statistics.c:203
++#, c-format
++msgid "%u timeouts after SACK recovery"
++msgstr ""
++
++#: ../statistics.c:204
++#, c-format
++msgid "%u timeouts in loss state"
++msgstr ""
++
++#: ../statistics.c:205
++#, fuzzy, c-format
++msgid "%u fast retransmits"
++msgstr "%u segmenti saadeti uuesti"
++
++#: ../statistics.c:206
++#, fuzzy, c-format
++msgid "%u forward retransmits"
++msgstr "%u edastati"
++
++#: ../statistics.c:207
++#, c-format
++msgid "%u retransmits in slow start"
++msgstr ""
++
++#: ../statistics.c:208
++#, c-format
++msgid "%u other TCP timeouts"
++msgstr ""
++
++#: ../statistics.c:209
++#, fuzzy, c-format
++msgid "%u reno fast retransmits failed"
++msgstr "%u segmenti saadeti uuesti"
++
++#: ../statistics.c:210
++#, fuzzy, c-format
++msgid "%u sack retransmits failed"
++msgstr "%u pakettide kokkupanekut ebannestus"
++
++#: ../statistics.c:211
++#, c-format
++msgid "%u times receiver scheduled too late for direct processing"
++msgstr ""
++
++#: ../statistics.c:212
++#, fuzzy, c-format
++msgid "%u packets collapsed in receive queue due to low socket buffer"
++msgstr ""
++"%u paketti kustutati vastuvtu jrjekorrast sokli puhvri letitumise tttu"
++
++#: ../statistics.c:213
++#, c-format
++msgid "%u DSACKs sent for old packets"
++msgstr ""
++
++#: ../statistics.c:214
++#, c-format
++msgid "%u DSACKs sent for out of order packets"
++msgstr ""
++
++#: ../statistics.c:215
++#, fuzzy, c-format
++msgid "%u DSACKs received"
++msgstr "%u paketti veti vastu"
++
++#: ../statistics.c:216
++#, fuzzy, c-format
++msgid "%u DSACKs for out of order packets received"
++msgstr "kokku veti vastu %u paketti"
++
++#: ../statistics.c:217
++#, fuzzy, c-format
++msgid "%u connections reset due to unexpected SYN"
++msgstr "%u henduse katkestust saabus"
++
++#: ../statistics.c:218
++#, fuzzy, c-format
++msgid "%u connections reset due to unexpected data"
++msgstr "%u henduse katkestust saabus"
++
++#: ../statistics.c:219
++#, fuzzy, c-format
++msgid "%u connections reset due to early user close"
++msgstr "%u henduse katkestust saabus"
++
++#: ../statistics.c:220
++#, c-format
++msgid "%u connections aborted due to memory pressure"
++msgstr ""
++
++#: ../statistics.c:221
++#, fuzzy, c-format
++msgid "%u connections aborted due to timeout"
++msgstr "%u aktiivsest hendusest keelduti ajatempli tttu"
++
++#: ../statistics.c:222
++#, c-format
++msgid "%u connections aborted after user close in linger timeout"
++msgstr ""
++
++#: ../statistics.c:223
++#, c-format
++msgid "%u times unabled to send RST due to no memory"
++msgstr ""
++
++#: ../statistics.c:224
++#, c-format
++msgid "TCP ran low on memory %u times"
++msgstr ""
++
++#: ../statistics.c:225
++#, c-format
++msgid "%u TCP data loss events"
++msgstr ""
++
++#: ../statistics.c:292
+ msgid "enabled"
+ msgstr "lubatud"
+
+-#: ../statistics.c:253
++#: ../statistics.c:292
+ msgid "disabled"
+ msgstr "keelatud"
+
+-#: ../statistics.c:336
++#: ../statistics.c:375
+ msgid "error parsing /proc/net/snmp"
+ msgstr "Viga /proc/net/snmp analsimisel"
+
+-#: ../statistics.c:349
++#: ../statistics.c:388
+ msgid "cannot open /proc/net/snmp"
+ msgstr "Ei saa avada faili /proc/net/snmp"
+
+@@ -1713,7 +2107,7 @@
+ msgid "Cannot change line discipline to `%s'.\n"
+ msgstr "Ei suuda seada `%s' liiniprotokolliks\n"
+
+-#: ../lib/af.c:153 ../lib/hw.c:156
++#: ../lib/af.c:153 ../lib/hw.c:161
+ msgid "UNSPEC"
+ msgstr "UNSPEC"
+
+@@ -1729,11 +2123,11 @@
+ msgid "IPv6"
+ msgstr "IPv6"
+
+-#: ../lib/af.c:164 ../lib/hw.c:177
++#: ../lib/af.c:164 ../lib/hw.c:182
+ msgid "AMPR AX.25"
+ msgstr "AMPR AX.25"
+
+-#: ../lib/af.c:167 ../lib/hw.c:183
++#: ../lib/af.c:167 ../lib/hw.c:188
+ msgid "AMPR NET/ROM"
+ msgstr "AMPR NET/ROM"
+
+@@ -1745,7 +2139,7 @@
+ msgid "Appletalk DDP"
+ msgstr "Appletalk DDP"
+
+-#: ../lib/af.c:176 ../lib/hw.c:218
++#: ../lib/af.c:176 ../lib/hw.c:223
+ msgid "Econet"
+ msgstr "Econet"
+
+@@ -1753,19 +2147,21 @@
+ msgid "CCITT X.25"
+ msgstr "CCITT X.25"
+
+-#: ../lib/af.c:182 ../lib/hw.c:180
++#: ../lib/af.c:182 ../lib/hw.c:185
+ msgid "AMPR ROSE"
+ msgstr "AMPR ROSE"
+
+-#: ../lib/af.c:185 ../lib/hw.c:168
++#: ../lib/af.c:185 ../lib/hw.c:173
+ msgid "Ash"
+ msgstr "Ash"
+
+ #: ../lib/af.c:243
++#, c-format
+ msgid "Please don't supply more than one address family.\n"
+ msgstr "Meil on kombeks ks aadressiperekond korraga\n"
+
+ #: ../lib/af.c:304
++#, c-format
+ msgid "Too much address family arguments.\n"
+ msgstr "Liiga palju aadressiperekonna argumente\n"
+
+@@ -1790,6 +2186,7 @@
+ msgstr "in_arcnet(%s): sodi lpus\n"
+
+ #: ../lib/ash.c:81
++#, c-format
+ msgid "Malformed Ash address"
+ msgstr "Vigane Ash aadress"
+
+@@ -1808,22 +2205,21 @@
+ msgstr "Liiga pikk kutsung"
+
+ #: ../lib/ax25_gr.c:47
++#, c-format
+ msgid "AX.25 not configured in this system.\n"
+ msgstr "AX.25 pole antud ssteemis konfigureeritud\n"
+
+ #: ../lib/ax25_gr.c:50
++#, c-format
+ msgid "Kernel AX.25 routing table\n"
+ msgstr "Tuuma AX.25 ruutingutabel\n"
+
+ #. xxx
+ #: ../lib/ax25_gr.c:51 ../lib/rose_gr.c:55
++#, c-format
+ msgid "Destination Iface Use\n"
+ msgstr "Sihtpunkt Liides Kasutus\n"
+
+-#: ../lib/ddp_gr.c:21
+-msgid "Routing table for `ddp' not yet supported.\n"
+-msgstr "`ddp' jaoks ruutingutabelit veel ei oska\n"
+-
+ #: ../lib/ether.c:74 ../lib/ether.c:91
+ #, c-format
+ msgid "in_ether(%s): invalid ether address!\n"
+@@ -1879,90 +2275,94 @@
+ msgid "in_hippi(%s): trailing junk!\n"
+ msgstr "in_hippi(%s): sodi lpus\n"
+
+-#: ../lib/hw.c:155
++#: ../lib/hw.c:160
+ msgid "Local Loopback"
+ msgstr "Kohalik loopback"
+
+-#: ../lib/hw.c:158
++#: ../lib/hw.c:163
+ msgid "Serial Line IP"
+ msgstr "Serial Line IP"
+
+-#: ../lib/hw.c:159
++#: ../lib/hw.c:164
+ msgid "VJ Serial Line IP"
+ msgstr "VJ Serial Line IP"
+
+-#: ../lib/hw.c:160
++#: ../lib/hw.c:165
+ msgid "6-bit Serial Line IP"
+ msgstr "6-bitine Serial Line IP"
+
+-#: ../lib/hw.c:161
++#: ../lib/hw.c:166
+ msgid "VJ 6-bit Serial Line IP"
+ msgstr "VJ 6-bitine Serial Line IP"
+
+-#: ../lib/hw.c:162
++#: ../lib/hw.c:167
+ msgid "Adaptive Serial Line IP"
+ msgstr "Adaptiivne Serial Line IP"
+
+-#: ../lib/hw.c:165
++#: ../lib/hw.c:170
+ msgid "Ethernet"
+ msgstr "Ethernet"
+
+-#: ../lib/hw.c:171
++#: ../lib/hw.c:176
+ msgid "Fiber Distributed Data Interface"
+ msgstr "Fiber Distributed Data Interface"
+
+-#: ../lib/hw.c:174
++#: ../lib/hw.c:179
+ msgid "HIPPI"
+ msgstr "HIPPI"
+
+-#: ../lib/hw.c:186
++#: ../lib/hw.c:191
+ msgid "generic X.25"
+ msgstr "ldine X.25"
+
+-#: ../lib/hw.c:189
++#: ../lib/hw.c:194
+ msgid "IPIP Tunnel"
+ msgstr "IPIP tunnel"
+
+-#: ../lib/hw.c:192
++#: ../lib/hw.c:197
+ msgid "Point-to-Point Protocol"
+ msgstr "Kakspunktprotokoll"
+
+-#: ../lib/hw.c:195
++#: ../lib/hw.c:200
+ msgid "(Cisco)-HDLC"
+ msgstr "(Cisco-)HDLC"
+
+-#: ../lib/hw.c:196
++#: ../lib/hw.c:201
+ msgid "LAPB"
+ msgstr "LAPB"
+
+-#: ../lib/hw.c:199
++#: ../lib/hw.c:204
+ msgid "ARCnet"
+ msgstr "ARCnet"
+
+-#: ../lib/hw.c:202
++#: ../lib/hw.c:207
+ msgid "Frame Relay DLCI"
+ msgstr "Frame Relay DLCI"
+
+-#: ../lib/hw.c:203
++#: ../lib/hw.c:208
+ msgid "Frame Relay Access Device"
+ msgstr "Frame Relay Access Device"
+
+-#: ../lib/hw.c:206
++#: ../lib/hw.c:211
+ msgid "IPv6-in-IPv4"
+ msgstr "IPv6-in-IPv4"
+
+-#: ../lib/hw.c:209
++#: ../lib/hw.c:214
+ msgid "IrLAP"
+ msgstr "IrLAP"
+
+-#: ../lib/hw.c:212
++#: ../lib/hw.c:217
+ msgid "16/4 Mbps Token Ring"
+ msgstr "16/4 Mbps Token Ring"
+
+-#: ../lib/hw.c:214
++#: ../lib/hw.c:219
+ msgid "16/4 Mbps Token Ring (New)"
+ msgstr "16/4 Mbps Token Ring (New)"
+
++#: ../lib/hw.c:226
++msgid "Generic EUI-64"
++msgstr ""
++
+ #: ../lib/inet.c:153 ../lib/inet6.c:79
+ #, c-format
+ msgid "rresolve: unsupport address family %d !\n"
+@@ -1972,27 +2372,32 @@
+ msgid "[UNKNOWN]"
+ msgstr "[TUNDMATU]"
+
+-#: ../lib/inet6_gr.c:79
++#: ../lib/inet6_gr.c:71
++#, c-format
+ msgid "INET6 (IPv6) not configured in this system.\n"
+ msgstr "INET6 (IPv6) pole antud ssteemis konfigureeritud\n"
+
+-#: ../lib/inet6_gr.c:82
++#: ../lib/inet6_gr.c:74
++#, c-format
+ msgid "Kernel IPv6 routing table\n"
+ msgstr "Tuuma IPv6 ruutingutabel\n"
+
+-#: ../lib/inet6_gr.c:84
++#: ../lib/inet6_gr.c:76
++#, c-format
+ msgid ""
+-"Destination Next Hop "
+-" Flags Metric Ref Use Iface\n"
++"Destination Next "
++"Hop Flags Metric Ref Use Iface\n"
+ msgstr ""
+-"Sihtpunkt Jrgmine samm "
+-" Lipud Meetr Mitu Kasut Liides\n"
++"Sihtpunkt Jrgmine "
++"samm Lipud Meetr Mitu Kasut Liides\n"
+
+-#: ../lib/inet6_gr.c:158
++#: ../lib/inet6_gr.c:150
++#, c-format
+ msgid "Kernel IPv6 Neighbour Cache\n"
+ msgstr "Tuuma IPv6 naabrite puhver\n"
+
+-#: ../lib/inet6_gr.c:161
++#: ../lib/inet6_gr.c:153
++#, c-format
+ msgid ""
+ "Neighbour HW Address Iface Flags "
+ "Ref State\n"
+@@ -2000,7 +2405,8 @@
+ "Naaber HW Aadress Liides Lipud "
+ "Mitu Olek\n"
+
+-#: ../lib/inet6_gr.c:165
++#: ../lib/inet6_gr.c:157
++#, c-format
+ msgid ""
+ "Neighbour HW Address Iface Flags "
+ "Ref State Stale(sec) Delete(sec)\n"
+@@ -2009,31 +2415,38 @@
+ "Mitu Olek Stale(sec) Delete(sec)\n"
+
+ #: ../lib/inet6_sr.c:46
++#, c-format
+ msgid "Usage: inet6_route [-vF] del Target\n"
+ msgstr "Kasutamine: route [-vF] del AADRESS\n"
+
+ #: ../lib/inet6_sr.c:47
++#, c-format
+ msgid " inet6_route [-vF] add Target [gw Gw] [metric M] [[dev] If]\n"
+ msgstr ""
+ " route [-vF] add AADRESS [gw GW] [metric M] [[dev] LIIDES]\n"
+
+ #: ../lib/inet6_sr.c:48
++#, c-format
+ msgid " inet6_route [-FC] flush NOT supported\n"
+ msgstr " route [-FC] flush Seda EI toetata\n"
+
+ #: ../lib/inet6_sr.c:188
++#, c-format
+ msgid "Flushing `inet6' routing table not supported\n"
+ msgstr "`inet6' ruutingutabeli thjendamist ei toetata\n"
+
+ #: ../lib/inet_gr.c:50 ../lib/inet_gr.c:220
++#, c-format
+ msgid "INET (IPv4) not configured in this system.\n"
+ msgstr "INET (IPv4) pole antud ssteemis konfigureeritud\n"
+
+ #: ../lib/inet_gr.c:53
++#, c-format
+ msgid "Kernel IP routing table\n"
+ msgstr "Tuuma IP ruutingutabel\n"
+
+ #: ../lib/inet_gr.c:56
++#, c-format
+ msgid ""
+ "Destination Gateway Genmask Flags Metric Ref Use "
+ "Iface\n"
+@@ -2042,6 +2455,7 @@
+ "Liides\n"
+
+ #: ../lib/inet_gr.c:59
++#, c-format
+ msgid ""
+ "Destination Gateway Genmask Flags MSS Window irtt "
+ "Iface\n"
+@@ -2050,6 +2464,7 @@
+ "Liides\n"
+
+ #: ../lib/inet_gr.c:62
++#, c-format
+ msgid ""
+ "Destination Gateway Genmask Flags Metric Ref Use "
+ "Iface MSS Window irtt\n"
+@@ -2058,10 +2473,12 @@
+ "Liides MSS Aken irtt\n"
+
+ #: ../lib/inet_gr.c:237
++#, c-format
+ msgid "Kernel IP routing cache\n"
+ msgstr "Tuuma IP ruutingu puhver\n"
+
+ #: ../lib/inet_gr.c:258
++#, c-format
+ msgid ""
+ "Source Destination Gateway Flags Metric Ref Use "
+ "Iface\n"
+@@ -2070,6 +2487,7 @@
+ "Liides\n"
+
+ #: ../lib/inet_gr.c:261
++#, c-format
+ msgid ""
+ "Source Destination Gateway Flags MSS Window irtt "
+ "Iface\n"
+@@ -2078,6 +2496,7 @@
+ "Liides\n"
+
+ #: ../lib/inet_gr.c:266
++#, c-format
+ msgid ""
+ "Source Destination Gateway Flags Metric Ref Use "
+ "Iface MSS Window irtt HH Arp\n"
+@@ -2086,6 +2505,7 @@
+ "Liides MSS Aken irtt HH Arp\n"
+
+ #: ../lib/inet_gr.c:290
++#, c-format
+ msgid ""
+ "Source Destination Gateway Flags Metric Ref Use "
+ "Iface MSS Window irtt TOS HHRef HHUptod SpecDst\n"
+@@ -2093,7 +2513,8 @@
+ "Lhtepunkt Sihtpunkt Ruuter Lipud Meetr Mitu Kasut "
+ "Liides MSS Aken irtt TOS HHRef HHUptod SpecDst\n"
+
+-#: ../lib/inet_sr.c:50
++#: ../lib/inet_sr.c:51
++#, c-format
+ msgid ""
+ "Usage: inet_route [-vF] del {-host|-net} Target[/prefix] [gw Gw] [metric M] "
+ "[[dev] If]\n"
+@@ -2101,31 +2522,36 @@
+ "Kasutamine: route [-vF] del {-host|-net} AADRESS[/PREFIKS] [gw GW] [metric "
+ "M] [[dev] LIIDES]\n"
+
+-#: ../lib/inet_sr.c:51
++#: ../lib/inet_sr.c:52
++#, c-format
+ msgid ""
+ " inet_route [-vF] add {-host|-net} Target[/prefix] [gw Gw] [metric M]\n"
+ msgstr ""
+ " route [-vF] add {-host|-net} AADRESS[/PREFIKS] [gw GW] [metric "
+ "M]\n"
+
+-#: ../lib/inet_sr.c:52
++#: ../lib/inet_sr.c:53
++#, c-format
+ msgid ""
+ " [netmask N] [mss Mss] [window W] [irtt I]\n"
+ msgstr ""
+ " [netmask N] [mss MSS] [window W] [irtt I]\n"
+
+-#: ../lib/inet_sr.c:53
++#: ../lib/inet_sr.c:54
++#, c-format
+ msgid " [mod] [dyn] [reinstate] [[dev] If]\n"
+ msgstr " [mod] [dyn] [reinstate] [[dev] LIIDES]\n"
+
+-#: ../lib/inet_sr.c:54
++#: ../lib/inet_sr.c:55
++#, c-format
+ msgid ""
+ " inet_route [-vF] add {-host|-net} Target[/prefix] [metric M] reject\n"
+ msgstr ""
+ " route [-vF] add {-host|-net} AADRESS[/PREFIKS] [metric M] "
+ "reject\n"
+
+-#: ../lib/inet_sr.c:55
++#: ../lib/inet_sr.c:56
++#, c-format
+ msgid " inet_route [-FC] flush NOT supported\n"
+ msgstr " route [-FC] flush Seda EI toetata\n"
+
+@@ -2135,14 +2561,17 @@
+ msgstr "route: %s: vrku ei saa kasutada ruuterina\n"
+
+ #: ../lib/inet_sr.c:174
++#, c-format
+ msgid "route: Invalid MSS/MTU.\n"
+ msgstr "route: vigane MSS/MTU\n"
+
+ #: ../lib/inet_sr.c:187
++#, c-format
+ msgid "route: Invalid window.\n"
+ msgstr "route: Vigane akna suurus\n"
+
+ #: ../lib/inet_sr.c:203
++#, c-format
+ msgid "route: Invalid initial rtt.\n"
+ msgstr "route: vigane algne rtt\n"
+
+@@ -2157,75 +2586,92 @@
+ msgstr "route: vale vrgumask %s\n"
+
+ #: ../lib/inet_sr.c:270
++#, c-format
+ msgid "route: netmask doesn't match route address\n"
+ msgstr "route: vrgumask ei sobi ruutingu aadressiga\n"
+
+ #: ../lib/inet_sr.c:306
++#, c-format
+ msgid "Flushing `inet' routing table not supported\n"
+ msgstr "`inet' ruutingutabeli thjendamist ei toetata\n"
+
+ #: ../lib/inet_sr.c:310
++#, c-format
+ msgid "Modifying `inet' routing cache not supported\n"
+ msgstr "`inet' ruutingu puhvri muutmist ei toetata\n"
+
+ #: ../lib/ipx_gr.c:52
++#, c-format
+ msgid "IPX not configured in this system.\n"
+ msgstr "IPX pole antud ssteemis konfigureeritud\n"
+
+ #: ../lib/ipx_gr.c:56
++#, c-format
+ msgid "Kernel IPX routing table\n"
+ msgstr "Tuuma IPX ruutingutabel\n"
+
+ #. xxx
+ #: ../lib/ipx_gr.c:57
++#, c-format
+ msgid "Destination Router Net Router Node\n"
+ msgstr "Sihtpunkt Ruuteri vrk Ruuter ise\n"
+
+ #: ../lib/ipx_sr.c:33
++#, c-format
+ msgid "IPX: this needs to be written\n"
+ msgstr "IPX osa vajab mbertegemist\n"
+
+ #: ../lib/masq_info.c:198
++#, c-format
+ msgid "IP masquerading entries\n"
+ msgstr "IP maskeerimise kirjed\n"
+
+ #: ../lib/masq_info.c:201
++#, c-format
+ msgid "prot expire source destination ports\n"
+ msgstr "Proto Aegub Lhtepunkt Sihtpunkt Pordid\n"
+
+ #: ../lib/masq_info.c:204
++#, c-format
+ msgid ""
+-"prot expire initseq delta prevd source destination "
+-" ports\n"
++"prot expire initseq delta prevd source "
++"destination ports\n"
+ msgstr ""
+-"Proto Aegub Initseq Delta Prevd Lhtepunkt Sihtpunkt "
+-" Pordid\n"
++"Proto Aegub Initseq Delta Prevd Lhtepunkt "
++"Sihtpunkt Pordid\n"
+
+ #: ../lib/netrom_gr.c:48
++#, c-format
+ msgid "NET/ROM not configured in this system.\n"
+ msgstr "NET/ROM pole antud ssteemis konfigureeritud\n"
+
+ #: ../lib/netrom_gr.c:51
++#, c-format
+ msgid "Kernel NET/ROM routing table\n"
+ msgstr "Tuuma NET/ROM ruutingutabel\n"
+
+ #: ../lib/netrom_gr.c:52
++#, c-format
+ msgid "Destination Mnemonic Quality Neighbour Iface\n"
+ msgstr "Sihtpunkt Mnemoonika Kvaliteet Naaber Liides\n"
+
+ #: ../lib/netrom_sr.c:34
++#, c-format
+ msgid "netrom usage\n"
+ msgstr "netrom kasutus\n"
+
+ #: ../lib/netrom_sr.c:44
++#, c-format
+ msgid "NET/ROM: this needs to be written\n"
+ msgstr "NET/ROM osa vajab mbertegemist\n"
+
+ #: ../lib/ppp.c:44
++#, c-format
+ msgid "You cannot start PPP with this program.\n"
+ msgstr "Sellest programmist ei saa PPP-d kivitada\n"
+
+ #: ../lib/ppp_ac.c:38
++#, c-format
+ msgid "Sorry, use pppd!\n"
+ msgstr "Palun kasutage pppd'd\n"
+
+@@ -2234,287 +2680,314 @@
+ msgstr "Slme aadress peab olema kmnekohaline"
+
+ #: ../lib/rose_gr.c:51
++#, c-format
+ msgid "ROSE not configured in this system.\n"
+ msgstr "ROSE pole antud ssteemis konfigureeritud\n"
+
+ #: ../lib/rose_gr.c:54
++#, c-format
+ msgid "Kernel ROSE routing table\n"
+ msgstr "Tuuma ROSE ruutingutabel\n"
+
+-#: ../lib/tr.c:70 ../lib/tr.c:85
++#: ../lib/tr.c:86 ../lib/tr.c:101
+ #, c-format
+ msgid "in_tr(%s): invalid token ring address!\n"
+ msgstr "in_tr(%s): vigane token ring-aadress\n"
+
+-#: ../lib/tr.c:97
++#: ../lib/tr.c:113
+ #, c-format
+ msgid "in_tr(%s): trailing : ignored!\n"
+ msgstr "in_tr(%s): ignoreerin lpetavat koolonit\n"
+
+-#: ../lib/tr.c:109
++#: ../lib/tr.c:125
+ #, c-format
+ msgid "in_tr(%s): trailing junk!\n"
+ msgstr "in_tr(%s): sodi lpus\n"
+
+-#: ../lib/interface.c:164
++#: ../lib/interface.c:176
+ #, c-format
+ msgid "warning: no inet socket available: %s\n"
+ msgstr "Hoiatus: `inet' sokleid ei ole: %s\n"
+
+-#: ../lib/interface.c:316
++#: ../lib/interface.c:325
+ #, c-format
+ msgid "Warning: cannot open %s (%s). Limited output.\n"
+ msgstr "Hoiatus: ei saa avada faili %s (%s). Vljund on piiratud.\n"
+
+ #. Give better error message for this case.
+-#: ../lib/interface.c:556
++#: ../lib/interface.c:571
+ msgid "Device not found"
+ msgstr "Liidest ei leitud"
+
+-#: ../lib/interface.c:560
++#: ../lib/interface.c:575
+ #, c-format
+ msgid "%s: error fetching interface information: %s\n"
+ msgstr "%s: viga liidese info ksimisel: %s\n"
+
+-#: ../lib/interface.c:593
++#: ../lib/interface.c:608
+ msgid " - no statistics available -"
+ msgstr " - statistikat ei ole -"
+
+-#: ../lib/interface.c:597
++#: ../lib/interface.c:612
++#, c-format
+ msgid "[NO FLAGS]"
+ msgstr "[LIPPE POLE]"
+
+-#: ../lib/interface.c:673
++#: ../lib/interface.c:688
+ #, c-format
+ msgid "%-9.9s Link encap:%s "
+ msgstr "%-9.9s kapseldus:%s "
+
+-#: ../lib/interface.c:678
++#: ../lib/interface.c:693
+ #, c-format
+ msgid "HWaddr %s "
+ msgstr "HWaddr %s "
+
+-#: ../lib/interface.c:681
++#: ../lib/interface.c:696
+ #, c-format
+ msgid "Media:%s"
+ msgstr "meedia:%s"
+
+-#: ../lib/interface.c:683
++#: ../lib/interface.c:698
++#, c-format
+ msgid "(auto)"
+ msgstr "(auto)"
+
+-#: ../lib/interface.c:690
++#: ../lib/interface.c:705
+ #, c-format
+ msgid " %s addr:%s "
+ msgstr " %s aadress:%s "
+
+-#: ../lib/interface.c:693
++#: ../lib/interface.c:708
+ #, c-format
+ msgid " P-t-P:%s "
+ msgstr " P-t-P:%s "
+
+-#: ../lib/interface.c:696
++#: ../lib/interface.c:711
+ #, c-format
+ msgid " Bcast:%s "
+ msgstr " bcast:%s "
+
+-#: ../lib/interface.c:698
++#: ../lib/interface.c:713
+ #, c-format
+ msgid " Mask:%s\n"
+ msgstr " mask:%s\n"
+
+-#: ../lib/interface.c:715
++#: ../lib/interface.c:730
+ #, c-format
+ msgid " inet6 addr: %s/%d"
+ msgstr " inet6 aadr: %s/%d"
+
+-#: ../lib/interface.c:717
++#: ../lib/interface.c:732
++#, c-format
+ msgid " Scope:"
+ msgstr " skoop:"
+
+-#: ../lib/interface.c:720
++#: ../lib/interface.c:735
++#, c-format
+ msgid "Global"
+ msgstr "globaalne"
+
+-#: ../lib/interface.c:723
++#: ../lib/interface.c:738
++#, c-format
+ msgid "Link"
+ msgstr "hendus"
+
+-#: ../lib/interface.c:726
++#: ../lib/interface.c:741
++#, c-format
+ msgid "Site"
+ msgstr "site"
+
+-#: ../lib/interface.c:729
++#: ../lib/interface.c:744
++#, c-format
+ msgid "Compat"
+ msgstr "hilduvus"
+
+-#: ../lib/interface.c:732
++#: ../lib/interface.c:747
++#, c-format
+ msgid "Host"
+ msgstr "host"
+
+-#: ../lib/interface.c:735
++#: ../lib/interface.c:750
++#, c-format
+ msgid "Unknown"
+ msgstr "tundmatu"
+
+-#: ../lib/interface.c:750
++#: ../lib/interface.c:765
+ #, c-format
+ msgid " IPX/Ethernet II addr:%s\n"
+ msgstr " IPX/Ethernet II aadr:%s\n"
+
+-#: ../lib/interface.c:753
++#: ../lib/interface.c:768
+ #, c-format
+ msgid " IPX/Ethernet SNAP addr:%s\n"
+ msgstr " IPX/Ethernet SNAP aadr:%s\n"
+
+-#: ../lib/interface.c:756
++#: ../lib/interface.c:771
+ #, c-format
+ msgid " IPX/Ethernet 802.2 addr:%s\n"
+ msgstr " IPX/Ethernet 802.2 aadr:%s\n"
+
+-#: ../lib/interface.c:759
++#: ../lib/interface.c:774
+ #, c-format
+ msgid " IPX/Ethernet 802.3 addr:%s\n"
+ msgstr " IPX/Ethernet 802.3 aadr:%s\n"
+
+-#: ../lib/interface.c:769
++#: ../lib/interface.c:784
+ #, c-format
+ msgid " EtherTalk Phase 2 addr:%s\n"
+ msgstr " EtherTalk Phase 2 aadr:%s\n"
+
+-#: ../lib/interface.c:778
++#: ../lib/interface.c:793
+ #, c-format
+ msgid " econet addr:%s\n"
+ msgstr " econeti aadr:%s\n"
+
+-#: ../lib/interface.c:785
++#: ../lib/interface.c:800
++#, c-format
+ msgid "[NO FLAGS] "
+ msgstr "[LIPPE POLE]"
+
+-#: ../lib/interface.c:787
++#: ../lib/interface.c:802
++#, c-format
+ msgid "UP "
+ msgstr "UP "
+
+-#: ../lib/interface.c:789
++#: ../lib/interface.c:804
++#, c-format
+ msgid "BROADCAST "
+ msgstr "BROADCAST "
+
+-#: ../lib/interface.c:791
++#: ../lib/interface.c:806
++#, c-format
+ msgid "DEBUG "
+ msgstr "DEBUG "
+
+-#: ../lib/interface.c:793
++#: ../lib/interface.c:808
++#, c-format
+ msgid "LOOPBACK "
+ msgstr "LOOPBACK "
+
+-#: ../lib/interface.c:795
++#: ../lib/interface.c:810
++#, c-format
+ msgid "POINTOPOINT "
+ msgstr "POINTOPOINT "
+
+-#: ../lib/interface.c:797
++#: ../lib/interface.c:812
++#, c-format
+ msgid "NOTRAILERS "
+ msgstr "NOTRAILERS "
+
+-#: ../lib/interface.c:799
++#: ../lib/interface.c:814
++#, c-format
+ msgid "RUNNING "
+ msgstr "RUNNING "
+
+-#: ../lib/interface.c:801
++#: ../lib/interface.c:816
++#, c-format
+ msgid "NOARP "
+ msgstr "NOARP "
+
+-#: ../lib/interface.c:803
++#: ../lib/interface.c:818
++#, c-format
+ msgid "PROMISC "
+ msgstr "PROMISC "
+
+-#: ../lib/interface.c:805
++#: ../lib/interface.c:820
++#, c-format
+ msgid "ALLMULTI "
+ msgstr "ALLMULTI "
+
+-#: ../lib/interface.c:807
++#: ../lib/interface.c:822
++#, c-format
+ msgid "SLAVE "
+ msgstr "SLAVE "
+
+-#: ../lib/interface.c:809
++#: ../lib/interface.c:824
++#, c-format
+ msgid "MASTER "
+ msgstr "MASTER "
+
+-#: ../lib/interface.c:811
++#: ../lib/interface.c:826
++#, c-format
+ msgid "MULTICAST "
+ msgstr "MULTICAST "
+
+-#: ../lib/interface.c:814
++#: ../lib/interface.c:829
++#, c-format
+ msgid "DYNAMIC "
+ msgstr "DYNAMIC "
+
+ #. DONT FORGET TO ADD THE FLAGS IN ife_print_short
+-#: ../lib/interface.c:817
++#: ../lib/interface.c:832
+ #, c-format
+ msgid " MTU:%d Metric:%d"
+ msgstr " MTU:%d meetrika:%d"
+
+-#: ../lib/interface.c:821
++#: ../lib/interface.c:836
+ #, c-format
+ msgid " Outfill:%d Keepalive:%d"
+ msgstr " lalhoidepakettide intervall:%d lalhoidetaimaut:%d"
+
+-#: ../lib/interface.c:835
++#: ../lib/interface.c:850
+ #, c-format
+ msgid "RX packets:%llu errors:%lu dropped:%lu overruns:%lu frame:%lu\n"
+ msgstr "RX pakette:%llu vigu:%lu ra visatud:%lu letit:%lu kaadri vigu:%lu\n"
+
+-#: ../lib/interface.c:840
++#: ../lib/interface.c:855
+ #, c-format
+ msgid " compressed:%lu\n"
+ msgstr " pakitud:%lu\n"
+
+-#: ../lib/interface.c:852
++#: ../lib/interface.c:895
+ #, c-format
+ msgid "TX packets:%llu errors:%lu dropped:%lu overruns:%lu carrier:%lu\n"
+ msgstr "TX pakette:%llu vigu:%lu ra visatud:%lu letit:%lu carrier:%lu\n"
+
+-#: ../lib/interface.c:856
++#: ../lib/interface.c:899
+ #, c-format
+ msgid " collisions:%lu "
+ msgstr " kollisioone:%lu "
+
+-#: ../lib/interface.c:858
++#: ../lib/interface.c:901
+ #, c-format
+ msgid "compressed:%lu "
+ msgstr "pakitud:%lu "
+
+-#: ../lib/interface.c:860
++#: ../lib/interface.c:903
+ #, c-format
+ msgid "txqueuelen:%d "
+ msgstr "txqueuelen:%d "
+
+-#: ../lib/interface.c:862
++#: ../lib/interface.c:905
+ #, c-format
+ msgid "RX bytes:%llu (%lu.%lu %s) TX bytes:%llu (%lu.%lu %s)\n"
+ msgstr "RX baite:%llu (%lu.%lu %s) TX baite:%llu (%lu.%lu %s)\n"
+
+-#: ../lib/interface.c:873
++#: ../lib/interface.c:916
+ #, c-format
+ msgid "Interrupt:%d "
+ msgstr "katkestus:%d "
+
+ #. Only print devices using it for
+ #. I/O maps
+-#: ../lib/interface.c:876
++#: ../lib/interface.c:919
+ #, c-format
+ msgid "Base address:0x%x "
+ msgstr "baasaadress:0x%x "
+
+-#: ../lib/interface.c:878
++#: ../lib/interface.c:921
+ #, c-format
+ msgid "Memory:%lx-%lx "
+ msgstr "mlu:%lx-%lx "
+
+-#: ../lib/interface.c:881
++#: ../lib/interface.c:924
+ #, c-format
+ msgid "DMA chan:%x "
+ msgstr "DMA kanal:%x "
+
+ #: ../lib/sockets.c:63
++#, c-format
+ msgid "No usable address families found.\n"
+ msgstr "Ei leidnud htegi kasutatavat aadressiperekonda\n"
+
+@@ -2538,29 +3011,32 @@
+ msgid "ip: argument is wrong: %s\n"
+ msgstr "iptunnel: vale argument %s\n"
+
+-#: ../ipmaddr.c:58
++#: ../ipmaddr.c:61
++#, c-format
+ msgid "Usage: ipmaddr [ add | del ] MULTIADDR dev STRING\n"
+ msgstr "Kasutamine: ipmaddr [ add | del ] MULTIAADR dev STRING\n"
+
+-#: ../ipmaddr.c:59
++#: ../ipmaddr.c:62
++#, c-format
+ msgid " ipmaddr show [ dev STRING ] [ ipv4 | ipv6 | link | all ]\n"
+ msgstr " ipmaddr show [ dev STRING ] [ ipv4 | ipv6 | link | all ]\n"
+
+-#: ../ipmaddr.c:60
++#: ../ipmaddr.c:63
++#, c-format
+ msgid " ipmaddr -V | -version\n"
+ msgstr " ipmaddr -V | -version\n"
+
+-#: ../ipmaddr.c:260
++#: ../ipmaddr.c:263
+ #, c-format
+ msgid "family %d "
+ msgstr "perekond %d "
+
+-#: ../ipmaddr.c:269
++#: ../ipmaddr.c:272
+ #, c-format
+ msgid " users %d"
+ msgstr " kasutajaid %d"
+
+-#: ../ipmaddr.c:355
++#: ../ipmaddr.c:358
+ msgid "Cannot create socket"
+ msgstr "Ei saa avada soklit"
+
+@@ -2575,6 +3051,7 @@
+ msgstr "slattach: tty_lock: (%s): %s\n"
+
+ #: ../slattach.c:192
++#, c-format
+ msgid "slattach: cannot write PID file\n"
+ msgstr "slattach: ei saa PID faili kirjutada\n"
+
+@@ -2594,18 +3071,22 @@
+ msgstr "slattach: tty_hangup(RAISE): %s\n"
+
+ #: ../slattach.c:468
++#, c-format
+ msgid "slattach: tty name too long\n"
+ msgstr "slattach: terminali nimi on liiga pikk\n"
+
+ #: ../slattach.c:498
++#, c-format
+ msgid "slattach: tty_open: cannot get current state!\n"
+ msgstr "slattach: tty_open: ei saa lugeda jooksvat olekut\n"
+
+ #: ../slattach.c:505
++#, c-format
+ msgid "slattach: tty_open: cannot get current line disc!\n"
+ msgstr "slattach: tty_open: liiniprotokolli ksimine ebannestus\n"
+
+ #: ../slattach.c:513
++#, c-format
+ msgid "slattach: tty_open: cannot set RAW mode!\n"
+ msgstr "slattach: tty_open: ei saa seada RAW moodi\n"
+
+@@ -2615,6 +3096,7 @@
+ msgstr "slattach: tty_open: ei saa seada kiiruseks %s bps\n"
+
+ #: ../slattach.c:530
++#, c-format
+ msgid "slattach: tty_open: cannot set 8N1 mode!\n"
+ msgstr "slattach: tty_open: ei saa seada 8N1 moodi\n"
+
+@@ -2637,3 +3119,20 @@
+ #, c-format
+ msgid " interface %s\n"
+ msgstr " liides %s\n"
++
++#~ msgid ""
++#~ " arp [-v] [<HW>] [-i <if>] -s <hostname> <hwaddr> [netmask <nm>] pub "
++#~ "<-''-\n"
++#~ msgstr ""
++#~ " arp [-v] [<HW>] [-i <if>] -s <hosti nimi> <hwaddr> [netmask <nm>] "
++#~ "pub\n"
++
++#~ msgid "%s: unknown interface: %s\n"
++#~ msgstr "ifconfig: tundmatu liides %s: %s\n"
++
++#~ msgid " -n, --numeric dont resolve names\n"
++#~ msgstr ""
++#~ " -n, --numeric mitte lahendada numbreid nimedeks\n"
++
++#~ msgid "Routing table for `ddp' not yet supported.\n"
++#~ msgstr "`ddp' jaoks ruutingutabelit veel ei oska\n"
+--- net-tools-1.60.orig/po/de.po
++++ net-tools-1.60/po/de.po
+@@ -1,106 +1,121 @@
+-# $Id: de.po,v 1.10 2000/08/01 03:19:48 ecki Exp $
++# $Id: de.po,v 1.11 2003/10/25 21:15:09 ecki Exp $
+ # German translation for net-tools 1.51
+ # Copyright (C) 1999 Ralf Bchle <ralf@gnu.org>
+ msgid ""
+ msgstr ""
+ "Project-Id-Version: net-tools 1.51\n"
+-"POT-Creation-Date: 2000-02-14 02:31+0100\n"
+-"PO-Revision-Date: 1998-03-01 00:02+0100\n"
++"Report-Msgid-Bugs-To: \n"
++"POT-Creation-Date: 2007-06-30 12:28+0900\n"
++"PO-Revision-Date: 2005-06-13 00:02+0100\n"
+ "Last-Translator: Ralf Bchle <ralf@gnu.org>\n"
+ "Language-Team:\n"
+ "MIME-Version: 1.0\n"
+ "Content-Type: text/plain; charset=iso8859-1\n"
+ "Content-Transfer-Encoding: 8bit\n"
+
+-#: ../arp.c:110 ../arp.c:269
++#: ../arp.c:112 ../arp.c:279
++#, c-format
+ msgid "arp: need host name\n"
+-msgstr "arp: Hostname mu angegeben werden\n"
++msgstr "arp: Hostname muss angegeben werden\n"
+
+-#: ../arp.c:207 ../arp.c:221
++#: ../arp.c:215 ../arp.c:230
+ #, c-format
+ msgid "No ARP entry for %s\n"
+-msgstr "Kein ARP Eintrag fr %s\n"
++msgstr "Kein ARP-Eintrag fr %s\n"
+
+-#: ../arp.c:239
++#: ../arp.c:248
+ #, c-format
+ msgid "arp: cant get HW-Address for `%s': %s.\n"
+ msgstr "rarp: Kann Eintrag aus %s : %u nicht setzen.\n"
+
+-#: ../arp.c:243
++#: ../arp.c:252
++#, c-format
+ msgid "arp: protocol type mismatch.\n"
+ msgstr "arp: unpassende Protokolltypen.\n"
+
+-#: ../arp.c:252
++#: ../arp.c:261
+ #, c-format
+ msgid "arp: device `%s' has HW address %s `%s'.\n"
+-msgstr "arp: Gert ,,%s'' hat HW-Adresse %s ,,%s''.\n"
++msgstr "arp: Gert %s hat HW-Adresse %s %s.\n"
+
+-#: ../arp.c:282
++#: ../arp.c:293
++#, c-format
+ msgid "arp: need hardware address\n"
+-msgstr "arp: Hardwareadresse mu angegeben werden\n"
++msgstr "arp: Hardwareadresse muss angegeben werden\n"
+
+-#: ../arp.c:290
++#: ../arp.c:301
++#, c-format
+ msgid "arp: invalid hardware address\n"
+ msgstr "arp: ungltige Hardwareadresse\n"
+
+-#: ../arp.c:387
++#: ../arp.c:398
+ #, c-format
+ msgid "arp: cannot open etherfile %s !\n"
+ msgstr "arp: Kann %s nicht ffnen!\n"
+
+-#: ../arp.c:403
++#: ../arp.c:414
+ #, c-format
+ msgid "arp: format error on line %u of etherfile %s !\n"
+ msgstr "arp: Formatfehler in Zeile %u von Etherfile %s.\n"
+
+-#: ../arp.c:416
++#: ../arp.c:427
+ #, c-format
+ msgid "arp: cannot set entry on line %u of etherfile %s !\n"
+ msgstr "arp: Kann Eintrag auf Zeile %u von Etherdatei %s nicht setzen!\n"
+
+-#: ../arp.c:437
+-msgid "Address\t\t\tHWtype\tHWaddress\t Flags Mask\t\t Iface\n"
++#: ../arp.c:448
++#, fuzzy, c-format
++msgid ""
++"Address HWtype HWaddress Flags Mask "
++"Iface\n"
+ msgstr "Adresse\t\t\tHWTyp\tHWAdresse\t Flags Maske\t\t Iface\n"
+
+-#: ../arp.c:467
++#: ../arp.c:476
++#, fuzzy
++msgid "<from_interface>"
++msgstr " Schnittstelle: %s\n"
++
++#: ../arp.c:478
+ msgid "(incomplete)"
+-msgstr "(unvollsndig)"
++msgstr "(unvollstndig)"
+
+-#: ../arp.c:484
++#: ../arp.c:495
+ #, c-format
+ msgid "%s (%s) at "
+ msgstr "%s (%s) auf "
+
+-#: ../arp.c:490
++#: ../arp.c:501
++#, c-format
+ msgid "<incomplete> "
+ msgstr "<unvollstndig> "
+
+-#: ../arp.c:496
++#: ../arp.c:507
+ #, c-format
+ msgid "netmask %s "
+ msgstr "netzmaske %s "
+
+-#: ../arp.c:513
++#: ../arp.c:524
+ #, c-format
+ msgid "on %s\n"
+ msgstr "auf %s\n"
+
+-#: ../arp.c:592
++#: ../arp.c:605
+ #, c-format
+ msgid "Entries: %d\tSkipped: %d\tFound: %d\n"
+ msgstr "Eintrge: %d Ignoriert: %d Gefunden: %d\n"
+
+-#: ../arp.c:596
++#: ../arp.c:609
+ #, c-format
+ msgid "%s (%s) -- no entry\n"
+ msgstr "%s (%s) -- kein Eintrag\n"
+
+-#: ../arp.c:598
++#: ../arp.c:611
+ #, c-format
+ msgid "arp: in %d entries no match found.\n"
+-msgstr "arp: In %d Eintrgen wurde kein Zutreffender gefunden.\n"
++msgstr "arp: In %d Eintrgen wurde kein zutreffender gefunden.\n"
+
+-#: ../arp.c:613
++#: ../arp.c:626
++#, c-format
+ msgid ""
+ "Usage:\n"
+ " arp [-vn] [<HW>] [-i <if>] [-a] [<hostname>] <-Display ARP "
+@@ -109,157 +124,165 @@
+ "Benutzung:\n"
+ " arp [-vn] [<HW>] [-i <if>] [-a] [<Hostname>]\n"
+
+-#: ../arp.c:614
++#: ../arp.c:627
++#, fuzzy, c-format
+ msgid ""
+-" arp [-v] [-i <if>] -d <hostname> [pub][nopub] <-Delete ARP "
++" arp [-v] [-i <if>] -d <host> [pub] <-Delete ARP "
+ "entry\n"
+ msgstr " arp [-v] [-i <if>] -d <Hostname> [pub][nopub]\n"
+
+-#: ../arp.c:615
++#: ../arp.c:628
++#, fuzzy, c-format
+ msgid ""
+-" arp [-vnD] [<HW>] [-i <if>] -f [<filename>] <-Add entry from "
++" arp [-vnD] [<HW>] [-i <if>] -f [<filename>] <-Add entry from "
+ "file\n"
+ msgstr " arp [-vnD] [<HW>] [-i <if>] -f <Dateiname> <- Eintrag aus Datei hinzufgen\n"
+
+-#: ../arp.c:616
++#: ../arp.c:629
++#, fuzzy, c-format
+ msgid ""
+-" arp [-v] [<HW>] [-i <if>] -s <hostname> <hwaddr> [temp][nopub] <-Add "
++" arp [-v] [<HW>] [-i <if>] -s <host> <hwaddr> [temp] <-Add "
+ "entry\n"
+ msgstr ""
+ " arp [-v] [<HW>] [-i <if>] -s <Rechnername> <hwaddr> [temp][nopub]\n"
+
+-#: ../arp.c:617
+-msgid ""
+-" arp [-v] [<HW>] [-i <if>] -s <hostname> <hwaddr> [netmask <nm>] pub "
+-"<-''-\n"
+-msgstr ""
+-" arp [-v] [<HW>] [-i <if>] -s <Hostname> <hwaddr> [netmask <nm>] pub\n"
+-
+-#: ../arp.c:618
++#: ../arp.c:630
++#, fuzzy, c-format
+ msgid ""
+-" arp [-v] [<HW>] [-i <if>] -Ds <hostname> <if> [netmask <nm>] pub "
++" arp [-v] [<HW>] [-i <if>] -Ds <host> <if> [netmask <nm>] pub "
+ "<-''-\n"
+ "\n"
+ msgstr " arp [-v] [<HW>] [-i <if>] -Ds <hostname> <if> [netmask <nm>] pub\n"
+
+-#: ../arp.c:620
++#: ../arp.c:632
++#, c-format
+ msgid ""
+ " -a display (all) hosts in alternative (BSD) "
+ "style\n"
+ msgstr " -a Alle Hosts im BSD-Format anzeigen\n"
+
+-#: ../arp.c:621
++#: ../arp.c:633
++#, c-format
+ msgid " -s, --set set a new ARP entry\n"
+ msgstr " -s, --set Neuen ARP-Eintrag setzen\n"
+
+-#: ../arp.c:622
++#: ../arp.c:634
++#, c-format
+ msgid " -d, --delete delete a specified entry\n"
+ msgstr " -d, --delete Einen bestimmten Eintrag lschen\n"
+
+-#: ../arp.c:623 ../netstat.c:1436 ../route.c:85
++#: ../arp.c:635 ../netstat.c:1503 ../route.c:86
++#, c-format
+ msgid " -v, --verbose be verbose\n"
+ msgstr " -v, --verbose Ausfhrliche Ausgaben\n"
+
+-#: ../arp.c:624 ../netstat.c:1437 ../route.c:86
+-msgid " -n, --numeric dont resolve names\n"
++#: ../arp.c:636 ../netstat.c:1504 ../route.c:87
++#, fuzzy, c-format
++msgid " -n, --numeric don't resolve names\n"
+ msgstr " -n, --numeric Adressen nicht nach Namen auflsen\n"
+
+-#: ../arp.c:625
++#: ../arp.c:637
++#, c-format
+ msgid ""
+ " -i, --device specify network interface (e.g. eth0)\n"
+-msgstr " -i, --device Netzwerksgert (z.B. eth0) angeben\n"
++msgstr " -i, --device Netzwerkgert (z.B. eth0) angeben\n"
+
+-#: ../arp.c:626
++#: ../arp.c:638
++#, c-format
+ msgid " -D, --use-device read <hwaddr> from given device\n"
+ msgstr " -D, --use-device <hwaddr> von gegebenem Gert lesen\n"
+
+-#: ../arp.c:627
++#: ../arp.c:639
++#, c-format
+ msgid " -A, -p, --protocol specify protocol family\n"
+ msgstr " -A, -p, --protocol Routentabelle anzeigen\n"
+
+-#: ../arp.c:628
++#: ../arp.c:640
++#, c-format
+ msgid ""
+-" -f, --file read new entries from file or from "
+-"/etc/ethers\n"
++" -f, --file read new entries from file or from /etc/"
++"ethers\n"
+ "\n"
+ msgstr ""
+ " -f, --file Neue Eintrge aus Datei lesen\n"
+ "\n"
+
+-#: ../arp.c:630 ../rarp.c:181
++#: ../arp.c:642 ../rarp.c:182
+ #, c-format
+ msgid " <HW>=Use '-H <hw>' to specify hardware address type. Default: %s\n"
+ msgstr " <HW>='-H <hw>' um Hardwareadresstyp anzugeben. Standard: %s\n"
+
+-#: ../arp.c:631 ../rarp.c:182
++#: ../arp.c:643 ../rarp.c:183
++#, c-format
+ msgid " List of possible hardware types (which support ARP):\n"
+ msgstr " Liste mglicher Hardwaretypen, die ARP untersttzen:\n"
+
+-#: ../arp.c:664
++#: ../arp.c:677 ../arp.c:762
+ #, c-format
+ msgid "%s: hardware type not supported!\n"
+ msgstr "%s: Hardwaretyp nicht untersttzt!\n"
+
+-#: ../arp.c:668
++#: ../arp.c:681
+ #, c-format
+ msgid "%s: address family not supported!\n"
+ msgstr "%s: Adressfamilie nicht untersttzt!\n"
+
+-#: ../arp.c:703
++#: ../arp.c:716
++#, c-format
+ msgid "arp: -N not yet supported.\n"
+ msgstr "arp: -N noch nicht untersttzt.\n"
+
+-#: ../arp.c:713
++#: ../arp.c:726
+ #, c-format
+ msgid "arp: %s: unknown address family.\n"
+ msgstr "arp: %s: unbekannte Adressfamilie.\n"
+
+-#: ../arp.c:722
++#: ../arp.c:735
+ #, c-format
+ msgid "arp: %s: unknown hardware type.\n"
+ msgstr "arp: %s: unbekannter Hardwaretyp.\n"
+
+-#: ../arp.c:741
++#: ../arp.c:754
+ #, c-format
+ msgid "arp: %s: kernel only supports 'inet'.\n"
+-msgstr "arp: %s: Kernel untersttzt nur ,,inet''.\n"
++msgstr "arp: %s: Kernel untersttzt nur inet.\n"
+
+-#: ../arp.c:746
++#: ../arp.c:767
+ #, c-format
+ msgid "arp: %s: hardware type without ARP support.\n"
+ msgstr "arp: %s: Hardware untersttzt kein ARP.\n"
+
+-#: ../hostname.c:69
++#: ../hostname.c:71
+ #, c-format
+ msgid "Setting nodename to `%s'\n"
+-msgstr "Rechnernamen auf ,,%s'' setzen\n"
++msgstr "Rechnernamen auf %s setzen\n"
+
+-#: ../hostname.c:74
++#: ../hostname.c:76
+ #, c-format
+ msgid "%s: you must be root to change the node name\n"
+ msgstr "%s: Nur Root darf den Rechnernamen ndern\n"
+
+-#: ../hostname.c:77 ../hostname.c:97 ../hostname.c:116
++#: ../hostname.c:79 ../hostname.c:99 ../hostname.c:117
+ #, c-format
+ msgid "%s: name too long\n"
+ msgstr "%s: name zu lang\n"
+
+-#: ../hostname.c:89
++#: ../hostname.c:91
+ #, c-format
+ msgid "Setting hostname to `%s'\n"
+-msgstr "Setze Hostname auf ,,%s''\n"
++msgstr "Setze Hostname auf %s\n"
+
+-#: ../hostname.c:94
++#: ../hostname.c:96
+ #, c-format
+ msgid "%s: you must be root to change the host name\n"
+-msgstr "%s: Nur Root darf then Rechnernamen ndern\n"
++msgstr "%s: Nur Root darf den Rechnernamen ndern\n"
+
+-#: ../hostname.c:108
++#: ../hostname.c:109
+ #, c-format
+ msgid "Setting domainname to `%s'\n"
+-msgstr "Setze domainname auf ,,%s''\n"
++msgstr "Setze domainname auf %s\n"
+
+-#: ../hostname.c:113
++#: ../hostname.c:114
+ #, c-format
+ msgid "%s: you must be root to change the domain name\n"
+ msgstr "%s: Nur Root darf den Domainnamen ndern\n"
+@@ -267,51 +290,56 @@
+ #: ../hostname.c:131
+ #, c-format
+ msgid "Resolving `%s' ...\n"
+-msgstr "Lse ,,%s'' auf ...\n"
++msgstr "Lse %s auf ...\n"
+
+ #: ../hostname.c:137
+ #, c-format
+ msgid "Result: h_name=`%s'\n"
+-msgstr "Ergebnis: h_name=,,%s''\n"
++msgstr "Ergebnis: h_name=%s\n"
+
+ #: ../hostname.c:142
+ #, c-format
+ msgid "Result: h_aliases=`%s'\n"
+-msgstr "Ergebnis: h_aliases=,,%s''\n"
++msgstr "Ergebnis: h_aliases=%s\n"
+
+ #: ../hostname.c:147
+ #, c-format
+ msgid "Result: h_addr_list=`%s'\n"
+-msgstr "Ergebnis: h_addr_list=,,%s''\n"
++msgstr "Ergebnis: h_addr_list=%s\n"
+
+-#: ../hostname.c:209
++#: ../hostname.c:208
+ #, c-format
+ msgid "%s: can't open `%s'\n"
+-msgstr "%s: Kann ,,%s'' nicht ffnen\n"
++msgstr "%s: Kann %s nicht ffnen\n"
+
+-#: ../hostname.c:223
++#: ../hostname.c:222
++#, c-format
+ msgid "Usage: hostname [-v] {hostname|-F file} set hostname (from file)\n"
+ msgstr ""
+ "Benutzung: hostname [-v] {Hostname|-F Datei} Hostname (aus Datei) setzen\n"
+
+-#: ../hostname.c:224
++#: ../hostname.c:223
++#, c-format
+ msgid ""
+ " domainname [-v] {nisdomain|-F file} set NIS domainname (from file)\n"
+ msgstr ""
+-" domainname [-v] {nisdomain|-F file} NIS Domainname (aus Datei) "
++" domainname [-v] {nisdomain|-F file} NIS-Domainname (aus Datei) "
+ "setzen.\n"
+
+-#: ../hostname.c:226
++#: ../hostname.c:225
++#, c-format
+ msgid ""
+ " nodename [-v] {nodename|-F file} set DECnet node name (from "
+ "file)\n"
+ msgstr " nodename [-v] {Rechnername|-F Datei}\n"
+
+-#: ../hostname.c:228
++#: ../hostname.c:227
++#, c-format
+ msgid " hostname [-v] [-d|-f|-s|-a|-i|-y|-n] display formatted name\n"
+ msgstr " hostname [-v] [-d|-f|-s|-a|-i|-y|-n]\n"
+
+-#: ../hostname.c:229
++#: ../hostname.c:228
++#, c-format
+ msgid ""
+ " hostname [-v] display hostname\n"
+ "\n"
+@@ -319,7 +347,8 @@
+ " hostname [-v] Hostnamen anzeigen\n"
+ "\n"
+
+-#: ../hostname.c:230
++#: ../hostname.c:229
++#, c-format
+ msgid ""
+ " hostname -V|--version|-h|--help print info and exit\n"
+ "\n"
+@@ -328,7 +357,8 @@
+ "beenden.\n"
+ "\n"
+
+-#: ../hostname.c:231
++#: ../hostname.c:230
++#, c-format
+ msgid ""
+ " dnsdomainname=hostname -d, {yp,nis,}domainname=hostname -y\n"
+ "\n"
+@@ -336,43 +366,52 @@
+ " dnsdomainname=hostname -d, {yp,nis,}domainname=hostname -y\n"
+ "\n"
+
+-#: ../hostname.c:232
++#: ../hostname.c:231
++#, c-format
+ msgid " -s, --short short host name\n"
+ msgstr " -s, --short Kurzer Hostname\n"
+
+-#: ../hostname.c:233
++#: ../hostname.c:232
++#, c-format
+ msgid " -a, --alias alias names\n"
+ msgstr " -a, --alias Namensalias\n"
+
+-#: ../hostname.c:234
++#: ../hostname.c:233
++#, c-format
+ msgid " -i, --ip-address addresses for the hostname\n"
+ msgstr " -i, --ip-address Adressen fr den Hostnamen\n"
+
+-#: ../hostname.c:235
++#: ../hostname.c:234
++#, c-format
+ msgid " -f, --fqdn, --long long host name (FQDN)\n"
+ msgstr " -f, --fqdn, --long Langer Hostname (FQDN)\n"
+
+-#: ../hostname.c:236
++#: ../hostname.c:235
++#, c-format
+ msgid " -d, --domain DNS domain name\n"
+-msgstr " -d, --domain DNS Domainname\n"
++msgstr " -d, --domain DNS-Domainname\n"
+
+-#: ../hostname.c:237
++#: ../hostname.c:236
++#, c-format
+ msgid " -y, --yp, --nis NIS/YP domainname\n"
+-msgstr " -y, --yp, --nis NIS/YP Domainname\n"
++msgstr " -y, --yp, --nis NIS/YP-Domainname\n"
+
+-#: ../hostname.c:239
++#: ../hostname.c:238
++#, c-format
+ msgid " -n, --node DECnet node name\n"
+-msgstr " -n, --node DECnet Knotennamen\n"
++msgstr " -n, --node DECnet-Knotennamen\n"
+
+-#: ../hostname.c:241
++#: ../hostname.c:240
++#, c-format
+ msgid ""
+ " -F, --file read hostname or NIS domainname from given file\n"
+ "\n"
+ msgstr ""
+-" -F, --file Hostnamen oder NIS Domainnamen aus Datei lesen\n"
++" -F, --file Hostnamen oder NIS-Domainnamen aus Datei lesen\n"
+ "\n"
+
+-#: ../hostname.c:243
++#: ../hostname.c:242
++#, c-format
+ msgid ""
+ " This command can read or set the hostname or the NIS domainname. You can\n"
+ " also read the DNS domain or the FQDN (fully qualified domain name).\n"
+@@ -380,395 +419,268 @@
+ " FQDN (Fully Qualified Domain Name) and the DNS domain name (which is\n"
+ " part of the FQDN) in the /etc/hosts file.\n"
+ msgstr ""
+-" Dies Kommando setzt oder gibt den Hostnamen oder NIS Domainnamen aus.\n"
+-" Es ist ebenfalls mglich die DNS Domain oder den FQDN (langen Hostnamen)\n"
++" Dies Kommando setzt oder gibt den Hostnamen oder NIS-Domainnamen aus.\n"
++" Es ist ebenfalls mglich die DNS-Domain oder den FQDN (langen Hostnamen)\n"
+ " ausgeben zu lassen. Auer wenn DNS oder NIS als Namensdienst verwendet\n"
+-" wird, knnen FQDN (Fully Qualified Domain Name) und DNS Domainname (welcher\n"
++" wird, knnen FQDN (Fully Qualified Domain Name) und DNS-Domainname (welcher\n"
+ " Teil des FQDNs ist) in /etc/hosts gendert werden.\n"
+
+ #: ../hostname.c:338
+ #, c-format
+ msgid "%s: You can't change the DNS domain name with this command\n"
+-msgstr "%s: Mit diesem Program kann der DNS Domainname nicht gendert werden\n"
++msgstr "%s: Mit diesem Programm kann der DNS-Domainname nicht gendert werden\n"
+
+ #: ../hostname.c:339
++#, c-format
+ msgid ""
+ "\n"
+ "Unless you are using bind or NIS for host lookups you can change the DNS\n"
+ msgstr ""
+ "\n"
+-"Wenn Bind oder NIS nicht zur Hostnamensauflsung benutzt werden, kann der "
+-"DNS\n"
++"Wenn Bind oder NIS nicht zur Hostnamensauflsung benutzt werden, kann der DNS\n"
+
+ #: ../hostname.c:340
++#, c-format
+ msgid "domain name (which is part of the FQDN) in the /etc/hosts file.\n"
+-msgstr ""
+-"Domainname (welcher Teil des FQDN ist) in der Datei /etc/hosts gendert "
+-"werden.\n"
++msgstr "Domainname (welcher Teil des FQDN ist) in der Datei /etc/hosts gendert werden.\n"
+
+ #: ../hostname.c:357
+ #, c-format
+ msgid "gethostname()=`%s'\n"
+-msgstr "gethostname()=,,%s''\n"
++msgstr "gethostname()=%s\n"
+
+ #: ../hostname.c:374
+ #, c-format
+ msgid "getdomainname()=`%s'\n"
+-msgstr "getdomainname()=,,%s''\n"
++msgstr "getdomainname()=%s\n"
+
+ #: ../hostname.c:389
+ #, c-format
+ msgid "getnodename()=`%s'\n"
+-msgstr "getnodename()=,,%s''\n"
++msgstr "getnodename()=%s\n"
+
+-#: ../ifconfig.c:159
+-#, c-format
+-msgid "%-9.9s Link encap:%s "
+-msgstr "%-9.9s Protokoll:%s "
++#: ../ifconfig.c:107
++#, fuzzy, c-format
++msgid ""
++"Iface MTU Met RX-OK RX-ERR RX-DRP RX-OVR TX-OK TX-ERR TX-DRP TX-OVR "
++"Flg\n"
++msgstr "SStelle MTU Met RX-OK RX-Feh RX-DRP RX-lf TX-OK TX-Feh TX-DRP TX-b Flg\n"
+
+-#: ../ifconfig.c:164
+-#, c-format
+-msgid "HWaddr %s "
+-msgstr "Hardware Adresse %s "
++#: ../ifconfig.c:129 ../ifconfig.c:161
++#, fuzzy, c-format
++msgid "%s: ERROR while getting interface flags: %s\n"
++msgstr "%s: Fehler beim Auslesen der Schnittstelleninformation: %s\n"
+
+-#: ../ifconfig.c:167
++#: ../ifconfig.c:153 ../ifconfig.c:185 ../ifconfig.c:771 ../ifconfig.c:862
++#: ../ifconfig.c:973
+ #, c-format
+-msgid "Media:%s"
+-msgstr "Medium:%s"
++msgid "No support for INET on this system.\n"
++msgstr "INET ist auf diesem System nicht verfgbar.\n"
+
+-#: ../ifconfig.c:169
+-msgid "(auto)"
+-msgstr "(auto)"
++#: ../ifconfig.c:193
++#, fuzzy, c-format
++msgid "%s: ERROR while testing interface flags: %s\n"
++msgstr "%s: Fehler beim Auslesen der Schnittstelleninformation: %s\n"
+
+-#: ../ifconfig.c:176
+-#, c-format
+-msgid " %s addr:%s "
+-msgstr " %s Adresse:%s "
++#: ../ifconfig.c:202
++#, fuzzy, c-format
++msgid ""
++"Usage:\n"
++" ifconfig [-a] [-v] [-s] <interface> [[<AF>] <address>]\n"
++msgstr ""
++"Syntax:\n"
++" ifconfig [-a] [-i] [-v] <Schnittstelle> [[<AF>] <Adresse>]\n"
+
+-#: ../ifconfig.c:179
++#: ../ifconfig.c:204
+ #, c-format
+-msgid " P-t-P:%s "
+-msgstr " P-z-P:%s "
++msgid " [add <address>[/<prefixlen>]]\n"
++msgstr " [add <Adresse>[/<Prfixlnge>]]\n"
+
+-#: ../ifconfig.c:182
++#: ../ifconfig.c:205
+ #, c-format
+-msgid " Bcast:%s "
+-msgstr " Bcast:%s "
++msgid " [del <address>[/<prefixlen>]]\n"
++msgstr " [del <Adresse>[/<Prfixlnge>]]\n"
+
+-#: ../ifconfig.c:184
++#: ../ifconfig.c:206
+ #, c-format
+-msgid " Mask:%s\n"
+-msgstr " Maske:%s\n"
++msgid " [[-]broadcast [<address>]] [[-]pointopoint [<address>]]\n"
++msgstr " [[-]broadcast [<Adresse>]] [[-]pointopoint [<Adresse>]]\n"
+
+-#: ../ifconfig.c:201
++#: ../ifconfig.c:207
+ #, c-format
+-msgid " inet6 addr: %s/%d"
+-msgstr " inet6 Adresse: %s/%d"
+-
+-#: ../ifconfig.c:203
+-msgid " Scope:"
+-msgstr " Gltigkeitsbereich:"
+-
+-#: ../ifconfig.c:206
+-msgid "Global"
+-msgstr "Global"
++msgid " [netmask <address>] [dstaddr <address>] [tunnel <address>]\n"
++msgstr " [netmask <Adresse>] [dstaddr <Adresse>] [tunnel <Adresse>]\n"
+
+-#: ../ifconfig.c:209
+-msgid "Link"
+-msgstr "Verbindung"
++#: ../ifconfig.c:210
++#, c-format
++msgid " [outfill <NN>] [keepalive <NN>]\n"
++msgstr " [outfill <NN>] [keepalive <NN>]\n"
+
+ #: ../ifconfig.c:212
+-msgid "Site"
+-msgstr "Standort"
+-
+-#: ../ifconfig.c:215
+-msgid "Compat"
+-msgstr "Kompatibilitt"
+-
+-#: ../ifconfig.c:218
+-msgid "Host"
+-msgstr "Maschine"
+-
+-#: ../ifconfig.c:221
+-msgid "Unknown"
+-msgstr "Unbekannt"
+-
+-#: ../ifconfig.c:236
+ #, c-format
+-msgid " IPX/Ethernet II addr:%s\n"
+-msgstr " IPX/Ethernet II Adresse:%s\n"
++msgid " [hw <HW> <address>] [metric <NN>] [mtu <NN>]\n"
++msgstr " [hw <HW> <Adresse>] [metric <NN>] [mtu <NN>]\n"
+
+-#: ../ifconfig.c:239
++#: ../ifconfig.c:213
+ #, c-format
+-msgid " IPX/Ethernet SNAP addr:%s\n"
+-msgstr " IPX/Ethernet SNAP Adresse:%s\n"
++msgid " [[-]trailers] [[-]arp] [[-]allmulti]\n"
++msgstr " [[-]trailers] [[-]arp] [[-]allmulti]\n"
+
+-#: ../ifconfig.c:242
++#: ../ifconfig.c:214
+ #, c-format
+-msgid " IPX/Ethernet 802.2 addr:%s\n"
+-msgstr " IPX/Ethernet 802.2 Adresse:%s\n"
++msgid " [multicast] [[-]promisc]\n"
++msgstr " [multicast] [[-]promisc]\n"
+
+-#: ../ifconfig.c:245
++#: ../ifconfig.c:215
+ #, c-format
+-msgid " IPX/Ethernet 802.3 addr:%s\n"
+-msgstr " IPX/Ethernet 802.3 Adresse:%s\n"
++msgid " [mem_start <NN>] [io_addr <NN>] [irq <NN>] [media <type>]\n"
++msgstr " [mem_start <NN>] [io_addr <NN>] [irq <NN>] [media <Typ>]\n"
+
+-#: ../ifconfig.c:255
++#: ../ifconfig.c:217
+ #, c-format
+-msgid " EtherTalk Phase 2 addr:%s\n"
+-msgstr " EtherTalk Phase 2 Adresse:%s\n"
++msgid " [txqueuelen <NN>]\n"
++msgstr " [txqueuelen <Lnge>]\n"
+
+-#: ../ifconfig.c:264
++#: ../ifconfig.c:220
+ #, c-format
+-msgid " econet addr:%s\n"
+-msgstr " econet Adresse:%s\n"
+-
+-#: ../ifconfig.c:270
+-msgid "[NO FLAGS] "
+-msgstr "[KEINE FLAGS] "
+-
+-#: ../ifconfig.c:272
+-msgid "UP "
+-msgstr "UP "
+-
+-#: ../ifconfig.c:274
+-msgid "BROADCAST "
+-msgstr "BROADCAST "
+-
+-#: ../ifconfig.c:276
+-msgid "DEBUG "
+-msgstr "DEBUG "
+-
+-#: ../ifconfig.c:278
+-msgid "LOOPBACK "
+-msgstr "LOOPBACK "
+-
+-#: ../ifconfig.c:280
+-msgid "POINTOPOINT "
+-msgstr "PUNKTZUPUNKT "
+-
+-#: ../ifconfig.c:282
+-msgid "NOTRAILERS "
+-msgstr "NOTRAILERS "
++msgid " [[-]dynamic]\n"
++msgstr " [[-]dynamic]\n"
+
+-#: ../ifconfig.c:284
+-msgid "RUNNING "
+-msgstr "RUNNING "
++#: ../ifconfig.c:222
++#, c-format
++msgid ""
++" [up|down] ...\n"
++"\n"
++msgstr ""
++" [up|down] ...\n"
++"\n"
+
+-#: ../ifconfig.c:286
+-msgid "NOARP "
+-msgstr "NOARP "
++#: ../ifconfig.c:224
++#, c-format
++msgid " <HW>=Hardware Type.\n"
++msgstr " <HW>=Hardwaretyp.\n"
+
+-#: ../ifconfig.c:288
+-msgid "PROMISC "
+-msgstr "PROMISC "
++#: ../ifconfig.c:225
++#, c-format
++msgid " List of possible hardware types:\n"
++msgstr " Liste mglicher Hardwaretypen:\n"
+
+-#: ../ifconfig.c:290
+-msgid "ALLMULTI "
+-msgstr "ALLMULTI "
++#. 1 = ARPable
++#: ../ifconfig.c:227
++#, c-format
++msgid " <AF>=Address family. Default: %s\n"
++msgstr " <AF>=Adressfamilie. Standardwert: %s\n"
+
+-#: ../ifconfig.c:292
+-msgid "SLAVE "
+-msgstr "SLAVE "
++#: ../ifconfig.c:228
++#, c-format
++msgid " List of possible address families:\n"
++msgstr " List der mglichen Adressfamilien:\n"
+
+-#: ../ifconfig.c:294
+-msgid "MASTER "
+-msgstr "MASTER "
++#: ../ifconfig.c:303
++#, c-format
++msgid "ifconfig: option `%s' not recognised.\n"
++msgstr ""
+
+-#: ../ifconfig.c:296
+-msgid "MULTICAST "
+-msgstr "MULTICAST "
++#: ../ifconfig.c:305 ../ifconfig.c:962
++#, c-format
++msgid "ifconfig: `--help' gives usage information.\n"
++msgstr ""
+
+-#: ../ifconfig.c:299
+-msgid "DYNAMIC "
+-msgstr "DYNAMIC "
++#: ../ifconfig.c:380
++#, c-format
++msgid "Unknown media type.\n"
++msgstr "Typ des Mediums unbekannt.\n"
+
+-#: ../ifconfig.c:302
++#: ../ifconfig.c:417
+ #, c-format
+-msgid " MTU:%d Metric:%d"
+-msgstr " MTU:%d Metric:%d"
++msgid ""
++"Warning: Interface %s still in promisc mode... maybe other application is "
++"running?\n"
++msgstr ""
+
+-#: ../ifconfig.c:306
++#: ../ifconfig.c:429
+ #, c-format
+-msgid " Outfill:%d Keepalive:%d"
+-msgstr " Outfill:%d Keepalive:%d"
++msgid "Warning: Interface %s still in MULTICAST mode.\n"
++msgstr ""
+
+-#: ../ifconfig.c:320
++#: ../ifconfig.c:441
+ #, c-format
+-msgid "RX packets:%lu errors:%lu dropped:%lu overruns:%lu frame:%lu\n"
++msgid "Warning: Interface %s still in ALLMULTI mode.\n"
+ msgstr ""
+-"Empfangene Pakete:%lu Fehler:%lu Weggeworfen:%lu berlauf:%lu Rahmen:%lu\n"
+
+-#: ../ifconfig.c:325
++#: ../ifconfig.c:465
+ #, c-format
+-msgid " compressed:%lu\n"
+-msgstr " komprimiert:%lu\n"
++msgid "Warning: Interface %s still in DYNAMIC mode.\n"
++msgstr ""
+
+-#: ../ifconfig.c:329
++#: ../ifconfig.c:523
+ #, c-format
+-msgid "TX packets:%lu errors:%lu dropped:%lu overruns:%lu carrier:%lu\n"
++msgid "Warning: Interface %s still in BROADCAST mode.\n"
+ msgstr ""
+-"Verschickte Pakete:%lu Fehler:%lu Weggeworfen:%lu berlauf:%lu Trger:%lu\n"
+
+-#: ../ifconfig.c:333
++#: ../ifconfig.c:652
+ #, c-format
+-msgid " collisions:%lu "
+-msgstr " Kollisionen:%lu "
++msgid "Warning: Interface %s still in POINTOPOINT mode.\n"
++msgstr ""
+
+-#: ../ifconfig.c:335
++#: ../ifconfig.c:684
+ #, c-format
+-msgid "compressed:%lu "
+-msgstr "Komprimiert:%lu "
++msgid "hw address type `%s' has no handler to set address. failed.\n"
++msgstr ""
+
+-#: ../ifconfig.c:337
++#: ../ifconfig.c:693
+ #, c-format
+-msgid "txqueuelen:%d "
+-msgstr "Sendewarteschlangenlnge:%d "
++msgid "%s: invalid %s address.\n"
++msgstr "%s: ungltige %s Adresse.\n"
+
+-#: ../ifconfig.c:345
++#: ../ifconfig.c:737 ../ifconfig.c:827 ../ifconfig.c:913
+ #, c-format
+-msgid "Interrupt:%d "
+-msgstr "Interrupt:%d "
+-
+-#. Only print devices using it for
+-#. I/O maps
+-#: ../ifconfig.c:348
+-#, c-format
+-msgid "Base address:0x%x "
+-msgstr "Basisadresse:0x%x "
+-
+-#: ../ifconfig.c:350
+-#, c-format
+-msgid "Memory:%lx-%lx "
+-msgstr "Speicher:%lx-%lx "
+-
+-#: ../ifconfig.c:353
+-#, c-format
+-msgid "DMA chan:%x "
+-msgstr "DMA Kanal:%x "
++msgid "No support for INET6 on this system.\n"
++msgstr "INET6 ist auf diesem System nicht verfgbar.\n"
+
+-#: ../ifconfig.c:384 ../ifconfig.c:405
++#: ../ifconfig.c:780 ../ifconfig.c:871
+ #, c-format
+-msgid "%s: unknown interface: %s\n"
+-msgstr "%s: unbekannte Schnittstelle: %s\n"
+-
+-#: ../ifconfig.c:421
+-msgid ""
+-"Usage:\n"
+-" ifconfig [-a] [-i] [-v] <interface> [[<AF>] <address>]\n"
+-msgstr ""
+-"Syntax:\n"
+-" ifconfig [-a] [-i] [-v] <Schnittstelle> [[<AF>] <Adresse>]\n"
+-
+-#: ../ifconfig.c:425
+-msgid " [add <address>[/<prefixlen>]]\n"
+-msgstr " [add <Adresse>[/<Prefixlnge>]]\n"
+-
+-#: ../ifconfig.c:427
+-msgid " [del <address>[/<prefixlen>]]\n"
+-msgstr " [del <Adresse>[/<Prefixlnge>]]\n"
+-
+-#: ../ifconfig.c:432
+-msgid " [[-]broadcast [<address>]] [[-]pointopoint [<address>]]\n"
+-msgstr " [[-]broadcast [<Adresse>]] [[-]pointopoint [<Adresse>]]\n"
+-
+-#: ../ifconfig.c:433
+-msgid " [netmask <address>] [dstaddr <address>] [tunnel <address>]\n"
+-msgstr " [netmask <Addresse>] [dstaddr <Adresse>] [tunnel <Adresse>]\n"
+-
+-#: ../ifconfig.c:436
+-msgid " [outfill <NN>] [keepalive <NN>]\n"
+-msgstr " [outfill <NN>] [keepalive <NN>]\n"
+-
+-#: ../ifconfig.c:438
+-msgid " [hw <HW> <address>] [metric <NN>] [mtu <NN>]\n"
+-msgstr " [hw <HW> <Adresse>] [metric <NN>] [mtu <NN>]\n"
+-
+-#: ../ifconfig.c:439
+-msgid " [[-]trailers] [[-]arp] [[-]allmulti]\n"
+-msgstr " [[-]trailers] [[-]arp] [[-]allmulti]\n"
+-
+-#: ../ifconfig.c:440
+-msgid " [multicast] [[-]promisc]\n"
+-msgstr " [multicast] [[-]promisc]\n"
+-
+-#: ../ifconfig.c:441
+-msgid " [mem_start <NN>] [io_addr <NN>] [irq <NN>] [media <type>]\n"
+-msgstr " [mem_start <NN>] [io_addr <NN>] [irq <NN>] [media <Typ>]\n"
+-
+-#: ../ifconfig.c:443
+-msgid " [txqueuelen <NN>]\n"
+-msgstr " [txqueuelen <Lnge>]\n"
+-
+-#: ../ifconfig.c:446
+-msgid " [[-]dynamic]\n"
+-msgstr " [[-]dynamic]\n"
+-
+-#: ../ifconfig.c:448
+-msgid ""
+-" [up|down] ...\n"
+-"\n"
++msgid "Interface %s not initialized\n"
+ msgstr ""
+-" [up|down] ...\n"
+-"\n"
+-
+-#: ../ifconfig.c:450
+-msgid " <HW>=Hardware Type.\n"
+-msgstr " <HW>=Hardwaretyp.\n"
+-
+-#: ../ifconfig.c:451
+-msgid " List of possible hardware types:\n"
+-msgstr " Liste mglicher Hardwaretypen:\n"
+-
+-#. 1 = ARPable
+-#: ../ifconfig.c:453
+-#, c-format
+-msgid " <AF>=Address family. Default: %s\n"
+-msgstr " <AF>=Adressfamilie. Standardwert: %s\n"
+-
+-#: ../ifconfig.c:454
+-msgid " List of possible address families:\n"
+-msgstr " List der mglichen Adressfamilien:\n"
+-
+-#: ../ifconfig.c:593
+-msgid "Unknown media type.\n"
+-msgstr "Typ des Mediums unbekannt.\n"
+
+-#: ../ifconfig.c:881
+-#, c-format
+-msgid "%s: invalid %s address.\n"
++#: ../ifconfig.c:792 ../ifconfig.c:882
++#, fuzzy, c-format
++msgid "Bad address.\n"
+ msgstr "%s: ungltige %s Adresse.\n"
+
+-#: ../ifconfig.c:920 ../ifconfig.c:963 ../ifconfig.c:1011
+-msgid "No support for INET6 on this system.\n"
+-msgstr "INET6 ist auf diesem System nicht verfgbar.\n"
+-
+-#: ../ifconfig.c:983
++#: ../ifconfig.c:885
++#, c-format
+ msgid "Address deletion not supported on this system.\n"
+-msgstr "Das Lschen von Adressen ist auf diesem System nicht untersttzt.\n"
++msgstr "Das Lschen von Adressen wird auf diesem System nicht untersttzt.\n"
+
+-#: ../ifconfig.c:1066
+-msgid "No support for INET on this system.\n"
+-msgstr "INET ist auf diesem System nicht verfgbar.\n"
++#: ../ifconfig.c:957
++#, fuzzy, c-format
++msgid "ifconfig: Cannot set address for this protocol family.\n"
++msgstr "Kann die Adressen der Familie %d nicht setzen.\n"
+
+-#: ../ifconfig.c:1076
++#: ../ifconfig.c:983
++#, c-format
+ msgid "No support for ECONET on this system.\n"
+ msgstr "ECONET wird auf diesem System nicht untersttzt.\n"
+
+-#: ../ifconfig.c:1084
++#: ../ifconfig.c:991
+ #, c-format
+ msgid "Don't know how to set addresses for family %d.\n"
+ msgstr "Kann die Adressen der Familie %d nicht setzen.\n"
+
+-#: ../netstat.c:383
++#: ../ifconfig.c:1021
++#, c-format
++msgid "WARNING: at least one error occured. (%d)\n"
++msgstr ""
++
++#: ../netstat.c:434
+ #, c-format
+ msgid ""
+ "(No info could be read for \"-p\": geteuid()=%d but you should be root.)\n"
+-msgstr ""
+-"(Fr \"-p\": geteuid()=%d konnte keine Information gelesen werden; sie "
+-"sollten Root sein.)\n"
++msgstr "(Fr \"-p\": geteuid()=%d konnte keine Information gelesen werden; sie sollten Root sein.)\n"
+
+-#: ../netstat.c:387
++#: ../netstat.c:438
++#, c-format
+ msgid ""
+ "(Not all processes could be identified, non-owned process info\n"
+ " will not be shown, you would have to be root to see it all.)\n"
+@@ -776,198 +688,220 @@
+ "(Es konnten nicht alle Prozesse identifiziert werden; Informationen ber\n"
+ "nicht-eigene Processe werden nicht angezeigt; Root kann sie anzeigen.)\n"
+
+-#: ../netstat.c:394 ../netstat.c:1089 ../netstat.c:1166
++#: ../netstat.c:445 ../netstat.c:1189 ../netstat.c:1266
+ msgid "LISTENING"
+ msgstr "HRT"
+
+-#: ../netstat.c:395
++#: ../netstat.c:446
+ msgid "CONN SENT"
+ msgstr "VERBINGSAUFBAU GESCHICKT"
+
+-#: ../netstat.c:396 ../netstat.c:1168
++#: ../netstat.c:447 ../netstat.c:1268
+ msgid "DISC SENT"
+ msgstr "VERBINDUNGSABBAU GESCHICKT"
+
+-#: ../netstat.c:397 ../netstat.c:464 ../netstat.c:809 ../netstat.c:1169
++#: ../netstat.c:448 ../netstat.c:515 ../netstat.c:904 ../netstat.c:1269
+ msgid "ESTABLISHED"
+ msgstr "VERBUNDEN"
+
+-#: ../netstat.c:419
++#: ../netstat.c:470
++#, c-format
+ msgid "Active NET/ROM sockets\n"
+ msgstr "Aktive NET/ROM Sockets\n"
+
+-#: ../netstat.c:420
++#: ../netstat.c:471
++#, c-format
+ msgid ""
+-"User Dest Source Device State Vr/Vs Send-Q "
+-"Recv-Q\n"
+-msgstr ""
+-"Benutzer Ziel Quelle Gert Zustand Vr/Vs Send-Q "
+-"Recv-Q\n"
++"User Dest Source Device State Vr/Vs Send-Q Recv-"
++"Q\n"
++msgstr "Benutzer Ziel Quelle Gert Zustand Vr/Vs Send-Q Recv-Q\n"
+
+-#: ../netstat.c:430 ../netstat.c:1208
++#: ../netstat.c:481 ../netstat.c:1308
+ #, c-format
+ msgid "Problem reading data from %s\n"
+ msgstr "Probleme beim Lesen von %s\n"
+
+-#: ../netstat.c:465
++#: ../netstat.c:516
+ msgid "SYN_SENT"
+ msgstr "SYN_SENT"
+
+-#: ../netstat.c:466
++#: ../netstat.c:517
+ msgid "SYN_RECV"
+ msgstr "SYN_RECV"
+
+-#: ../netstat.c:467
++#: ../netstat.c:518
+ msgid "FIN_WAIT1"
+ msgstr "FIN_WAIT1"
+
+-#: ../netstat.c:468
++#: ../netstat.c:519
+ msgid "FIN_WAIT2"
+ msgstr "FIN_WAIT2"
+
+-#: ../netstat.c:469
++#: ../netstat.c:520
+ msgid "TIME_WAIT"
+ msgstr "TIME_WAIT"
+
+-#: ../netstat.c:470
++#: ../netstat.c:521
+ msgid "CLOSE"
+ msgstr "CLOSE"
+
+-#: ../netstat.c:471
++#: ../netstat.c:522
+ msgid "CLOSE_WAIT"
+ msgstr "CLOSE_WAIT"
+
+-#: ../netstat.c:472
++#: ../netstat.c:523
+ msgid "LAST_ACK"
+ msgstr "LAST_ACK"
+
+-#: ../netstat.c:473
++#: ../netstat.c:524
+ msgid "LISTEN"
+ msgstr "LISTEN"
+
+-#: ../netstat.c:474
++#: ../netstat.c:525
+ msgid "CLOSING"
+ msgstr "CLOSING"
+
+-#: ../netstat.c:544
++#: ../netstat.c:596
+ #, c-format
+ msgid "warning, got bogus igmp6 line %d.\n"
+ msgstr "Warnung, fehlerhafte igmp6 line %d.\n"
+
+-#: ../netstat.c:549 ../netstat.c:587 ../netstat.c:670 ../netstat.c:803
+-#: ../netstat.c:935 ../netstat.c:940
++#: ../netstat.c:601 ../netstat.c:639 ../netstat.c:763 ../netstat.c:898
++#: ../netstat.c:1032 ../netstat.c:1037
+ #, c-format
+ msgid "netstat: unsupported address family %d !\n"
+ msgstr "netstat: Nicht untersttzte Adressfamilie %d!\n"
+
+-#: ../netstat.c:562 ../netstat.c:567 ../netstat.c:575 ../netstat.c:582
++#: ../netstat.c:614 ../netstat.c:619 ../netstat.c:627 ../netstat.c:634
+ #, c-format
+ msgid "warning, got bogus igmp line %d.\n"
+ msgstr "Warnung, fehlerhafte igmp-Zeile %d.\n"
+
+-#: ../netstat.c:666
++#: ../netstat.c:677
++#, fuzzy, c-format
++msgid "Active X.25 sockets\n"
++msgstr "Aktive AX.25 Sockets\n"
++
++#. IMHO, Vr/Vs is not very usefull --SF
++#: ../netstat.c:679
++#, fuzzy, c-format
++msgid ""
++"Dest Source Device LCI State Vr/Vs Send-Q Recv-"
++"Q\n"
++msgstr "Ziel Quelle Gert Zustand Vr/Vs Send-Q Empf-Q\n"
++
++#: ../netstat.c:759
++#, c-format
+ msgid "warning, got bogus tcp line.\n"
+ msgstr "Warnung, fehlerhafte TCP Zeile.\n"
+
+-#: ../netstat.c:704 ../netstat.c:855 ../netstat.c:975
++#: ../netstat.c:800 ../netstat.c:953 ../netstat.c:1075
+ #, c-format
+ msgid "off (0.00/%ld/%d)"
+ msgstr "aus (0.00/%ld/%d)"
+
+-#: ../netstat.c:708
++#: ../netstat.c:804
+ #, c-format
+ msgid "on (%2.2f/%ld/%d)"
+ msgstr "ein (%2.2f/%ld/%d)"
+
+-#: ../netstat.c:713
++#: ../netstat.c:809
+ #, fuzzy, c-format
+ msgid "keepalive (%2.2f/%ld/%d)"
+ msgstr "ein%d (%2.2f/%ld/%d)"
+
+-#: ../netstat.c:718
++#: ../netstat.c:814
+ #, fuzzy, c-format
+ msgid "timewait (%2.2f/%ld/%d)"
+ msgstr "ein%d (%2.2f/%ld/%d)"
+
+-#: ../netstat.c:723 ../netstat.c:864 ../netstat.c:985
++#: ../netstat.c:819 ../netstat.c:962 ../netstat.c:1085
+ #, c-format
+ msgid "unkn-%d (%2.2f/%ld/%d)"
+ msgstr "unkn-%d (%2.2f/%ld/%d)"
+
+-#: ../netstat.c:799
++#: ../netstat.c:894
++#, c-format
+ msgid "warning, got bogus udp line.\n"
+ msgstr "Warnung, fehlerhafe UDP-Zeile.\n"
+
+-#: ../netstat.c:817 ../netstat.c:1075 ../netstat.c:1108
++#: ../netstat.c:912 ../netstat.c:1175 ../netstat.c:1208
+ msgid "UNKNOWN"
+ msgstr "UNBEKANNT"
+
+-#: ../netstat.c:860 ../netstat.c:980
++#: ../netstat.c:958 ../netstat.c:1080
+ #, c-format
+ msgid "on%d (%2.2f/%ld/%d)"
+ msgstr "ein%d (%2.2f/%ld/%d)"
+
+-#: ../netstat.c:949
++#: ../netstat.c:1046
++#, c-format
+ msgid "warning, got bogus raw line.\n"
+ msgstr "Warnung, fehlerhafte raw-Zeile.\n"
+
+-#: ../netstat.c:1028
++#: ../netstat.c:1128
++#, c-format
+ msgid "warning, got bogus unix line.\n"
+ msgstr "Warnung, fehlerhafte UNIX-Zeile.\n"
+
+-#: ../netstat.c:1055
++#: ../netstat.c:1155
+ msgid "STREAM"
+ msgstr "STREAM"
+
+-#: ../netstat.c:1059
++#: ../netstat.c:1159
+ msgid "DGRAM"
+ msgstr "DGRAM"
+
+-#: ../netstat.c:1063
++#: ../netstat.c:1163
+ msgid "RAW"
+ msgstr "RAW"
+
+-#: ../netstat.c:1067
++#: ../netstat.c:1167
+ msgid "RDM"
+ msgstr "RDM"
+
+-#: ../netstat.c:1071
++#: ../netstat.c:1171
+ msgid "SEQPACKET"
+-msgstr "SEQPACKET"
++msgstr "SEQPAKET"
+
+-#: ../netstat.c:1080
++#: ../netstat.c:1180
+ msgid "FREE"
+ msgstr "FREI"
+
+-#: ../netstat.c:1096
++#: ../netstat.c:1196
+ msgid "CONNECTING"
+ msgstr "VERBINDUNGSAUFBAU"
+
+-#: ../netstat.c:1100
++#: ../netstat.c:1200
+ msgid "CONNECTED"
+ msgstr "VERBUNDEN"
+
+-#: ../netstat.c:1104
++#: ../netstat.c:1204
+ msgid "DISCONNECTING"
+ msgstr "VERBINDUNGSABBAU"
+
+-#: ../netstat.c:1135
++#: ../netstat.c:1235
++#, c-format
+ msgid "Active UNIX domain sockets "
+-msgstr "Aktive Sockets in der UNIX Domne "
++msgstr "Aktive Sockets in der UNIX-Domne "
+
+-#: ../netstat.c:1137 ../netstat.c:1666
++#: ../netstat.c:1237 ../netstat.c:1756
++#, c-format
+ msgid "(servers and established)"
+ msgstr "(Server und stehende Verbindungen)"
+
+-#: ../netstat.c:1140 ../netstat.c:1669
++#: ../netstat.c:1240 ../netstat.c:1759
++#, c-format
+ msgid "(only servers)"
+ msgstr "(Nur Server)"
+
+-#: ../netstat.c:1142 ../netstat.c:1671
++#: ../netstat.c:1242 ../netstat.c:1761
++#, c-format
+ msgid "(w/o servers)"
+ msgstr "(ohne Server)"
+
+-#: ../netstat.c:1145
++#: ../netstat.c:1245
++#, c-format
+ msgid ""
+ "\n"
+ "Proto RefCnt Flags Type State I-Node"
+@@ -975,90 +909,90 @@
+ "\n"
+ "Proto RefZh Flaggen Typ Zustand I-Node"
+
+-#: ../netstat.c:1147
++#: ../netstat.c:1247
++#, c-format
+ msgid " Path\n"
+ msgstr " Pfad\n"
+
+-#: ../netstat.c:1167
++#: ../netstat.c:1267
+ msgid "SABM SENT"
+ msgstr "SABM GESCHICKT"
+
+-#: ../netstat.c:1170
++#: ../netstat.c:1270
+ msgid "RECOVERY"
+ msgstr "WIEDERHERSTELLUNG"
+
+-#: ../netstat.c:1184
++#: ../netstat.c:1284
++#, c-format
+ msgid "Active AX.25 sockets\n"
+ msgstr "Aktive AX.25 Sockets\n"
+
+-#: ../netstat.c:1185
++#: ../netstat.c:1285
++#, c-format
+ msgid "Dest Source Device State Vr/Vs Send-Q Recv-Q\n"
+ msgstr "Ziel Quelle Gert Zustand Vr/Vs Send-Q Empf-Q\n"
+
+-#: ../netstat.c:1228
++#: ../netstat.c:1328
+ #, c-format
+ msgid "problem reading data from %s\n"
+ msgstr "Problem beim Lesen von Daten von %s\n"
+
+-#: ../netstat.c:1279
++#: ../netstat.c:1379
++#, c-format
+ msgid ""
+ "Active IPX sockets\n"
+ "Proto Recv-Q Send-Q Local Address Foreign Address "
+ "State"
+ msgstr ""
+ "Aktive IPX Sockets\n"
+-"Proto Recv-Q Send-Q Lokale Adresse Gegenaddress "
++"Proto Recv-Q Send-Q Lokale Adresse Gegenadresse "
+ "Zustand"
+
+-#: ../netstat.c:1281
++#: ../netstat.c:1381
++#, c-format
+ msgid " User"
+ msgstr " Benutzer"
+
+-#: ../netstat.c:1315
++#: ../netstat.c:1415
+ msgid "ESTAB"
+ msgstr "VERBUNDEN"
+
+-#: ../netstat.c:1323
++#: ../netstat.c:1423
+ msgid "UNK."
+ msgstr "UNB."
+
+-#: ../netstat.c:1367
+-msgid " - no statistics available -"
+-msgstr " - keine Statistiken verfgbar -"
+-
+-#: ../netstat.c:1370
+-msgid "[NO FLAGS]"
+-msgstr "[KEINE FLAGS]"
+-
+-#: ../netstat.c:1400
++#: ../netstat.c:1461
++#, c-format
+ msgid "Kernel Interface table\n"
+-msgstr "Kernel Schnittstellentabelle\n"
++msgstr "Kernel-Schnittstellentabelle\n"
+
+-#: ../netstat.c:1401
++#: ../netstat.c:1465
++#, fuzzy, c-format
+ msgid ""
+-"Iface MTU Met RX-OK RX-ERR RX-DRP RX-OVR TX-OK TX-ERR TX-DRP TX-OVR "
+-"Flg\n"
+-msgstr ""
+-"SStelle MTU Met RX-OK RX-Feh RX-DRP RX-lf TX-OK TX-Feh TX-DRP TX-b "
++"Iface MTU Met RX-OK RX-ERR RX-DRP RX-OVR TX-OK TX-ERR TX-DRP TX-OVR "
+ "Flg\n"
++msgstr "SStelle MTU Met RX-OK RX-Feh RX-DRP RX-lf TX-OK TX-Feh TX-DRP TX-b Flg\n"
+
+-#: ../netstat.c:1404
++#: ../netstat.c:1469
+ msgid "missing interface information"
+-msgstr "Fehlende Interfaceinformation"
++msgstr "Fehlende Interfaceinformationen"
+
+-#: ../netstat.c:1425
++#: ../netstat.c:1492
++#, c-format
+ msgid ""
+-"usage: netstat [-veenNcCF] [<Af>] -r netstat "
+-"{-V|--version|-h|--help}\n"
++"usage: netstat [-veenNcCF] [<Af>] -r netstat {-V|--version|-h|--"
++"help}\n"
+ msgstr ""
+ "Benutzung: netstat [-veenNcCF] [<Af>] -r\n"
+ " netstat {-V|--version|-h|--help}\n"
+
+-#: ../netstat.c:1426
++#: ../netstat.c:1493
++#, c-format
+ msgid " netstat [-vnNcaeol] [<Socket> ...]\n"
+ msgstr " netstat [-vnNcaeol] [<Socket> ...]\n"
+
+-#: ../netstat.c:1427
++#: ../netstat.c:1494
++#, c-format
+ msgid ""
+ " netstat { [-veenNac] -i | [-cnNe] -M | -s }\n"
+ "\n"
+@@ -1066,27 +1000,32 @@
+ " netstat { [-veenNac] -i | [-cnNe] -M | -s }\n"
+ "\n"
+
+-#: ../netstat.c:1429
++#: ../netstat.c:1496
++#, c-format
+ msgid " -r, --route display routing table\n"
+ msgstr " -r, --route Routentabelle anzeigen\n"
+
+-#: ../netstat.c:1430
++#: ../netstat.c:1497
++#, c-format
+ msgid " -i, --interfaces display interface table\n"
+ msgstr " -i, --interfaces Schnittstellentabelle auflisten\n"
+
+-#: ../netstat.c:1431
++#: ../netstat.c:1498
++#, c-format
+ msgid " -g, --groups display multicast group memberships\n"
+ msgstr ""
+ " -g, --groups Mitgliedschaft in Multicastgruppen "
+ "anzeigen\n"
+
+-#: ../netstat.c:1432
++#: ../netstat.c:1499
++#, c-format
+ msgid ""
+ " -s, --statistics display networking statistics (like SNMP)\n"
+ msgstr ""
+ " -s, --statistics Netzwerksstatistiken anzeigen (wie SNMP)\n"
+
+-#: ../netstat.c:1434
++#: ../netstat.c:1501
++#, c-format
+ msgid ""
+ " -M, --masquerade display masqueraded connections\n"
+ "\n"
+@@ -1094,23 +1033,38 @@
+ " -M, --masquerade Maskierte Verbindungen auflisten\n"
+ "\n"
+
+-#: ../netstat.c:1438 ../route.c:87
++#: ../netstat.c:1505
++#, fuzzy, c-format
++msgid " --numeric-hosts don't resolve host names\n"
++msgstr " -n, --numeric Adressen nicht nach Namen auflsen\n"
++
++#: ../netstat.c:1506
++#, fuzzy, c-format
++msgid " --numeric-ports don't resolve port names\n"
++msgstr " -n, --numeric Adressen nicht nach Namen auflsen\n"
++
++#: ../netstat.c:1507
++#, fuzzy, c-format
++msgid " --numeric-users don't resolve user names\n"
++msgstr " -n, --numeric Adressen nicht nach Namen auflsen\n"
++
++#: ../netstat.c:1508
++#, c-format
+ msgid " -N, --symbolic resolve hardware names\n"
+ msgstr " -N, --symbolic Hardwarenamen auflsen\n"
+
+-#: ../netstat.c:1439 ../route.c:88
+-#, fuzzy
++#: ../netstat.c:1509 ../route.c:88
++#, fuzzy, c-format
+ msgid " -e, --extend display other/more information\n"
+-msgstr ""
+-" -e, --extend Weitere / zustzliche Informationen "
+-"anzeigen\n"
++msgstr " -e, --extend Weitere / zustzliche Informationen anzeigen\n"
+
+-#: ../netstat.c:1440
++#: ../netstat.c:1510
++#, c-format
+ msgid " -p, --programs display PID/Program name for sockets\n"
+-msgstr ""
+-" -p, --programs PID/Programmnamen fr Sockets anzeigen\n"
++msgstr " -p, --programs PID/Programmnamen fr Sockets anzeigen\n"
+
+-#: ../netstat.c:1441
++#: ../netstat.c:1511
++#, c-format
+ msgid ""
+ " -c, --continuous continuous listing\n"
+ "\n"
+@@ -1118,24 +1072,27 @@
+ " -c, --continuous Anzeige laufend aktualisieren\n"
+ "\n"
+
+-#: ../netstat.c:1442
++#: ../netstat.c:1512
++#, c-format
+ msgid " -l, --listening display listening server sockets\n"
+ msgstr ""
+ " -l, --listening Empfangsbereite Serversockets auflisten\n"
+
+-#: ../netstat.c:1443
++#: ../netstat.c:1513
++#, c-format
+ msgid ""
+ " -a, --all, --listening display all sockets (default: connected)\n"
+ msgstr ""
+ " -a, --all, --listening Alle Sockets anzeigen (normal: nur "
+ "verbundene)\n"
+
+-#: ../netstat.c:1444
++#: ../netstat.c:1514
++#, c-format
+ msgid " -o, --timers display timers\n"
+ msgstr " -o, --timers Timer auflisten\n"
+
+-#: ../netstat.c:1445 ../route.c:89
+-#, fuzzy
++#: ../netstat.c:1515 ../route.c:89
++#, fuzzy, c-format
+ msgid ""
+ " -F, --fib display Forwarding Information Base "
+ "(default)\n"
+@@ -1143,7 +1100,8 @@
+ " -F, --fib Forwarding Infomation Base anzeigen "
+ "(Standard)\n"
+
+-#: ../netstat.c:1446 ../route.c:90
++#: ../netstat.c:1516 ../route.c:90
++#, c-format
+ msgid ""
+ " -C, --cache display routing cache instead of FIB\n"
+ "\n"
+@@ -1151,110 +1109,118 @@
+ " -C, --cache Routencache statt FIB anzeigen\n"
+ "\n"
+
+-#: ../netstat.c:1448
++#: ../netstat.c:1518
++#, c-format
+ msgid ""
+-" <Socket>={-t|--tcp} {-u|--udp} {-w|--raw} {-x|--unix} --ax25 --ipx "
+-"--netrom\n"
++" <Socket>={-t|--tcp} {-u|--udp} {-w|--raw} {-x|--unix} --ax25 --ipx --"
++"netrom\n"
+ msgstr ""
+-" <Socket>={-t|--tcp} {-u|--udp} {-w|--raw} {-x|--unix} --ax25 --ipx "
+-"--netrom\n"
++" <Socket>={-t|--tcp} {-u|--udp} {-w|--raw} {-x|--unix} --ax25 --ipx --"
++"netrom\n"
+
+-#: ../netstat.c:1449 ../route.c:92
+-#, c-format
+-msgid " <AF>=Use '-A <af>' or '--<af>' Default: %s\n"
++#: ../netstat.c:1519
++#, fuzzy, c-format
++msgid " <AF>=Use '-6|-4' or '-A <af>' or '--<af>'; default: %s\n"
+ msgstr " <AF>=,,-A <af>'' or ,,--<af>'' benutzen. Standard: %s\n"
+
+-#: ../netstat.c:1450 ../route.c:93
++#: ../netstat.c:1520 ../route.c:93
++#, c-format
+ msgid " List of possible address families (which support routing):\n"
+ msgstr " Liste mglicher Adressfamilien, die Routen untersttzen:\n"
+
+-#: ../netstat.c:1663
++#: ../netstat.c:1753
++#, c-format
+ msgid "Active Internet connections "
+ msgstr "Aktive Internetverbindungen "
+
+-#: ../netstat.c:1673
++#: ../netstat.c:1763
++#, c-format
+ msgid ""
+ "\n"
+-"Proto Recv-Q Send-Q Local Address Foreign Address State "
+-" "
++"Proto Recv-Q Send-Q Local Address Foreign Address "
++"State "
+ msgstr ""
+ "\n"
+-"Proto Recv-Q Send-Q Local Address Foreign Address State "
+-" "
++"Proto Recv-Q Send-Q Local Address Foreign Address "
++"State "
+
+-#: ../netstat.c:1675
++#: ../netstat.c:1765
++#, c-format
+ msgid " User Inode "
+ msgstr " Benutzer Inode "
+
+-#: ../netstat.c:1678
++#: ../netstat.c:1768
++#, c-format
+ msgid " Timer"
+ msgstr " Timer"
+
+-#: ../netstat.c:1708
++#: ../netstat.c:1798
++#, c-format
+ msgid "IPv4 Group Memberships\n"
+-msgstr "IPv4 Gruppenmitgliedschaften\n"
++msgstr "IPv4-Gruppenmitgliedschaften\n"
+
+-#: ../netstat.c:1709
++#: ../netstat.c:1799
++#, c-format
+ msgid "Interface RefCnt Group\n"
+ msgstr "Schnittstelle RefZh Grupp\n"
+
+-#: ../rarp.c:43
++#: ../rarp.c:44
+ msgid "This kernel does not support RARP.\n"
+ msgstr "Dieser Kernel untersttzt kein RARP.\n"
+
+-#: ../rarp.c:82
++#: ../rarp.c:83
+ #, c-format
+ msgid "no RARP entry for %s.\n"
+-msgstr "Kein RARP Eintrag fr %s.\n"
++msgstr "Kein RARP-Eintrag fr %s.\n"
+
+-#: ../rarp.c:95
++#: ../rarp.c:96
+ #, c-format
+ msgid "%s: bad hardware address\n"
+ msgstr "%s: fehlerhafte Hardwareadresse\n"
+
+-#: ../rarp.c:127
++#: ../rarp.c:128
+ #, c-format
+ msgid "rarp: cannot open file %s:%s.\n"
+ msgstr "rarp: kann Datei %s:%s nicht ffnen.\n"
+
+-#: ../rarp.c:139
++#: ../rarp.c:140
+ #, c-format
+ msgid "rarp: format error at %s:%u\n"
+ msgstr "rarp: Formatfehler bei %s:%u\n"
+
+-#: ../rarp.c:143 ../rarp.c:287
++#: ../rarp.c:144 ../rarp.c:289
+ #, c-format
+ msgid "rarp: %s: unknown host\n"
+ msgstr "rarp: %s: Unbekannter Host\n"
+
+-#: ../rarp.c:146
++#: ../rarp.c:147
+ #, c-format
+ msgid "rarp: cannot set entry from %s:%u\n"
+ msgstr "rarp: Kann Eintrag aus %s:%u nicht setzen.\n"
+
+-#: ../rarp.c:175
++#: ../rarp.c:176
++#, c-format
+ msgid "Usage: rarp -a list entries in cache.\n"
+-msgstr ""
+-"Benutzung: rarp -a Eintrge im Cache listen.\n"
++msgstr "Benutzung: rarp -a Eintrge im Cache listen.\n"
+
+-#: ../rarp.c:176
++#: ../rarp.c:177
++#, c-format
+ msgid " rarp -d <hostname> delete entry from cache.\n"
+-msgstr ""
+-" rarp -d <hostname> Eintrag aus dem Cache lschen.\n"
++msgstr " rarp -d <hostname> Eintrag aus dem Cache lschen.\n"
+
+-#: ../rarp.c:177
++#: ../rarp.c:178
++#, c-format
+ msgid " rarp [<HW>] -s <hostname> <hwaddr> add entry to cache.\n"
+-msgstr ""
+-" rarp [<HW>] -s <hostname> <hwaddr> Eintrag zum Cache zufgen.\n"
++msgstr " rarp [<HW>] -s <hostname> <hwaddr> Eintrag zum Cache zufgen.\n"
+
+-#: ../rarp.c:178
++#: ../rarp.c:179
++#, c-format
+ msgid ""
+ " rarp -f add entries from /etc/ethers.\n"
+-msgstr ""
+-" rarp -f Eintrge aus /etc/ethers "
+-"zufgen.\n"
++msgstr " rarp -f Eintrge aus /etc/ethers zufgen.\n"
+
+-#: ../rarp.c:179
++#: ../rarp.c:180
++#, c-format
+ msgid ""
+ " rarp -V display program version.\n"
+ "\n"
+@@ -1262,24 +1228,26 @@
+ " rarp -V Programmversion anzeigen.\n"
+ "\n"
+
+-#: ../rarp.c:236
++#: ../rarp.c:238
+ #, c-format
+ msgid "%s: illegal option mix.\n"
+ msgstr "%s: Unerlaubte Mischung von Optionen.\n"
+
+-#: ../rarp.c:267
++#: ../rarp.c:269
+ #, c-format
+ msgid "rarp: %s: unknown hardware type.\n"
+-msgstr "rarp: %s: unknown hardware type.\n"
++msgstr "rarp: %s: unbekannter Hardwaretyp.\n"
+
+-#: ../route.c:79
++#: ../route.c:80
++#, c-format
+ msgid ""
+ "Usage: route [-nNvee] [-FC] [<AF>] List kernel routing tables\n"
+ msgstr ""
+ "Benutzung: route [-nNvee] [-FC] [<AF>] Kernelroutentabelle "
+ "anzeigen\n"
+
+-#: ../route.c:80
++#: ../route.c:81
++#, c-format
+ msgid ""
+ " route [-v] [-FC] {add|del|flush} ... Modify routing table for AF.\n"
+ "\n"
+@@ -1287,14 +1255,15 @@
+ " route [-v] [-FC] {add|del|flush} ... Routentabelle fr AF ndern.\n"
+ "\n"
+
+-#: ../route.c:82
++#: ../route.c:83
++#, c-format
+ msgid ""
+ " route {-h|--help} [<AF>] Detailed usage syntax for "
+ "specified AF.\n"
+-msgstr ""
+-" route {-h|--help} [<AF>] Genaue Syntax fr AF anzeigen.\n"
++msgstr " route {-h|--help} [<AF>] Genaue Syntax fr AF anzeigen.\n"
+
+-#: ../route.c:83
++#: ../route.c:84
++#, c-format
+ msgid ""
+ " route {-V|--version} Display version/author and "
+ "exit.\n"
+@@ -1304,590 +1273,891 @@
+ "Ende.\n"
+ "\n"
+
++#: ../route.c:92
++#, fuzzy, c-format
++msgid " <AF>=Use '-A <af>' or '--<af>'; default: %s\n"
++msgstr " <AF>=,,-A <af>'' or ,,--<af>'' benutzen. Standard: %s\n"
++
+ #: ../plipconfig.c:66
++#, c-format
+ msgid "Usage: plipconfig [-a] [-i] [-v] interface\n"
+ msgstr "Benutzung: plipconfig [-a] [-i] [-v] Interface\n"
+
+ #: ../plipconfig.c:67
++#, c-format
+ msgid " [nibble NN] [trigger NN]\n"
+ msgstr " [nibble NN] [trigger NN]\n"
+
+ #: ../plipconfig.c:68
+-#, fuzzy
++#, c-format
+ msgid " plipconfig -V | --version\n"
+-msgstr " plipconfig -V\n"
++msgstr " plipconfig -V | --version\n"
+
+ #: ../plipconfig.c:74
+ #, c-format
+ msgid "%s\tnibble %lu trigger %lu\n"
+ msgstr "%s\tnibble %lu trigger %lu\n"
+
+-#: ../iptunnel.c:79
++#: ../iptunnel.c:85
++#, c-format
+ msgid "Usage: iptunnel { add | change | del | show } [ NAME ]\n"
+ msgstr "Benutzung: iptunnel { add | change | del | show } [ NAME ]\n"
+
+-#: ../iptunnel.c:80
++#: ../iptunnel.c:86
++#, c-format
+ msgid ""
+ " [ mode { ipip | gre | sit } ] [ remote ADDR ] [ local ADDR ]\n"
+ msgstr " [ mode { ipip | gre | sit } ] [ remote ADR ] [ local ADR ]\n"
+
+-#: ../iptunnel.c:81
++#: ../iptunnel.c:87
++#, c-format
+ msgid " [ [i|o]seq ] [ [i|o]key KEY ] [ [i|o]csum ]\n"
+ msgstr " [ [i|o]seq ] [ [i|o]key SCHLSSEL ] [ [i|o]csum ]\n"
+
+-#: ../iptunnel.c:82
+-#, fuzzy
++#: ../iptunnel.c:88
++#, c-format
+ msgid " [ ttl TTL ] [ tos TOS ] [ nopmtudisc ] [ dev PHYS_DEV ]\n"
+-msgstr ""
+-" [ ttl TTL ] [ tos TOS ] [ nopmtudisc ] [ dev PHYS_GERt ]\n"
+-"\n"
++msgstr " [ ttl TTL ] [ tos TOS ] [ nopmtudisc ] [ dev PHYS_GERt ]\n"
+
+-#: ../iptunnel.c:83
++#: ../iptunnel.c:89
++#, c-format
+ msgid ""
+ " iptunnel -V | --version\n"
+ "\n"
+ msgstr ""
++" iptunnel -V | --version\n"
++"\n"
+
+-#: ../iptunnel.c:84
++#: ../iptunnel.c:90
++#, c-format
+ msgid "Where: NAME := STRING\n"
+ msgstr "Wobei: NAME := ZEICHENKETTE\n"
+
+-#: ../iptunnel.c:85
++#: ../iptunnel.c:91
++#, c-format
+ msgid " ADDR := { IP_ADDRESS | any }\n"
+ msgstr " ADR := { IP_ADRESSE | any }\n"
+
+-#: ../iptunnel.c:86
++#: ../iptunnel.c:92
++#, c-format
+ msgid " TOS := { NUMBER | inherit }\n"
+ msgstr " TOS := { NUMBER | inherit }\n"
+
+-#: ../iptunnel.c:87
++#: ../iptunnel.c:93
++#, c-format
+ msgid " TTL := { 1..255 | inherit }\n"
+ msgstr " TTL := { 1..255 | inherit }\n"
+
+-#: ../iptunnel.c:88
++#: ../iptunnel.c:94
++#, c-format
+ msgid " KEY := { DOTTED_QUAD | NUMBER }\n"
+ msgstr " KEY := { DOTTED_QUAD | ZAHL }\n"
+
+-#: ../iptunnel.c:326
++#: ../iptunnel.c:332
++#, c-format
+ msgid "Keys are not allowed with ipip and sit.\n"
+ msgstr "Schlssel sind mit ipip und sit nicht erlaubt.\n"
+
+-#: ../iptunnel.c:346
++#: ../iptunnel.c:352
++#, c-format
+ msgid "Broadcast tunnel requires a source address.\n"
+ msgstr "Ein Broadcasttunnel ist nur mit einer Quelladresse mglich\n"
+
+-#: ../iptunnel.c:361
++#: ../iptunnel.c:367
++#, c-format
+ msgid "ttl != 0 and noptmudisc are incompatible\n"
+ msgstr "ttl != 0 und noptmudisc sind inkompatibel\n"
+
+-#: ../iptunnel.c:373
++#: ../iptunnel.c:379
++#, c-format
+ msgid "cannot determine tunnel mode (ipip, gre or sit)\n"
+ msgstr ""
+ "Die Tunnelbetriebsart (ipip, fre oder sit) kann nicht festgestellt werden\n"
+
+-#: ../iptunnel.c:411
++#: ../iptunnel.c:417
+ #, c-format
+ msgid "%s: %s/ip remote %s local %s "
+ msgstr "%s: %s/ip Gegenseite %s lokal %s "
+
+-#: ../iptunnel.c:415
++#: ../iptunnel.c:421
+ msgid "unknown"
+ msgstr "Unbekannt"
+
+-#: ../iptunnel.c:447
++#: ../iptunnel.c:453
++#, c-format
+ msgid " Drop packets out of sequence.\n"
+ msgstr " Pakete auer der Reihenfolge fallenlassen.\n"
+
+-#: ../iptunnel.c:449
++#: ../iptunnel.c:455
++#, c-format
+ msgid " Checksum in received packet is required.\n"
+ msgstr " Prfsumme im empfangenen Paket wird bentigt.\n"
+
+-#: ../iptunnel.c:451
++#: ../iptunnel.c:457
++#, c-format
+ msgid " Sequence packets on output.\n"
+ msgstr " Pakete in Reihenfolge ausgeben.\n"
+
+-#: ../iptunnel.c:453
++#: ../iptunnel.c:459
++#, c-format
+ msgid " Checksum output packets.\n"
+ msgstr " Prfsumme fr ausgegebene Pakete berechnen.\n"
+
+-#: ../iptunnel.c:481
++#: ../iptunnel.c:487
++#, c-format
+ msgid "Wrong format of /proc/net/dev. Sorry.\n"
+-msgstr "Falsches Format von /proc/net/dev. Tut mir leid\n"
++msgstr "Falsches Format von /proc/net/dev. Tut mir leid.\n"
+
+-#: ../iptunnel.c:494
++#: ../iptunnel.c:500
+ #, c-format
+ msgid "Failed to get type of [%s]\n"
+ msgstr "Kann den Typ von [%s] nicht holen\n"
+
+-#: ../iptunnel.c:510
++#: ../iptunnel.c:516
++#, c-format
+ msgid "RX: Packets Bytes Errors CsumErrs OutOfSeq Mcasts\n"
+ msgstr "RX: Pakete Bytes Fehler CsumErrs OutOfSeq Mcasts\n"
+
+-#: ../iptunnel.c:513
++#: ../iptunnel.c:519
++#, c-format
+ msgid "TX: Packets Bytes Errors DeadLoop NoRoute NoBufs\n"
+ msgstr "TX: Pakete Bytes Fehler DeadLoop NoRoute NoBufs\n"
+
+-#: ../statistics.c:45
++#: ../statistics.c:47
+ msgid "ICMP input histogram:"
+-msgstr "ICMP Eingabehistogramm:"
++msgstr "ICMP-Eingabehistogramm:"
+
+-#: ../statistics.c:46
++#: ../statistics.c:48
+ msgid "ICMP output histogram:"
+-msgstr "ICMP Ausgabehistogramm:"
++msgstr "ICMP-Ausgabehistogramm:"
+
+-#: ../statistics.c:63
++#: ../statistics.c:65
+ #, c-format
+ msgid "Forwarding is %s"
+ msgstr "Weiterleitung ist %s"
+
+-#: ../statistics.c:64
+-#, c-format
+-msgid "Default TTL is %d"
++#: ../statistics.c:66
++#, fuzzy, c-format
++msgid "Default TTL is %u"
+ msgstr "Standard-TTL ist %d"
+
+-#: ../statistics.c:65
+-#, c-format
+-msgid "%d total packets received"
+-msgstr "%d Pakete insgesamt empfangen"
++#: ../statistics.c:67
++#, fuzzy, c-format
++msgid "%u total packets received"
++msgstr "%d Pakete insgesamt empfangen"
+
+-#: ../statistics.c:66
+-#, c-format
+-msgid "%d with invalid headers"
+-msgstr "%d with ungltigen Headern"
++#: ../statistics.c:68
++#, fuzzy, c-format
++msgid "%u with invalid headers"
++msgstr "%d mit ungltigen Headern"
+
+-#: ../statistics.c:67
+-#, c-format
+-msgid "%d with invalid addresses"
++#: ../statistics.c:69
++#, fuzzy, c-format
++msgid "%u with invalid addresses"
+ msgstr "%d mit ungltigen Adressen"
+
+-#: ../statistics.c:68
+-#, c-format
+-msgid "%d forwarded"
++#: ../statistics.c:70
++#, fuzzy, c-format
++msgid "%u forwarded"
+ msgstr "%d weitergeleitet"
+
+-#: ../statistics.c:69
+-#, c-format
+-msgid "%d with unknown protocol"
++#: ../statistics.c:71
++#, fuzzy, c-format
++msgid "%u with unknown protocol"
+ msgstr "%d mit unbekanntem Protokoll"
+
+-#: ../statistics.c:70
+-#, c-format
+-msgid "%d incoming packets discarded"
++#: ../statistics.c:72
++#, fuzzy, c-format
++msgid "%u incoming packets discarded"
+ msgstr "%d eingehende Pakete weggeworfen"
+
+-#: ../statistics.c:71
+-#, c-format
+-msgid "%d incoming packets delivered"
++#: ../statistics.c:73
++#, fuzzy, c-format
++msgid "%u incoming packets delivered"
+ msgstr "%d eingehende Pakete zugestellt"
+
+-#: ../statistics.c:72
+-#, c-format
+-msgid "%d requests sent out"
++#: ../statistics.c:74
++#, fuzzy, c-format
++msgid "%u requests sent out"
+ msgstr "%d Anfragen ausgesandt"
+
+ #. ?
+-#: ../statistics.c:73
+-#, c-format
+-msgid "%d outgoing packets dropped"
++#: ../statistics.c:75
++#, fuzzy, c-format
++msgid "%u outgoing packets dropped"
+ msgstr "%d ausgehende Pakete weggeworfen"
+
+-#: ../statistics.c:74
+-#, c-format
+-msgid "%d dropped because of missing route"
++#: ../statistics.c:76
++#, fuzzy, c-format
++msgid "%u dropped because of missing route"
+ msgstr "%d weggeworfen wegen fehlender Route"
+
+-#: ../statistics.c:75
+-#, c-format
+-msgid "%d fragments dropped after timeout"
++#: ../statistics.c:77
++#, fuzzy, c-format
++msgid "%u fragments dropped after timeout"
+ msgstr "%d Fragmente nach Timeout weggeworfen"
+
+-#: ../statistics.c:76
+-#, c-format
+-msgid "%d reassemblies required"
++#: ../statistics.c:78
++#, fuzzy, c-format
++msgid "%u reassemblies required"
+ msgstr "%d Wiederzusammenstellungen ntig"
+
+ #. ?
+-#: ../statistics.c:77
+-#, c-format
+-msgid "%d packets reassembled ok"
++#: ../statistics.c:79
++#, fuzzy, c-format
++msgid "%u packets reassembled ok"
+ msgstr "%d Fragmente korrekt empfangen"
+
+-#: ../statistics.c:78
+-#, c-format
+-msgid "%d packet reassembles failed"
++#: ../statistics.c:80
++#, fuzzy, c-format
++msgid "%u packet reassembles failed"
+ msgstr "%d fehlgeschlagene Paketdefragmentierungen"
+
+-#: ../statistics.c:79
+-#, c-format
+-msgid "%d fragments received ok"
++#: ../statistics.c:81
++#, fuzzy, c-format
++msgid "%u fragments received ok"
+ msgstr "%d Fragmente korrekt empfangen"
+
+-#: ../statistics.c:80
+-#, c-format
+-msgid "%d fragments failed"
+-msgstr "%d Fragmente Fehlgeschlagen"
++#: ../statistics.c:82
++#, fuzzy, c-format
++msgid "%u fragments failed"
++msgstr "%d Fragmente fehlgeschlagen"
+
+-#: ../statistics.c:81
+-#, c-format
+-msgid "%d fragments created"
++#: ../statistics.c:83
++#, fuzzy, c-format
++msgid "%u fragments created"
+ msgstr "%d Fragmente erzeugt"
+
+-#: ../statistics.c:86
+-#, c-format
+-msgid "%d ICMP messages received"
+-msgstr "%d ICMP Nachrichten empfangen"
++#: ../statistics.c:88
++#, fuzzy, c-format
++msgid "%u ICMP messages received"
++msgstr "%d ICMP-Nachrichten empfangen"
+
+-#: ../statistics.c:87
+-#, c-format
+-msgid "%d input ICMP message failed."
+-msgstr "%d eingegangene ICMP Nachrichten fehlgeschlagen"
++#: ../statistics.c:89
++#, fuzzy, c-format
++msgid "%u input ICMP message failed."
++msgstr "%d eingegangene ICMP-Nachrichten fehlgeschlagen"
+
+-#: ../statistics.c:88 ../statistics.c:101
+-#, c-format
+-msgid "destination unreachable: %d"
++#: ../statistics.c:90 ../statistics.c:103
++#, fuzzy, c-format
++msgid "destination unreachable: %u"
+ msgstr "Ziel unerreichbar: %d"
+
+-#: ../statistics.c:89
+-#, c-format
+-msgid "timeout in transit: %d"
++#: ../statistics.c:91
++#, fuzzy, c-format
++msgid "timeout in transit: %u"
+ msgstr "Timeout beim Transit: %d"
+
+-#: ../statistics.c:90 ../statistics.c:103
+-#, c-format
+-msgid "wrong parameters: %d"
++#: ../statistics.c:92 ../statistics.c:105
++#, fuzzy, c-format
++msgid "wrong parameters: %u"
+ msgstr "Fehlerhafte Parameter: %d"
+
+ #. ?
+-#: ../statistics.c:91
+-#, c-format
+-msgid "source quenchs: %d"
++#: ../statistics.c:93
++#, fuzzy, c-format
++msgid "source quenches: %u"
+ msgstr "Source Quenchs: %d"
+
+-#: ../statistics.c:92
+-#, c-format
+-msgid "redirects: %d"
++#: ../statistics.c:94
++#, fuzzy, c-format
++msgid "redirects: %u"
+ msgstr "Umleitungen: %d"
+
+-#: ../statistics.c:93
+-#, c-format
+-msgid "echo requests: %d"
+-msgstr "Echo Requests: %d"
++#: ../statistics.c:95
++#, fuzzy, c-format
++msgid "echo requests: %u"
++msgstr "Echo Anfragen: %d"
+
+-#: ../statistics.c:94 ../statistics.c:107
+-#, c-format
+-msgid "echo replies: %d"
++#: ../statistics.c:96 ../statistics.c:109
++#, fuzzy, c-format
++msgid "echo replies: %u"
+ msgstr "Echo Antworten: %d"
+
+-#: ../statistics.c:95
+-#, c-format
+-msgid "timestamp request: %d"
++#: ../statistics.c:97
++#, fuzzy, c-format
++msgid "timestamp request: %u"
+ msgstr "Zeitstempelanfragen: %d"
+
+-#: ../statistics.c:96
+-#, c-format
+-msgid "timestamp reply: %d"
++#: ../statistics.c:98
++#, fuzzy, c-format
++msgid "timestamp reply: %u"
+ msgstr "Zeitstempelantworten: %d"
+
+-#: ../statistics.c:97
+-#, c-format
+-msgid "address mask request: %d"
++#: ../statistics.c:99
++#, fuzzy, c-format
++msgid "address mask request: %u"
+ msgstr "Adressmaskenanfragen: %d"
+
+ #. ?
+-#: ../statistics.c:98
+-msgid "address mask replies"
+-msgstr "Adressmaskenantworten"
++#: ../statistics.c:100 ../statistics.c:113
++#, fuzzy, c-format
++msgid "address mask replies: %u"
++msgstr "Adressmaskenantworten: %d"
+
+ #. ?
+-#: ../statistics.c:99
+-#, c-format
+-msgid "%d ICMP messages sent"
++#: ../statistics.c:101
++#, fuzzy, c-format
++msgid "%u ICMP messages sent"
+ msgstr "%d ICMP-Nachrichten geschickt"
+
+-#: ../statistics.c:100
+-#, c-format
+-msgid "%d ICMP messages failed"
+-msgstr "%d ICMP Nachrichten fehlgeschlagen"
+-
+ #: ../statistics.c:102
+-#, c-format
+-msgid "time exceeded: %d"
++#, fuzzy, c-format
++msgid "%u ICMP messages failed"
++msgstr "%d ICMP-Nachrichten fehlgeschlagen"
++
++#: ../statistics.c:104
++#, fuzzy, c-format
++msgid "time exceeded: %u"
+ msgstr "Zeitberschreitung: %d"
+
+ #. ?
+-#: ../statistics.c:104
+-#, c-format
+-msgid "source quench: %d"
++#: ../statistics.c:106
++#, fuzzy, c-format
++msgid "source quench: %u"
+ msgstr "Source Quench: %d"
+
+-#: ../statistics.c:105
+-#, c-format
+-msgid "redirect: %d"
++#: ../statistics.c:107
++#, fuzzy, c-format
++msgid "redirect: %u"
+ msgstr "Umleitungen: %d"
+
+-#: ../statistics.c:106
+-#, c-format
+-msgid "echo request: %d"
++#: ../statistics.c:108
++#, fuzzy, c-format
++msgid "echo request: %u"
+ msgstr "Echo Anfragen: %d"
+
+-#: ../statistics.c:108
+-#, c-format
+-msgid "timestamp requests: %d"
++#: ../statistics.c:110
++#, fuzzy, c-format
++msgid "timestamp requests: %u"
+ msgstr "Zeitstempel Anfragen: %d"
+
+-#: ../statistics.c:109
+-#, c-format
+-msgid "timestamp replies: %d"
++#: ../statistics.c:111
++#, fuzzy, c-format
++msgid "timestamp replies: %u"
+ msgstr "Zeitstempel Antworten: %d"
+
+-#: ../statistics.c:110
+-#, c-format
+-msgid "address mask requests: %d"
++#: ../statistics.c:112
++#, fuzzy, c-format
++msgid "address mask requests: %u"
+ msgstr "Adressmaskenanfragen: %d"
+
+-#: ../statistics.c:111
++#: ../statistics.c:118
+ #, c-format
+-msgid "address mask replies: %d"
+-msgstr "Adressmaskenantworten: %d"
++msgid "RTO algorithm is %s"
++msgstr "RTO-Algorithmus ist %s"
++
++#: ../statistics.c:122
++#, fuzzy, c-format
++msgid "%u active connections openings"
++msgstr "%d Verbindungen aktiv geffnet"
++
++#: ../statistics.c:123
++#, fuzzy, c-format
++msgid "%u passive connection openings"
++msgstr "%d Verbindungen passiv geffnet"
++
++#: ../statistics.c:124
++#, fuzzy, c-format
++msgid "%u failed connection attempts"
++msgstr "%d fehlerhafte Verbindungsversuche"
++
++#: ../statistics.c:125
++#, fuzzy, c-format
++msgid "%u connection resets received"
++msgstr "%d Verbindungsrcksetzungen empfangen"
++
++#: ../statistics.c:126
++#, fuzzy, c-format
++msgid "%u connections established"
++msgstr "%d Verbindungen aufgebaut"
++
++#: ../statistics.c:127
++#, fuzzy, c-format
++msgid "%u segments received"
++msgstr "%d Segmente empfangen"
++
++#: ../statistics.c:128
++#, fuzzy, c-format
++msgid "%u segments send out"
++msgstr "%d Segmente abgeschickt"
++
++#: ../statistics.c:129
++#, fuzzy, c-format
++msgid "%u segments retransmited"
++msgstr "%d Segmente erneut geschickt"
++
++#: ../statistics.c:130
++#, fuzzy, c-format
++msgid "%u bad segments received."
++msgstr "%d fehlerhafte Segmente empfangen."
++
++#: ../statistics.c:131
++#, fuzzy, c-format
++msgid "%u resets sent"
++msgstr "%d Rcksetzungen geschickt"
++
++#: ../statistics.c:136
++#, fuzzy, c-format
++msgid "%u packets received"
++msgstr "%d Pakete empfangen"
++
++#: ../statistics.c:137
++#, fuzzy, c-format
++msgid "%u packets to unknown port received."
++msgstr "%d Pakete fr unbekannte Ports empfangen."
++
++#: ../statistics.c:138
++#, fuzzy, c-format
++msgid "%u packet receive errors"
++msgstr "%d Paketempfangsfehler"
++
++#: ../statistics.c:139
++#, fuzzy, c-format
++msgid "%u packets sent"
++msgstr "%d Pakete geschickt"
++
++#: ../statistics.c:144
++#, fuzzy, c-format
++msgid "%u SYN cookies sent"
++msgstr "%d SYN-Cookies verschickt"
++
++#: ../statistics.c:145
++#, fuzzy, c-format
++msgid "%u SYN cookies received"
++msgstr "%d SYN-Cookies empfangen"
+
+-#: ../statistics.c:116
++#: ../statistics.c:146
++#, fuzzy, c-format
++msgid "%u invalid SYN cookies received"
++msgstr "%d ungltige SYN-Cookies empfangen"
++
++#: ../statistics.c:148
++#, fuzzy, c-format
++msgid "%u resets received for embryonic SYN_RECV sockets"
++msgstr "%d Rcksetzungen fr embrionische SYN_RECV-Sockets"
++
++#: ../statistics.c:150
++#, fuzzy, c-format
++msgid "%u packets pruned from receive queue because of socket buffer overrun"
++msgstr "%d Pakete wegen Socketpufferberlauf aus der Empfangswarteschlange weggeworfen"
++
++#. obsolete: 2.2.0 doesn't do that anymore
++#: ../statistics.c:153
++#, fuzzy, c-format
++msgid "%u packets pruned from receive queue"
++msgstr "%d Pakete aus der ungeordneten Warteschlange weggeworfen"
++
++#: ../statistics.c:154
++#, fuzzy, c-format
++msgid ""
++"%u packets dropped from out-of-order queue because of socket buffer overrun"
++msgstr "%d Pakete aus der ungeordneten Warteschlange wegen Pufferberlauf weggeworfen"
++
++#: ../statistics.c:156
++#, fuzzy, c-format
++msgid "%u ICMP packets dropped because they were out-of-window"
++msgstr "%d ICMP-Pakete weggeworfen die auerhalb des Fensters waren"
++
++#: ../statistics.c:158
++#, fuzzy, c-format
++msgid "%u ICMP packets dropped because socket was locked"
++msgstr "%d ICMP-Pakete verworfen weil Socket gesperrt war"
++
++#: ../statistics.c:160
+ #, c-format
+-msgid "RTO algorithm is %s"
+-msgstr "RTO Algorithmus is %s"
++msgid "%u TCP sockets finished time wait in fast timer"
++msgstr ""
+
+-#: ../statistics.c:120
++#: ../statistics.c:161
+ #, c-format
+-msgid "%d active connections openings"
+-msgstr "%d Verbindungen aktiv geffnet"
++msgid "%u time wait sockets recycled by time stamp"
++msgstr ""
+
+-#: ../statistics.c:121
++#: ../statistics.c:162
+ #, c-format
+-msgid "%d passive connection openings"
+-msgstr "%d Verbindungen passiv geffnet"
++msgid "%u TCP sockets finished time wait in slow timer"
++msgstr ""
+
+-#: ../statistics.c:122
++#: ../statistics.c:163
+ #, c-format
+-msgid "%d failed connection attempts"
+-msgstr "%d fehlerhafte Verbindungsversuche"
++msgid "%u passive connections rejected because of time stamp"
++msgstr ""
+
+-#: ../statistics.c:123
++#: ../statistics.c:165
+ #, c-format
+-msgid "%d connection resets received"
+-msgstr "%d Verbindungsrcksetzungen empfangen"
++msgid "%u active connections rejected because of time stamp"
++msgstr ""
+
+-#: ../statistics.c:124
++#: ../statistics.c:167
+ #, c-format
+-msgid "%d connections established"
+-msgstr "%d Verbindungen aufgebaut"
++msgid "%u packets rejects in established connections because of timestamp"
++msgstr ""
+
+-#: ../statistics.c:125
++#: ../statistics.c:169
++#, fuzzy, c-format
++msgid "%u delayed acks sent"
++msgstr "%d Pakete geschickt"
++
++#: ../statistics.c:170
+ #, c-format
+-msgid "%d segments received"
+-msgstr "%d Segmente empfangen"
++msgid "%u delayed acks further delayed because of locked socket"
++msgstr ""
+
+-#: ../statistics.c:126
++#: ../statistics.c:172
+ #, c-format
+-msgid "%d segments send out"
+-msgstr "%d Segmente abgeschickt"
++msgid "Quick ack mode was activated %u times"
++msgstr ""
+
+-#: ../statistics.c:127
++#: ../statistics.c:173
+ #, c-format
+-msgid "%d segments retransmited"
+-msgstr "%d Segmente erneut geschickt"
++msgid "%u times the listen queue of a socket overflowed"
++msgstr ""
+
+-#: ../statistics.c:128
++#: ../statistics.c:175
+ #, c-format
+-msgid "%d bad segments received."
+-msgstr "%d fehlerhafte Segmente empfangen."
++msgid "%u SYNs to LISTEN sockets ignored"
++msgstr ""
+
+-#: ../statistics.c:129
++#: ../statistics.c:176
+ #, c-format
+-msgid "%d resets sent"
+-msgstr "%d Rcksetzungen geschickt"
++msgid "%u packets directly queued to recvmsg prequeue."
++msgstr ""
+
+-#: ../statistics.c:134
++#: ../statistics.c:178
+ #, c-format
+-msgid "%d packets received"
++msgid "%u of bytes directly received from backlog"
++msgstr ""
++
++#: ../statistics.c:180
++#, c-format
++msgid "%u of bytes directly received from prequeue"
++msgstr ""
++
++#: ../statistics.c:182
++#, fuzzy, c-format
++msgid "%u packets dropped from prequeue"
++msgstr "%d Pakete aus der ungeordneten Warteschlange weggeworfen"
++
++#: ../statistics.c:183
++#, fuzzy, c-format
++msgid "%u packet headers predicted"
+ msgstr "%d Pakete empfangen"
+
+-#: ../statistics.c:135
++#: ../statistics.c:184
+ #, c-format
+-msgid "%d packets to unknown port received."
++msgid "%u packets header predicted and directly queued to user"
++msgstr ""
++
++#: ../statistics.c:186
++#, c-format
++msgid "Ran %u times out of system memory during packet sending"
++msgstr ""
++
++#: ../statistics.c:188
++#, fuzzy, c-format
++msgid "%u acknowledgments not containing data received"
+ msgstr "%d Pakete fr unbekannte Ports empfangen."
+
+-#: ../statistics.c:136
++#: ../statistics.c:189
+ #, c-format
+-msgid "%d packet receive errors"
+-msgstr "%d Paketempfangsfehler"
++msgid "%u predicted acknowledgments"
++msgstr ""
+
+-#: ../statistics.c:137
++#: ../statistics.c:190
+ #, c-format
+-msgid "%d packets sent"
+-msgstr "%d Pakete geschickt"
++msgid "%u times recovered from packet loss due to fast retransmit"
++msgstr ""
+
+-#: ../statistics.c:142
++#: ../statistics.c:191
+ #, c-format
+-msgid "%d SYN cookies sent"
+-msgstr "%d SYN-Cookies verschickt"
++msgid "%u times recovered from packet loss due to SACK data"
++msgstr ""
+
+-#: ../statistics.c:143
++#: ../statistics.c:192
++#, fuzzy, c-format
++msgid "%u bad SACKs received"
++msgstr "%d fehlerhafte Segmente empfangen."
++
++#: ../statistics.c:193
+ #, c-format
+-msgid "%d SYN cookies received"
+-msgstr "%d SYN-Cookies empfangen"
++msgid "Detected reordering %u times using FACK"
++msgstr ""
+
+-#: ../statistics.c:144
++#: ../statistics.c:194
+ #, c-format
+-msgid "%d invalid SYN cookies received"
+-msgstr "%d ungltige SYN-Cookies empfangen"
++msgid "Detected reordering %u times using SACK"
++msgstr ""
+
+-#: ../statistics.c:146
++#: ../statistics.c:195
+ #, c-format
+-msgid "%d resets received for embryonic SYN_RECV sockets"
+-msgstr "%d Rcksetzungen fuer embrionische SYN_RECV Sockets"
++msgid "Detected reordering %u times using time stamp"
++msgstr ""
+
+-#: ../statistics.c:148
++#: ../statistics.c:196
+ #, c-format
+-msgid "%d packets pruned from receive queue because of socket buffer overrun"
++msgid "Detected reordering %u times using reno fast retransmit"
+ msgstr ""
+-"%d Pakete wegen Socketpufferberlauf aus der Empfangswarteschlange "
+-"weggeworfen"
+
+-#. obsolete: 2.2.0 doesn't do that anymore
+-#: ../statistics.c:151
++#: ../statistics.c:197
+ #, c-format
+-msgid "%d packets pruned from out-of-order queue"
+-msgstr "%d Pakete aus der ungeordneten Warteschlange weggeworfen"
++msgid "%u congestion windows fully recovered"
++msgstr ""
+
+-#: ../statistics.c:152
++#: ../statistics.c:198
+ #, c-format
+-msgid ""
+-"%d packets dropped from out-of-order queue because of socket buffer overrun"
++msgid "%u congestion windows partially recovered using Hoe heuristic"
+ msgstr ""
+-"%d Pakete aus der ungeordneten Warteschlange wegen Pufferberlauf weggeworfen"
+
+-#: ../statistics.c:154
++#: ../statistics.c:199
+ #, c-format
+-msgid "%d ICMP packets dropped because they were out-of-window"
+-msgstr "%d ICMP Pakete weggeworfen die auserhalb des Fensters waren"
++msgid "%u congestion window recovered using DSACK"
++msgstr ""
+
+-#: ../statistics.c:156
++#: ../statistics.c:200
++#, c-format
++msgid "%u congestion windows recovered after partial ack"
++msgstr ""
++
++#: ../statistics.c:201
++#, fuzzy, c-format
++msgid "%u retransmits lost"
++msgstr "%d Rcksetzungen geschickt"
++
++#: ../statistics.c:202
++#, c-format
++msgid "%u timeouts after reno fast retransmit"
++msgstr ""
++
++#: ../statistics.c:203
++#, c-format
++msgid "%u timeouts after SACK recovery"
++msgstr ""
++
++#: ../statistics.c:204
++#, c-format
++msgid "%u timeouts in loss state"
++msgstr ""
++
++#: ../statistics.c:205
++#, fuzzy, c-format
++msgid "%u fast retransmits"
++msgstr "%d Segmente erneut geschickt"
++
++#: ../statistics.c:206
++#, c-format
++msgid "%u forward retransmits"
++msgstr ""
++
++#: ../statistics.c:207
++#, c-format
++msgid "%u retransmits in slow start"
++msgstr ""
++
++#: ../statistics.c:208
++#, c-format
++msgid "%u other TCP timeouts"
++msgstr ""
++
++#: ../statistics.c:209
++#, fuzzy, c-format
++msgid "%u reno fast retransmits failed"
++msgstr "%d Segmente erneut geschickt"
++
++#: ../statistics.c:210
++#, fuzzy, c-format
++msgid "%u sack retransmits failed"
++msgstr "%d fehlgeschlagene Paketdefragmentierungen"
++
++#: ../statistics.c:211
++#, c-format
++msgid "%u times receiver scheduled too late for direct processing"
++msgstr ""
++
++#: ../statistics.c:212
++#, fuzzy, c-format
++msgid "%u packets collapsed in receive queue due to low socket buffer"
++msgstr "%d Pakete wegen Socketpufferberlauf aus der Empfangswarteschlange weggeworfen"
++
++#: ../statistics.c:213
++#, c-format
++msgid "%u DSACKs sent for old packets"
++msgstr ""
++
++#: ../statistics.c:214
++#, c-format
++msgid "%u DSACKs sent for out of order packets"
++msgstr ""
++
++#: ../statistics.c:215
++#, fuzzy, c-format
++msgid "%u DSACKs received"
++msgstr "%d Pakete empfangen"
++
++#: ../statistics.c:216
++#, fuzzy, c-format
++msgid "%u DSACKs for out of order packets received"
++msgstr "%d Pakete insgesamt empfangen"
++
++#: ../statistics.c:217
++#, fuzzy, c-format
++msgid "%u connections reset due to unexpected SYN"
++msgstr "%d Verbindungsrcksetzungen empfangen"
++
++#: ../statistics.c:218
++#, fuzzy, c-format
++msgid "%u connections reset due to unexpected data"
++msgstr "%d Verbindungsrcksetzungen empfangen"
++
++#: ../statistics.c:219
++#, fuzzy, c-format
++msgid "%u connections reset due to early user close"
++msgstr "%d Verbindungsrcksetzungen empfangen"
++
++#: ../statistics.c:220
+ #, c-format
+-msgid "%d ICMP packets dropped because socket was locked"
+-msgstr "%d ICMP Pakete verworfen weil Socket gesperrt war"
++msgid "%u connections aborted due to memory pressure"
++msgstr ""
++
++#: ../statistics.c:221
++#, fuzzy, c-format
++msgid "%u connections aborted due to timeout"
++msgstr "%d Verbindungsrcksetzungen empfangen"
+
+ #: ../statistics.c:222
++#, c-format
++msgid "%u connections aborted after user close in linger timeout"
++msgstr ""
++
++#: ../statistics.c:223
++#, c-format
++msgid "%u times unabled to send RST due to no memory"
++msgstr ""
++
++#: ../statistics.c:224
++#, c-format
++msgid "TCP ran low on memory %u times"
++msgstr ""
++
++#: ../statistics.c:225
++#, c-format
++msgid "%u TCP data loss events"
++msgstr ""
++
++#: ../statistics.c:292
+ msgid "enabled"
+ msgstr "aktiviert"
+
+-#: ../statistics.c:222
++#: ../statistics.c:292
+ msgid "disabled"
+ msgstr "deaktiviert"
+
+-#: ../statistics.c:272
+-#, c-format
+-msgid "unknown title %s\n"
+-msgstr "Unbekannter Titel %s\n"
+-
+-#: ../statistics.c:298
++#: ../statistics.c:375
+ msgid "error parsing /proc/net/snmp"
+ msgstr "Fehler beim Parsen von /proc/net/snmp"
+
+-#: ../statistics.c:311
++#: ../statistics.c:388
+ msgid "cannot open /proc/net/snmp"
+ msgstr "Kann /proc/net/snmp nicht ffnen"
+
+ #: ../lib/activate.c:69
+ #, c-format
+ msgid "Hardware type `%s' not supported.\n"
+-msgstr "Hardwaretyp ,,%s'' nicht untersttzt.\n"
++msgstr "Hardwaretyp %s nicht untersttzt.\n"
+
+ #: ../lib/activate.c:73
+ #, c-format
+ msgid "Cannot change line discipline to `%s'.\n"
+-msgstr "Kann line discipline nicht auf ``%s'' setzen.\n"
++msgstr "Kann line discipline nicht auf %s setzen.\n"
+
+-#: ../lib/af.c:145 ../lib/hw.c:148
++#: ../lib/af.c:153 ../lib/hw.c:161
+ msgid "UNSPEC"
+ msgstr "UNSPEC"
+
+-#: ../lib/af.c:147
++#: ../lib/af.c:155
+ msgid "UNIX Domain"
+-msgstr "UNIX Domain"
++msgstr "UNIX-Domain"
+
+-#: ../lib/af.c:150
++#: ../lib/af.c:158
+ msgid "DARPA Internet"
+-msgstr "DARPA Internet"
++msgstr "DARPA-Internet"
+
+-#: ../lib/af.c:153
++#: ../lib/af.c:161
+ msgid "IPv6"
+ msgstr "IPv6"
+
+-#: ../lib/af.c:156 ../lib/hw.c:169
++#: ../lib/af.c:164 ../lib/hw.c:182
+ msgid "AMPR AX.25"
+ msgstr "AMPR AX.25"
+
+-#: ../lib/af.c:159 ../lib/hw.c:175
++#: ../lib/af.c:167 ../lib/hw.c:188
+ msgid "AMPR NET/ROM"
+ msgstr "AMPR NET/ROM"
+
+-#: ../lib/af.c:162
++#: ../lib/af.c:170
+ msgid "Novell IPX"
+ msgstr ""
+
+-#: ../lib/af.c:165
++#: ../lib/af.c:173
+ msgid "Appletalk DDP"
+ msgstr "Appletalk DDP"
+
+-#: ../lib/af.c:168 ../lib/hw.c:207
++#: ../lib/af.c:176 ../lib/hw.c:223
+ msgid "Econet"
+ msgstr "Econet"
+
+-#: ../lib/af.c:171 ../lib/hw.c:172
++#: ../lib/af.c:179
++msgid "CCITT X.25"
++msgstr ""
++
++#: ../lib/af.c:182 ../lib/hw.c:185
+ msgid "AMPR ROSE"
+ msgstr "AMPR ROSE"
+
+-#: ../lib/af.c:174 ../lib/hw.c:160
++#: ../lib/af.c:185 ../lib/hw.c:173
+ msgid "Ash"
+ msgstr "Ash"
+
+-#: ../lib/af.c:232
++#: ../lib/af.c:243
++#, c-format
+ msgid "Please don't supply more than one address family.\n"
+ msgstr "Bitte nur eine Adressfamilie angeben.\n"
+
+-#: ../lib/af.c:293
++#: ../lib/af.c:304
++#, c-format
+ msgid "Too much address family arguments.\n"
+ msgstr "Zu viele Adressfamilien angegeben.\n"
+
+-#: ../lib/af.c:304
++#: ../lib/af.c:315
+ #, c-format
+ msgid "Unknown address family `%s'.\n"
+-msgstr "Unbekannte Adressfamilie `%s'.\n"
+-
+-#: ../lib/arcnet.c:53 ../lib/ax25.c:75 ../lib/ddp.c:50 ../lib/econet.c:52
+-#: ../lib/fddi.c:67 ../lib/hippi.c:68 ../lib/inet.c:244 ../lib/inet.c:259
+-#: ../lib/inet6.c:129 ../lib/ipx.c:81 ../lib/netrom.c:78 ../lib/rose.c:71
+-#: ../lib/rose.c:126 ../lib/unix.c:56 ../lib/unix.c:76
+-msgid "[NONE SET]"
+-msgstr "[NICHT GESETZT]"
++msgstr "Unbekannte Adressfamilie %s.\n"
+
+-#: ../lib/arcnet.c:81 ../lib/arcnet.c:96
++#: ../lib/arcnet.c:70 ../lib/arcnet.c:85
+ #, c-format
+ msgid "in_arcnet(%s): invalid arcnet address!\n"
+ msgstr "in_arcnet(%s): Ungltige ARCnet-Adresse!\n"
+
+-#: ../lib/arcnet.c:108
++#: ../lib/arcnet.c:97
+ #, c-format
+ msgid "in_arcnet(%s): trailing : ignored!\n"
+ msgstr "in_arcnet(%s): angehngt : ignoriert!\n"
+
+-#: ../lib/arcnet.c:120
++#: ../lib/arcnet.c:109
+ #, c-format
+ msgid "in_arcnet(%s): trailing junk!\n"
+ msgstr "in_arcnet(%s): Nachfolgender Mll!\n"
+
+ #: ../lib/ash.c:81
++#, c-format
+ msgid "Malformed Ash address"
+-msgstr "Fehlerhafte Ash Adresse"
++msgstr "Fehlerhafte Ash-Adresse"
++
++#: ../lib/ax25.c:75 ../lib/ddp.c:50 ../lib/econet.c:52 ../lib/inet.c:244
++#: ../lib/inet.c:259 ../lib/inet6.c:129 ../lib/ipx.c:81 ../lib/netrom.c:78
++#: ../lib/rose.c:71 ../lib/unix.c:56 ../lib/unix.c:76
++msgid "[NONE SET]"
++msgstr "[NICHT GESETZT]"
+
+ #: ../lib/ax25.c:97 ../lib/netrom.c:100
+ msgid "Invalid callsign"
+@@ -1898,22 +2168,21 @@
+ msgstr "Rufzeichen zu lang"
+
+ #: ../lib/ax25_gr.c:47
++#, c-format
+ msgid "AX.25 not configured in this system.\n"
+ msgstr "AX.25 ist auf diesem System nicht konfiguriert.\n"
+
+ #: ../lib/ax25_gr.c:50
++#, c-format
+ msgid "Kernel AX.25 routing table\n"
+ msgstr "Kernel AX.25 Routentabelle\n"
+
+ #. xxx
+ #: ../lib/ax25_gr.c:51 ../lib/rose_gr.c:55
++#, c-format
+ msgid "Destination Iface Use\n"
+ msgstr "Ziel SStelle Benutzer\n"
+
+-#: ../lib/ddp_gr.c:21
+-msgid "Routing table for `ddp' not yet supported.\n"
+-msgstr "DDP-Routentabelle wird noch nicht untersttzt.\n"
+-
+ #: ../lib/ether.c:74 ../lib/ether.c:91
+ #, c-format
+ msgid "in_ether(%s): invalid ether address!\n"
+@@ -1929,153 +2198,168 @@
+ msgid "in_ether(%s): trailing junk!\n"
+ msgstr "in_ether(%s): Nachfolgender Mll!\n"
+
+-#: ../lib/fddi.c:95 ../lib/fddi.c:110
++#: ../lib/fddi.c:84 ../lib/fddi.c:99
+ #, c-format
+ msgid "in_fddi(%s): invalid fddi address!\n"
+ msgstr "in_fddi(%s): Ungltige FDDI-Adresse!\n"
+
+-#: ../lib/fddi.c:122
++#: ../lib/fddi.c:111
+ #, c-format
+ msgid "in_fddi(%s): trailing : ignored!\n"
+ msgstr "in_fddi(%s): nachfolgend : ignoriert!\n"
+
+-#: ../lib/fddi.c:134
++#: ../lib/fddi.c:123
+ #, c-format
+ msgid "in_fddi(%s): trailing junk!\n"
+ msgstr "in_fddi(%s): Nachfolgender Mll!\n"
+
+-#: ../lib/getroute.c:97 ../lib/setroute.c:76
++#: ../lib/getroute.c:101 ../lib/setroute.c:80
+ #, c-format
+ msgid "Address family `%s' not supported.\n"
+ msgstr "Adressfamilie `%s' wird nicht untersttzt.\n"
+
+-#: ../lib/getroute.c:103 ../lib/setroute.c:80
++#: ../lib/getroute.c:107 ../lib/setroute.c:84
+ #, c-format
+ msgid "No routing for address family `%s'.\n"
+ msgstr "Kein Routen fr Adressfamilie `%s'.\n"
+
+-#: ../lib/hippi.c:96 ../lib/hippi.c:111
++#: ../lib/hippi.c:84 ../lib/hippi.c:99
+ #, c-format
+ msgid "in_hippi(%s): invalid hippi address!\n"
+ msgstr "in_hippi(%s): Ungltige HIPPI-Adresse!\n"
+
+-#: ../lib/hippi.c:123
++#: ../lib/hippi.c:111
+ #, c-format
+ msgid "in_hippi(%s): trailing : ignored!\n"
+ msgstr "in_hippi(%s): nachfolgend : ignoriert!\n"
+
+-#: ../lib/hippi.c:134
++#: ../lib/hippi.c:122
+ #, c-format
+ msgid "in_hippi(%s): trailing junk!\n"
+ msgstr "in_hippi(%s): Nachfolgender Mll!\n"
+
+-#: ../lib/hw.c:147
++#: ../lib/hw.c:160
+ msgid "Local Loopback"
+ msgstr "Lokale Schleife"
+
+-#: ../lib/hw.c:150
++#: ../lib/hw.c:163
+ msgid "Serial Line IP"
+ msgstr "Serielle IP"
+
+-#: ../lib/hw.c:151
++#: ../lib/hw.c:164
+ msgid "VJ Serial Line IP"
+ msgstr "Serielle VJ-IP"
+
+-#: ../lib/hw.c:152
++#: ../lib/hw.c:165
+ msgid "6-bit Serial Line IP"
+ msgstr "6-bit Serielle IP"
+
+-#: ../lib/hw.c:153
++#: ../lib/hw.c:166
+ msgid "VJ 6-bit Serial Line IP"
+ msgstr "VJ 6-bit Serielle IP"
+
+-#: ../lib/hw.c:154
++#: ../lib/hw.c:167
+ msgid "Adaptive Serial Line IP"
+ msgstr "Adaptive Serielle IP"
+
+-#: ../lib/hw.c:157
++#: ../lib/hw.c:170
+ msgid "Ethernet"
+ msgstr "Ethernet"
+
+-#: ../lib/hw.c:163
++#: ../lib/hw.c:176
+ msgid "Fiber Distributed Data Interface"
+ msgstr "Fiber Distributed Data Interface"
+
+-#: ../lib/hw.c:166
++#: ../lib/hw.c:179
+ msgid "HIPPI"
+ msgstr "HIPPI"
+
+-#: ../lib/hw.c:178
++#: ../lib/hw.c:191
++msgid "generic X.25"
++msgstr ""
++
++#: ../lib/hw.c:194
+ msgid "IPIP Tunnel"
+ msgstr "IPIP Tunnel"
+
+-#: ../lib/hw.c:181
++#: ../lib/hw.c:197
+ msgid "Point-to-Point Protocol"
+-msgstr "Punkt-zu-Punkt Verbindung"
++msgstr "Punkt-zu-Punkt-Verbindung"
+
+-#: ../lib/hw.c:184
++#: ../lib/hw.c:200
+ msgid "(Cisco)-HDLC"
+ msgstr "(Cisco)-HDLC"
+
+-#: ../lib/hw.c:185
++#: ../lib/hw.c:201
+ msgid "LAPB"
+ msgstr "LAPB"
+
+-#: ../lib/hw.c:188
++#: ../lib/hw.c:204
+ msgid "ARCnet"
+ msgstr "ARCnet"
+
+-#: ../lib/hw.c:191
++#: ../lib/hw.c:207
+ msgid "Frame Relay DLCI"
+ msgstr "Frame Relay DLCI"
+
+-#: ../lib/hw.c:192
++#: ../lib/hw.c:208
+ msgid "Frame Relay Access Device"
+ msgstr "Frame Relay Access Device"
+
+-#: ../lib/hw.c:195
++#: ../lib/hw.c:211
+ msgid "IPv6-in-IPv4"
+ msgstr "IPv6-nach-IPv4"
+
+-#: ../lib/hw.c:198
+-#, fuzzy
++#: ../lib/hw.c:214
+ msgid "IrLAP"
+-msgstr "LAPB"
++msgstr "IrLAP"
+
+-#: ../lib/hw.c:201
++#: ../lib/hw.c:217
+ msgid "16/4 Mbps Token Ring"
+ msgstr ""
+
+-#: ../lib/hw.c:203
++#: ../lib/hw.c:219
+ msgid "16/4 Mbps Token Ring (New)"
+ msgstr ""
+
++#: ../lib/hw.c:226
++msgid "Generic EUI-64"
++msgstr ""
++
+ #: ../lib/inet.c:153 ../lib/inet6.c:79
+ #, c-format
+ msgid "rresolve: unsupport address family %d !\n"
+ msgstr "rresolve: nicht untersttzte Adressfamilie %d !\n"
+
+-#: ../lib/inet6_gr.c:79
++#: ../lib/inet6.c:131
++#, fuzzy
++msgid "[UNKNOWN]"
++msgstr "UNBEKANNT"
++
++#: ../lib/inet6_gr.c:71
++#, c-format
+ msgid "INET6 (IPv6) not configured in this system.\n"
+ msgstr "INET6 (IPv6) ist auf diesem System nicht konfiguriert.\n"
+
+-#: ../lib/inet6_gr.c:82
++#: ../lib/inet6_gr.c:74
++#, c-format
+ msgid "Kernel IPv6 routing table\n"
+-msgstr "Kernel IPv6 Routentabelle\n"
++msgstr "Kernel-IPv6-Routentabelle\n"
+
+-#: ../lib/inet6_gr.c:84
++#: ../lib/inet6_gr.c:76
++#, c-format
+ msgid ""
+-"Destination Next Hop "
+-" Flags Metric Ref Use Iface\n"
+-msgstr ""
+-"Ziel Nchster Hop "
+-" Flags Metric Ref Benutzer Iface\n"
++"Destination Next "
++"Hop Flags Metric Ref Use Iface\n"
++msgstr "Ziel Nchster Hop Flags Metric Ref Benutzer Iface\n"
+
+-#: ../lib/inet6_gr.c:158
++#: ../lib/inet6_gr.c:150
++#, c-format
+ msgid "Kernel IPv6 Neighbour Cache\n"
+ msgstr "Kernel IPv6 Nachbarcache\n"
+
+-#: ../lib/inet6_gr.c:161
++#: ../lib/inet6_gr.c:153
++#, c-format
+ msgid ""
+ "Neighbour HW Address Iface Flags "
+ "Ref State\n"
+@@ -2083,39 +2367,45 @@
+ "Nachbar HW-Adresse Iface Flags "
+ "Ref Zustand\n"
+
+-#: ../lib/inet6_gr.c:165
++#: ../lib/inet6_gr.c:157
++#, c-format
+ msgid ""
+ "Neighbour HW Address Iface Flags "
+ "Ref State Stale(sec) Delete(sec)\n"
+-msgstr ""
+-"Nachbar HW-Adresse Iface Flags "
+-"Ref Zustand Stale(sec) Lschen(sec)\n"
++msgstr "Nachbar HW-Adresse Iface Flags Ref Zustand Stale(sec) Lschen(sec)\n"
+
+ #: ../lib/inet6_sr.c:46
++#, c-format
+ msgid "Usage: inet6_route [-vF] del Target\n"
+ msgstr "Benutzung: inet6_route [-vF] del Ziel\n"
+
+ #: ../lib/inet6_sr.c:47
++#, c-format
+ msgid " inet6_route [-vF] add Target [gw Gw] [metric M] [[dev] If]\n"
+ msgstr " inet6_route [-vF] add Ziel [gw Gateway] [metric M] [[dev] If]\n"
+
+ #: ../lib/inet6_sr.c:48
++#, c-format
+ msgid " inet6_route [-FC] flush NOT supported\n"
+ msgstr " inet6_route [-FC] flush NICHT untersttzt\n"
+
+-#: ../lib/inet6_sr.c:182
++#: ../lib/inet6_sr.c:188
++#, c-format
+ msgid "Flushing `inet6' routing table not supported\n"
+-msgstr ",,Flush'' fr IPv6 Routentabelle nicht untersttzt\n"
++msgstr "Flush fr IPv6-Routentabelle nicht untersttzt\n"
+
+ #: ../lib/inet_gr.c:50 ../lib/inet_gr.c:220
++#, c-format
+ msgid "INET (IPv4) not configured in this system.\n"
+ msgstr "INET (IPv4) ist auf diesem System nicht konfiguriert.\n"
+
+ #: ../lib/inet_gr.c:53
++#, c-format
+ msgid "Kernel IP routing table\n"
+-msgstr "Kernel IP Routentabelle\n"
++msgstr "Kernel-IP-Routentabelle\n"
+
+ #: ../lib/inet_gr.c:56
++#, c-format
+ msgid ""
+ "Destination Gateway Genmask Flags Metric Ref Use "
+ "Iface\n"
+@@ -2124,6 +2414,7 @@
+ "Iface\n"
+
+ #: ../lib/inet_gr.c:59
++#, c-format
+ msgid ""
+ "Destination Gateway Genmask Flags MSS Window irtt "
+ "Iface\n"
+@@ -2132,6 +2423,7 @@
+ "Iface\n"
+
+ #: ../lib/inet_gr.c:62
++#, c-format
+ msgid ""
+ "Destination Gateway Genmask Flags Metric Ref Use "
+ "Iface MSS Window irtt\n"
+@@ -2140,10 +2432,12 @@
+ "Iface MSS Fenster irtt\n"
+
+ #: ../lib/inet_gr.c:237
++#, c-format
+ msgid "Kernel IP routing cache\n"
+-msgstr "Kernel IP Routencache\n"
++msgstr "Kernel-IP-Routencache\n"
+
+ #: ../lib/inet_gr.c:258
++#, c-format
+ msgid ""
+ "Source Destination Gateway Flags Metric Ref Use "
+ "Iface\n"
+@@ -2152,6 +2446,7 @@
+ "Iface\n"
+
+ #: ../lib/inet_gr.c:261
++#, c-format
+ msgid ""
+ "Source Destination Gateway Flags MSS Window irtt "
+ "Iface\n"
+@@ -2160,6 +2455,7 @@
+ "Iface\n"
+
+ #: ../lib/inet_gr.c:266
++#, c-format
+ msgid ""
+ "Source Destination Gateway Flags Metric Ref Use "
+ "Iface MSS Window irtt HH Arp\n"
+@@ -2168,6 +2464,7 @@
+ "Iface MSS Fenster irtt HH Arp\n"
+
+ #: ../lib/inet_gr.c:290
++#, c-format
+ msgid ""
+ "Source Destination Gateway Flags Metric Ref Use "
+ "Iface MSS Window irtt TOS HHRef HHUptod SpecDst\n"
+@@ -2175,37 +2472,39 @@
+ "Quelle Ziel Gateway Flags Metrik Ref Ben "
+ "Iface MSS Window irtt TOS HHRef HHUptod SpecDst\n"
+
+-#: ../lib/inet_sr.c:50
++#: ../lib/inet_sr.c:51
++#, c-format
+ msgid ""
+ "Usage: inet_route [-vF] del {-host|-net} Target[/prefix] [gw Gw] [metric M] "
+ "[[dev] If]\n"
+-msgstr ""
+-"Benutzung: inet_route [-vF] del {-host|-net} Ziel[/prefix] [gw Gw] [metric "
+-"M] [[dev] If]\n"
++msgstr "Benutzung: inet_route [-vF] del {-host|-net} Ziel[/Prfix] [gw Gw] [metric M] [[dev] If]\n"
+
+-#: ../lib/inet_sr.c:51
++#: ../lib/inet_sr.c:52
++#, c-format
+ msgid ""
+ " inet_route [-vF] add {-host|-net} Target[/prefix] [gw Gw] [metric M]\n"
+-msgstr ""
+-" inet_route [-vF] add {-host|-net} Ziel[/Prefix] [gw Gw] [metric M]\n"
++msgstr " inet_route [-vF] add {-host|-net} Ziel[/Prfix] [gw Gw] [metric M]\n"
+
+-#: ../lib/inet_sr.c:52
++#: ../lib/inet_sr.c:53
++#, c-format
+ msgid ""
+ " [netmask N] [mss Mss] [window W] [irtt I]\n"
+ msgstr ""
+ " [netmask N] [mss Mss] [window W] [irtt I]\n"
+
+-#: ../lib/inet_sr.c:53
++#: ../lib/inet_sr.c:54
++#, c-format
+ msgid " [mod] [dyn] [reinstate] [[dev] If]\n"
+ msgstr " [mod] [dyn] [reinstate] [[dev] If]\n"
+
+-#: ../lib/inet_sr.c:54
++#: ../lib/inet_sr.c:55
++#, c-format
+ msgid ""
+ " inet_route [-vF] add {-host|-net} Target[/prefix] [metric M] reject\n"
+-msgstr ""
+-" inet_route [-vF] add {-host|-net} Ziel[/Prfix] [metric M] reject\n"
++msgstr " inet_route [-vF] add {-host|-net} Ziel[/Prfix] [metric M] reject\n"
+
+-#: ../lib/inet_sr.c:55
++#: ../lib/inet_sr.c:56
++#, c-format
+ msgid " inet_route [-FC] flush NOT supported\n"
+ msgstr " inet_route [-FC] flush NICHT untersttzt\n"
+
+@@ -2215,15 +2514,17 @@
+ msgstr "route: %s: Netzadresse als Gateway ungltig!\n"
+
+ #: ../lib/inet_sr.c:174
+-#, fuzzy
++#, fuzzy, c-format
+ msgid "route: Invalid MSS/MTU.\n"
+ msgstr "route: Ungltige MSS.\n"
+
+ #: ../lib/inet_sr.c:187
++#, c-format
+ msgid "route: Invalid window.\n"
+ msgstr "route: Ungltige Fenstergre.\n"
+
+ #: ../lib/inet_sr.c:203
++#, c-format
+ msgid "route: Invalid initial rtt.\n"
+ msgstr "route: Ungltige Start-RTT.\n"
+
+@@ -2238,126 +2539,408 @@
+ msgstr "Route: Fehlerhafte Netzmaske %s\n"
+
+ #: ../lib/inet_sr.c:270
++#, c-format
+ msgid "route: netmask doesn't match route address\n"
+ msgstr "route: Netzmaske passt nicht zur Routenadresse\n"
+
+ #: ../lib/inet_sr.c:306
++#, c-format
+ msgid "Flushing `inet' routing table not supported\n"
+-msgstr ",,Flush'' der Inet-Routentabelle nicht untersttzt\n"
++msgstr "Flush der Inet-Routentabelle nicht untersttzt\n"
+
+ #: ../lib/inet_sr.c:310
++#, c-format
+ msgid "Modifying `inet' routing cache not supported\n"
+-msgstr "nderung des ,,Inet'' Routencaches nicht untersttzt\n"
++msgstr "nderung des Inet Routencaches nicht untersttzt\n"
+
+ #: ../lib/ipx_gr.c:52
++#, c-format
+ msgid "IPX not configured in this system.\n"
+ msgstr "IPX ist auf diesem System nicht konfiguriert.\n"
+
+ #: ../lib/ipx_gr.c:56
++#, c-format
+ msgid "Kernel IPX routing table\n"
+-msgstr "Kernel IPX Routentabelle\n"
++msgstr "Kernel-IPX-Routentabelle\n"
+
+ #. xxx
+ #: ../lib/ipx_gr.c:57
++#, c-format
+ msgid "Destination Router Net Router Node\n"
+-msgstr "Ziel Router Netz Router Knoten\n"
++msgstr "Ziel Router-Netz Router-Knoten\n"
+
+ #: ../lib/ipx_sr.c:33
++#, c-format
+ msgid "IPX: this needs to be written\n"
+-msgstr "IPX: dies mu noch geschrieben werden\n"
++msgstr "IPX: dies muss noch geschrieben werden\n"
+
+-#: ../lib/masq_info.c:197
++#: ../lib/masq_info.c:198
++#, c-format
+ msgid "IP masquerading entries\n"
+ msgstr "IP-Maskierungseintrge\n"
+
+-#: ../lib/masq_info.c:200
++#: ../lib/masq_info.c:201
++#, c-format
+ msgid "prot expire source destination ports\n"
+ msgstr "Prot expire Quelle Ziel Ports\n"
+
+-#: ../lib/masq_info.c:203
++#: ../lib/masq_info.c:204
++#, c-format
+ msgid ""
+-"prot expire initseq delta prevd source destination "
+-" ports\n"
++"prot expire initseq delta prevd source "
++"destination ports\n"
+ msgstr ""
+-"Prot Ablauf Anf-Seq Delta Prevd Quelle Ziel "
+-" Ports\n"
++"Prot Ablauf Anf-Seq Delta Prevd Quelle "
++"Ziel Ports\n"
+
+ #: ../lib/netrom_gr.c:48
++#, c-format
+ msgid "NET/ROM not configured in this system.\n"
+ msgstr "NET/ROM ist auf diesem System nicht verfgbar.\n"
+
+ #: ../lib/netrom_gr.c:51
++#, c-format
+ msgid "Kernel NET/ROM routing table\n"
+-msgstr "Kernel NET/ROM Routentabelle\n"
++msgstr "Kernel-NET/ROM-Routentabelle\n"
+
+ #: ../lib/netrom_gr.c:52
++#, c-format
+ msgid "Destination Mnemonic Quality Neighbour Iface\n"
+ msgstr "Ziel Mnemonic Qualitt Nachbar Iface\n"
+
+ #: ../lib/netrom_sr.c:34
++#, c-format
+ msgid "netrom usage\n"
+-msgstr "NET/ROM Benutzung\n"
++msgstr "NET/ROM-Benutzung\n"
+
+ #: ../lib/netrom_sr.c:44
++#, c-format
+ msgid "NET/ROM: this needs to be written\n"
+-msgstr "NET/ROM: Dies mu noch geschrieben werden\n"
++msgstr "NET/ROM: Dies muss noch geschrieben werden\n"
+
+ #: ../lib/ppp.c:44
++#, c-format
+ msgid "You cannot start PPP with this program.\n"
+ msgstr "Mit diesem Programm kann PPP nicht gestartet werden.\n"
+
+ #: ../lib/ppp_ac.c:38
++#, c-format
+ msgid "Sorry, use pppd!\n"
+-msgstr "Bitte benutzen sie pppd.\n"
++msgstr "Bitte benutzen Sie pppd.\n"
+
+ #: ../lib/rose.c:87
+ msgid "Node address must be ten digits"
+-msgstr "Knotenadresse mu zehn Ziffern haben"
++msgstr "Knotenadresse muss zehn Ziffern haben"
+
+ #: ../lib/rose_gr.c:51
++#, c-format
+ msgid "ROSE not configured in this system.\n"
+ msgstr "ROSE ist auf diesem System nicht verfgbar.\n"
+
+ #: ../lib/rose_gr.c:54
++#, c-format
+ msgid "Kernel ROSE routing table\n"
+-msgstr "ROSE Kernel Routentabelle\n"
++msgstr "ROSE-Kernel-Routentabelle\n"
+
+-#: ../lib/tr.c:70 ../lib/tr.c:85
++#: ../lib/tr.c:86 ../lib/tr.c:101
+ #, c-format
+ msgid "in_tr(%s): invalid token ring address!\n"
+ msgstr "in_tr(%s): ungltige Tokenringadresse!\n"
+
+-#: ../lib/tr.c:97
++#: ../lib/tr.c:113
+ #, c-format
+ msgid "in_tr(%s): trailing : ignored!\n"
+ msgstr "in_tr(%s): nachfolgend : ignoriert!\n"
+
+-#: ../lib/tr.c:109
++#: ../lib/tr.c:125
+ #, c-format
+ msgid "in_tr(%s): trailing junk!\n"
+ msgstr "in_tr(%s): nachfolgender Mll!\n"
+
+-#: ../lib/interface.c:124
++#: ../lib/interface.c:176
+ #, c-format
+ msgid "warning: no inet socket available: %s\n"
+-msgstr "Warnung: Keine INET Sockets verfgbar: %s\n"
++msgstr "Warnung: Keine INET-Sockets verfgbar: %s\n"
+
+-#: ../lib/interface.c:270
++#: ../lib/interface.c:325
+ #, c-format
+ msgid "Warning: cannot open %s (%s). Limited output.\n"
+ msgstr ""
+
+ #. Give better error message for this case.
+-#: ../lib/interface.c:504
++#: ../lib/interface.c:571
+ msgid "Device not found"
+ msgstr "Gert nicht gefunden"
+
+-#: ../lib/interface.c:508
++#: ../lib/interface.c:575
+ #, c-format
+ msgid "%s: error fetching interface information: %s\n"
+ msgstr "%s: Fehler beim Auslesen der Schnittstelleninformation: %s\n"
+
+-#: ../lib/sockets.c:59
++#: ../lib/interface.c:608
++msgid " - no statistics available -"
++msgstr " - keine Statistiken verfgbar -"
++
++#: ../lib/interface.c:612
++#, c-format
++msgid "[NO FLAGS]"
++msgstr "[KEINE FLAGS]"
++
++#: ../lib/interface.c:688
++#, c-format
++msgid "%-9.9s Link encap:%s "
++msgstr "%-9.9s Protokoll:%s "
++
++#: ../lib/interface.c:693
++#, c-format
++msgid "HWaddr %s "
++msgstr "Hardware Adresse %s "
++
++#: ../lib/interface.c:696
++#, c-format
++msgid "Media:%s"
++msgstr "Medium:%s"
++
++#: ../lib/interface.c:698
++#, c-format
++msgid "(auto)"
++msgstr "(auto)"
++
++#: ../lib/interface.c:705
++#, c-format
++msgid " %s addr:%s "
++msgstr " %s Adresse:%s "
++
++#: ../lib/interface.c:708
++#, c-format
++msgid " P-t-P:%s "
++msgstr " P-z-P:%s "
++
++#: ../lib/interface.c:711
++#, c-format
++msgid " Bcast:%s "
++msgstr " Bcast:%s "
++
++#: ../lib/interface.c:713
++#, c-format
++msgid " Mask:%s\n"
++msgstr " Maske:%s\n"
++
++#: ../lib/interface.c:730
++#, c-format
++msgid " inet6 addr: %s/%d"
++msgstr " inet6-Adresse: %s/%d"
++
++#: ../lib/interface.c:732
++#, c-format
++msgid " Scope:"
++msgstr " Gltigkeitsbereich:"
++
++#: ../lib/interface.c:735
++#, c-format
++msgid "Global"
++msgstr "Global"
++
++#: ../lib/interface.c:738
++#, c-format
++msgid "Link"
++msgstr "Verbindung"
++
++#: ../lib/interface.c:741
++#, c-format
++msgid "Site"
++msgstr "Standort"
++
++#: ../lib/interface.c:744
++#, c-format
++msgid "Compat"
++msgstr "Kompatibilitt"
++
++#: ../lib/interface.c:747
++#, c-format
++msgid "Host"
++msgstr "Maschine"
++
++#: ../lib/interface.c:750
++#, c-format
++msgid "Unknown"
++msgstr "Unbekannt"
++
++#: ../lib/interface.c:765
++#, c-format
++msgid " IPX/Ethernet II addr:%s\n"
++msgstr " IPX/Ethernet II Adresse:%s\n"
++
++#: ../lib/interface.c:768
++#, c-format
++msgid " IPX/Ethernet SNAP addr:%s\n"
++msgstr " IPX/Ethernet SNAP Adresse:%s\n"
++
++#: ../lib/interface.c:771
++#, c-format
++msgid " IPX/Ethernet 802.2 addr:%s\n"
++msgstr " IPX/Ethernet 802.2 Adresse:%s\n"
++
++#: ../lib/interface.c:774
++#, c-format
++msgid " IPX/Ethernet 802.3 addr:%s\n"
++msgstr " IPX/Ethernet 802.3 Adresse:%s\n"
++
++#: ../lib/interface.c:784
++#, c-format
++msgid " EtherTalk Phase 2 addr:%s\n"
++msgstr " EtherTalk Phase 2 Adresse:%s\n"
++
++#: ../lib/interface.c:793
++#, c-format
++msgid " econet addr:%s\n"
++msgstr " econet Adresse:%s\n"
++
++#: ../lib/interface.c:800
++#, c-format
++msgid "[NO FLAGS] "
++msgstr "[KEINE FLAGS] "
++
++#: ../lib/interface.c:802
++#, c-format
++msgid "UP "
++msgstr "UP "
++
++#: ../lib/interface.c:804
++#, c-format
++msgid "BROADCAST "
++msgstr "BROADCAST "
++
++#: ../lib/interface.c:806
++#, c-format
++msgid "DEBUG "
++msgstr "DEBUG "
++
++#: ../lib/interface.c:808
++#, c-format
++msgid "LOOPBACK "
++msgstr "LOOPBACK "
++
++#: ../lib/interface.c:810
++#, c-format
++msgid "POINTOPOINT "
++msgstr "PUNKTZUPUNKT "
++
++#: ../lib/interface.c:812
++#, c-format
++msgid "NOTRAILERS "
++msgstr "NOTRAILERS "
++
++#: ../lib/interface.c:814
++#, c-format
++msgid "RUNNING "
++msgstr "RUNNING "
++
++#: ../lib/interface.c:816
++#, c-format
++msgid "NOARP "
++msgstr "NOARP "
++
++#: ../lib/interface.c:818
++#, c-format
++msgid "PROMISC "
++msgstr "PROMISC "
++
++#: ../lib/interface.c:820
++#, c-format
++msgid "ALLMULTI "
++msgstr "ALLMULTI "
++
++#: ../lib/interface.c:822
++#, c-format
++msgid "SLAVE "
++msgstr "SLAVE "
++
++#: ../lib/interface.c:824
++#, c-format
++msgid "MASTER "
++msgstr "MASTER "
++
++#: ../lib/interface.c:826
++#, c-format
++msgid "MULTICAST "
++msgstr "MULTICAST "
++
++#: ../lib/interface.c:829
++#, c-format
++msgid "DYNAMIC "
++msgstr "DYNAMIC "
++
++#. DONT FORGET TO ADD THE FLAGS IN ife_print_short
++#: ../lib/interface.c:832
++#, c-format
++msgid " MTU:%d Metric:%d"
++msgstr " MTU:%d Metrik:%d"
++
++#: ../lib/interface.c:836
++#, c-format
++msgid " Outfill:%d Keepalive:%d"
++msgstr " Outfill:%d Keepalive:%d"
++
++#: ../lib/interface.c:850
++#, fuzzy, c-format
++msgid "RX packets:%llu errors:%lu dropped:%lu overruns:%lu frame:%lu\n"
++msgstr "Empfangene Pakete:%lu Fehler:%lu Weggeworfen:%lu berlauf:%lu Rahmen:%lu\n"
++
++#: ../lib/interface.c:855
++#, c-format
++msgid " compressed:%lu\n"
++msgstr " komprimiert:%lu\n"
++
++#: ../lib/interface.c:895
++#, fuzzy, c-format
++msgid "TX packets:%llu errors:%lu dropped:%lu overruns:%lu carrier:%lu\n"
++msgstr "Verschickte Pakete:%lu Fehler:%lu Weggeworfen:%lu berlauf:%lu Trger:%lu\n"
++
++#: ../lib/interface.c:899
++#, c-format
++msgid " collisions:%lu "
++msgstr " Kollisionen:%lu "
++
++#: ../lib/interface.c:901
++#, c-format
++msgid "compressed:%lu "
++msgstr "Komprimiert:%lu "
++
++#: ../lib/interface.c:903
++#, c-format
++msgid "txqueuelen:%d "
++msgstr "Sendewarteschlangenlnge:%d "
++
++#: ../lib/interface.c:905
++#, c-format
++msgid "RX bytes:%llu (%lu.%lu %s) TX bytes:%llu (%lu.%lu %s)\n"
++msgstr ""
++
++#: ../lib/interface.c:916
++#, c-format
++msgid "Interrupt:%d "
++msgstr "Interrupt:%d "
++
++#. Only print devices using it for
++#. I/O maps
++#: ../lib/interface.c:919
++#, c-format
++msgid "Base address:0x%x "
++msgstr "Basisadresse:0x%x "
++
++#: ../lib/interface.c:921
++#, c-format
++msgid "Memory:%lx-%lx "
++msgstr "Speicher:%lx-%lx "
++
++#: ../lib/interface.c:924
++#, c-format
++msgid "DMA chan:%x "
++msgstr "DMA Kanal:%x "
++
++#: ../lib/sockets.c:63
++#, c-format
+ msgid "No usable address families found.\n"
+ msgstr "Keine benutzbaren Adressfamilien gefunden.\n"
+
+@@ -2369,41 +2952,44 @@
+ #: ../lib/util-ank.c:238
+ #, c-format
+ msgid "ip: %s is invalid inet prefix\n"
+-msgstr "ip: %s ist ein ungltiges INET-Prefix\n"
++msgstr "ip: %s ist ein ungltiges INET-Prfix\n"
+
+ #: ../lib/util-ank.c:248
+ #, c-format
+ msgid "ip: %s is invalid IPv4 address\n"
+-msgstr "ip: %s ist eine ungltige IPv4 Adresse\n"
++msgstr "ip: %s ist eine ungltige IPv4-Adresse\n"
+
+ #: ../lib/util-ank.c:256
+ #, c-format
+ msgid "ip: argument is wrong: %s\n"
+ msgstr "ip: Fehlerhaftes Argument: %s\n"
+
+-#: ../ipmaddr.c:56
++#: ../ipmaddr.c:61
++#, c-format
+ msgid "Usage: ipmaddr [ add | del ] MULTIADDR dev STRING\n"
+ msgstr "Benutzung: ipmaddr [ add | del ] MULTIADR dev NAME\n"
+
+-#: ../ipmaddr.c:57
++#: ../ipmaddr.c:62
++#, c-format
+ msgid " ipmaddr show [ dev STRING ] [ ipv4 | ipv6 | link | all ]\n"
+ msgstr " ipmaddr show [ dev NAME ] [ ipv4 | ipv6 | link | all ]\n"
+
+-#: ../ipmaddr.c:58
++#: ../ipmaddr.c:63
++#, c-format
+ msgid " ipmaddr -V | -version\n"
+ msgstr ""
+
+-#: ../ipmaddr.c:258
++#: ../ipmaddr.c:263
+ #, c-format
+ msgid "family %d "
+ msgstr "familie %d "
+
+-#: ../ipmaddr.c:267
++#: ../ipmaddr.c:272
+ #, c-format
+ msgid " users %d"
+ msgstr " Benutzer %d"
+
+-#: ../ipmaddr.c:353
++#: ../ipmaddr.c:358
+ msgid "Cannot create socket"
+ msgstr "Kann Socket nicht ffnen"
+
+@@ -2418,13 +3004,14 @@
+ msgstr "slattach: tty_lock: (%s): %s\n"
+
+ #: ../slattach.c:192
++#, c-format
+ msgid "slattach: cannot write PID file\n"
+ msgstr "slattach: Kann PID-Datei nicht schreiben\n"
+
+ #: ../slattach.c:202
+ #, c-format
+ msgid "slattach: tty_lock: UUCP user %s unknown!\n"
+-msgstr "slattach: tty_lock: UUCP Benutzer %s unbekannt!\n"
++msgstr "slattach: tty_lock: UUCP-Benutzer %s unbekannt!\n"
+
+ #: ../slattach.c:430
+ #, c-format
+@@ -2436,39 +3023,71 @@
+ msgid "slattach: tty_hangup(RAISE): %s\n"
+ msgstr "slattach: tty_hangup(RAISE): %s\n"
+
+-#: ../slattach.c:486
++#: ../slattach.c:468
++#, fuzzy, c-format
++msgid "slattach: tty name too long\n"
++msgstr "%s: name zu lang\n"
++
++#: ../slattach.c:498
++#, c-format
+ msgid "slattach: tty_open: cannot get current state!\n"
+ msgstr "slattach: tty_open: kann aktuellen Zustand nicht auslesen!\n"
+
+-#: ../slattach.c:493
++#: ../slattach.c:505
++#, c-format
+ msgid "slattach: tty_open: cannot get current line disc!\n"
+ msgstr ""
+ "slattach: tty_open: Kann augenblicklichen Leitungszustand nicht auslesen!\n"
+
+-#: ../slattach.c:501
++#: ../slattach.c:513
++#, c-format
+ msgid "slattach: tty_open: cannot set RAW mode!\n"
+ msgstr "slattach: tty_open: Kann RAW-Modus nicht setzen!\n"
+
+-#: ../slattach.c:508
++#: ../slattach.c:520
+ #, c-format
+ msgid "slattach: tty_open: cannot set %s bps!\n"
+ msgstr "slattach: tty_open: Kann %s bps nicht setzen!\n"
+
+-#: ../slattach.c:518
++#: ../slattach.c:530
++#, c-format
+ msgid "slattach: tty_open: cannot set 8N1 mode!\n"
+ msgstr "slattach: tty_open: Kann 8N1-Modus nicht setzen!\n"
+
+-#: ../slattach.c:686
++#: ../slattach.c:672
++#, c-format
++msgid "slattach: setvbuf(stdout,0,_IOLBF,0) : %s\n"
++msgstr ""
++
++#: ../slattach.c:704
+ #, c-format
+ msgid "%s started"
+ msgstr "%s gestartet"
+
+-#: ../slattach.c:687
++#: ../slattach.c:705
+ #, c-format
+ msgid " on %s"
+ msgstr " auf %s"
+
+-#: ../slattach.c:688
++#: ../slattach.c:706
+ #, c-format
+ msgid " interface %s\n"
+ msgstr " Schnittstelle: %s\n"
++
++msgid ""
++" arp [-v] [<HW>] [-i <if>] -s <hostname> <hwaddr> [netmask <nm>] pub "
++"<-''-\n"
++msgstr ""
++" arp [-v] [<HW>] [-i <if>] -s <Hostname> <hwaddr> [netmask <nm>] pub\n"
++
++msgid "%s: unknown interface: %s\n"
++msgstr "%s: unbekannte Schnittstelle: %s\n"
++
++msgid "address mask replies"
++msgstr "Adressmaskenantworten"
++
++msgid "unknown title %s\n"
++msgstr "Unbekannter Titel %s\n"
++
++msgid "Routing table for `ddp' not yet supported.\n"
++msgstr "DDP-Routentabelle wird noch nicht untersttzt.\n"
+--- net-tools-1.60.orig/po/fr.po
++++ net-tools-1.60/po/fr.po
+@@ -4,7 +4,8 @@
+ msgid ""
+ msgstr ""
+ "Project-Id-Version: net-tools 1.51\n"
+-"POT-Creation-Date: 2000-02-14 02:31+0100\n"
++"Report-Msgid-Bugs-To: \n"
++"POT-Creation-Date: 2007-06-30 12:28+0900\n"
+ "PO-Revision-Date: 1998-03-01 00:02+0100\n"
+ "Last-Translator: J.M.Vansteene <vanstee@worldnet.fr>\n"
+ "Language-Team:\n"
+@@ -12,273 +13,277 @@
+ "Content-Type: text/plain; charset=iso8859-1\n"
+ "Content-Transfer-Encoding: 8bit\n"
+
+-#: ../arp.c:110 ../arp.c:269
++#: ../arp.c:112 ../arp.c:279
++#, c-format
+ msgid "arp: need host name\n"
+ msgstr "arp: ncessite un nom d'hte\n"
+
+-#: ../arp.c:207 ../arp.c:221
++#: ../arp.c:215 ../arp.c:230
+ #, c-format
+ msgid "No ARP entry for %s\n"
+ msgstr "Pas d'entre ARP pour %s\n"
+
+-#: ../arp.c:239
++#: ../arp.c:248
+ #, fuzzy, c-format
+ msgid "arp: cant get HW-Address for `%s': %s.\n"
+ msgstr "rarp: ne peut dfinir l'entre depuis %s:%u\n"
+
+-#: ../arp.c:243
++#: ../arp.c:252
++#, c-format
+ msgid "arp: protocol type mismatch.\n"
+ msgstr ""
+
+-#: ../arp.c:252
++#: ../arp.c:261
+ #, c-format
+ msgid "arp: device `%s' has HW address %s `%s'.\n"
+ msgstr ""
+
+-#: ../arp.c:282
++#: ../arp.c:293
++#, c-format
+ msgid "arp: need hardware address\n"
+ msgstr "arp: ncessite une adresse matriel\n"
+
+-#: ../arp.c:290
++#: ../arp.c:301
++#, c-format
+ msgid "arp: invalid hardware address\n"
+ msgstr "arp: adresse matriel invalide\n"
+
+-#: ../arp.c:387
++#: ../arp.c:398
+ #, c-format
+ msgid "arp: cannot open etherfile %s !\n"
+ msgstr "arp: ne peut ouvrir le fichier ether %s !\n"
+
+-#: ../arp.c:403
++#: ../arp.c:414
+ #, c-format
+ msgid "arp: format error on line %u of etherfile %s !\n"
+ msgstr "arp: erreur de format ligne %u du fichier ether %s !\n"
+
+-#: ../arp.c:416
++#: ../arp.c:427
+ #, c-format
+ msgid "arp: cannot set entry on line %u of etherfile %s !\n"
+ msgstr "arp: ne peut dfinir l'entre en ligne %u du fichier ether %s !\n"
+
+-#: ../arp.c:437
+-msgid "Address\t\t\tHWtype\tHWaddress\t Flags Mask\t\t Iface\n"
++#: ../arp.c:448
++#, fuzzy, c-format
++msgid ""
++"Address HWtype HWaddress Flags Mask "
++"Iface\n"
+ msgstr "Adresse\t\t\tTypeMap\tAdresseMat\t Indicateurs\t\t Iface\n"
+
+-#: ../arp.c:467
++#: ../arp.c:476
++#, fuzzy
++msgid "<from_interface>"
++msgstr "%s: interface inconnue: %s\n"
++
++#: ../arp.c:478
+ msgid "(incomplete)"
+ msgstr ""
+
+-#: ../arp.c:484
++#: ../arp.c:495
+ #, c-format
+ msgid "%s (%s) at "
+ msgstr ""
+
+-#: ../arp.c:490
++#: ../arp.c:501
++#, c-format
+ msgid "<incomplete> "
+ msgstr ""
+
+-#: ../arp.c:496
++#: ../arp.c:507
+ #, c-format
+ msgid "netmask %s "
+ msgstr ""
+
+-#: ../arp.c:513
++#: ../arp.c:524
+ #, c-format
+ msgid "on %s\n"
+ msgstr ""
+
+-#: ../arp.c:592
++#: ../arp.c:605
+ #, c-format
+ msgid "Entries: %d\tSkipped: %d\tFound: %d\n"
+ msgstr "Entres: %d\tIgnores: %d\tTrouves: %d\n"
+
+-#: ../arp.c:596
++#: ../arp.c:609
+ #, c-format
+ msgid "%s (%s) -- no entry\n"
+ msgstr ""
+
+-#: ../arp.c:598
++#: ../arp.c:611
+ #, c-format
+ msgid "arp: in %d entries no match found.\n"
+ msgstr "arp: aucune correspondance trouve dans %d entres\n"
+
+-#: ../arp.c:613
++#: ../arp.c:626
++#, c-format
+ msgid ""
+ "Usage:\n"
+ " arp [-vn] [<HW>] [-i <if>] [-a] [<hostname>] <-Display ARP "
+ "cache\n"
+ msgstr ""
+ "Syntaxe:\n"
+-" arp [-vn] [<MAT>] [-i <if>] [-a] [<hte>] <-Affiche cache "
+-"ARP\n"
++" arp [-vn] [<MAT>] [-i <if>] [-a] [<hte>] <-Affiche cache ARP\n"
+
+-#: ../arp.c:614
++#: ../arp.c:627
++#, fuzzy, c-format
+ msgid ""
+-" arp [-v] [-i <if>] -d <hostname> [pub][nopub] <-Delete ARP "
++" arp [-v] [-i <if>] -d <host> [pub] <-Delete ARP "
+ "entry\n"
+-msgstr ""
+-" arp [-v] [-i <if>] -d <hte> [pub][nopub] <-Supprime entre "
+-"ARP\n"
++msgstr " arp [-v] [-i <if>] -d <hte> [pub][nopub] <-Supprime entre ARP\n"
+
+-#: ../arp.c:615
+-#, fuzzy
++#: ../arp.c:628
++#, fuzzy, c-format
+ msgid ""
+-" arp [-vnD] [<HW>] [-i <if>] -f [<filename>] <-Add entry from "
++" arp [-vnD] [<HW>] [-i <if>] -f [<filename>] <-Add entry from "
+ "file\n"
+-msgstr ""
+-" arp [-vnD] [<MAT>] [-i <if>] -f <fichier> <-Ajout entre "
+-"depuis fichier\n"
++msgstr " arp [-vnD] [<MAT>] [-i <if>] -f <fichier> <-Ajout entre depuis fichier\n"
+
+-#: ../arp.c:616
++#: ../arp.c:629
++#, fuzzy, c-format
+ msgid ""
+-" arp [-v] [<HW>] [-i <if>] -s <hostname> <hwaddr> [temp][nopub] <-Add "
++" arp [-v] [<HW>] [-i <if>] -s <host> <hwaddr> [temp] <-Add "
+ "entry\n"
+-msgstr ""
+-" arp [-v] [<MAT>] [-i <if>] -s <hte> <adrmat> [temp][nopub] <-Ajout "
+-"entre\n"
++msgstr " arp [-v] [<MAT>] [-i <if>] -s <hte> <adrmat> [temp][nopub] <-Ajout entre\n"
+
+-#: ../arp.c:617
+-msgid ""
+-" arp [-v] [<HW>] [-i <if>] -s <hostname> <hwaddr> [netmask <nm>] pub "
+-"<-''-\n"
+-msgstr ""
+-" arp [-v] [<MAT>] [-i <if>] -s <hte> <adrmat> [netmask <nm>] pub "
+-"<-''-\n"
+-
+-#: ../arp.c:618
++#: ../arp.c:630
++#, fuzzy, c-format
+ msgid ""
+-" arp [-v] [<HW>] [-i <if>] -Ds <hostname> <if> [netmask <nm>] pub "
++" arp [-v] [<HW>] [-i <if>] -Ds <host> <if> [netmask <nm>] pub "
+ "<-''-\n"
+ "\n"
+ msgstr ""
+-" arp [-v] [<MAT>] [-i <if>] -Ds <hte> <if> [netmask <nm>] pub "
+-"<-''-\n"
++" arp [-v] [<MAT>] [-i <if>] -Ds <hte> <if> [netmask <nm>] pub <-''-\n"
+ "\n"
+
+-#: ../arp.c:620
++#: ../arp.c:632
++#, c-format
+ msgid ""
+ " -a display (all) hosts in alternative (BSD) "
+ "style\n"
+-msgstr ""
+-" -a affiche (tous) les htes en style BSD\n"
++msgstr " -a affiche (tous) les htes en style BSD\n"
+
+-#: ../arp.c:621
++#: ../arp.c:633
++#, c-format
+ msgid " -s, --set set a new ARP entry\n"
+ msgstr " -s, --set dfinit une nouvelle entre ARP\n"
+
+-#: ../arp.c:622
++#: ../arp.c:634
++#, c-format
+ msgid " -d, --delete delete a specified entry\n"
+ msgstr " -d, --delete supprime une entre\n"
+
+-#: ../arp.c:623 ../netstat.c:1436 ../route.c:85
++#: ../arp.c:635 ../netstat.c:1503 ../route.c:86
++#, c-format
+ msgid " -v, --verbose be verbose\n"
+ msgstr " -v, --verbose mode verbeux\n"
+
+-#: ../arp.c:624 ../netstat.c:1437 ../route.c:86
+-msgid " -n, --numeric dont resolve names\n"
++#: ../arp.c:636 ../netstat.c:1504 ../route.c:87
++#, fuzzy, c-format
++msgid " -n, --numeric don't resolve names\n"
+ msgstr " -n, --numeric ne rsout pas les noms\n"
+
+-#: ../arp.c:625
++#: ../arp.c:637
++#, c-format
+ msgid ""
+ " -i, --device specify network interface (e.g. eth0)\n"
+-msgstr ""
+-" -i, --device spcifie l'interface rseau (p.ex. eth0)\n"
++msgstr " -i, --device spcifie l'interface rseau (p.ex. eth0)\n"
+
+-#: ../arp.c:626
++#: ../arp.c:638
++#, c-format
+ msgid " -D, --use-device read <hwaddr> from given device\n"
+-msgstr ""
+-" -D, --use-device lit l'<adrmat> depuis le priphrique\n"
++msgstr " -D, --use-device lit l'<adrmat> depuis le priphrique\n"
+
+-#: ../arp.c:627
+-#, fuzzy
++#: ../arp.c:639
++#, fuzzy, c-format
+ msgid " -A, -p, --protocol specify protocol family\n"
+ msgstr " -r, --route affiche la table de routage\n"
+
+-#: ../arp.c:628
+-#, fuzzy
++#: ../arp.c:640
++#, fuzzy, c-format
+ msgid ""
+-" -f, --file read new entries from file or from "
+-"/etc/ethers\n"
++" -f, --file read new entries from file or from /etc/"
++"ethers\n"
+ "\n"
+ msgstr ""
+ " -f, --file lit les nouvelles entres dans le fichier\n"
+ "\n"
+
+-#: ../arp.c:630 ../rarp.c:181
++#: ../arp.c:642 ../rarp.c:182
+ #, c-format
+ msgid " <HW>=Use '-H <hw>' to specify hardware address type. Default: %s\n"
+-msgstr ""
+-" <HW>=Utilisez '-H <hw>' pour spcifier le type d'adresse matriel. Dfaut: "
+-"%s\n"
++msgstr " <HW>=Utilisez '-H <hw>' pour spcifier le type d'adresse matriel. Dfaut: %s\n"
+
+-#: ../arp.c:631 ../rarp.c:182
++#: ../arp.c:643 ../rarp.c:183
++#, c-format
+ msgid " List of possible hardware types (which support ARP):\n"
+ msgstr " Liste les types de matriels supportant ARP:\n"
+
+-#: ../arp.c:664
++#: ../arp.c:677 ../arp.c:762
+ #, c-format
+ msgid "%s: hardware type not supported!\n"
+ msgstr "%s: type de mattiel non support !\n"
+
+-#: ../arp.c:668
++#: ../arp.c:681
+ #, c-format
+ msgid "%s: address family not supported!\n"
+ msgstr "%s: famille d'adresses non supporte !\n"
+
+-#: ../arp.c:703
+-#, fuzzy
++#: ../arp.c:716
++#, fuzzy, c-format
+ msgid "arp: -N not yet supported.\n"
+ msgstr "Table de routage pour `ddp' pas encore support.\n"
+
+-#: ../arp.c:713
++#: ../arp.c:726
+ #, c-format
+ msgid "arp: %s: unknown address family.\n"
+ msgstr "arp: %s: famille d'adresses inconnue.\n"
+
+-#: ../arp.c:722
++#: ../arp.c:735
+ #, c-format
+ msgid "arp: %s: unknown hardware type.\n"
+ msgstr "arp: %s: type de matriel inconnu.\n"
+
+-#: ../arp.c:741
++#: ../arp.c:754
+ #, c-format
+ msgid "arp: %s: kernel only supports 'inet'.\n"
+ msgstr "arp: %s: le noyau ne supporte que 'inet'.\n"
+
+-#: ../arp.c:746
++#: ../arp.c:767
+ #, c-format
+ msgid "arp: %s: hardware type without ARP support.\n"
+ msgstr "arp: %s: type de matriel sans support ARP.\n"
+
+-#: ../hostname.c:69
++#: ../hostname.c:71
+ #, c-format
+ msgid "Setting nodename to `%s'\n"
+ msgstr "Dfinit le nom de noeud `%s'\n"
+
+-#: ../hostname.c:74
++#: ../hostname.c:76
+ #, c-format
+ msgid "%s: you must be root to change the node name\n"
+ msgstr "%s: vous devez tre root pour changer le nom de noeud\n"
+
+-#: ../hostname.c:77 ../hostname.c:97 ../hostname.c:116
++#: ../hostname.c:79 ../hostname.c:99 ../hostname.c:117
+ #, c-format
+ msgid "%s: name too long\n"
+ msgstr "%s: nom trop long\n"
+
+-#: ../hostname.c:89
++#: ../hostname.c:91
+ #, c-format
+ msgid "Setting hostname to `%s'\n"
+ msgstr "Dfinit le nom d'hte `%s'\n"
+
+-#: ../hostname.c:94
++#: ../hostname.c:96
+ #, c-format
+ msgid "%s: you must be root to change the host name\n"
+ msgstr "%s: vous devez tre root pour changer le nom d'hte\n"
+
+-#: ../hostname.c:108
++#: ../hostname.c:109
+ #, c-format
+ msgid "Setting domainname to `%s'\n"
+ msgstr "Dfinit le nom de domaine `%s'\n"
+
+-#: ../hostname.c:113
++#: ../hostname.c:114
+ #, c-format
+ msgid "%s: you must be root to change the domain name\n"
+ msgstr "%s: vous devez tre root pour changer le nom de domaine\n"
+@@ -303,38 +308,36 @@
+ msgid "Result: h_addr_list=`%s'\n"
+ msgstr "Rsultat : h_addr_list=`%s'\n"
+
+-#: ../hostname.c:209
++#: ../hostname.c:208
+ #, c-format
+ msgid "%s: can't open `%s'\n"
+ msgstr "%s: ne peut ouvrir `%s'\n"
+
+-#: ../hostname.c:223
++#: ../hostname.c:222
++#, c-format
+ msgid "Usage: hostname [-v] {hostname|-F file} set hostname (from file)\n"
+-msgstr ""
+-"Syntaxe : hostname [-v] {hte|-F fichier} dfinit le nom d'hte (depuis "
+-"le fichier)\n"
++msgstr "Syntaxe : hostname [-v] {hte|-F fichier} dfinit le nom d'hte (depuis le fichier)\n"
+
+-#: ../hostname.c:224
++#: ../hostname.c:223
++#, c-format
+ msgid ""
+ " domainname [-v] {nisdomain|-F file} set NIS domainname (from file)\n"
+-msgstr ""
+-" domainname [-v] {domaine_nis|-F fichier} dfinit le domaine NIS "
+-"(depuis le fichier)\n"
++msgstr " domainname [-v] {domaine_nis|-F fichier} dfinit le domaine NIS (depuis le fichier)\n"
+
+-#: ../hostname.c:226
+-#, fuzzy
++#: ../hostname.c:225
++#, fuzzy, c-format
+ msgid ""
+ " nodename [-v] {nodename|-F file} set DECnet node name (from "
+ "file)\n"
+-msgstr ""
+-" nodename [-v] {nom_noeud|-F fichier} Dfinit le nom de noeud "
+-"DECnet (depuis le fichier)\n"
++msgstr " nodename [-v] {nom_noeud|-F fichier} Dfinit le nom de noeud DECnet (depuis le fichier)\n"
+
+-#: ../hostname.c:228
++#: ../hostname.c:227
++#, c-format
+ msgid " hostname [-v] [-d|-f|-s|-a|-i|-y|-n] display formatted name\n"
+ msgstr " hostname [-v] [-d|-f|-s|-a|-i|-y|-n] affiche le nom formatt\n"
+
+-#: ../hostname.c:229
++#: ../hostname.c:228
++#, c-format
+ msgid ""
+ " hostname [-v] display hostname\n"
+ "\n"
+@@ -342,7 +345,8 @@
+ " hostname [-v] affiche le nom d'hte\n"
+ "\n"
+
+-#: ../hostname.c:230
++#: ../hostname.c:229
++#, c-format
+ msgid ""
+ " hostname -V|--version|-h|--help print info and exit\n"
+ "\n"
+@@ -350,7 +354,8 @@
+ " hostname -V|--version|-h|--help affiche des infos et termine\n"
+ "\n"
+
+-#: ../hostname.c:231
++#: ../hostname.c:230
++#, c-format
+ msgid ""
+ " dnsdomainname=hostname -d, {yp,nis,}domainname=hostname -y\n"
+ "\n"
+@@ -358,45 +363,52 @@
+ " dnsdomainname=hostname -d, {yp,nis,}domainname=hostname -y\n"
+ "\n"
+
+-#: ../hostname.c:232
++#: ../hostname.c:231
++#, c-format
+ msgid " -s, --short short host name\n"
+ msgstr " -s, --short nom d'hte court\n"
+
+-#: ../hostname.c:233
++#: ../hostname.c:232
++#, c-format
+ msgid " -a, --alias alias names\n"
+ msgstr " -a, --alias noms d'alias\n"
+
+-#: ../hostname.c:234
++#: ../hostname.c:233
++#, c-format
+ msgid " -i, --ip-address addresses for the hostname\n"
+ msgstr " -i, --ip-address adresses de l'hte\n"
+
+-#: ../hostname.c:235
++#: ../hostname.c:234
++#, c-format
+ msgid " -f, --fqdn, --long long host name (FQDN)\n"
+ msgstr " -f, --fqdn, --long nom d'hte long (FQDN)\n"
+
+-#: ../hostname.c:236
++#: ../hostname.c:235
++#, c-format
+ msgid " -d, --domain DNS domain name\n"
+ msgstr " -d, --domain nom de domaine DNS\n"
+
+-#: ../hostname.c:237
++#: ../hostname.c:236
++#, c-format
+ msgid " -y, --yp, --nis NIS/YP domainname\n"
+ msgstr " -y, --yp, --nis nom de domaine NIS/YP\n"
+
+-#: ../hostname.c:239
++#: ../hostname.c:238
++#, c-format
+ msgid " -n, --node DECnet node name\n"
+ msgstr " -n, --node nom de noeud DECnet\n"
+
+-#: ../hostname.c:241
+-#, fuzzy
++#: ../hostname.c:240
++#, fuzzy, c-format
+ msgid ""
+ " -F, --file read hostname or NIS domainname from given file\n"
+ "\n"
+ msgstr ""
+-" -F, --file lit le nom d'hte ou le nom de domaine NIS depuis "
+-"le fichier\n"
++" -F, --file lit le nom d'hte ou le nom de domaine NIS depuis le fichier\n"
+ "\n"
+
+-#: ../hostname.c:243
++#: ../hostname.c:242
++#, c-format
+ msgid ""
+ " This command can read or set the hostname or the NIS domainname. You can\n"
+ " also read the DNS domain or the FQDN (fully qualified domain name).\n"
+@@ -411,15 +423,16 @@
+ msgstr "%s: Vous ne pouvez changer le nom de domaine DNS avec cette commande\n"
+
+ #: ../hostname.c:339
++#, c-format
+ msgid ""
+ "\n"
+ "Unless you are using bind or NIS for host lookups you can change the DNS\n"
+ msgstr ""
+ "\n"
+-"Sauf si vous utilisez bind ou NIS pour les recherches d'htes, vous pouvez "
+-"changer le\n"
++"Sauf si vous utilisez bind ou NIS pour les recherches d'htes, vous pouvez changer le\n"
+
+ #: ../hostname.c:340
++#, c-format
+ msgid "domain name (which is part of the FQDN) in the /etc/hosts file.\n"
+ msgstr ""
+ "nom de domaine DNS (qui fait partie du FQDN) dans le fichier /etc/hosts.\n"
+@@ -439,554 +452,453 @@
+ msgid "getnodename()=`%s'\n"
+ msgstr "getnodename()=`%s'\n"
+
+-#: ../ifconfig.c:159
+-#, c-format
+-msgid "%-9.9s Link encap:%s "
+-msgstr "%-9.9s Lien encap:%s "
++#: ../ifconfig.c:107
++#, fuzzy, c-format
++msgid ""
++"Iface MTU Met RX-OK RX-ERR RX-DRP RX-OVR TX-OK TX-ERR TX-DRP TX-OVR "
++"Flg\n"
++msgstr ""
++"Iface MTU Met RX-OK RX-ERR RX-DRP RX-OVR TX-OK TX-ERR TX-DRP TX-OVR "
++"Indic\n"
+
+-#: ../ifconfig.c:164
+-#, c-format
+-msgid "HWaddr %s "
+-msgstr "HWaddr %s "
++#: ../ifconfig.c:129 ../ifconfig.c:161
++#, fuzzy, c-format
++msgid "%s: ERROR while getting interface flags: %s\n"
++msgstr "%s: erreur lors de la recherche d'infos sur l'interface: %s\n"
+
+-#: ../ifconfig.c:167
++#: ../ifconfig.c:153 ../ifconfig.c:185 ../ifconfig.c:771 ../ifconfig.c:862
++#: ../ifconfig.c:973
+ #, c-format
+-msgid "Media:%s"
+-msgstr "Media:%s"
++msgid "No support for INET on this system.\n"
++msgstr "Pas de support de INET sur ce systme.\n"
+
+-#: ../ifconfig.c:169
+-msgid "(auto)"
+-msgstr "(auto)"
++#: ../ifconfig.c:193
++#, fuzzy, c-format
++msgid "%s: ERROR while testing interface flags: %s\n"
++msgstr "%s: erreur lors de la recherche d'infos sur l'interface: %s\n"
+
+-#: ../ifconfig.c:176
+-#, c-format
+-msgid " %s addr:%s "
+-msgstr " %s adr:%s "
++#: ../ifconfig.c:202
++#, fuzzy, c-format
++msgid ""
++"Usage:\n"
++" ifconfig [-a] [-v] [-s] <interface> [[<AF>] <address>]\n"
++msgstr ""
++"Syntaxe:\n"
++" ifconfig [-a] [-i] [-v] <interface> [[<AF>] <adresse>]\n"
+
+-#: ../ifconfig.c:179
++#: ../ifconfig.c:204
+ #, c-format
+-msgid " P-t-P:%s "
+-msgstr " P-t-P:%s "
++msgid " [add <address>[/<prefixlen>]]\n"
++msgstr " [add <adresse>[/<lg_prefixe>]]\n"
+
+-#: ../ifconfig.c:182
++#: ../ifconfig.c:205
+ #, c-format
+-msgid " Bcast:%s "
+-msgstr " Bcast:%s "
++msgid " [del <address>[/<prefixlen>]]\n"
++msgstr " [del <adresse>[/<lg_prefixe>]]\n"
+
+-#: ../ifconfig.c:184
++#: ../ifconfig.c:206
+ #, c-format
+-msgid " Mask:%s\n"
+-msgstr " Masque:%s\n"
++msgid " [[-]broadcast [<address>]] [[-]pointopoint [<address>]]\n"
++msgstr " [[-]broadcast [<adresse>]] [[-]pointopoint [<adresse>]]\n"
+
+-#: ../ifconfig.c:201
+-#, c-format
+-msgid " inet6 addr: %s/%d"
+-msgstr " adr inet6: %s/%d"
++#: ../ifconfig.c:207
++#, fuzzy, c-format
++msgid " [netmask <address>] [dstaddr <address>] [tunnel <address>]\n"
++msgstr " [netmask <adresse>] [dstaddr <adresse>] [tunnel <adresse>]\n"
+
+-#: ../ifconfig.c:203
+-msgid " Scope:"
+-msgstr " Scope:"
++#: ../ifconfig.c:210
++#, c-format
++msgid " [outfill <NN>] [keepalive <NN>]\n"
++msgstr " [outfill <NN>] [keepalive <NN>]\n"
+
+-#: ../ifconfig.c:206
+-msgid "Global"
+-msgstr "Global"
++#: ../ifconfig.c:212
++#, c-format
++msgid " [hw <HW> <address>] [metric <NN>] [mtu <NN>]\n"
++msgstr " [hw <HW> <adresse>] [metric <NN>] [mtu <NN>]\n"
+
+-#: ../ifconfig.c:209
+-msgid "Link"
+-msgstr "Lien"
++#: ../ifconfig.c:213
++#, c-format
++msgid " [[-]trailers] [[-]arp] [[-]allmulti]\n"
++msgstr " [[-]trailers] [[-]arp] [[-]allmulti]\n"
+
+-#: ../ifconfig.c:212
+-msgid "Site"
+-msgstr "Site"
++#: ../ifconfig.c:214
++#, c-format
++msgid " [multicast] [[-]promisc]\n"
++msgstr " [multicast] [[-]promisc]\n"
+
+ #: ../ifconfig.c:215
+-msgid "Compat"
+-msgstr "Compat"
++#, c-format
++msgid " [mem_start <NN>] [io_addr <NN>] [irq <NN>] [media <type>]\n"
++msgstr " [mem_start <NN>] [io_addr <NN>] [irq <NN>] [media <type>]\n"
+
+-#: ../ifconfig.c:218
+-msgid "Host"
+-msgstr "Hte"
++#: ../ifconfig.c:217
++#, fuzzy, c-format
++msgid " [txqueuelen <NN>]\n"
++msgstr " [txqueuelen longueur]\n"
+
+-#: ../ifconfig.c:221
+-msgid "Unknown"
+-msgstr "Inconnu"
++#: ../ifconfig.c:220
++#, c-format
++msgid " [[-]dynamic]\n"
++msgstr " [[-]dynamic]\n"
+
+-#: ../ifconfig.c:236
++#: ../ifconfig.c:222
+ #, c-format
+-msgid " IPX/Ethernet II addr:%s\n"
+-msgstr " adr IPX/Ethernet II:%s\n"
++msgid ""
++" [up|down] ...\n"
++"\n"
++msgstr ""
++" [up|down] ...\n"
++"\n"
+
+-#: ../ifconfig.c:239
++#: ../ifconfig.c:224
+ #, c-format
+-msgid " IPX/Ethernet SNAP addr:%s\n"
+-msgstr " adr IPX/Ethernet SNAP:%s\n"
++msgid " <HW>=Hardware Type.\n"
++msgstr " <HW>=Type de matriel.\n"
+
+-#: ../ifconfig.c:242
++#: ../ifconfig.c:225
+ #, c-format
+-msgid " IPX/Ethernet 802.2 addr:%s\n"
+-msgstr " adr IPX/Ethernet 802.2:%s\n"
++msgid " List of possible hardware types:\n"
++msgstr " Liste des types de matriels possibles:\n"
+
+-#: ../ifconfig.c:245
++#. 1 = ARPable
++#: ../ifconfig.c:227
+ #, c-format
+-msgid " IPX/Ethernet 802.3 addr:%s\n"
+-msgstr " adr IPX/Ethernet 802.3:%s\n"
++msgid " <AF>=Address family. Default: %s\n"
++msgstr " <AF>=famille d'Adresses. Dfaut: %s\n"
+
+-#: ../ifconfig.c:255
++#: ../ifconfig.c:228
+ #, c-format
+-msgid " EtherTalk Phase 2 addr:%s\n"
+-msgstr " adr EtherTalk Phase 2:%s\n"
++msgid " List of possible address families:\n"
++msgstr " Liste des familles d'adresses possibles:\n"
+
+-#: ../ifconfig.c:264
++#: ../ifconfig.c:303
+ #, c-format
+-msgid " econet addr:%s\n"
+-msgstr " adr econet:%s\n"
++msgid "ifconfig: option `%s' not recognised.\n"
++msgstr ""
+
+-#: ../ifconfig.c:270
+-msgid "[NO FLAGS] "
+-msgstr "[PAS INDICATEURS] "
++#: ../ifconfig.c:305 ../ifconfig.c:962
++#, c-format
++msgid "ifconfig: `--help' gives usage information.\n"
++msgstr ""
+
+-#: ../ifconfig.c:272
+-msgid "UP "
+-msgstr "UP "
++#: ../ifconfig.c:380
++#, c-format
++msgid "Unknown media type.\n"
++msgstr "Type de mdia inconnu.\n"
+
+-#: ../ifconfig.c:274
+-msgid "BROADCAST "
+-msgstr "BROADCAST "
++#: ../ifconfig.c:417
++#, c-format
++msgid ""
++"Warning: Interface %s still in promisc mode... maybe other application is "
++"running?\n"
++msgstr ""
+
+-#: ../ifconfig.c:276
+-msgid "DEBUG "
+-msgstr "DEBUG "
++#: ../ifconfig.c:429
++#, c-format
++msgid "Warning: Interface %s still in MULTICAST mode.\n"
++msgstr ""
+
+-#: ../ifconfig.c:278
+-msgid "LOOPBACK "
+-msgstr "LOOPBACK "
++#: ../ifconfig.c:441
++#, c-format
++msgid "Warning: Interface %s still in ALLMULTI mode.\n"
++msgstr ""
+
+-#: ../ifconfig.c:280
+-msgid "POINTOPOINT "
+-msgstr "POINTOPOINT "
++#: ../ifconfig.c:465
++#, c-format
++msgid "Warning: Interface %s still in DYNAMIC mode.\n"
++msgstr ""
+
+-#: ../ifconfig.c:282
+-msgid "NOTRAILERS "
+-msgstr "NOTRAILERS "
++#: ../ifconfig.c:523
++#, c-format
++msgid "Warning: Interface %s still in BROADCAST mode.\n"
++msgstr ""
+
+-#: ../ifconfig.c:284
+-msgid "RUNNING "
+-msgstr "RUNNING "
++#: ../ifconfig.c:652
++#, c-format
++msgid "Warning: Interface %s still in POINTOPOINT mode.\n"
++msgstr ""
+
+-#: ../ifconfig.c:286
+-msgid "NOARP "
+-msgstr "NOARP "
++#: ../ifconfig.c:684
++#, c-format
++msgid "hw address type `%s' has no handler to set address. failed.\n"
++msgstr ""
+
+-#: ../ifconfig.c:288
+-msgid "PROMISC "
+-msgstr "PROMISC "
++#: ../ifconfig.c:693
++#, c-format
++msgid "%s: invalid %s address.\n"
++msgstr "%s: adresse %s invalide.\n"
+
+-#: ../ifconfig.c:290
+-msgid "ALLMULTI "
+-msgstr "ALLMULTI "
+-
+-#: ../ifconfig.c:292
+-msgid "SLAVE "
+-msgstr "SLAVE "
+-
+-#: ../ifconfig.c:294
+-msgid "MASTER "
+-msgstr "MASTER "
+-
+-#: ../ifconfig.c:296
+-msgid "MULTICAST "
+-msgstr "MULTICAST "
+-
+-#: ../ifconfig.c:299
+-msgid "DYNAMIC "
+-msgstr "DYNAMIC "
+-
+-#: ../ifconfig.c:302
+-#, c-format
+-msgid " MTU:%d Metric:%d"
+-msgstr " MTU:%d Metric:%d"
+-
+-#: ../ifconfig.c:306
+-#, c-format
+-msgid " Outfill:%d Keepalive:%d"
+-msgstr " Outfill:%d Keepalive:%d"
+-
+-#: ../ifconfig.c:320
+-#, c-format
+-msgid "RX packets:%lu errors:%lu dropped:%lu overruns:%lu frame:%lu\n"
+-msgstr "Paquets Reus:%lu erreurs:%lu jets:%lu dbordements:%lu trames:%lu\n"
+-
+-#: ../ifconfig.c:325
+-#, c-format
+-msgid " compressed:%lu\n"
+-msgstr " compresss:%lu\n"
+-
+-#: ../ifconfig.c:329
+-#, c-format
+-msgid "TX packets:%lu errors:%lu dropped:%lu overruns:%lu carrier:%lu\n"
+-msgstr ""
+-"Paquets transmis:%lu erreurs:%lu jets:%lu dbordements:%lu carrier:%lu\n"
+-
+-#: ../ifconfig.c:333
++#: ../ifconfig.c:737 ../ifconfig.c:827 ../ifconfig.c:913
+ #, c-format
+-msgid " collisions:%lu "
+-msgstr " collisions:%lu "
+-
+-#: ../ifconfig.c:335
+-#, c-format
+-msgid "compressed:%lu "
+-msgstr "compresss:%lu "
+-
+-#: ../ifconfig.c:337
+-#, c-format
+-msgid "txqueuelen:%d "
+-msgstr "lg file transmission:%d "
+-
+-#: ../ifconfig.c:345
+-#, c-format
+-msgid "Interrupt:%d "
+-msgstr "Interruption:%d "
+-
+-#. Only print devices using it for
+-#. I/O maps
+-#: ../ifconfig.c:348
+-#, c-format
+-msgid "Base address:0x%x "
+-msgstr "Adresse de base:0x%x "
+-
+-#: ../ifconfig.c:350
+-#, c-format
+-msgid "Memory:%lx-%lx "
+-msgstr "Mmoire:%lx-%lx "
+-
+-#: ../ifconfig.c:353
+-#, c-format
+-msgid "DMA chan:%x "
+-msgstr "Canal DMA:%x "
++msgid "No support for INET6 on this system.\n"
++msgstr "Pas de support de INET6 sur ce systme.\n"
+
+-#: ../ifconfig.c:384 ../ifconfig.c:405
++#: ../ifconfig.c:780 ../ifconfig.c:871
+ #, c-format
+-msgid "%s: unknown interface: %s\n"
+-msgstr "%s: interface inconnue: %s\n"
+-
+-#: ../ifconfig.c:421
+-msgid ""
+-"Usage:\n"
+-" ifconfig [-a] [-i] [-v] <interface> [[<AF>] <address>]\n"
+-msgstr ""
+-"Syntaxe:\n"
+-" ifconfig [-a] [-i] [-v] <interface> [[<AF>] <adresse>]\n"
+-
+-#: ../ifconfig.c:425
+-msgid " [add <address>[/<prefixlen>]]\n"
+-msgstr " [add <adresse>[/<lg_prefixe>]]\n"
+-
+-#: ../ifconfig.c:427
+-msgid " [del <address>[/<prefixlen>]]\n"
+-msgstr " [del <adresse>[/<lg_prefixe>]]\n"
+-
+-#: ../ifconfig.c:432
+-msgid " [[-]broadcast [<address>]] [[-]pointopoint [<address>]]\n"
+-msgstr " [[-]broadcast [<adresse>]] [[-]pointopoint [<adresse>]]\n"
+-
+-#: ../ifconfig.c:433
+-#, fuzzy
+-msgid " [netmask <address>] [dstaddr <address>] [tunnel <address>]\n"
+-msgstr " [netmask <adresse>] [dstaddr <adresse>] [tunnel <adresse>]\n"
+-
+-#: ../ifconfig.c:436
+-msgid " [outfill <NN>] [keepalive <NN>]\n"
+-msgstr " [outfill <NN>] [keepalive <NN>]\n"
+-
+-#: ../ifconfig.c:438
+-msgid " [hw <HW> <address>] [metric <NN>] [mtu <NN>]\n"
+-msgstr " [hw <HW> <adresse>] [metric <NN>] [mtu <NN>]\n"
+-
+-#: ../ifconfig.c:439
+-msgid " [[-]trailers] [[-]arp] [[-]allmulti]\n"
+-msgstr " [[-]trailers] [[-]arp] [[-]allmulti]\n"
+-
+-#: ../ifconfig.c:440
+-msgid " [multicast] [[-]promisc]\n"
+-msgstr " [multicast] [[-]promisc]\n"
+-
+-#: ../ifconfig.c:441
+-msgid " [mem_start <NN>] [io_addr <NN>] [irq <NN>] [media <type>]\n"
+-msgstr " [mem_start <NN>] [io_addr <NN>] [irq <NN>] [media <type>]\n"
+-
+-#: ../ifconfig.c:443
+-#, fuzzy
+-msgid " [txqueuelen <NN>]\n"
+-msgstr " [txqueuelen longueur]\n"
+-
+-#: ../ifconfig.c:446
+-msgid " [[-]dynamic]\n"
+-msgstr " [[-]dynamic]\n"
+-
+-#: ../ifconfig.c:448
+-msgid ""
+-" [up|down] ...\n"
+-"\n"
++msgid "Interface %s not initialized\n"
+ msgstr ""
+-" [up|down] ...\n"
+-"\n"
+-
+-#: ../ifconfig.c:450
+-msgid " <HW>=Hardware Type.\n"
+-msgstr " <HW>=Type de matriel.\n"
+-
+-#: ../ifconfig.c:451
+-msgid " List of possible hardware types:\n"
+-msgstr " Liste des types de matriels possibles:\n"
+-
+-#. 1 = ARPable
+-#: ../ifconfig.c:453
+-#, c-format
+-msgid " <AF>=Address family. Default: %s\n"
+-msgstr " <AF>=famille d'Adresses. Dfaut: %s\n"
+-
+-#: ../ifconfig.c:454
+-msgid " List of possible address families:\n"
+-msgstr " Liste des familles d'adresses possibles:\n"
+-
+-#: ../ifconfig.c:593
+-msgid "Unknown media type.\n"
+-msgstr "Type de mdia inconnu.\n"
+
+-#: ../ifconfig.c:881
+-#, c-format
+-msgid "%s: invalid %s address.\n"
++#: ../ifconfig.c:792 ../ifconfig.c:882
++#, fuzzy, c-format
++msgid "Bad address.\n"
+ msgstr "%s: adresse %s invalide.\n"
+
+-#: ../ifconfig.c:920 ../ifconfig.c:963 ../ifconfig.c:1011
+-msgid "No support for INET6 on this system.\n"
+-msgstr "Pas de support de INET6 sur ce systme.\n"
+-
+-#: ../ifconfig.c:983
++#: ../ifconfig.c:885
++#, c-format
+ msgid "Address deletion not supported on this system.\n"
+ msgstr "Suppression d'adresses pas support par ce systme.\n"
+
+-#: ../ifconfig.c:1066
+-msgid "No support for INET on this system.\n"
+-msgstr "Pas de support de INET sur ce systme.\n"
++#: ../ifconfig.c:957
++#, fuzzy, c-format
++msgid "ifconfig: Cannot set address for this protocol family.\n"
++msgstr "Ne sait pas comment dfinir les adresses pour la famille %d.\n"
+
+-#: ../ifconfig.c:1076
++#: ../ifconfig.c:983
++#, c-format
+ msgid "No support for ECONET on this system.\n"
+ msgstr "Pas de support de ECONET sur ce systme.\n"
+
+-#: ../ifconfig.c:1084
++#: ../ifconfig.c:991
+ #, c-format
+ msgid "Don't know how to set addresses for family %d.\n"
+ msgstr "Ne sait pas comment dfinir les adresses pour la famille %d.\n"
+
+-#: ../netstat.c:383
++#: ../ifconfig.c:1021
++#, c-format
++msgid "WARNING: at least one error occured. (%d)\n"
++msgstr ""
++
++#: ../netstat.c:434
+ #, c-format
+ msgid ""
+ "(No info could be read for \"-p\": geteuid()=%d but you should be root.)\n"
+-msgstr ""
+-"(Pas d'infos lues pour \"-p\": geteuid()=%d mais vous devez tre root.)\n"
++msgstr "(Pas d'infos lues pour \"-p\": geteuid()=%d mais vous devez tre root.)\n"
+
+-#: ../netstat.c:387
++#: ../netstat.c:438
++#, c-format
+ msgid ""
+ "(Not all processes could be identified, non-owned process info\n"
+ " will not be shown, you would have to be root to see it all.)\n"
+ msgstr ""
+ "(Tous les processus ne peuvent tre identifis, les infos sur les processus\n"
+-"non possds ne seront pas affiches, vous devez tre root pour les voir "
+-"toutes.)\n"
++"non possds ne seront pas affiches, vous devez tre root pour les voir toutes.)\n"
+
+-#: ../netstat.c:394 ../netstat.c:1089 ../netstat.c:1166
++#: ../netstat.c:445 ../netstat.c:1189 ../netstat.c:1266
+ msgid "LISTENING"
+ msgstr "LISTENING"
+
+-#: ../netstat.c:395
++#: ../netstat.c:446
+ msgid "CONN SENT"
+ msgstr "CONN SENT"
+
+-#: ../netstat.c:396 ../netstat.c:1168
++#: ../netstat.c:447 ../netstat.c:1268
+ msgid "DISC SENT"
+ msgstr "DISC SENT"
+
+-#: ../netstat.c:397 ../netstat.c:464 ../netstat.c:809 ../netstat.c:1169
++#: ../netstat.c:448 ../netstat.c:515 ../netstat.c:904 ../netstat.c:1269
+ msgid "ESTABLISHED"
+ msgstr "ESTABLISHED"
+
+-#: ../netstat.c:419
++#: ../netstat.c:470
++#, c-format
+ msgid "Active NET/ROM sockets\n"
+ msgstr "sockets NET/ROM actives\n"
+
+-#: ../netstat.c:420
++#: ../netstat.c:471
++#, c-format
+ msgid ""
+-"User Dest Source Device State Vr/Vs Send-Q "
+-"Recv-Q\n"
++"User Dest Source Device State Vr/Vs Send-Q Recv-"
++"Q\n"
+ msgstr ""
+-"Utilisatr Dest Source Periph Etat Vr/Vs Send-Q "
+-"Recv-Q\n"
++"Utilisatr Dest Source Periph Etat Vr/Vs Send-Q Recv-"
++"Q\n"
+
+-#: ../netstat.c:430 ../netstat.c:1208
++#: ../netstat.c:481 ../netstat.c:1308
+ #, c-format
+ msgid "Problem reading data from %s\n"
+ msgstr ""
+
+-#: ../netstat.c:465
++#: ../netstat.c:516
+ msgid "SYN_SENT"
+ msgstr "SYN_SENT"
+
+-#: ../netstat.c:466
++#: ../netstat.c:517
+ msgid "SYN_RECV"
+ msgstr "SYN_RECV"
+
+-#: ../netstat.c:467
++#: ../netstat.c:518
+ msgid "FIN_WAIT1"
+ msgstr "FIN_WAIT1"
+
+-#: ../netstat.c:468
++#: ../netstat.c:519
+ msgid "FIN_WAIT2"
+ msgstr "FIN_WAIT2"
+
+-#: ../netstat.c:469
++#: ../netstat.c:520
+ msgid "TIME_WAIT"
+ msgstr "TIME_WAIT"
+
+-#: ../netstat.c:470
++#: ../netstat.c:521
+ msgid "CLOSE"
+ msgstr "CLOSE"
+
+-#: ../netstat.c:471
++#: ../netstat.c:522
+ msgid "CLOSE_WAIT"
+ msgstr "CLOSE_WAIT"
+
+-#: ../netstat.c:472
++#: ../netstat.c:523
+ msgid "LAST_ACK"
+ msgstr "LAST_ACK"
+
+-#: ../netstat.c:473
++#: ../netstat.c:524
+ msgid "LISTEN"
+ msgstr "LISTEN"
+
+-#: ../netstat.c:474
++#: ../netstat.c:525
+ msgid "CLOSING"
+ msgstr "CLOSING"
+
+-#: ../netstat.c:544
++#: ../netstat.c:596
+ #, c-format
+ msgid "warning, got bogus igmp6 line %d.\n"
+ msgstr "attention, ligne igmp6 en erreur %d.\n"
+
+-#: ../netstat.c:549 ../netstat.c:587 ../netstat.c:670 ../netstat.c:803
+-#: ../netstat.c:935 ../netstat.c:940
++#: ../netstat.c:601 ../netstat.c:639 ../netstat.c:763 ../netstat.c:898
++#: ../netstat.c:1032 ../netstat.c:1037
+ #, c-format
+ msgid "netstat: unsupported address family %d !\n"
+ msgstr "netstat: famille d'adresses pas supporte %d !\n"
+
+-#: ../netstat.c:562 ../netstat.c:567 ../netstat.c:575 ../netstat.c:582
++#: ../netstat.c:614 ../netstat.c:619 ../netstat.c:627 ../netstat.c:634
+ #, c-format
+ msgid "warning, got bogus igmp line %d.\n"
+ msgstr "attention, ligne igmp6 en erreur %d.\n"
+
+-#: ../netstat.c:666
++#: ../netstat.c:677
++#, fuzzy, c-format
++msgid "Active X.25 sockets\n"
++msgstr "Sockets AX.25 actives\n"
++
++#. IMHO, Vr/Vs is not very usefull --SF
++#: ../netstat.c:679
++#, fuzzy, c-format
++msgid ""
++"Dest Source Device LCI State Vr/Vs Send-Q Recv-"
++"Q\n"
++msgstr "Dest Source Periph Etat Vr/Vs Send-Q Recv-Q\n"
++
++#: ../netstat.c:759
++#, c-format
+ msgid "warning, got bogus tcp line.\n"
+ msgstr "attention, ligne tcp en erreur.\n"
+
+-#: ../netstat.c:704 ../netstat.c:855 ../netstat.c:975
++#: ../netstat.c:800 ../netstat.c:953 ../netstat.c:1075
+ #, c-format
+ msgid "off (0.00/%ld/%d)"
+ msgstr "off (0.00/%ld/%d)"
+
+-#: ../netstat.c:708
++#: ../netstat.c:804
+ #, fuzzy, c-format
+ msgid "on (%2.2f/%ld/%d)"
+ msgstr "on%d (%2.2f/%ld/%d)"
+
+-#: ../netstat.c:713
++#: ../netstat.c:809
+ #, fuzzy, c-format
+ msgid "keepalive (%2.2f/%ld/%d)"
+ msgstr "on%d (%2.2f/%ld/%d)"
+
+-#: ../netstat.c:718
++#: ../netstat.c:814
+ #, fuzzy, c-format
+ msgid "timewait (%2.2f/%ld/%d)"
+ msgstr "on%d (%2.2f/%ld/%d)"
+
+-#: ../netstat.c:723 ../netstat.c:864 ../netstat.c:985
++#: ../netstat.c:819 ../netstat.c:962 ../netstat.c:1085
+ #, c-format
+ msgid "unkn-%d (%2.2f/%ld/%d)"
+ msgstr "unkn-%d (%2.2f/%ld/%d)"
+
+-#: ../netstat.c:799
++#: ../netstat.c:894
++#, c-format
+ msgid "warning, got bogus udp line.\n"
+ msgstr "attention, ligne udp en erreur.\n"
+
+-#: ../netstat.c:817 ../netstat.c:1075 ../netstat.c:1108
++#: ../netstat.c:912 ../netstat.c:1175 ../netstat.c:1208
+ msgid "UNKNOWN"
+ msgstr "INCONNU"
+
+-#: ../netstat.c:860 ../netstat.c:980
++#: ../netstat.c:958 ../netstat.c:1080
+ #, c-format
+ msgid "on%d (%2.2f/%ld/%d)"
+ msgstr "on%d (%2.2f/%ld/%d)"
+
+-#: ../netstat.c:949
++#: ../netstat.c:1046
++#, c-format
+ msgid "warning, got bogus raw line.\n"
+ msgstr "attention, ligne raw en erreur.\n"
+
+-#: ../netstat.c:1028
++#: ../netstat.c:1128
++#, c-format
+ msgid "warning, got bogus unix line.\n"
+ msgstr "attention, ligne unix en erreur.\n"
+
+-#: ../netstat.c:1055
++#: ../netstat.c:1155
+ msgid "STREAM"
+ msgstr "STREAM"
+
+-#: ../netstat.c:1059
++#: ../netstat.c:1159
+ msgid "DGRAM"
+ msgstr "DGRAM"
+
+-#: ../netstat.c:1063
++#: ../netstat.c:1163
+ msgid "RAW"
+ msgstr "RAW"
+
+-#: ../netstat.c:1067
++#: ../netstat.c:1167
+ msgid "RDM"
+ msgstr "RDM"
+
+-#: ../netstat.c:1071
++#: ../netstat.c:1171
+ msgid "SEQPACKET"
+ msgstr "SEQPACKET"
+
+-#: ../netstat.c:1080
++#: ../netstat.c:1180
+ msgid "FREE"
+ msgstr "LIBRE"
+
+-#: ../netstat.c:1096
++#: ../netstat.c:1196
+ msgid "CONNECTING"
+ msgstr "ENCONNEXION"
+
+-#: ../netstat.c:1100
++#: ../netstat.c:1200
+ msgid "CONNECTED"
+ msgstr "CONNECTE"
+
+-#: ../netstat.c:1104
++#: ../netstat.c:1204
+ msgid "DISCONNECTING"
+ msgstr "ENDECONNEXION"
+
+-#: ../netstat.c:1135
++#: ../netstat.c:1235
++#, c-format
+ msgid "Active UNIX domain sockets "
+ msgstr "Sockets du domaine UNIX actives"
+
+-#: ../netstat.c:1137 ../netstat.c:1666
++#: ../netstat.c:1237 ../netstat.c:1756
++#, c-format
+ msgid "(servers and established)"
+ msgstr "(serveurs et tablies)"
+
+-#: ../netstat.c:1140 ../netstat.c:1669
++#: ../netstat.c:1240 ../netstat.c:1759
++#, c-format
+ msgid "(only servers)"
+ msgstr "(seulement serveurs)"
+
+-#: ../netstat.c:1142 ../netstat.c:1671
++#: ../netstat.c:1242 ../netstat.c:1761
++#, c-format
+ msgid "(w/o servers)"
+ msgstr "(sans serveurs)"
+
+-#: ../netstat.c:1145
++#: ../netstat.c:1245
++#, c-format
+ msgid ""
+ "\n"
+ "Proto RefCnt Flags Type State I-Node"
+@@ -994,32 +906,36 @@
+ "\n"
+ "Proto RefCpt Indicatrs Type Etat I-Node"
+
+-#: ../netstat.c:1147
++#: ../netstat.c:1247
++#, c-format
+ msgid " Path\n"
+ msgstr " Chemin\n"
+
+-#: ../netstat.c:1167
++#: ../netstat.c:1267
+ msgid "SABM SENT"
+ msgstr "SABM SENT"
+
+-#: ../netstat.c:1170
++#: ../netstat.c:1270
+ msgid "RECOVERY"
+ msgstr "RECOVERY"
+
+-#: ../netstat.c:1184
++#: ../netstat.c:1284
++#, c-format
+ msgid "Active AX.25 sockets\n"
+ msgstr "Sockets AX.25 actives\n"
+
+-#: ../netstat.c:1185
++#: ../netstat.c:1285
++#, c-format
+ msgid "Dest Source Device State Vr/Vs Send-Q Recv-Q\n"
+ msgstr "Dest Source Periph Etat Vr/Vs Send-Q Recv-Q\n"
+
+-#: ../netstat.c:1228
++#: ../netstat.c:1328
+ #, c-format
+ msgid "problem reading data from %s\n"
+ msgstr ""
+
+-#: ../netstat.c:1279
++#: ../netstat.c:1379
++#, c-format
+ msgid ""
+ "Active IPX sockets\n"
+ "Proto Recv-Q Send-Q Local Address Foreign Address "
+@@ -1029,55 +945,53 @@
+ "Proto Recv-Q Send-Q Adresse locale Adresse distante "
+ "Etat"
+
+-#: ../netstat.c:1281
++#: ../netstat.c:1381
++#, c-format
+ msgid " User"
+ msgstr "Utilisatr"
+
+-#: ../netstat.c:1315
++#: ../netstat.c:1415
+ msgid "ESTAB"
+ msgstr "ESTAB"
+
+-#: ../netstat.c:1323
++#: ../netstat.c:1423
+ msgid "UNK."
+ msgstr "UNK."
+
+-#: ../netstat.c:1367
+-msgid " - no statistics available -"
+-msgstr ""
+-
+-#: ../netstat.c:1370
+-msgid "[NO FLAGS]"
+-msgstr "[PAS INDICATEURS]"
+-
+-#: ../netstat.c:1400
++#: ../netstat.c:1461
++#, c-format
+ msgid "Kernel Interface table\n"
+ msgstr "Table d'interfaces noyau\n"
+
+-#: ../netstat.c:1401
++#: ../netstat.c:1465
++#, fuzzy, c-format
+ msgid ""
+-"Iface MTU Met RX-OK RX-ERR RX-DRP RX-OVR TX-OK TX-ERR TX-DRP TX-OVR "
++"Iface MTU Met RX-OK RX-ERR RX-DRP RX-OVR TX-OK TX-ERR TX-DRP TX-OVR "
+ "Flg\n"
+ msgstr ""
+ "Iface MTU Met RX-OK RX-ERR RX-DRP RX-OVR TX-OK TX-ERR TX-DRP TX-OVR "
+ "Indic\n"
+
+-#: ../netstat.c:1404
++#: ../netstat.c:1469
+ msgid "missing interface information"
+ msgstr "informations d'interface manquantes"
+
+-#: ../netstat.c:1425
++#: ../netstat.c:1492
++#, c-format
+ msgid ""
+-"usage: netstat [-veenNcCF] [<Af>] -r netstat "
+-"{-V|--version|-h|--help}\n"
++"usage: netstat [-veenNcCF] [<Af>] -r netstat {-V|--version|-h|--"
++"help}\n"
+ msgstr ""
+-"syntaxe: netstat [-veenNcCF] [<Af>] -r netstat "
+-"{-V|--version|-h|--help}\n"
++"syntaxe: netstat [-veenNcCF] [<Af>] -r netstat {-V|--version|-h|--"
++"help}\n"
+
+-#: ../netstat.c:1426
++#: ../netstat.c:1493
++#, c-format
+ msgid " netstat [-vnNcaeol] [<Socket> ...]\n"
+ msgstr " netstat [-vnNcaeol] [<Socket> ...]\n"
+
+-#: ../netstat.c:1427
++#: ../netstat.c:1494
++#, c-format
+ msgid ""
+ " netstat { [-veenNac] -i | [-cnNe] -M | -s }\n"
+ "\n"
+@@ -1085,27 +999,30 @@
+ " netstat { [-veenNac] -i | [-cnNe] -M | -s }\n"
+ "\n"
+
+-#: ../netstat.c:1429
++#: ../netstat.c:1496
++#, c-format
+ msgid " -r, --route display routing table\n"
+ msgstr " -r, --route affiche la table de routage\n"
+
+-#: ../netstat.c:1430
++#: ../netstat.c:1497
++#, c-format
+ msgid " -i, --interfaces display interface table\n"
+ msgstr " -i, --interfaces affiche la table d'interfaces\n"
+
+-#: ../netstat.c:1431
++#: ../netstat.c:1498
++#, c-format
+ msgid " -g, --groups display multicast group memberships\n"
+ msgstr ""
+ " -g, --groups affiche les membres d'un groupe multicast\n"
+
+-#: ../netstat.c:1432
++#: ../netstat.c:1499
++#, c-format
+ msgid ""
+ " -s, --statistics display networking statistics (like SNMP)\n"
+-msgstr ""
+-" -s, --statistics affiche les statistiques rseau (comme "
+-"SNMP)\n"
++msgstr " -s, --statistics affiche les statistiques rseau (comme SNMP)\n"
+
+-#: ../netstat.c:1434
++#: ../netstat.c:1501
++#, c-format
+ msgid ""
+ " -M, --masquerade display masqueraded connections\n"
+ "\n"
+@@ -1113,23 +1030,41 @@
+ " -M, --masquerade affiche les connexions masques\n"
+ "\n"
+
+-#: ../netstat.c:1438 ../route.c:87
++#: ../netstat.c:1505
++#, fuzzy, c-format
++msgid " --numeric-hosts don't resolve host names\n"
++msgstr " -n, --numeric ne rsout pas les noms\n"
++
++#: ../netstat.c:1506
++#, fuzzy, c-format
++msgid " --numeric-ports don't resolve port names\n"
++msgstr " -n, --numeric ne rsout pas les noms\n"
++
++#: ../netstat.c:1507
++#, fuzzy, c-format
++msgid " --numeric-users don't resolve user names\n"
++msgstr " -n, --numeric ne rsout pas les noms\n"
++
++#: ../netstat.c:1508
++#, c-format
+ msgid " -N, --symbolic resolve hardware names\n"
+ msgstr " -N, --symbolic rsoud les noms matriels\n"
+
+-#: ../netstat.c:1439 ../route.c:88
+-#, fuzzy
++#: ../netstat.c:1509 ../route.c:88
++#, fuzzy, c-format
+ msgid " -e, --extend display other/more information\n"
+ msgstr ""
+ " -e, --extend affiche d'autres/plus d'informations\n"
+
+-#: ../netstat.c:1440
++#: ../netstat.c:1510
++#, c-format
+ msgid " -p, --programs display PID/Program name for sockets\n"
+ msgstr ""
+ " -p, --programs affiche le nom du programme/PID des "
+ "sockets\n"
+
+-#: ../netstat.c:1441
++#: ../netstat.c:1511
++#, c-format
+ msgid ""
+ " -c, --continuous continuous listing\n"
+ "\n"
+@@ -1137,32 +1072,31 @@
+ " -c, --continuous listing continu\n"
+ "\n"
+
+-#: ../netstat.c:1442
++#: ../netstat.c:1512
++#, c-format
+ msgid " -l, --listening display listening server sockets\n"
+-msgstr ""
+-" -l, --listening affiche les sockets du serveur l'coute\n"
++msgstr " -l, --listening affiche les sockets du serveur l'coute\n"
+
+-#: ../netstat.c:1443
++#: ../netstat.c:1513
++#, c-format
+ msgid ""
+ " -a, --all, --listening display all sockets (default: connected)\n"
+-msgstr ""
+-" -a, --all, --listening affiche toutes les prises (dfaut: "
+-"connects)\n"
++msgstr " -a, --all, --listening affiche toutes les prises (dfaut: connects)\n"
+
+-#: ../netstat.c:1444
++#: ../netstat.c:1514
++#, c-format
+ msgid " -o, --timers display timers\n"
+ msgstr " -o, --timers affiche les timers\n"
+
+-#: ../netstat.c:1445 ../route.c:89
+-#, fuzzy
++#: ../netstat.c:1515 ../route.c:89
++#, fuzzy, c-format
+ msgid ""
+ " -F, --fib display Forwarding Information Base "
+ "(default)\n"
+-msgstr ""
+-" -F, --fib affiche la Forwarding Infomation Base "
+-"(dfaut)\n"
++msgstr " -F, --fib affiche la Forwarding Infomation Base (dfaut)\n"
+
+-#: ../netstat.c:1446 ../route.c:90
++#: ../netstat.c:1516 ../route.c:90
++#, c-format
+ msgid ""
+ " -C, --cache display routing cache instead of FIB\n"
+ "\n"
+@@ -1170,110 +1104,118 @@
+ " -C, --cache affiche le cache de routage au lieu de FIB\n"
+ "\n"
+
+-#: ../netstat.c:1448
++#: ../netstat.c:1518
++#, c-format
+ msgid ""
+-" <Socket>={-t|--tcp} {-u|--udp} {-w|--raw} {-x|--unix} --ax25 --ipx "
+-"--netrom\n"
++" <Socket>={-t|--tcp} {-u|--udp} {-w|--raw} {-x|--unix} --ax25 --ipx --"
++"netrom\n"
+ msgstr ""
+-" <Socket>={-t|--tcp} {-u|--udp} {-w|--raw} {-x|--unix} --ax25 --ipx "
+-"--netrom\n"
++" <Socket>={-t|--tcp} {-u|--udp} {-w|--raw} {-x|--unix} --ax25 --ipx --"
++"netrom\n"
+
+-#: ../netstat.c:1449 ../route.c:92
+-#, c-format
+-msgid " <AF>=Use '-A <af>' or '--<af>' Default: %s\n"
++#: ../netstat.c:1519
++#, fuzzy, c-format
++msgid " <AF>=Use '-6|-4' or '-A <af>' or '--<af>'; default: %s\n"
+ msgstr " <AF>=Utiliser '-A <af>' ou '--<af>' Dfaut: %s\n"
+
+-#: ../netstat.c:1450 ../route.c:93
++#: ../netstat.c:1520 ../route.c:93
++#, c-format
+ msgid " List of possible address families (which support routing):\n"
+ msgstr " Liste les familles d'adresses possibles (supportant le routage):\n"
+
+-#: ../netstat.c:1663
++#: ../netstat.c:1753
++#, c-format
+ msgid "Active Internet connections "
+ msgstr "Connexions Internet actives "
+
+-#: ../netstat.c:1673
++#: ../netstat.c:1763
++#, c-format
+ msgid ""
+ "\n"
+-"Proto Recv-Q Send-Q Local Address Foreign Address State "
+-" "
++"Proto Recv-Q Send-Q Local Address Foreign Address "
++"State "
+ msgstr ""
+ "\n"
+-"Proto Recv-Q Send-Q Adresse locale Adresse distante Etat "
+-" "
++"Proto Recv-Q Send-Q Adresse locale Adresse distante "
++"Etat "
+
+-#: ../netstat.c:1675
++#: ../netstat.c:1765
++#, c-format
+ msgid " User Inode "
+ msgstr " Utilisatr Inode "
+
+-#: ../netstat.c:1678
++#: ../netstat.c:1768
++#, c-format
+ msgid " Timer"
+ msgstr " Timer"
+
+-#: ../netstat.c:1708
++#: ../netstat.c:1798
++#, c-format
+ msgid "IPv4 Group Memberships\n"
+ msgstr ""
+
+-#: ../netstat.c:1709
++#: ../netstat.c:1799
++#, c-format
+ msgid "Interface RefCnt Group\n"
+ msgstr ""
+
+-#: ../rarp.c:43
++#: ../rarp.c:44
+ msgid "This kernel does not support RARP.\n"
+ msgstr "Ce noyau ne supporte pas RARP.\n"
+
+-#: ../rarp.c:82
++#: ../rarp.c:83
+ #, c-format
+ msgid "no RARP entry for %s.\n"
+ msgstr "pas d'entre RARP pour %s.\n"
+
+-#: ../rarp.c:95
++#: ../rarp.c:96
+ #, c-format
+ msgid "%s: bad hardware address\n"
+ msgstr "%s: mauvaise adresse matriel\n"
+
+-#: ../rarp.c:127
++#: ../rarp.c:128
+ #, c-format
+ msgid "rarp: cannot open file %s:%s.\n"
+ msgstr "rarp: ne peut ouvrir le fichier %s:%s.\n"
+
+-#: ../rarp.c:139
++#: ../rarp.c:140
+ #, c-format
+ msgid "rarp: format error at %s:%u\n"
+ msgstr "rarp: erreur de format %s:%u\n"
+
+-#: ../rarp.c:143 ../rarp.c:287
++#: ../rarp.c:144 ../rarp.c:289
+ #, c-format
+ msgid "rarp: %s: unknown host\n"
+ msgstr "rarp: %s: hte inconnu\n"
+
+-#: ../rarp.c:146
++#: ../rarp.c:147
+ #, c-format
+ msgid "rarp: cannot set entry from %s:%u\n"
+ msgstr "rarp: ne peut dfinir l'entre depuis %s:%u\n"
+
+-#: ../rarp.c:175
++#: ../rarp.c:176
++#, c-format
+ msgid "Usage: rarp -a list entries in cache.\n"
+-msgstr ""
+-"Usage: rarp -a liste les entres en cache.\n"
++msgstr "Usage: rarp -a liste les entres en cache.\n"
+
+-#: ../rarp.c:176
++#: ../rarp.c:177
++#, c-format
+ msgid " rarp -d <hostname> delete entry from cache.\n"
+-msgstr ""
+-" rarp -d <hostname> supprime l'entre du cache.\n"
++msgstr " rarp -d <hostname> supprime l'entre du cache.\n"
+
+-#: ../rarp.c:177
++#: ../rarp.c:178
++#, c-format
+ msgid " rarp [<HW>] -s <hostname> <hwaddr> add entry to cache.\n"
+-msgstr ""
+-" rarp [<HW>] -s <hostname> <adrmat> ajoute l'entre au cache.\n"
++msgstr " rarp [<HW>] -s <hostname> <adrmat> ajoute l'entre au cache.\n"
+
+-#: ../rarp.c:178
++#: ../rarp.c:179
++#, c-format
+ msgid ""
+ " rarp -f add entries from /etc/ethers.\n"
+-msgstr ""
+-" rarp -f ajoute les entres depuis "
+-"/etc/ethers.\n"
++msgstr " rarp -f ajoute les entres depuis /etc/ethers.\n"
+
+-#: ../rarp.c:179
++#: ../rarp.c:180
++#, c-format
+ msgid ""
+ " rarp -V display program version.\n"
+ "\n"
+@@ -1281,24 +1223,26 @@
+ " rarp -V affiche la version.\n"
+ "\n"
+
+-#: ../rarp.c:236
++#: ../rarp.c:238
+ #, c-format
+ msgid "%s: illegal option mix.\n"
+ msgstr "%s: combinaison d'options illgales.\n"
+
+-#: ../rarp.c:267
++#: ../rarp.c:269
+ #, c-format
+ msgid "rarp: %s: unknown hardware type.\n"
+ msgstr "rarp: %s: type de matriel inconnu.\n"
+
+-#: ../route.c:79
++#: ../route.c:80
++#, c-format
+ msgid ""
+ "Usage: route [-nNvee] [-FC] [<AF>] List kernel routing tables\n"
+ msgstr ""
+ "Syntaxe: route [-nNvee] [-FC] [<AF>] Liste les tables de routage "
+ "noyau\n"
+
+-#: ../route.c:80
++#: ../route.c:81
++#, c-format
+ msgid ""
+ " route [-v] [-FC] {add|del|flush} ... Modify routing table for AF.\n"
+ "\n"
+@@ -1307,15 +1251,15 @@
+ "pour AF.\n"
+ "\n"
+
+-#: ../route.c:82
++#: ../route.c:83
++#, c-format
+ msgid ""
+ " route {-h|--help} [<AF>] Detailed usage syntax for "
+ "specified AF.\n"
+-msgstr ""
+-" route {-h|--help} [<AF>] Utilisation dtaille pour l'AF "
+-"spcifi.\n"
++msgstr " route {-h|--help} [<AF>] Utilisation dtaille pour l'AF spcifi.\n"
+
+-#: ../route.c:83
++#: ../route.c:84
++#, c-format
+ msgid ""
+ " route {-V|--version} Display version/author and "
+ "exit.\n"
+@@ -1325,16 +1269,23 @@
+ "termine.\n"
+ "\n"
+
++#: ../route.c:92
++#, fuzzy, c-format
++msgid " <AF>=Use '-A <af>' or '--<af>'; default: %s\n"
++msgstr " <AF>=Utiliser '-A <af>' ou '--<af>' Dfaut: %s\n"
++
+ #: ../plipconfig.c:66
++#, c-format
+ msgid "Usage: plipconfig [-a] [-i] [-v] interface\n"
+ msgstr "Syntaxe: plipconfig [-a] [-i] [-v] interface\n"
+
+ #: ../plipconfig.c:67
++#, c-format
+ msgid " [nibble NN] [trigger NN]\n"
+ msgstr " [nibble NN] [trigger NN]\n"
+
+ #: ../plipconfig.c:68
+-#, fuzzy
++#, fuzzy, c-format
+ msgid " plipconfig -V | --version\n"
+ msgstr " plipconfig -V\n"
+
+@@ -1343,474 +1294,763 @@
+ msgid "%s\tnibble %lu trigger %lu\n"
+ msgstr "%s\tnibble %lu trigger %lu\n"
+
+-#: ../iptunnel.c:79
++#: ../iptunnel.c:85
++#, c-format
+ msgid "Usage: iptunnel { add | change | del | show } [ NAME ]\n"
+ msgstr ""
+
+-#: ../iptunnel.c:80
++#: ../iptunnel.c:86
++#, c-format
+ msgid ""
+ " [ mode { ipip | gre | sit } ] [ remote ADDR ] [ local ADDR ]\n"
+ msgstr ""
+
+-#: ../iptunnel.c:81
++#: ../iptunnel.c:87
++#, c-format
+ msgid " [ [i|o]seq ] [ [i|o]key KEY ] [ [i|o]csum ]\n"
+ msgstr ""
+
+-#: ../iptunnel.c:82
++#: ../iptunnel.c:88
++#, c-format
+ msgid " [ ttl TTL ] [ tos TOS ] [ nopmtudisc ] [ dev PHYS_DEV ]\n"
+ msgstr ""
+
+-#: ../iptunnel.c:83
++#: ../iptunnel.c:89
++#, c-format
+ msgid ""
+ " iptunnel -V | --version\n"
+ "\n"
+ msgstr ""
+
+-#: ../iptunnel.c:84
++#: ../iptunnel.c:90
++#, c-format
+ msgid "Where: NAME := STRING\n"
+ msgstr ""
+
+-#: ../iptunnel.c:85
++#: ../iptunnel.c:91
++#, c-format
+ msgid " ADDR := { IP_ADDRESS | any }\n"
+ msgstr ""
+
+-#: ../iptunnel.c:86
++#: ../iptunnel.c:92
++#, c-format
+ msgid " TOS := { NUMBER | inherit }\n"
+ msgstr ""
+
+-#: ../iptunnel.c:87
++#: ../iptunnel.c:93
++#, c-format
+ msgid " TTL := { 1..255 | inherit }\n"
+ msgstr ""
+
+-#: ../iptunnel.c:88
++#: ../iptunnel.c:94
++#, c-format
+ msgid " KEY := { DOTTED_QUAD | NUMBER }\n"
+ msgstr ""
+
+-#: ../iptunnel.c:326
++#: ../iptunnel.c:332
++#, c-format
+ msgid "Keys are not allowed with ipip and sit.\n"
+ msgstr ""
+
+-#: ../iptunnel.c:346
++#: ../iptunnel.c:352
++#, c-format
+ msgid "Broadcast tunnel requires a source address.\n"
+ msgstr ""
+
+-#: ../iptunnel.c:361
++#: ../iptunnel.c:367
++#, c-format
+ msgid "ttl != 0 and noptmudisc are incompatible\n"
+ msgstr ""
+
+-#: ../iptunnel.c:373
++#: ../iptunnel.c:379
++#, c-format
+ msgid "cannot determine tunnel mode (ipip, gre or sit)\n"
+ msgstr ""
+
+-#: ../iptunnel.c:411
++#: ../iptunnel.c:417
+ #, c-format
+ msgid "%s: %s/ip remote %s local %s "
+ msgstr ""
+
+-#: ../iptunnel.c:415
++#: ../iptunnel.c:421
+ #, fuzzy
+ msgid "unknown"
+ msgstr "Inconnu"
+
+-#: ../iptunnel.c:447
++#: ../iptunnel.c:453
++#, c-format
+ msgid " Drop packets out of sequence.\n"
+ msgstr ""
+
+-#: ../iptunnel.c:449
++#: ../iptunnel.c:455
++#, c-format
+ msgid " Checksum in received packet is required.\n"
+ msgstr ""
+
+-#: ../iptunnel.c:451
++#: ../iptunnel.c:457
++#, c-format
+ msgid " Sequence packets on output.\n"
+ msgstr ""
+
+-#: ../iptunnel.c:453
++#: ../iptunnel.c:459
++#, c-format
+ msgid " Checksum output packets.\n"
+ msgstr ""
+
+-#: ../iptunnel.c:481
++#: ../iptunnel.c:487
++#, c-format
+ msgid "Wrong format of /proc/net/dev. Sorry.\n"
+ msgstr ""
+
+-#: ../iptunnel.c:494
++#: ../iptunnel.c:500
+ #, c-format
+ msgid "Failed to get type of [%s]\n"
+ msgstr ""
+
+-#: ../iptunnel.c:510
++#: ../iptunnel.c:516
++#, c-format
+ msgid "RX: Packets Bytes Errors CsumErrs OutOfSeq Mcasts\n"
+ msgstr ""
+
+-#: ../iptunnel.c:513
++#: ../iptunnel.c:519
++#, c-format
+ msgid "TX: Packets Bytes Errors DeadLoop NoRoute NoBufs\n"
+ msgstr ""
+
+-#: ../statistics.c:45
++#: ../statistics.c:47
+ msgid "ICMP input histogram:"
+ msgstr "Histogramme d'entre ICMP"
+
+-#: ../statistics.c:46
++#: ../statistics.c:48
+ msgid "ICMP output histogram:"
+ msgstr "Histogramme de sortie ICMP"
+
+-#: ../statistics.c:63
++#: ../statistics.c:65
+ #, c-format
+ msgid "Forwarding is %s"
+ msgstr "Racheminement est %s"
+
+-#: ../statistics.c:64
+-#, c-format
+-msgid "Default TTL is %d"
++#: ../statistics.c:66
++#, fuzzy, c-format
++msgid "Default TTL is %u"
+ msgstr "TTL par dfaut est %d"
+
+-#: ../statistics.c:65
+-#, c-format
+-msgid "%d total packets received"
++#: ../statistics.c:67
++#, fuzzy, c-format
++msgid "%u total packets received"
+ msgstr "%d paquets totaux reus"
+
+-#: ../statistics.c:66
+-#, c-format
+-msgid "%d with invalid headers"
++#: ../statistics.c:68
++#, fuzzy, c-format
++msgid "%u with invalid headers"
+ msgstr "%d avec en-tte invalides"
+
+-#: ../statistics.c:67
+-#, c-format
+-msgid "%d with invalid addresses"
++#: ../statistics.c:69
++#, fuzzy, c-format
++msgid "%u with invalid addresses"
+ msgstr "%d avec adresses invalides"
+
+-#: ../statistics.c:68
+-#, c-format
+-msgid "%d forwarded"
++#: ../statistics.c:70
++#, fuzzy, c-format
++msgid "%u forwarded"
+ msgstr "%d rachemines"
+
+-#: ../statistics.c:69
+-#, c-format
+-msgid "%d with unknown protocol"
++#: ../statistics.c:71
++#, fuzzy, c-format
++msgid "%u with unknown protocol"
+ msgstr "%d avec protocole inconnu"
+
+-#: ../statistics.c:70
+-#, c-format
+-msgid "%d incoming packets discarded"
++#: ../statistics.c:72
++#, fuzzy, c-format
++msgid "%u incoming packets discarded"
+ msgstr "%d paquets entrant jets"
+
+-#: ../statistics.c:71
+-#, c-format
+-msgid "%d incoming packets delivered"
++#: ../statistics.c:73
++#, fuzzy, c-format
++msgid "%u incoming packets delivered"
+ msgstr "%d paquets entrant dlivrs"
+
+-#: ../statistics.c:72
+-#, c-format
+-msgid "%d requests sent out"
++#: ../statistics.c:74
++#, fuzzy, c-format
++msgid "%u requests sent out"
+ msgstr "%d requtes envoyes"
+
+ #. ?
+-#: ../statistics.c:73
+-#, c-format
+-msgid "%d outgoing packets dropped"
++#: ../statistics.c:75
++#, fuzzy, c-format
++msgid "%u outgoing packets dropped"
+ msgstr "%d paquets sortant jets"
+
+-#: ../statistics.c:74
+-#, c-format
+-msgid "%d dropped because of missing route"
++#: ../statistics.c:76
++#, fuzzy, c-format
++msgid "%u dropped because of missing route"
+ msgstr "%d jets pour cause de route manquante"
+
+-#: ../statistics.c:75
+-#, c-format
+-msgid "%d fragments dropped after timeout"
++#: ../statistics.c:77
++#, fuzzy, c-format
++msgid "%u fragments dropped after timeout"
+ msgstr "%d fragments jets aprs timeout"
+
+-#: ../statistics.c:76
+-#, c-format
+-msgid "%d reassemblies required"
++#: ../statistics.c:78
++#, fuzzy, c-format
++msgid "%u reassemblies required"
+ msgstr "%d ncessitant un rassemblage"
+
+ #. ?
+-#: ../statistics.c:77
+-#, c-format
+-msgid "%d packets reassembled ok"
++#: ../statistics.c:79
++#, fuzzy, c-format
++msgid "%u packets reassembled ok"
+ msgstr "%d paquets rassembls correctement"
+
+-#: ../statistics.c:78
+-#, c-format
+-msgid "%d packet reassembles failed"
++#: ../statistics.c:80
++#, fuzzy, c-format
++msgid "%u packet reassembles failed"
+ msgstr "%d paquets mal rassembls"
+
+-#: ../statistics.c:79
+-#, c-format
+-msgid "%d fragments received ok"
++#: ../statistics.c:81
++#, fuzzy, c-format
++msgid "%u fragments received ok"
+ msgstr "%d fragments reus correctement"
+
+-#: ../statistics.c:80
+-#, c-format
+-msgid "%d fragments failed"
++#: ../statistics.c:82
++#, fuzzy, c-format
++msgid "%u fragments failed"
+ msgstr "%d fragments en chec"
+
+-#: ../statistics.c:81
+-#, c-format
+-msgid "%d fragments created"
++#: ../statistics.c:83
++#, fuzzy, c-format
++msgid "%u fragments created"
+ msgstr "%d fragments crs"
+
+-#: ../statistics.c:86
+-#, c-format
+-msgid "%d ICMP messages received"
++#: ../statistics.c:88
++#, fuzzy, c-format
++msgid "%u ICMP messages received"
+ msgstr "%d messages ICMP reus"
+
+-#: ../statistics.c:87
+-#, c-format
+-msgid "%d input ICMP message failed."
++#: ../statistics.c:89
++#, fuzzy, c-format
++msgid "%u input ICMP message failed."
+ msgstr "%d messages d'entre ICMP en chec"
+
+-#: ../statistics.c:88 ../statistics.c:101
+-#, c-format
+-msgid "destination unreachable: %d"
++#: ../statistics.c:90 ../statistics.c:103
++#, fuzzy, c-format
++msgid "destination unreachable: %u"
+ msgstr "destination injoignable: %d"
+
+-#: ../statistics.c:89
+-#, c-format
+-msgid "timeout in transit: %d"
++#: ../statistics.c:91
++#, fuzzy, c-format
++msgid "timeout in transit: %u"
+ msgstr "timeout en transmission: %d"
+
+-#: ../statistics.c:90 ../statistics.c:103
+-#, c-format
+-msgid "wrong parameters: %d"
++#: ../statistics.c:92 ../statistics.c:105
++#, fuzzy, c-format
++msgid "wrong parameters: %u"
+ msgstr "mauvais paramtre: %d"
+
+ #. ?
+-#: ../statistics.c:91
+-#, c-format
+-msgid "source quenchs: %d"
++#: ../statistics.c:93
++#, fuzzy, c-format
++msgid "source quenches: %u"
+ msgstr "Source Quenchs: %d"
+
+-#: ../statistics.c:92
+-#, c-format
+-msgid "redirects: %d"
++#: ../statistics.c:94
++#, fuzzy, c-format
++msgid "redirects: %u"
+ msgstr "Redirections: %d"
+
+-#: ../statistics.c:93
+-#, c-format
+-msgid "echo requests: %d"
++#: ../statistics.c:95
++#, fuzzy, c-format
++msgid "echo requests: %u"
+ msgstr "requtes echo: %d"
+
+-#: ../statistics.c:94 ../statistics.c:107
+-#, c-format
+-msgid "echo replies: %d"
++#: ../statistics.c:96 ../statistics.c:109
++#, fuzzy, c-format
++msgid "echo replies: %u"
+ msgstr "rponses echo: %d"
+
+-#: ../statistics.c:95
+-#, c-format
+-msgid "timestamp request: %d"
++#: ../statistics.c:97
++#, fuzzy, c-format
++msgid "timestamp request: %u"
+ msgstr "requtes dates: %d"
+
+-#: ../statistics.c:96
+-#, c-format
+-msgid "timestamp reply: %d"
++#: ../statistics.c:98
++#, fuzzy, c-format
++msgid "timestamp reply: %u"
+ msgstr "rponses dates: %d"
+
+-#: ../statistics.c:97
+-#, c-format
+-msgid "address mask request: %d"
++#: ../statistics.c:99
++#, fuzzy, c-format
++msgid "address mask request: %u"
+ msgstr "requtes de masque d'adresse: %d"
+
+ #. ?
+-#: ../statistics.c:98
+-msgid "address mask replies"
+-msgstr "rponses de masque d'adresses"
++#: ../statistics.c:100 ../statistics.c:113
++#, fuzzy, c-format
++msgid "address mask replies: %u"
++msgstr "rponses de masque d'adresse: %d"
+
+ #. ?
+-#: ../statistics.c:99
+-#, c-format
+-msgid "%d ICMP messages sent"
++#: ../statistics.c:101
++#, fuzzy, c-format
++msgid "%u ICMP messages sent"
+ msgstr "%d messages ICMP envoys"
+
+-#: ../statistics.c:100
+-#, c-format
+-msgid "%d ICMP messages failed"
++#: ../statistics.c:102
++#, fuzzy, c-format
++msgid "%u ICMP messages failed"
+ msgstr "%d messages ICMP en chec"
+
+-#: ../statistics.c:102
+-#, c-format
+-msgid "time exceeded: %d"
++#: ../statistics.c:104
++#, fuzzy, c-format
++msgid "time exceeded: %u"
+ msgstr "temps dpass: %d"
+
+ #. ?
+-#: ../statistics.c:104
+-#, c-format
+-msgid "source quench: %d"
++#: ../statistics.c:106
++#, fuzzy, c-format
++msgid "source quench: %u"
+ msgstr "Source Quench: %d"
+
+-#: ../statistics.c:105
+-#, c-format
+-msgid "redirect: %d"
++#: ../statistics.c:107
++#, fuzzy, c-format
++msgid "redirect: %u"
+ msgstr "redirection: %d"
+
+-#: ../statistics.c:106
+-#, c-format
+-msgid "echo request: %d"
++#: ../statistics.c:108
++#, fuzzy, c-format
++msgid "echo request: %u"
+ msgstr "requte echo: %d"
+
+-#: ../statistics.c:108
+-#, c-format
+-msgid "timestamp requests: %d"
++#: ../statistics.c:110
++#, fuzzy, c-format
++msgid "timestamp requests: %u"
+ msgstr "requtes dates: %d"
+
+-#: ../statistics.c:109
+-#, c-format
+-msgid "timestamp replies: %d"
++#: ../statistics.c:111
++#, fuzzy, c-format
++msgid "timestamp replies: %u"
+ msgstr "rponses dates: %d"
+
+-#: ../statistics.c:110
+-#, c-format
+-msgid "address mask requests: %d"
++#: ../statistics.c:112
++#, fuzzy, c-format
++msgid "address mask requests: %u"
+ msgstr "requtes de masque d'adresse: %d"
+
+-#: ../statistics.c:111
+-#, c-format
+-msgid "address mask replies: %d"
+-msgstr "rponses de masque d'adresse: %d"
+-
+-#: ../statistics.c:116
++#: ../statistics.c:118
+ #, c-format
+ msgid "RTO algorithm is %s"
+ msgstr "algorithme RTO est %s"
+
+-#: ../statistics.c:120
+-#, c-format
+-msgid "%d active connections openings"
++#: ../statistics.c:122
++#, fuzzy, c-format
++msgid "%u active connections openings"
+ msgstr "%d ouvertures de connexions actives"
+
+-#: ../statistics.c:121
+-#, c-format
+-msgid "%d passive connection openings"
++#: ../statistics.c:123
++#, fuzzy, c-format
++msgid "%u passive connection openings"
+ msgstr "%d ouvertures de connexions passives"
+
+-#: ../statistics.c:122
+-#, c-format
+-msgid "%d failed connection attempts"
++#: ../statistics.c:124
++#, fuzzy, c-format
++msgid "%u failed connection attempts"
+ msgstr "%d tentatives de connexion choues"
+
+-#: ../statistics.c:123
+-#, c-format
+-msgid "%d connection resets received"
++#: ../statistics.c:125
++#, fuzzy, c-format
++msgid "%u connection resets received"
+ msgstr "%d rinitialisations de connexions reues"
+
+-#: ../statistics.c:124
+-#, c-format
+-msgid "%d connections established"
++#: ../statistics.c:126
++#, fuzzy, c-format
++msgid "%u connections established"
+ msgstr "%d connexions tablies"
+
+-#: ../statistics.c:125
+-#, c-format
+-msgid "%d segments received"
++#: ../statistics.c:127
++#, fuzzy, c-format
++msgid "%u segments received"
+ msgstr "%d segments reus"
+
+-#: ../statistics.c:126
+-#, c-format
+-msgid "%d segments send out"
++#: ../statistics.c:128
++#, fuzzy, c-format
++msgid "%u segments send out"
+ msgstr "%d segments envoys"
+
+-#: ../statistics.c:127
+-#, c-format
+-msgid "%d segments retransmited"
++#: ../statistics.c:129
++#, fuzzy, c-format
++msgid "%u segments retransmited"
+ msgstr "%d segments retransmis"
+
+-#: ../statistics.c:128
+-#, c-format
+-msgid "%d bad segments received."
++#: ../statistics.c:130
++#, fuzzy, c-format
++msgid "%u bad segments received."
+ msgstr "%d mauvais segments reus."
+
+-#: ../statistics.c:129
+-#, c-format
+-msgid "%d resets sent"
++#: ../statistics.c:131
++#, fuzzy, c-format
++msgid "%u resets sent"
+ msgstr "%d rinitialisations envoyes"
+
+-#: ../statistics.c:134
+-#, c-format
+-msgid "%d packets received"
++#: ../statistics.c:136
++#, fuzzy, c-format
++msgid "%u packets received"
+ msgstr "%d paquets reus"
+
+-#: ../statistics.c:135
+-#, c-format
+-msgid "%d packets to unknown port received."
++#: ../statistics.c:137
++#, fuzzy, c-format
++msgid "%u packets to unknown port received."
+ msgstr "%d paquets reus pour un port inconnu"
+
+-#: ../statistics.c:136
+-#, c-format
+-msgid "%d packet receive errors"
++#: ../statistics.c:138
++#, fuzzy, c-format
++msgid "%u packet receive errors"
+ msgstr "%d erreurs en rception de paquets"
+
+-#: ../statistics.c:137
++#: ../statistics.c:139
++#, fuzzy, c-format
++msgid "%u packets sent"
++msgstr "%d paquets envoys"
++
++#: ../statistics.c:144
++#, fuzzy, c-format
++msgid "%u SYN cookies sent"
++msgstr "%d SYN-Cookies reus"
++
++#: ../statistics.c:145
++#, fuzzy, c-format
++msgid "%u SYN cookies received"
++msgstr "%d SYN-Cookies reus"
++
++#: ../statistics.c:146
++#, fuzzy, c-format
++msgid "%u invalid SYN cookies received"
++msgstr "%d SYN-Cookies reus incorrects"
++
++#: ../statistics.c:148
++#, fuzzy, c-format
++msgid "%u resets received for embryonic SYN_RECV sockets"
++msgstr "%d rinitialisations reues pour sockets SYN_RECV embryonnaires"
++
++#: ../statistics.c:150
++#, fuzzy, c-format
++msgid "%u packets pruned from receive queue because of socket buffer overrun"
++msgstr "%d paquets supprims de la file de rception en raison de tampon de sockets plein"
++
++#. obsolete: 2.2.0 doesn't do that anymore
++#: ../statistics.c:153
++#, fuzzy, c-format
++msgid "%u packets pruned from receive queue"
++msgstr "%d paquets supprims de la file hors service"
++
++#: ../statistics.c:154
++#, fuzzy, c-format
++msgid ""
++"%u packets dropped from out-of-order queue because of socket buffer overrun"
++msgstr "%d paquets jets de la file hors service en raison de tampon de sockets plein"
++
++#: ../statistics.c:156
++#, fuzzy, c-format
++msgid "%u ICMP packets dropped because they were out-of-window"
++msgstr "%d ICMP paquets jets car hors de la fentre"
++
++#: ../statistics.c:158
++#, fuzzy, c-format
++msgid "%u ICMP packets dropped because socket was locked"
++msgstr "%d paquets ICMP jets car la socket a t vrouille"
++
++#: ../statistics.c:160
+ #, c-format
+-msgid "%d packets sent"
++msgid "%u TCP sockets finished time wait in fast timer"
++msgstr ""
++
++#: ../statistics.c:161
++#, c-format
++msgid "%u time wait sockets recycled by time stamp"
++msgstr ""
++
++#: ../statistics.c:162
++#, c-format
++msgid "%u TCP sockets finished time wait in slow timer"
++msgstr ""
++
++#: ../statistics.c:163
++#, c-format
++msgid "%u passive connections rejected because of time stamp"
++msgstr ""
++
++#: ../statistics.c:165
++#, c-format
++msgid "%u active connections rejected because of time stamp"
++msgstr ""
++
++#: ../statistics.c:167
++#, c-format
++msgid "%u packets rejects in established connections because of timestamp"
++msgstr ""
++
++#: ../statistics.c:169
++#, fuzzy, c-format
++msgid "%u delayed acks sent"
+ msgstr "%d paquets envoys"
+
+-#: ../statistics.c:142
++#: ../statistics.c:170
+ #, c-format
+-msgid "%d SYN cookies sent"
++msgid "%u delayed acks further delayed because of locked socket"
+ msgstr ""
+
+-#: ../statistics.c:143
++#: ../statistics.c:172
+ #, c-format
+-msgid "%d SYN cookies received"
+-msgstr "%d SYN-Cookies reus"
++msgid "Quick ack mode was activated %u times"
++msgstr ""
+
+-#: ../statistics.c:144
++#: ../statistics.c:173
+ #, c-format
+-msgid "%d invalid SYN cookies received"
+-msgstr "%d SYN-Cookies reus incorrects"
++msgid "%u times the listen queue of a socket overflowed"
++msgstr ""
+
+-#: ../statistics.c:146
++#: ../statistics.c:175
+ #, c-format
+-msgid "%d resets received for embryonic SYN_RECV sockets"
+-msgstr "%d rinitialisations reues pour sockets SYN_RECV embryonnaires"
++msgid "%u SYNs to LISTEN sockets ignored"
++msgstr ""
+
+-#: ../statistics.c:148
++#: ../statistics.c:176
+ #, c-format
+-msgid "%d packets pruned from receive queue because of socket buffer overrun"
++msgid "%u packets directly queued to recvmsg prequeue."
+ msgstr ""
+-"%d paquets supprims de la file de rception en raison de tampon de sockets "
+-"plein"
+
+-#. obsolete: 2.2.0 doesn't do that anymore
+-#: ../statistics.c:151
++#: ../statistics.c:178
++#, c-format
++msgid "%u of bytes directly received from backlog"
++msgstr ""
++
++#: ../statistics.c:180
+ #, c-format
+-msgid "%d packets pruned from out-of-order queue"
++msgid "%u of bytes directly received from prequeue"
++msgstr ""
++
++#: ../statistics.c:182
++#, fuzzy, c-format
++msgid "%u packets dropped from prequeue"
+ msgstr "%d paquets supprims de la file hors service"
+
+-#: ../statistics.c:152
++#: ../statistics.c:183
++#, fuzzy, c-format
++msgid "%u packet headers predicted"
++msgstr "%d paquets reus"
++
++#: ../statistics.c:184
+ #, c-format
+-msgid ""
+-"%d packets dropped from out-of-order queue because of socket buffer overrun"
++msgid "%u packets header predicted and directly queued to user"
+ msgstr ""
+-"%d paquets jets de la file hors service en raison de tampon de sockets plein"
+
+-#: ../statistics.c:154
++#: ../statistics.c:186
+ #, c-format
+-msgid "%d ICMP packets dropped because they were out-of-window"
+-msgstr "%d ICMP paquets jets car hors de la fentre"
++msgid "Ran %u times out of system memory during packet sending"
++msgstr ""
+
+-#: ../statistics.c:156
++#: ../statistics.c:188
++#, fuzzy, c-format
++msgid "%u acknowledgments not containing data received"
++msgstr "%d paquets reus pour un port inconnu"
++
++#: ../statistics.c:189
+ #, c-format
+-msgid "%d ICMP packets dropped because socket was locked"
+-msgstr "%d paquets ICMP jets car la socket a t vrouille"
++msgid "%u predicted acknowledgments"
++msgstr ""
++
++#: ../statistics.c:190
++#, c-format
++msgid "%u times recovered from packet loss due to fast retransmit"
++msgstr ""
++
++#: ../statistics.c:191
++#, c-format
++msgid "%u times recovered from packet loss due to SACK data"
++msgstr ""
++
++#: ../statistics.c:192
++#, fuzzy, c-format
++msgid "%u bad SACKs received"
++msgstr "%d mauvais segments reus."
++
++#: ../statistics.c:193
++#, c-format
++msgid "Detected reordering %u times using FACK"
++msgstr ""
++
++#: ../statistics.c:194
++#, c-format
++msgid "Detected reordering %u times using SACK"
++msgstr ""
++
++#: ../statistics.c:195
++#, c-format
++msgid "Detected reordering %u times using time stamp"
++msgstr ""
++
++#: ../statistics.c:196
++#, c-format
++msgid "Detected reordering %u times using reno fast retransmit"
++msgstr ""
++
++#: ../statistics.c:197
++#, c-format
++msgid "%u congestion windows fully recovered"
++msgstr ""
++
++#: ../statistics.c:198
++#, c-format
++msgid "%u congestion windows partially recovered using Hoe heuristic"
++msgstr ""
++
++#: ../statistics.c:199
++#, c-format
++msgid "%u congestion window recovered using DSACK"
++msgstr ""
++
++#: ../statistics.c:200
++#, c-format
++msgid "%u congestion windows recovered after partial ack"
++msgstr ""
++
++#: ../statistics.c:201
++#, fuzzy, c-format
++msgid "%u retransmits lost"
++msgstr "%d rinitialisations envoyes"
++
++#: ../statistics.c:202
++#, c-format
++msgid "%u timeouts after reno fast retransmit"
++msgstr ""
++
++#: ../statistics.c:203
++#, c-format
++msgid "%u timeouts after SACK recovery"
++msgstr ""
++
++#: ../statistics.c:204
++#, c-format
++msgid "%u timeouts in loss state"
++msgstr ""
++
++#: ../statistics.c:205
++#, fuzzy, c-format
++msgid "%u fast retransmits"
++msgstr "%d segments retransmis"
++
++#: ../statistics.c:206
++#, c-format
++msgid "%u forward retransmits"
++msgstr ""
++
++#: ../statistics.c:207
++#, c-format
++msgid "%u retransmits in slow start"
++msgstr ""
++
++#: ../statistics.c:208
++#, c-format
++msgid "%u other TCP timeouts"
++msgstr ""
++
++#: ../statistics.c:209
++#, fuzzy, c-format
++msgid "%u reno fast retransmits failed"
++msgstr "%d segments retransmis"
++
++#: ../statistics.c:210
++#, fuzzy, c-format
++msgid "%u sack retransmits failed"
++msgstr "%d paquets mal rassembls"
++
++#: ../statistics.c:211
++#, c-format
++msgid "%u times receiver scheduled too late for direct processing"
++msgstr ""
++
++#: ../statistics.c:212
++#, fuzzy, c-format
++msgid "%u packets collapsed in receive queue due to low socket buffer"
++msgstr "%d paquets supprims de la file de rception en raison de tampon de sockets plein"
++
++#: ../statistics.c:213
++#, c-format
++msgid "%u DSACKs sent for old packets"
++msgstr ""
++
++#: ../statistics.c:214
++#, c-format
++msgid "%u DSACKs sent for out of order packets"
++msgstr ""
++
++#: ../statistics.c:215
++#, fuzzy, c-format
++msgid "%u DSACKs received"
++msgstr "%d paquets reus"
++
++#: ../statistics.c:216
++#, fuzzy, c-format
++msgid "%u DSACKs for out of order packets received"
++msgstr "%d paquets totaux reus"
++
++#: ../statistics.c:217
++#, fuzzy, c-format
++msgid "%u connections reset due to unexpected SYN"
++msgstr "%d rinitialisations de connexions reues"
++
++#: ../statistics.c:218
++#, fuzzy, c-format
++msgid "%u connections reset due to unexpected data"
++msgstr "%d rinitialisations de connexions reues"
++
++#: ../statistics.c:219
++#, fuzzy, c-format
++msgid "%u connections reset due to early user close"
++msgstr "%d rinitialisations de connexions reues"
++
++#: ../statistics.c:220
++#, c-format
++msgid "%u connections aborted due to memory pressure"
++msgstr ""
++
++#: ../statistics.c:221
++#, fuzzy, c-format
++msgid "%u connections aborted due to timeout"
++msgstr "%d rinitialisations de connexions reues"
+
+ #: ../statistics.c:222
++#, c-format
++msgid "%u connections aborted after user close in linger timeout"
++msgstr ""
++
++#: ../statistics.c:223
++#, c-format
++msgid "%u times unabled to send RST due to no memory"
++msgstr ""
++
++#: ../statistics.c:224
++#, c-format
++msgid "TCP ran low on memory %u times"
++msgstr ""
++
++#: ../statistics.c:225
++#, c-format
++msgid "%u TCP data loss events"
++msgstr ""
++
++#: ../statistics.c:292
+ msgid "enabled"
+ msgstr "active"
+
+-#: ../statistics.c:222
++#: ../statistics.c:292
+ msgid "disabled"
+ msgstr "dsactive"
+
+-#: ../statistics.c:272
+-#, c-format
+-msgid "unknown title %s\n"
+-msgstr "titre inconnu %s\n"
+-
+-#: ../statistics.c:298
++#: ../statistics.c:375
+ msgid "error parsing /proc/net/snmp"
+ msgstr "erreur d'analyse de /proc/net/snmp"
+
+-#: ../statistics.c:311
++#: ../statistics.c:388
+ msgid "cannot open /proc/net/snmp"
+ msgstr "ne peut ouvrir /proc/net/snmp"
+
+@@ -1824,89 +2064,95 @@
+ msgid "Cannot change line discipline to `%s'.\n"
+ msgstr "Ne peut changer la discipline de ligne `%s'.\n"
+
+-#: ../lib/af.c:145 ../lib/hw.c:148
++#: ../lib/af.c:153 ../lib/hw.c:161
+ msgid "UNSPEC"
+ msgstr "UNSPEC"
+
+-#: ../lib/af.c:147
++#: ../lib/af.c:155
+ msgid "UNIX Domain"
+ msgstr "Domaine UNIX"
+
+-#: ../lib/af.c:150
++#: ../lib/af.c:158
+ msgid "DARPA Internet"
+ msgstr "DARPA Internet"
+
+-#: ../lib/af.c:153
++#: ../lib/af.c:161
+ msgid "IPv6"
+ msgstr "IPv6"
+
+-#: ../lib/af.c:156 ../lib/hw.c:169
++#: ../lib/af.c:164 ../lib/hw.c:182
+ msgid "AMPR AX.25"
+ msgstr "AMPR AX.25"
+
+-#: ../lib/af.c:159 ../lib/hw.c:175
++#: ../lib/af.c:167 ../lib/hw.c:188
+ msgid "AMPR NET/ROM"
+ msgstr "AMPR NET/ROM"
+
+-#: ../lib/af.c:162
++#: ../lib/af.c:170
+ msgid "Novell IPX"
+ msgstr ""
+
+-#: ../lib/af.c:165
++#: ../lib/af.c:173
+ msgid "Appletalk DDP"
+ msgstr "Appletalk DDP"
+
+-#: ../lib/af.c:168 ../lib/hw.c:207
++#: ../lib/af.c:176 ../lib/hw.c:223
+ msgid "Econet"
+ msgstr "Econet"
+
+-#: ../lib/af.c:171 ../lib/hw.c:172
++#: ../lib/af.c:179
++msgid "CCITT X.25"
++msgstr ""
++
++#: ../lib/af.c:182 ../lib/hw.c:185
+ msgid "AMPR ROSE"
+ msgstr "AMPR ROSE"
+
+-#: ../lib/af.c:174 ../lib/hw.c:160
++#: ../lib/af.c:185 ../lib/hw.c:173
+ msgid "Ash"
+ msgstr "Ash"
+
+-#: ../lib/af.c:232
++#: ../lib/af.c:243
++#, c-format
+ msgid "Please don't supply more than one address family.\n"
+ msgstr "Ne fournissez pas plus d'une famille d'adresses SVP.\n"
+
+-#: ../lib/af.c:293
++#: ../lib/af.c:304
++#, c-format
+ msgid "Too much address family arguments.\n"
+ msgstr "Trop d'arguments de familles d'adresses.\n"
+
+-#: ../lib/af.c:304
++#: ../lib/af.c:315
+ #, c-format
+ msgid "Unknown address family `%s'.\n"
+ msgstr "Famille d'adresses inconnue `%s'.\n"
+
+-#: ../lib/arcnet.c:53 ../lib/ax25.c:75 ../lib/ddp.c:50 ../lib/econet.c:52
+-#: ../lib/fddi.c:67 ../lib/hippi.c:68 ../lib/inet.c:244 ../lib/inet.c:259
+-#: ../lib/inet6.c:129 ../lib/ipx.c:81 ../lib/netrom.c:78 ../lib/rose.c:71
+-#: ../lib/rose.c:126 ../lib/unix.c:56 ../lib/unix.c:76
+-msgid "[NONE SET]"
+-msgstr "[INDEFINI]"
+-
+-#: ../lib/arcnet.c:81 ../lib/arcnet.c:96
++#: ../lib/arcnet.c:70 ../lib/arcnet.c:85
+ #, c-format
+ msgid "in_arcnet(%s): invalid arcnet address!\n"
+ msgstr "in_arcnet(%s): adresse arcnet invalide !\n"
+
+-#: ../lib/arcnet.c:108
++#: ../lib/arcnet.c:97
+ #, c-format
+ msgid "in_arcnet(%s): trailing : ignored!\n"
+ msgstr "in_arcnet(%s): restant : ignor !\n"
+
+-#: ../lib/arcnet.c:120
++#: ../lib/arcnet.c:109
+ #, c-format
+ msgid "in_arcnet(%s): trailing junk!\n"
+ msgstr "in_arcnet(%s): le restant la poubelle !\n"
+
+ #: ../lib/ash.c:81
++#, c-format
+ msgid "Malformed Ash address"
+ msgstr "Adresse Ash malforme"
+
++#: ../lib/ax25.c:75 ../lib/ddp.c:50 ../lib/econet.c:52 ../lib/inet.c:244
++#: ../lib/inet.c:259 ../lib/inet6.c:129 ../lib/ipx.c:81 ../lib/netrom.c:78
++#: ../lib/rose.c:71 ../lib/unix.c:56 ../lib/unix.c:76
++msgid "[NONE SET]"
++msgstr "[INDEFINI]"
++
+ #: ../lib/ax25.c:97 ../lib/netrom.c:100
+ msgid "Invalid callsign"
+ msgstr "Signal d'appel invalide"
+@@ -1916,22 +2162,21 @@
+ msgstr "Signal d'appel trop long"
+
+ #: ../lib/ax25_gr.c:47
++#, c-format
+ msgid "AX.25 not configured in this system.\n"
+ msgstr "AX.25 pas configur sur ce systme.\n"
+
+ #: ../lib/ax25_gr.c:50
++#, c-format
+ msgid "Kernel AX.25 routing table\n"
+ msgstr "Table de routage AX.25 du noyau\n"
+
+ #. xxx
+ #: ../lib/ax25_gr.c:51 ../lib/rose_gr.c:55
++#, c-format
+ msgid "Destination Iface Use\n"
+ msgstr "Destination Iface Utilisation\n"
+
+-#: ../lib/ddp_gr.c:21
+-msgid "Routing table for `ddp' not yet supported.\n"
+-msgstr "Table de routage pour `ddp' pas encore support.\n"
+-
+ #: ../lib/ether.c:74 ../lib/ether.c:91
+ #, c-format
+ msgid "in_ether(%s): invalid ether address!\n"
+@@ -1947,153 +2192,171 @@
+ msgid "in_ether(%s): trailing junk!\n"
+ msgstr "in_ether(%s): le restant la poubelle !\n"
+
+-#: ../lib/fddi.c:95 ../lib/fddi.c:110
++#: ../lib/fddi.c:84 ../lib/fddi.c:99
+ #, c-format
+ msgid "in_fddi(%s): invalid fddi address!\n"
+ msgstr "in_fddi(%s): adresse fddi invalide!\n"
+
+-#: ../lib/fddi.c:122
++#: ../lib/fddi.c:111
+ #, c-format
+ msgid "in_fddi(%s): trailing : ignored!\n"
+ msgstr "in_fddi(%s): restant ignor !\n"
+
+-#: ../lib/fddi.c:134
++#: ../lib/fddi.c:123
+ #, c-format
+ msgid "in_fddi(%s): trailing junk!\n"
+ msgstr "in_fddi(%s): le restant la poubelle !\n"
+
+-#: ../lib/getroute.c:97 ../lib/setroute.c:76
++#: ../lib/getroute.c:101 ../lib/setroute.c:80
+ #, c-format
+ msgid "Address family `%s' not supported.\n"
+ msgstr "Famille d'adresses `%s' non supporte.\n"
+
+-#: ../lib/getroute.c:103 ../lib/setroute.c:80
++#: ../lib/getroute.c:107 ../lib/setroute.c:84
+ #, c-format
+ msgid "No routing for address family `%s'.\n"
+ msgstr "Pas de routage pour la famille d'adresses `%s'.\n"
+
+-#: ../lib/hippi.c:96 ../lib/hippi.c:111
++#: ../lib/hippi.c:84 ../lib/hippi.c:99
+ #, c-format
+ msgid "in_hippi(%s): invalid hippi address!\n"
+ msgstr "in_hippi(%s): adresse hippi invalide!\n"
+
+-#: ../lib/hippi.c:123
++#: ../lib/hippi.c:111
+ #, c-format
+ msgid "in_hippi(%s): trailing : ignored!\n"
+ msgstr "in_hippi(%s): restant ignor !\n"
+
+-#: ../lib/hippi.c:134
++#: ../lib/hippi.c:122
+ #, c-format
+ msgid "in_hippi(%s): trailing junk!\n"
+ msgstr "in_hippi(%s): le restant la poubelle !\n"
+
+-#: ../lib/hw.c:147
++#: ../lib/hw.c:160
+ msgid "Local Loopback"
+ msgstr "Boucle locale"
+
+-#: ../lib/hw.c:150
++#: ../lib/hw.c:163
+ msgid "Serial Line IP"
+ msgstr "IP ligne srie"
+
+-#: ../lib/hw.c:151
++#: ../lib/hw.c:164
+ msgid "VJ Serial Line IP"
+ msgstr "IP ligne srie - VJ "
+
+-#: ../lib/hw.c:152
++#: ../lib/hw.c:165
+ msgid "6-bit Serial Line IP"
+ msgstr "IP ligne srie - 6 bits"
+
+-#: ../lib/hw.c:153
++#: ../lib/hw.c:166
+ msgid "VJ 6-bit Serial Line IP"
+ msgstr "IP ligne srie - 6 bits VJ"
+
+-#: ../lib/hw.c:154
++#: ../lib/hw.c:167
+ msgid "Adaptive Serial Line IP"
+ msgstr "IP ligne srie adaptative"
+
+-#: ../lib/hw.c:157
++#: ../lib/hw.c:170
+ msgid "Ethernet"
+ msgstr "Ethernet"
+
+-#: ../lib/hw.c:163
++#: ../lib/hw.c:176
+ msgid "Fiber Distributed Data Interface"
+ msgstr "Fiber Distributed Data Interface"
+
+-#: ../lib/hw.c:166
++#: ../lib/hw.c:179
+ msgid "HIPPI"
+ msgstr "HIPPI"
+
+-#: ../lib/hw.c:178
++#: ../lib/hw.c:191
++msgid "generic X.25"
++msgstr ""
++
++#: ../lib/hw.c:194
+ msgid "IPIP Tunnel"
+ msgstr "IPIP Tunnel"
+
+-#: ../lib/hw.c:181
++#: ../lib/hw.c:197
+ msgid "Point-to-Point Protocol"
+ msgstr "Protocole Point--Point"
+
+-#: ../lib/hw.c:184
++#: ../lib/hw.c:200
+ msgid "(Cisco)-HDLC"
+ msgstr "(Cisco)-HDLC"
+
+-#: ../lib/hw.c:185
++#: ../lib/hw.c:201
+ msgid "LAPB"
+ msgstr "LAPB"
+
+-#: ../lib/hw.c:188
++#: ../lib/hw.c:204
+ msgid "ARCnet"
+ msgstr "ARCnet"
+
+-#: ../lib/hw.c:191
++#: ../lib/hw.c:207
+ msgid "Frame Relay DLCI"
+ msgstr "Frame Relay DLCI"
+
+-#: ../lib/hw.c:192
++#: ../lib/hw.c:208
+ msgid "Frame Relay Access Device"
+ msgstr "Priphriue d'accs Frame Relay"
+
+-#: ../lib/hw.c:195
++#: ../lib/hw.c:211
+ msgid "IPv6-in-IPv4"
+ msgstr "IPv6-dans-IPv4"
+
+-#: ../lib/hw.c:198
++#: ../lib/hw.c:214
+ #, fuzzy
+ msgid "IrLAP"
+ msgstr "LAPB"
+
+-#: ../lib/hw.c:201
++#: ../lib/hw.c:217
+ msgid "16/4 Mbps Token Ring"
+ msgstr ""
+
+-#: ../lib/hw.c:203
++#: ../lib/hw.c:219
+ msgid "16/4 Mbps Token Ring (New)"
+ msgstr ""
+
++#: ../lib/hw.c:226
++msgid "Generic EUI-64"
++msgstr ""
++
+ #: ../lib/inet.c:153 ../lib/inet6.c:79
+ #, c-format
+ msgid "rresolve: unsupport address family %d !\n"
+ msgstr "rresolve: famille d'adresses non suporte %d !\n"
+
+-#: ../lib/inet6_gr.c:79
++#: ../lib/inet6.c:131
++#, fuzzy
++msgid "[UNKNOWN]"
++msgstr "INCONNU"
++
++#: ../lib/inet6_gr.c:71
++#, c-format
+ msgid "INET6 (IPv6) not configured in this system.\n"
+ msgstr "INET6 (IPv6) pas configur sur ce systme.\n"
+
+-#: ../lib/inet6_gr.c:82
++#: ../lib/inet6_gr.c:74
++#, c-format
+ msgid "Kernel IPv6 routing table\n"
+ msgstr "Table de routage IPv6 du noyau\n"
+
+-#: ../lib/inet6_gr.c:84
++#: ../lib/inet6_gr.c:76
++#, c-format
+ msgid ""
+-"Destination Next Hop "
+-" Flags Metric Ref Use Iface\n"
++"Destination Next "
++"Hop Flags Metric Ref Use Iface\n"
+ msgstr ""
+-"Destination Prochain Hop "
+-" Indic Metric Ref Utilis. Iface\n"
++"Destination Prochain "
++"Hop Indic Metric Ref Utilis. Iface\n"
+
+-#: ../lib/inet6_gr.c:158
++#: ../lib/inet6_gr.c:150
++#, c-format
+ msgid "Kernel IPv6 Neighbour Cache\n"
+ msgstr "Cache voisin IPv6 du noyau\n"
+
+-#: ../lib/inet6_gr.c:161
++#: ../lib/inet6_gr.c:153
++#, c-format
+ msgid ""
+ "Neighbour HW Address Iface Flags "
+ "Ref State\n"
+@@ -2101,39 +2364,45 @@
+ "Voisin Adresse MAT Iface Indic "
+ "Ref Etat\n"
+
+-#: ../lib/inet6_gr.c:165
++#: ../lib/inet6_gr.c:157
++#, c-format
+ msgid ""
+ "Neighbour HW Address Iface Flags "
+ "Ref State Stale(sec) Delete(sec)\n"
+-msgstr ""
+-"Voisin Adresse MAT Iface Indic "
+-"Ref Etat Bloqu(sec) Dtuit(sec)\n"
++msgstr "Voisin Adresse MAT Iface Indic Ref Etat Bloqu(sec) Dtuit(sec)\n"
+
+ #: ../lib/inet6_sr.c:46
++#, c-format
+ msgid "Usage: inet6_route [-vF] del Target\n"
+ msgstr "Syntaxe: inet6_route [-vF] del Cible\n"
+
+ #: ../lib/inet6_sr.c:47
++#, c-format
+ msgid " inet6_route [-vF] add Target [gw Gw] [metric M] [[dev] If]\n"
+ msgstr " inet6_route [-vF] add Cible [gw Gw] [metric M] [[dev] If]\n"
+
+ #: ../lib/inet6_sr.c:48
++#, c-format
+ msgid " inet6_route [-FC] flush NOT supported\n"
+ msgstr " inet6_route [-FC] flush PAS support\n"
+
+-#: ../lib/inet6_sr.c:182
++#: ../lib/inet6_sr.c:188
++#, c-format
+ msgid "Flushing `inet6' routing table not supported\n"
+ msgstr "Flush de table de routage `inet6' pas support\n"
+
+ #: ../lib/inet_gr.c:50 ../lib/inet_gr.c:220
++#, c-format
+ msgid "INET (IPv4) not configured in this system.\n"
+ msgstr "INET (IPv4) pas configur sur ce systme.\n"
+
+ #: ../lib/inet_gr.c:53
++#, c-format
+ msgid "Kernel IP routing table\n"
+ msgstr "Table de routage IP du noyau\n"
+
+ #: ../lib/inet_gr.c:56
++#, c-format
+ msgid ""
+ "Destination Gateway Genmask Flags Metric Ref Use "
+ "Iface\n"
+@@ -2142,26 +2411,26 @@
+ "Iface\n"
+
+ #: ../lib/inet_gr.c:59
++#, c-format
+ msgid ""
+ "Destination Gateway Genmask Flags MSS Window irtt "
+ "Iface\n"
+-msgstr ""
+-"Destination Passerelle Genmask Indic MSS Fentre irtt "
+-"Iface\n"
++msgstr "Destination Passerelle Genmask Indic MSS Fentre irtt Iface\n"
+
+ #: ../lib/inet_gr.c:62
++#, c-format
+ msgid ""
+ "Destination Gateway Genmask Flags Metric Ref Use "
+ "Iface MSS Window irtt\n"
+-msgstr ""
+-"Destination Passerelle Genmask Indic Metric Ref Use "
+-"Iface MSS Fentre irtt\n"
++msgstr "Destination Passerelle Genmask Indic Metric Ref Use Iface MSS Fentre irtt\n"
+
+ #: ../lib/inet_gr.c:237
++#, c-format
+ msgid "Kernel IP routing cache\n"
+ msgstr "cache de routage IP du noyau\n"
+
+ #: ../lib/inet_gr.c:258
++#, c-format
+ msgid ""
+ "Source Destination Gateway Flags Metric Ref Use "
+ "Iface\n"
+@@ -2170,30 +2439,28 @@
+ "Iface\n"
+
+ #: ../lib/inet_gr.c:261
++#, c-format
+ msgid ""
+ "Source Destination Gateway Flags MSS Window irtt "
+ "Iface\n"
+-msgstr ""
+-"Source Destination Passerelle Indic MSS Fentre irtt "
+-"Iface\n"
++msgstr "Source Destination Passerelle Indic MSS Fentre irtt Iface\n"
+
+ #: ../lib/inet_gr.c:266
++#, c-format
+ msgid ""
+ "Source Destination Gateway Flags Metric Ref Use "
+ "Iface MSS Window irtt HH Arp\n"
+-msgstr ""
+-"Source Destination Passerelle Indic Metric Ref Use "
+-"Iface MSS Fentre irtt HH Arp\n"
++msgstr "Source Destination Passerelle Indic Metric Ref Use Iface MSS Fentre irtt HH Arp\n"
+
+ #: ../lib/inet_gr.c:290
++#, c-format
+ msgid ""
+ "Source Destination Gateway Flags Metric Ref Use "
+ "Iface MSS Window irtt TOS HHRef HHUptod SpecDst\n"
+-msgstr ""
+-"Source Destination Passerelle Flags Metric Ref Use "
+-"Iface MSS Fentre irtt TOS HHRef HHUptod SpecDst\n"
++msgstr "Source Destination Passerelle Flags Metric Ref Use Iface MSS Fentre irtt TOS HHRef HHUptod SpecDst\n"
+
+-#: ../lib/inet_sr.c:50
++#: ../lib/inet_sr.c:51
++#, c-format
+ msgid ""
+ "Usage: inet_route [-vF] del {-host|-net} Target[/prefix] [gw Gw] [metric M] "
+ "[[dev] If]\n"
+@@ -2201,29 +2468,34 @@
+ "Syntaxe: inet_route [-vF] del {-host|-net} Cible[/prefix] [gw Gw] [metric M] "
+ "[[dev] If]\n"
+
+-#: ../lib/inet_sr.c:51
++#: ../lib/inet_sr.c:52
++#, c-format
+ msgid ""
+ " inet_route [-vF] add {-host|-net} Target[/prefix] [gw Gw] [metric M]\n"
+ msgstr ""
+ " inet_route [-vF] add {-host|-net} Cible[/prefix] [gw Gw] [metric M]\n"
+
+-#: ../lib/inet_sr.c:52
++#: ../lib/inet_sr.c:53
++#, c-format
+ msgid ""
+ " [netmask N] [mss Mss] [window W] [irtt I]\n"
+ msgstr ""
+ " [netmask N] [mss Mss] [window W] [irtt I]\n"
+
+-#: ../lib/inet_sr.c:53
++#: ../lib/inet_sr.c:54
++#, c-format
+ msgid " [mod] [dyn] [reinstate] [[dev] If]\n"
+ msgstr " [mod] [dyn] [reinstate] [[dev] If]\n"
+
+-#: ../lib/inet_sr.c:54
++#: ../lib/inet_sr.c:55
++#, c-format
+ msgid ""
+ " inet_route [-vF] add {-host|-net} Target[/prefix] [metric M] reject\n"
+ msgstr ""
+ " inet_route [-vF] add {-host|-net} Cible[/prefix] [metric M] reject\n"
+
+-#: ../lib/inet_sr.c:55
++#: ../lib/inet_sr.c:56
++#, c-format
+ msgid " inet_route [-FC] flush NOT supported\n"
+ msgstr " inet_route [-FC] flush PAS support\n"
+
+@@ -2233,15 +2505,17 @@
+ msgstr "route: %s: ne peut utiliser un RESEAU comme passerelle!\n"
+
+ #: ../lib/inet_sr.c:174
+-#, fuzzy
++#, fuzzy, c-format
+ msgid "route: Invalid MSS/MTU.\n"
+ msgstr "route: MSS invalide.\n"
+
+ #: ../lib/inet_sr.c:187
++#, c-format
+ msgid "route: Invalid window.\n"
+ msgstr "route: fentre invalide.\n"
+
+ #: ../lib/inet_sr.c:203
++#, c-format
+ msgid "route: Invalid initial rtt.\n"
+ msgstr "route: rtt initial invalide.\n"
+
+@@ -2256,75 +2530,92 @@
+ msgstr "route: netmask bogu %s\n"
+
+ #: ../lib/inet_sr.c:270
++#, c-format
+ msgid "route: netmask doesn't match route address\n"
+ msgstr "route: netmask ne correspond pas l'adresse de route\n"
+
+ #: ../lib/inet_sr.c:306
++#, c-format
+ msgid "Flushing `inet' routing table not supported\n"
+ msgstr "Flush de table de routage `inet' pas support\n"
+
+ #: ../lib/inet_sr.c:310
++#, c-format
+ msgid "Modifying `inet' routing cache not supported\n"
+ msgstr "Modification de cache de routage `inet' pas support\n"
+
+ #: ../lib/ipx_gr.c:52
++#, c-format
+ msgid "IPX not configured in this system.\n"
+ msgstr "IPX pas configur sur ce systme.\n"
+
+ #: ../lib/ipx_gr.c:56
++#, c-format
+ msgid "Kernel IPX routing table\n"
+ msgstr "Table de routage IPX du noyau\n"
+
+ #. xxx
+ #: ../lib/ipx_gr.c:57
++#, c-format
+ msgid "Destination Router Net Router Node\n"
+ msgstr "Destination Rseau Routeur Noeud Routeur\n"
+
+ #: ../lib/ipx_sr.c:33
++#, c-format
+ msgid "IPX: this needs to be written\n"
+ msgstr "IPX: ceci doit tre crit\n"
+
+-#: ../lib/masq_info.c:197
++#: ../lib/masq_info.c:198
++#, c-format
+ msgid "IP masquerading entries\n"
+ msgstr "Entres IP Masquerade\n"
+
+-#: ../lib/masq_info.c:200
++#: ../lib/masq_info.c:201
++#, c-format
+ msgid "prot expire source destination ports\n"
+ msgstr "prot expire source destination ports\n"
+
+-#: ../lib/masq_info.c:203
++#: ../lib/masq_info.c:204
++#, c-format
+ msgid ""
+-"prot expire initseq delta prevd source destination "
+-" ports\n"
++"prot expire initseq delta prevd source "
++"destination ports\n"
+ msgstr ""
+-"prot expire initseq delta precd source destination "
+-" ports\n"
++"prot expire initseq delta precd source "
++"destination ports\n"
+
+ #: ../lib/netrom_gr.c:48
++#, c-format
+ msgid "NET/ROM not configured in this system.\n"
+ msgstr "NET/ROM pas configur sur ce systme.\n"
+
+ #: ../lib/netrom_gr.c:51
++#, c-format
+ msgid "Kernel NET/ROM routing table\n"
+ msgstr "Table de routage NET/ROM du noyau\n"
+
+ #: ../lib/netrom_gr.c:52
++#, c-format
+ msgid "Destination Mnemonic Quality Neighbour Iface\n"
+ msgstr "Destination Mnemoniq Qualit Voisin Iface\n"
+
+ #: ../lib/netrom_sr.c:34
++#, c-format
+ msgid "netrom usage\n"
+ msgstr "utilisation netrom\n"
+
+ #: ../lib/netrom_sr.c:44
++#, c-format
+ msgid "NET/ROM: this needs to be written\n"
+ msgstr "NET/ROM: ceci doit tre crit\n"
+
+ #: ../lib/ppp.c:44
++#, c-format
+ msgid "You cannot start PPP with this program.\n"
+ msgstr "Vous ne pouvez dmarrer PPP avec ce programme.\n"
+
+ #: ../lib/ppp_ac.c:38
++#, c-format
+ msgid "Sorry, use pppd!\n"
+ msgstr "Dsol, utilisez pppd !\n"
+
+@@ -2333,49 +2624,314 @@
+ msgstr "L'adresse de noeud doit avoir 10 chiffres"
+
+ #: ../lib/rose_gr.c:51
++#, c-format
+ msgid "ROSE not configured in this system.\n"
+ msgstr "ROSE pas configur sur ce systme.\n"
+
+ #: ../lib/rose_gr.c:54
++#, c-format
+ msgid "Kernel ROSE routing table\n"
+ msgstr "Table de routage ROSE du noyau\n"
+
+-#: ../lib/tr.c:70 ../lib/tr.c:85
++#: ../lib/tr.c:86 ../lib/tr.c:101
+ #, c-format
+ msgid "in_tr(%s): invalid token ring address!\n"
+ msgstr "in_tr(%s): adresse token-ring invalide !\n"
+
+-#: ../lib/tr.c:97
++#: ../lib/tr.c:113
+ #, c-format
+ msgid "in_tr(%s): trailing : ignored!\n"
+ msgstr "in_tr(%s): restant : ignor !\n"
+
+-#: ../lib/tr.c:109
++#: ../lib/tr.c:125
+ #, c-format
+ msgid "in_tr(%s): trailing junk!\n"
+ msgstr "in_tr(%s): restant la poubelle !\n"
+
+-#: ../lib/interface.c:124
++#: ../lib/interface.c:176
+ #, c-format
+ msgid "warning: no inet socket available: %s\n"
+ msgstr "attention: pas de socket inet disponible: %s\n"
+
+-#: ../lib/interface.c:270
++#: ../lib/interface.c:325
+ #, c-format
+ msgid "Warning: cannot open %s (%s). Limited output.\n"
+ msgstr ""
+
+ #. Give better error message for this case.
+-#: ../lib/interface.c:504
++#: ../lib/interface.c:571
+ msgid "Device not found"
+ msgstr "Priphrique non trouv"
+
+-#: ../lib/interface.c:508
++#: ../lib/interface.c:575
+ #, c-format
+ msgid "%s: error fetching interface information: %s\n"
+ msgstr "%s: erreur lors de la recherche d'infos sur l'interface: %s\n"
+
+-#: ../lib/sockets.c:59
++#: ../lib/interface.c:608
++msgid " - no statistics available -"
++msgstr ""
++
++#: ../lib/interface.c:612
++#, c-format
++msgid "[NO FLAGS]"
++msgstr "[PAS INDICATEURS]"
++
++#: ../lib/interface.c:688
++#, c-format
++msgid "%-9.9s Link encap:%s "
++msgstr "%-9.9s Lien encap:%s "
++
++#: ../lib/interface.c:693
++#, c-format
++msgid "HWaddr %s "
++msgstr "HWaddr %s "
++
++#: ../lib/interface.c:696
++#, c-format
++msgid "Media:%s"
++msgstr "Media:%s"
++
++#: ../lib/interface.c:698
++#, c-format
++msgid "(auto)"
++msgstr "(auto)"
++
++#: ../lib/interface.c:705
++#, c-format
++msgid " %s addr:%s "
++msgstr " %s adr:%s "
++
++#: ../lib/interface.c:708
++#, c-format
++msgid " P-t-P:%s "
++msgstr " P-t-P:%s "
++
++#: ../lib/interface.c:711
++#, c-format
++msgid " Bcast:%s "
++msgstr " Bcast:%s "
++
++#: ../lib/interface.c:713
++#, c-format
++msgid " Mask:%s\n"
++msgstr " Masque:%s\n"
++
++#: ../lib/interface.c:730
++#, c-format
++msgid " inet6 addr: %s/%d"
++msgstr " adr inet6: %s/%d"
++
++#: ../lib/interface.c:732
++#, c-format
++msgid " Scope:"
++msgstr " Scope:"
++
++#: ../lib/interface.c:735
++#, c-format
++msgid "Global"
++msgstr "Global"
++
++#: ../lib/interface.c:738
++#, c-format
++msgid "Link"
++msgstr "Lien"
++
++#: ../lib/interface.c:741
++#, c-format
++msgid "Site"
++msgstr "Site"
++
++#: ../lib/interface.c:744
++#, c-format
++msgid "Compat"
++msgstr "Compat"
++
++#: ../lib/interface.c:747
++#, c-format
++msgid "Host"
++msgstr "Hte"
++
++#: ../lib/interface.c:750
++#, c-format
++msgid "Unknown"
++msgstr "Inconnu"
++
++#: ../lib/interface.c:765
++#, c-format
++msgid " IPX/Ethernet II addr:%s\n"
++msgstr " adr IPX/Ethernet II:%s\n"
++
++#: ../lib/interface.c:768
++#, c-format
++msgid " IPX/Ethernet SNAP addr:%s\n"
++msgstr " adr IPX/Ethernet SNAP:%s\n"
++
++#: ../lib/interface.c:771
++#, c-format
++msgid " IPX/Ethernet 802.2 addr:%s\n"
++msgstr " adr IPX/Ethernet 802.2:%s\n"
++
++#: ../lib/interface.c:774
++#, c-format
++msgid " IPX/Ethernet 802.3 addr:%s\n"
++msgstr " adr IPX/Ethernet 802.3:%s\n"
++
++#: ../lib/interface.c:784
++#, c-format
++msgid " EtherTalk Phase 2 addr:%s\n"
++msgstr " adr EtherTalk Phase 2:%s\n"
++
++#: ../lib/interface.c:793
++#, c-format
++msgid " econet addr:%s\n"
++msgstr " adr econet:%s\n"
++
++#: ../lib/interface.c:800
++#, c-format
++msgid "[NO FLAGS] "
++msgstr "[PAS INDICATEURS] "
++
++#: ../lib/interface.c:802
++#, c-format
++msgid "UP "
++msgstr "UP "
++
++#: ../lib/interface.c:804
++#, c-format
++msgid "BROADCAST "
++msgstr "BROADCAST "
++
++#: ../lib/interface.c:806
++#, c-format
++msgid "DEBUG "
++msgstr "DEBUG "
++
++#: ../lib/interface.c:808
++#, c-format
++msgid "LOOPBACK "
++msgstr "LOOPBACK "
++
++#: ../lib/interface.c:810
++#, c-format
++msgid "POINTOPOINT "
++msgstr "POINTOPOINT "
++
++#: ../lib/interface.c:812
++#, c-format
++msgid "NOTRAILERS "
++msgstr "NOTRAILERS "
++
++#: ../lib/interface.c:814
++#, c-format
++msgid "RUNNING "
++msgstr "RUNNING "
++
++#: ../lib/interface.c:816
++#, c-format
++msgid "NOARP "
++msgstr "NOARP "
++
++#: ../lib/interface.c:818
++#, c-format
++msgid "PROMISC "
++msgstr "PROMISC "
++
++#: ../lib/interface.c:820
++#, c-format
++msgid "ALLMULTI "
++msgstr "ALLMULTI "
++
++#: ../lib/interface.c:822
++#, c-format
++msgid "SLAVE "
++msgstr "SLAVE "
++
++#: ../lib/interface.c:824
++#, c-format
++msgid "MASTER "
++msgstr "MASTER "
++
++#: ../lib/interface.c:826
++#, c-format
++msgid "MULTICAST "
++msgstr "MULTICAST "
++
++#: ../lib/interface.c:829
++#, c-format
++msgid "DYNAMIC "
++msgstr "DYNAMIC "
++
++#. DONT FORGET TO ADD THE FLAGS IN ife_print_short
++#: ../lib/interface.c:832
++#, c-format
++msgid " MTU:%d Metric:%d"
++msgstr " MTU:%d Metric:%d"
++
++#: ../lib/interface.c:836
++#, c-format
++msgid " Outfill:%d Keepalive:%d"
++msgstr " Outfill:%d Keepalive:%d"
++
++#: ../lib/interface.c:850
++#, fuzzy, c-format
++msgid "RX packets:%llu errors:%lu dropped:%lu overruns:%lu frame:%lu\n"
++msgstr "Paquets Reus:%lu erreurs:%lu jets:%lu dbordements:%lu trames:%lu\n"
++
++#: ../lib/interface.c:855
++#, c-format
++msgid " compressed:%lu\n"
++msgstr " compresss:%lu\n"
++
++#: ../lib/interface.c:895
++#, fuzzy, c-format
++msgid "TX packets:%llu errors:%lu dropped:%lu overruns:%lu carrier:%lu\n"
++msgstr "Paquets transmis:%lu erreurs:%lu jets:%lu dbordements:%lu carrier:%lu\n"
++
++#: ../lib/interface.c:899
++#, c-format
++msgid " collisions:%lu "
++msgstr " collisions:%lu "
++
++#: ../lib/interface.c:901
++#, c-format
++msgid "compressed:%lu "
++msgstr "compresss:%lu "
++
++#: ../lib/interface.c:903
++#, c-format
++msgid "txqueuelen:%d "
++msgstr "lg file transmission:%d "
++
++#: ../lib/interface.c:905
++#, c-format
++msgid "RX bytes:%llu (%lu.%lu %s) TX bytes:%llu (%lu.%lu %s)\n"
++msgstr ""
++
++#: ../lib/interface.c:916
++#, c-format
++msgid "Interrupt:%d "
++msgstr "Interruption:%d "
++
++#. Only print devices using it for
++#. I/O maps
++#: ../lib/interface.c:919
++#, c-format
++msgid "Base address:0x%x "
++msgstr "Adresse de base:0x%x "
++
++#: ../lib/interface.c:921
++#, c-format
++msgid "Memory:%lx-%lx "
++msgstr "Mmoire:%lx-%lx "
++
++#: ../lib/interface.c:924
++#, c-format
++msgid "DMA chan:%x "
++msgstr "Canal DMA:%x "
++
++#: ../lib/sockets.c:63
++#, c-format
+ msgid "No usable address families found.\n"
+ msgstr "Pas de famille d'adresses utilisable trouve.\n"
+
+@@ -2399,29 +2955,32 @@
+ msgid "ip: argument is wrong: %s\n"
+ msgstr "ip: argument incorrect: %s\n"
+
+-#: ../ipmaddr.c:56
++#: ../ipmaddr.c:61
++#, c-format
+ msgid "Usage: ipmaddr [ add | del ] MULTIADDR dev STRING\n"
+ msgstr "Syntaxe: ipmaddr [ add | del ] MULTIADR dev CHAINE\n"
+
+-#: ../ipmaddr.c:57
++#: ../ipmaddr.c:62
++#, c-format
+ msgid " ipmaddr show [ dev STRING ] [ ipv4 | ipv6 | link | all ]\n"
+ msgstr " ipmaddr show [ dev CHAINE ] [ ipv4 | ipv6 | link | all ]\n"
+
+-#: ../ipmaddr.c:58
++#: ../ipmaddr.c:63
++#, c-format
+ msgid " ipmaddr -V | -version\n"
+ msgstr ""
+
+-#: ../ipmaddr.c:258
++#: ../ipmaddr.c:263
+ #, c-format
+ msgid "family %d "
+ msgstr ""
+
+-#: ../ipmaddr.c:267
++#: ../ipmaddr.c:272
+ #, c-format
+ msgid " users %d"
+ msgstr ""
+
+-#: ../ipmaddr.c:353
++#: ../ipmaddr.c:358
+ msgid "Cannot create socket"
+ msgstr "Ne peut crer une socket"
+
+@@ -2436,6 +2995,7 @@
+ msgstr ""
+
+ #: ../slattach.c:192
++#, fuzzy, c-format
+ msgid "slattach: cannot write PID file\n"
+ msgstr "slattach: tty_lock: (%s): %s\n"
+
+@@ -2454,59 +3014,88 @@
+ msgid "slattach: tty_hangup(RAISE): %s\n"
+ msgstr "slattach: tty_hangup(RAISE): %s\n"
+
+-#: ../slattach.c:486
++#: ../slattach.c:468
++#, fuzzy, c-format
++msgid "slattach: tty name too long\n"
++msgstr "%s: nom trop long\n"
++
++#: ../slattach.c:498
++#, c-format
+ msgid "slattach: tty_open: cannot get current state!\n"
+ msgstr "slattach: tty_open: ne peut obtenir l'tat courant !\n"
+
+-#: ../slattach.c:493
++#: ../slattach.c:505
++#, c-format
+ msgid "slattach: tty_open: cannot get current line disc!\n"
+ msgstr ""
+ "slattach: tty_open: ne peut obtenir la discipline de ligne actuelle !\n"
+
+-#: ../slattach.c:501
++#: ../slattach.c:513
++#, c-format
+ msgid "slattach: tty_open: cannot set RAW mode!\n"
+ msgstr "slattach: tty_open: ne peut activer le mode RAW !\n"
+
+-#: ../slattach.c:508
++#: ../slattach.c:520
+ #, c-format
+ msgid "slattach: tty_open: cannot set %s bps!\n"
+ msgstr "slattach: tty_open: ne peut passer %s bps!\n"
+
+-#: ../slattach.c:518
++#: ../slattach.c:530
++#, c-format
+ msgid "slattach: tty_open: cannot set 8N1 mode!\n"
+ msgstr "slattach: tty_open: ne peut activer le mode 8N1 !\n"
+
+-#: ../slattach.c:686
++#: ../slattach.c:672
++#, c-format
++msgid "slattach: setvbuf(stdout,0,_IOLBF,0) : %s\n"
++msgstr ""
++
++#: ../slattach.c:704
+ #, c-format
+ msgid "%s started"
+ msgstr ""
+
+-#: ../slattach.c:687
++#: ../slattach.c:705
+ #, c-format
+ msgid " on %s"
+ msgstr ""
+
+-#: ../slattach.c:688
++#: ../slattach.c:706
+ #, fuzzy, c-format
+ msgid " interface %s\n"
+ msgstr "%s: interface inconnue: %s\n"
+
+ #~ msgid ""
+-#~ " This comand can get or set the hostname or the NIS domainname. You can\n"
+-#~ msgstr ""
+-#~ " Cette commande ne peut obtenir ou dfinir le nom d'hte ou le domaine "
+-#~ "NIS. Vous pouvez\n"
++#~ " arp [-v] [<HW>] [-i <if>] -s <hostname> <hwaddr> [netmask <nm>] pub "
++#~ "<-''-\n"
++#~ msgstr " arp [-v] [<MAT>] [-i <if>] -s <hte> <adrmat> [netmask <nm>] pub <-''-\n"
++
++#~ msgid "%s: unknown interface: %s\n"
++#~ msgstr "%s: interface inconnue: %s\n"
++
++#~ msgid "address mask replies"
++#~ msgstr "rponses de masque d'adresses"
++
++#~ msgid "unknown title %s\n"
++#~ msgstr "titre inconnu %s\n"
++
++#~ msgid "Routing table for `ddp' not yet supported.\n"
++#~ msgstr "Table de routage pour `ddp' pas encore support.\n"
++
++#~ msgid ""
++#~ " This comand can get or set the hostname or the NIS domainname. You "
++#~ "can\n"
++#~ msgstr " Cette commande ne peut obtenir ou dfinir le nom d'hte ou le domaine NIS. Vous pouvez\n"
+
+ #~ msgid ""
+ #~ " also get the DNS domain or the FQDN (fully qualified domain name).\n"
+ #~ msgstr ""
+-#~ " aussi obtenir le domaine DNS ou le FQDN (fully qualified domain name).\n"
++#~ " aussi obtenir le domaine DNS ou le FQDN (fully qualified domain "
++#~ "name).\n"
+
+ #~ msgid ""
+ #~ " Unless you are using bind or NIS for host lookups you can change the\n"
+-#~ msgstr ""
+-#~ " Sauf si vous utilisez bind ou NIS pour les recherches d'htes, vous "
+-#~ "pouvez changer le\n"
++#~ msgstr " Sauf si vous utilisez bind ou NIS pour les recherches d'htes, vous pouvez changer le\n"
+
+ #~ msgid ""
+ #~ " FQDN (Fully Qualified Domain Name) and the DNS domain name (which is\n"
+--- net-tools-1.60.orig/po/net-tools.pot
++++ net-tools-1.60/po/net-tools.pot
+@@ -1,253 +1,275 @@
+ # SOME DESCRIPTIVE TITLE.
+-# Copyright (C) YEAR Free Software Foundation, Inc.
++# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
++# This file is distributed under the same license as the PACKAGE package.
+ # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+ #
+ #, fuzzy
+ msgid ""
+ msgstr ""
+ "Project-Id-Version: PACKAGE VERSION\n"
+-"POT-Creation-Date: 2001-04-15 15:40+0100\n"
++"Report-Msgid-Bugs-To: \n"
++"POT-Creation-Date: 2007-06-30 12:28+0900\n"
+ "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+ "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+ "Language-Team: LANGUAGE <LL@li.org>\n"
+ "MIME-Version: 1.0\n"
+ "Content-Type: text/plain; charset=CHARSET\n"
+-"Content-Transfer-Encoding: ENCODING\n"
++"Content-Transfer-Encoding: 8bit\n"
+
+-#: ../arp.c:111 ../arp.c:270
++#: ../arp.c:112 ../arp.c:279
++#, c-format
+ msgid "arp: need host name\n"
+ msgstr ""
+
+-#: ../arp.c:208 ../arp.c:222
++#: ../arp.c:215 ../arp.c:230
+ #, c-format
+ msgid "No ARP entry for %s\n"
+ msgstr ""
+
+-#: ../arp.c:240
++#: ../arp.c:248
+ #, c-format
+ msgid "arp: cant get HW-Address for `%s': %s.\n"
+ msgstr ""
+
+-#: ../arp.c:244
++#: ../arp.c:252
++#, c-format
+ msgid "arp: protocol type mismatch.\n"
+ msgstr ""
+
+-#: ../arp.c:253
++#: ../arp.c:261
+ #, c-format
+ msgid "arp: device `%s' has HW address %s `%s'.\n"
+ msgstr ""
+
+-#: ../arp.c:283
++#: ../arp.c:293
++#, c-format
+ msgid "arp: need hardware address\n"
+ msgstr ""
+
+-#: ../arp.c:291
++#: ../arp.c:301
++#, c-format
+ msgid "arp: invalid hardware address\n"
+ msgstr ""
+
+-#: ../arp.c:388
++#: ../arp.c:398
+ #, c-format
+ msgid "arp: cannot open etherfile %s !\n"
+ msgstr ""
+
+-#: ../arp.c:404
++#: ../arp.c:414
+ #, c-format
+ msgid "arp: format error on line %u of etherfile %s !\n"
+ msgstr ""
+
+-#: ../arp.c:417
++#: ../arp.c:427
+ #, c-format
+ msgid "arp: cannot set entry on line %u of etherfile %s !\n"
+ msgstr ""
+
+-#: ../arp.c:438
++#: ../arp.c:448
++#, c-format
+ msgid ""
+ "Address HWtype HWaddress Flags Mask "
+ "Iface\n"
+ msgstr ""
+
+-#: ../arp.c:468
++#: ../arp.c:476
++msgid "<from_interface>"
++msgstr ""
++
++#: ../arp.c:478
+ msgid "(incomplete)"
+ msgstr ""
+
+-#: ../arp.c:485
++#: ../arp.c:495
+ #, c-format
+ msgid "%s (%s) at "
+ msgstr ""
+
+-#: ../arp.c:491
++#: ../arp.c:501
++#, c-format
+ msgid "<incomplete> "
+ msgstr ""
+
+-#: ../arp.c:497
++#: ../arp.c:507
+ #, c-format
+ msgid "netmask %s "
+ msgstr ""
+
+-#: ../arp.c:514
++#: ../arp.c:524
+ #, c-format
+ msgid "on %s\n"
+ msgstr ""
+
+-#: ../arp.c:593
++#: ../arp.c:605
+ #, c-format
+ msgid "Entries: %d\tSkipped: %d\tFound: %d\n"
+ msgstr ""
+
+-#: ../arp.c:597
++#: ../arp.c:609
+ #, c-format
+ msgid "%s (%s) -- no entry\n"
+ msgstr ""
+
+-#: ../arp.c:599
++#: ../arp.c:611
+ #, c-format
+ msgid "arp: in %d entries no match found.\n"
+ msgstr ""
+
+-#: ../arp.c:614
++#: ../arp.c:626
++#, c-format
+ msgid ""
+ "Usage:\n"
+ " arp [-vn] [<HW>] [-i <if>] [-a] [<hostname>] <-Display ARP "
+ "cache\n"
+ msgstr ""
+
+-#: ../arp.c:615
++#: ../arp.c:627
++#, c-format
+ msgid ""
+-" arp [-v] [-i <if>] -d <hostname> [pub][nopub] <-Delete ARP "
++" arp [-v] [-i <if>] -d <host> [pub] <-Delete ARP "
+ "entry\n"
+ msgstr ""
+
+-#: ../arp.c:616
++#: ../arp.c:628
++#, c-format
+ msgid ""
+-" arp [-vnD] [<HW>] [-i <if>] -f [<filename>] <-Add entry from "
++" arp [-vnD] [<HW>] [-i <if>] -f [<filename>] <-Add entry from "
+ "file\n"
+ msgstr ""
+
+-#: ../arp.c:617
++#: ../arp.c:629
++#, c-format
+ msgid ""
+-" arp [-v] [<HW>] [-i <if>] -s <hostname> <hwaddr> [temp][nopub] <-Add "
++" arp [-v] [<HW>] [-i <if>] -s <host> <hwaddr> [temp] <-Add "
+ "entry\n"
+ msgstr ""
+
+-#: ../arp.c:618
+-msgid ""
+-" arp [-v] [<HW>] [-i <if>] -s <hostname> <hwaddr> [netmask <nm>] pub "
+-"<-''-\n"
+-msgstr ""
+-
+-#: ../arp.c:619
++#: ../arp.c:630
++#, c-format
+ msgid ""
+-" arp [-v] [<HW>] [-i <if>] -Ds <hostname> <if> [netmask <nm>] pub "
++" arp [-v] [<HW>] [-i <if>] -Ds <host> <if> [netmask <nm>] pub "
+ "<-''-\n"
+ "\n"
+ msgstr ""
+
+-#: ../arp.c:621
++#: ../arp.c:632
++#, c-format
+ msgid ""
+ " -a display (all) hosts in alternative (BSD) "
+ "style\n"
+ msgstr ""
+
+-#: ../arp.c:622
++#: ../arp.c:633
++#, c-format
+ msgid " -s, --set set a new ARP entry\n"
+ msgstr ""
+
+-#: ../arp.c:623
++#: ../arp.c:634
++#, c-format
+ msgid " -d, --delete delete a specified entry\n"
+ msgstr ""
+
+-#: ../arp.c:624 ../netstat.c:1490 ../route.c:86
++#: ../arp.c:635 ../netstat.c:1503 ../route.c:86
++#, c-format
+ msgid " -v, --verbose be verbose\n"
+ msgstr ""
+
+-#: ../arp.c:625 ../netstat.c:1491 ../route.c:87
++#: ../arp.c:636 ../netstat.c:1504 ../route.c:87
++#, c-format
+ msgid " -n, --numeric don't resolve names\n"
+ msgstr ""
+
+-#: ../arp.c:626
++#: ../arp.c:637
++#, c-format
+ msgid ""
+ " -i, --device specify network interface (e.g. eth0)\n"
+ msgstr ""
+
+-#: ../arp.c:627
++#: ../arp.c:638
++#, c-format
+ msgid " -D, --use-device read <hwaddr> from given device\n"
+ msgstr ""
+
+-#: ../arp.c:628
++#: ../arp.c:639
++#, c-format
+ msgid " -A, -p, --protocol specify protocol family\n"
+ msgstr ""
+
+-#: ../arp.c:629
++#: ../arp.c:640
++#, c-format
+ msgid ""
+-" -f, --file read new entries from file or from "
+-"/etc/ethers\n"
++" -f, --file read new entries from file or from /etc/"
++"ethers\n"
+ "\n"
+ msgstr ""
+
+-#: ../arp.c:631 ../rarp.c:182
++#: ../arp.c:642 ../rarp.c:182
+ #, c-format
+ msgid " <HW>=Use '-H <hw>' to specify hardware address type. Default: %s\n"
+ msgstr ""
+
+-#: ../arp.c:632 ../rarp.c:183
++#: ../arp.c:643 ../rarp.c:183
++#, c-format
+ msgid " List of possible hardware types (which support ARP):\n"
+ msgstr ""
+
+-#: ../arp.c:666 ../arp.c:751
++#: ../arp.c:677 ../arp.c:762
+ #, c-format
+ msgid "%s: hardware type not supported!\n"
+ msgstr ""
+
+-#: ../arp.c:670
++#: ../arp.c:681
+ #, c-format
+ msgid "%s: address family not supported!\n"
+ msgstr ""
+
+-#: ../arp.c:705
++#: ../arp.c:716
++#, c-format
+ msgid "arp: -N not yet supported.\n"
+ msgstr ""
+
+-#: ../arp.c:715
++#: ../arp.c:726
+ #, c-format
+ msgid "arp: %s: unknown address family.\n"
+ msgstr ""
+
+-#: ../arp.c:724
++#: ../arp.c:735
+ #, c-format
+ msgid "arp: %s: unknown hardware type.\n"
+ msgstr ""
+
+-#: ../arp.c:743
++#: ../arp.c:754
+ #, c-format
+ msgid "arp: %s: kernel only supports 'inet'.\n"
+ msgstr ""
+
+-#: ../arp.c:756
++#: ../arp.c:767
+ #, c-format
+ msgid "arp: %s: hardware type without ARP support.\n"
+ msgstr ""
+
+-#: ../hostname.c:70
++#: ../hostname.c:71
+ #, c-format
+ msgid "Setting nodename to `%s'\n"
+ msgstr ""
+
+-#: ../hostname.c:75
++#: ../hostname.c:76
+ #, c-format
+ msgid "%s: you must be root to change the node name\n"
+ msgstr ""
+
+-#: ../hostname.c:78 ../hostname.c:98 ../hostname.c:117
++#: ../hostname.c:79 ../hostname.c:99 ../hostname.c:117
+ #, c-format
+ msgid "%s: name too long\n"
+ msgstr ""
+
+-#: ../hostname.c:90
++#: ../hostname.c:91
+ #, c-format
+ msgid "Setting hostname to `%s'\n"
+ msgstr ""
+
+-#: ../hostname.c:95
++#: ../hostname.c:96
+ #, c-format
+ msgid "%s: you must be root to change the host name\n"
+ msgstr ""
+@@ -262,103 +284,119 @@
+ msgid "%s: you must be root to change the domain name\n"
+ msgstr ""
+
+-#: ../hostname.c:132
++#: ../hostname.c:131
+ #, c-format
+ msgid "Resolving `%s' ...\n"
+ msgstr ""
+
+-#: ../hostname.c:138
++#: ../hostname.c:137
+ #, c-format
+ msgid "Result: h_name=`%s'\n"
+ msgstr ""
+
+-#: ../hostname.c:143
++#: ../hostname.c:142
+ #, c-format
+ msgid "Result: h_aliases=`%s'\n"
+ msgstr ""
+
+-#: ../hostname.c:148
++#: ../hostname.c:147
+ #, c-format
+ msgid "Result: h_addr_list=`%s'\n"
+ msgstr ""
+
+-#: ../hostname.c:210
++#: ../hostname.c:208
+ #, c-format
+ msgid "%s: can't open `%s'\n"
+ msgstr ""
+
+-#: ../hostname.c:224
++#: ../hostname.c:222
++#, c-format
+ msgid "Usage: hostname [-v] {hostname|-F file} set hostname (from file)\n"
+ msgstr ""
+
+-#: ../hostname.c:225
++#: ../hostname.c:223
++#, c-format
+ msgid ""
+ " domainname [-v] {nisdomain|-F file} set NIS domainname (from file)\n"
+ msgstr ""
+
+-#: ../hostname.c:227
++#: ../hostname.c:225
++#, c-format
+ msgid ""
+ " nodename [-v] {nodename|-F file} set DECnet node name (from "
+ "file)\n"
+ msgstr ""
+
+-#: ../hostname.c:229
++#: ../hostname.c:227
++#, c-format
+ msgid " hostname [-v] [-d|-f|-s|-a|-i|-y|-n] display formatted name\n"
+ msgstr ""
+
+-#: ../hostname.c:230
++#: ../hostname.c:228
++#, c-format
+ msgid ""
+ " hostname [-v] display hostname\n"
+ "\n"
+ msgstr ""
+
+-#: ../hostname.c:231
++#: ../hostname.c:229
++#, c-format
+ msgid ""
+ " hostname -V|--version|-h|--help print info and exit\n"
+ "\n"
+ msgstr ""
+
+-#: ../hostname.c:232
++#: ../hostname.c:230
++#, c-format
+ msgid ""
+ " dnsdomainname=hostname -d, {yp,nis,}domainname=hostname -y\n"
+ "\n"
+ msgstr ""
+
+-#: ../hostname.c:233
++#: ../hostname.c:231
++#, c-format
+ msgid " -s, --short short host name\n"
+ msgstr ""
+
+-#: ../hostname.c:234
++#: ../hostname.c:232
++#, c-format
+ msgid " -a, --alias alias names\n"
+ msgstr ""
+
+-#: ../hostname.c:235
++#: ../hostname.c:233
++#, c-format
+ msgid " -i, --ip-address addresses for the hostname\n"
+ msgstr ""
+
+-#: ../hostname.c:236
++#: ../hostname.c:234
++#, c-format
+ msgid " -f, --fqdn, --long long host name (FQDN)\n"
+ msgstr ""
+
+-#: ../hostname.c:237
++#: ../hostname.c:235
++#, c-format
+ msgid " -d, --domain DNS domain name\n"
+ msgstr ""
+
+-#: ../hostname.c:238
++#: ../hostname.c:236
++#, c-format
+ msgid " -y, --yp, --nis NIS/YP domainname\n"
+ msgstr ""
+
+-#: ../hostname.c:240
++#: ../hostname.c:238
++#, c-format
+ msgid " -n, --node DECnet node name\n"
+ msgstr ""
+
+-#: ../hostname.c:242
++#: ../hostname.c:240
++#, c-format
+ msgid ""
+ " -F, --file read hostname or NIS domainname from given file\n"
+ "\n"
+ msgstr ""
+
+-#: ../hostname.c:244
++#: ../hostname.c:242
++#, c-format
+ msgid ""
+ " This command can read or set the hostname or the NIS domainname. You can\n"
+ " also read the DNS domain or the FQDN (fully qualified domain name).\n"
+@@ -367,587 +405,706 @@
+ " part of the FQDN) in the /etc/hosts file.\n"
+ msgstr ""
+
+-#: ../hostname.c:340
++#: ../hostname.c:338
+ #, c-format
+ msgid "%s: You can't change the DNS domain name with this command\n"
+ msgstr ""
+
+-#: ../hostname.c:341
++#: ../hostname.c:339
++#, c-format
+ msgid ""
+ "\n"
+ "Unless you are using bind or NIS for host lookups you can change the DNS\n"
+ msgstr ""
+
+-#: ../hostname.c:342
++#: ../hostname.c:340
++#, c-format
+ msgid "domain name (which is part of the FQDN) in the /etc/hosts file.\n"
+ msgstr ""
+
+-#: ../hostname.c:359
++#: ../hostname.c:357
+ #, c-format
+ msgid "gethostname()=`%s'\n"
+ msgstr ""
+
+-#: ../hostname.c:376
++#: ../hostname.c:374
+ #, c-format
+ msgid "getdomainname()=`%s'\n"
+ msgstr ""
+
+-#: ../hostname.c:391
++#: ../hostname.c:389
+ #, c-format
+ msgid "getnodename()=`%s'\n"
+ msgstr ""
+
+-#: ../ifconfig.c:108
++#: ../ifconfig.c:107
++#, c-format
+ msgid ""
+-"Iface MTU Met RX-OK RX-ERR RX-DRP RX-OVR TX-OK TX-ERR TX-DRP TX-OVR "
++"Iface MTU Met RX-OK RX-ERR RX-DRP RX-OVR TX-OK TX-ERR TX-DRP TX-OVR "
+ "Flg\n"
+ msgstr ""
+
+-#: ../ifconfig.c:130 ../ifconfig.c:162
++#: ../ifconfig.c:129 ../ifconfig.c:161
+ #, c-format
+-msgid "%s: unknown interface: %s\n"
++msgid "%s: ERROR while getting interface flags: %s\n"
+ msgstr ""
+
+-#: ../ifconfig.c:154 ../ifconfig.c:734 ../ifconfig.c:825 ../ifconfig.c:936
++#: ../ifconfig.c:153 ../ifconfig.c:185 ../ifconfig.c:771 ../ifconfig.c:862
++#: ../ifconfig.c:973
++#, c-format
+ msgid "No support for INET on this system.\n"
+ msgstr ""
+
+-#: ../ifconfig.c:177
++#: ../ifconfig.c:193
++#, c-format
++msgid "%s: ERROR while testing interface flags: %s\n"
++msgstr ""
++
++#: ../ifconfig.c:202
++#, c-format
+ msgid ""
+ "Usage:\n"
+-" ifconfig [-a] [-i] [-v] [-s] <interface> [[<AF>] <address>]\n"
++" ifconfig [-a] [-v] [-s] <interface> [[<AF>] <address>]\n"
+ msgstr ""
+
+-#: ../ifconfig.c:179
++#: ../ifconfig.c:204
++#, c-format
+ msgid " [add <address>[/<prefixlen>]]\n"
+ msgstr ""
+
+-#: ../ifconfig.c:180
++#: ../ifconfig.c:205
++#, c-format
+ msgid " [del <address>[/<prefixlen>]]\n"
+ msgstr ""
+
+-#: ../ifconfig.c:181
++#: ../ifconfig.c:206
++#, c-format
+ msgid " [[-]broadcast [<address>]] [[-]pointopoint [<address>]]\n"
+ msgstr ""
+
+-#: ../ifconfig.c:182
++#: ../ifconfig.c:207
++#, c-format
+ msgid " [netmask <address>] [dstaddr <address>] [tunnel <address>]\n"
+ msgstr ""
+
+-#: ../ifconfig.c:185
++#: ../ifconfig.c:210
++#, c-format
+ msgid " [outfill <NN>] [keepalive <NN>]\n"
+ msgstr ""
+
+-#: ../ifconfig.c:187
++#: ../ifconfig.c:212
++#, c-format
+ msgid " [hw <HW> <address>] [metric <NN>] [mtu <NN>]\n"
+ msgstr ""
+
+-#: ../ifconfig.c:188
++#: ../ifconfig.c:213
++#, c-format
+ msgid " [[-]trailers] [[-]arp] [[-]allmulti]\n"
+ msgstr ""
+
+-#: ../ifconfig.c:189
++#: ../ifconfig.c:214
++#, c-format
+ msgid " [multicast] [[-]promisc]\n"
+ msgstr ""
+
+-#: ../ifconfig.c:190
++#: ../ifconfig.c:215
++#, c-format
+ msgid " [mem_start <NN>] [io_addr <NN>] [irq <NN>] [media <type>]\n"
+ msgstr ""
+
+-#: ../ifconfig.c:192
++#: ../ifconfig.c:217
++#, c-format
+ msgid " [txqueuelen <NN>]\n"
+ msgstr ""
+
+-#: ../ifconfig.c:195
++#: ../ifconfig.c:220
++#, c-format
+ msgid " [[-]dynamic]\n"
+ msgstr ""
+
+-#: ../ifconfig.c:197
++#: ../ifconfig.c:222
++#, c-format
+ msgid ""
+ " [up|down] ...\n"
+ "\n"
+ msgstr ""
+
+-#: ../ifconfig.c:199
++#: ../ifconfig.c:224
++#, c-format
+ msgid " <HW>=Hardware Type.\n"
+ msgstr ""
+
+-#: ../ifconfig.c:200
++#: ../ifconfig.c:225
++#, c-format
+ msgid " List of possible hardware types:\n"
+ msgstr ""
+
+ #. 1 = ARPable
+-#: ../ifconfig.c:202
++#: ../ifconfig.c:227
+ #, c-format
+ msgid " <AF>=Address family. Default: %s\n"
+ msgstr ""
+
+-#: ../ifconfig.c:203
++#: ../ifconfig.c:228
++#, c-format
+ msgid " List of possible address families:\n"
+ msgstr ""
+
+-#: ../ifconfig.c:278
++#: ../ifconfig.c:303
+ #, c-format
+ msgid "ifconfig: option `%s' not recognised.\n"
+ msgstr ""
+
+-#: ../ifconfig.c:280 ../ifconfig.c:925
++#: ../ifconfig.c:305 ../ifconfig.c:962
++#, c-format
+ msgid "ifconfig: `--help' gives usage information.\n"
+ msgstr ""
+
+-#: ../ifconfig.c:355
++#: ../ifconfig.c:380
++#, c-format
+ msgid "Unknown media type.\n"
+ msgstr ""
+
+-#: ../ifconfig.c:647
++#: ../ifconfig.c:417
++#, c-format
++msgid ""
++"Warning: Interface %s still in promisc mode... maybe other application is "
++"running?\n"
++msgstr ""
++
++#: ../ifconfig.c:429
++#, c-format
++msgid "Warning: Interface %s still in MULTICAST mode.\n"
++msgstr ""
++
++#: ../ifconfig.c:441
++#, c-format
++msgid "Warning: Interface %s still in ALLMULTI mode.\n"
++msgstr ""
++
++#: ../ifconfig.c:465
++#, c-format
++msgid "Warning: Interface %s still in DYNAMIC mode.\n"
++msgstr ""
++
++#: ../ifconfig.c:523
++#, c-format
++msgid "Warning: Interface %s still in BROADCAST mode.\n"
++msgstr ""
++
++#: ../ifconfig.c:652
++#, c-format
++msgid "Warning: Interface %s still in POINTOPOINT mode.\n"
++msgstr ""
++
++#: ../ifconfig.c:684
+ #, c-format
+ msgid "hw address type `%s' has no handler to set address. failed.\n"
+ msgstr ""
+
+-#: ../ifconfig.c:656
++#: ../ifconfig.c:693
+ #, c-format
+ msgid "%s: invalid %s address.\n"
+ msgstr ""
+
+-#: ../ifconfig.c:700 ../ifconfig.c:790 ../ifconfig.c:876
++#: ../ifconfig.c:737 ../ifconfig.c:827 ../ifconfig.c:913
++#, c-format
+ msgid "No support for INET6 on this system.\n"
+ msgstr ""
+
+-#: ../ifconfig.c:743 ../ifconfig.c:834
++#: ../ifconfig.c:780 ../ifconfig.c:871
+ #, c-format
+ msgid "Interface %s not initialized\n"
+ msgstr ""
+
+-#: ../ifconfig.c:755 ../ifconfig.c:845
++#: ../ifconfig.c:792 ../ifconfig.c:882
++#, c-format
+ msgid "Bad address.\n"
+ msgstr ""
+
+-#: ../ifconfig.c:848
++#: ../ifconfig.c:885
++#, c-format
+ msgid "Address deletion not supported on this system.\n"
+ msgstr ""
+
+-#: ../ifconfig.c:920
++#: ../ifconfig.c:957
++#, c-format
+ msgid "ifconfig: Cannot set address for this protocol family.\n"
+ msgstr ""
+
+-#: ../ifconfig.c:946
++#: ../ifconfig.c:983
++#, c-format
+ msgid "No support for ECONET on this system.\n"
+ msgstr ""
+
+-#: ../ifconfig.c:954
++#: ../ifconfig.c:991
+ #, c-format
+ msgid "Don't know how to set addresses for family %d.\n"
+ msgstr ""
+
+-#: ../netstat.c:430
++#: ../ifconfig.c:1021
++#, c-format
++msgid "WARNING: at least one error occured. (%d)\n"
++msgstr ""
++
++#: ../netstat.c:434
+ #, c-format
+ msgid ""
+ "(No info could be read for \"-p\": geteuid()=%d but you should be root.)\n"
+ msgstr ""
+
+-#: ../netstat.c:434
++#: ../netstat.c:438
++#, c-format
+ msgid ""
+ "(Not all processes could be identified, non-owned process info\n"
+ " will not be shown, you would have to be root to see it all.)\n"
+ msgstr ""
+
+-#: ../netstat.c:441 ../netstat.c:1176 ../netstat.c:1253
++#: ../netstat.c:445 ../netstat.c:1189 ../netstat.c:1266
+ msgid "LISTENING"
+ msgstr ""
+
+-#: ../netstat.c:442
++#: ../netstat.c:446
+ msgid "CONN SENT"
+ msgstr ""
+
+-#: ../netstat.c:443 ../netstat.c:1255
++#: ../netstat.c:447 ../netstat.c:1268
+ msgid "DISC SENT"
+ msgstr ""
+
+-#: ../netstat.c:444 ../netstat.c:511 ../netstat.c:894 ../netstat.c:1256
++#: ../netstat.c:448 ../netstat.c:515 ../netstat.c:904 ../netstat.c:1269
+ msgid "ESTABLISHED"
+ msgstr ""
+
+-#: ../netstat.c:466
++#: ../netstat.c:470
++#, c-format
+ msgid "Active NET/ROM sockets\n"
+ msgstr ""
+
+-#: ../netstat.c:467
++#: ../netstat.c:471
++#, c-format
+ msgid ""
+-"User Dest Source Device State Vr/Vs Send-Q "
+-"Recv-Q\n"
++"User Dest Source Device State Vr/Vs Send-Q Recv-"
++"Q\n"
+ msgstr ""
+
+-#: ../netstat.c:477 ../netstat.c:1295
++#: ../netstat.c:481 ../netstat.c:1308
+ #, c-format
+ msgid "Problem reading data from %s\n"
+ msgstr ""
+
+-#: ../netstat.c:512
++#: ../netstat.c:516
+ msgid "SYN_SENT"
+ msgstr ""
+
+-#: ../netstat.c:513
++#: ../netstat.c:517
+ msgid "SYN_RECV"
+ msgstr ""
+
+-#: ../netstat.c:514
++#: ../netstat.c:518
+ msgid "FIN_WAIT1"
+ msgstr ""
+
+-#: ../netstat.c:515
++#: ../netstat.c:519
+ msgid "FIN_WAIT2"
+ msgstr ""
+
+-#: ../netstat.c:516
++#: ../netstat.c:520
+ msgid "TIME_WAIT"
+ msgstr ""
+
+-#: ../netstat.c:517
++#: ../netstat.c:521
+ msgid "CLOSE"
+ msgstr ""
+
+-#: ../netstat.c:518
++#: ../netstat.c:522
+ msgid "CLOSE_WAIT"
+ msgstr ""
+
+-#: ../netstat.c:519
++#: ../netstat.c:523
+ msgid "LAST_ACK"
+ msgstr ""
+
+-#: ../netstat.c:520
++#: ../netstat.c:524
+ msgid "LISTEN"
+ msgstr ""
+
+-#: ../netstat.c:521
++#: ../netstat.c:525
+ msgid "CLOSING"
+ msgstr ""
+
+-#: ../netstat.c:592
++#: ../netstat.c:596
+ #, c-format
+ msgid "warning, got bogus igmp6 line %d.\n"
+ msgstr ""
+
+-#: ../netstat.c:597 ../netstat.c:635 ../netstat.c:756 ../netstat.c:888
+-#: ../netstat.c:1019 ../netstat.c:1024
++#: ../netstat.c:601 ../netstat.c:639 ../netstat.c:763 ../netstat.c:898
++#: ../netstat.c:1032 ../netstat.c:1037
+ #, c-format
+ msgid "netstat: unsupported address family %d !\n"
+ msgstr ""
+
+-#: ../netstat.c:610 ../netstat.c:615 ../netstat.c:623 ../netstat.c:630
++#: ../netstat.c:614 ../netstat.c:619 ../netstat.c:627 ../netstat.c:634
+ #, c-format
+ msgid "warning, got bogus igmp line %d.\n"
+ msgstr ""
+
+-#: ../netstat.c:673
++#: ../netstat.c:677
++#, c-format
+ msgid "Active X.25 sockets\n"
+ msgstr ""
+
+ #. IMHO, Vr/Vs is not very usefull --SF
+-#: ../netstat.c:675
++#: ../netstat.c:679
++#, c-format
+ msgid ""
+-"Dest Source Device LCI State Vr/Vs Send-Q "
+-"Recv-Q\n"
++"Dest Source Device LCI State Vr/Vs Send-Q Recv-"
++"Q\n"
+ msgstr ""
+
+-#: ../netstat.c:752
++#: ../netstat.c:759
++#, c-format
+ msgid "warning, got bogus tcp line.\n"
+ msgstr ""
+
+-#: ../netstat.c:793 ../netstat.c:943 ../netstat.c:1062
++#: ../netstat.c:800 ../netstat.c:953 ../netstat.c:1075
+ #, c-format
+ msgid "off (0.00/%ld/%d)"
+ msgstr ""
+
+-#: ../netstat.c:797
++#: ../netstat.c:804
+ #, c-format
+ msgid "on (%2.2f/%ld/%d)"
+ msgstr ""
+
+-#: ../netstat.c:802
++#: ../netstat.c:809
+ #, c-format
+ msgid "keepalive (%2.2f/%ld/%d)"
+ msgstr ""
+
+-#: ../netstat.c:807
++#: ../netstat.c:814
+ #, c-format
+ msgid "timewait (%2.2f/%ld/%d)"
+ msgstr ""
+
+-#: ../netstat.c:812 ../netstat.c:952 ../netstat.c:1072
++#: ../netstat.c:819 ../netstat.c:962 ../netstat.c:1085
+ #, c-format
+ msgid "unkn-%d (%2.2f/%ld/%d)"
+ msgstr ""
+
+-#: ../netstat.c:884
++#: ../netstat.c:894
++#, c-format
+ msgid "warning, got bogus udp line.\n"
+ msgstr ""
+
+-#: ../netstat.c:902 ../netstat.c:1162 ../netstat.c:1195
++#: ../netstat.c:912 ../netstat.c:1175 ../netstat.c:1208
+ msgid "UNKNOWN"
+ msgstr ""
+
+-#: ../netstat.c:948 ../netstat.c:1067
++#: ../netstat.c:958 ../netstat.c:1080
+ #, c-format
+ msgid "on%d (%2.2f/%ld/%d)"
+ msgstr ""
+
+-#: ../netstat.c:1033
++#: ../netstat.c:1046
++#, c-format
+ msgid "warning, got bogus raw line.\n"
+ msgstr ""
+
+-#: ../netstat.c:1115
++#: ../netstat.c:1128
++#, c-format
+ msgid "warning, got bogus unix line.\n"
+ msgstr ""
+
+-#: ../netstat.c:1142
++#: ../netstat.c:1155
+ msgid "STREAM"
+ msgstr ""
+
+-#: ../netstat.c:1146
++#: ../netstat.c:1159
+ msgid "DGRAM"
+ msgstr ""
+
+-#: ../netstat.c:1150
++#: ../netstat.c:1163
+ msgid "RAW"
+ msgstr ""
+
+-#: ../netstat.c:1154
++#: ../netstat.c:1167
+ msgid "RDM"
+ msgstr ""
+
+-#: ../netstat.c:1158
++#: ../netstat.c:1171
+ msgid "SEQPACKET"
+ msgstr ""
+
+-#: ../netstat.c:1167
++#: ../netstat.c:1180
+ msgid "FREE"
+ msgstr ""
+
+-#: ../netstat.c:1183
++#: ../netstat.c:1196
+ msgid "CONNECTING"
+ msgstr ""
+
+-#: ../netstat.c:1187
++#: ../netstat.c:1200
+ msgid "CONNECTED"
+ msgstr ""
+
+-#: ../netstat.c:1191
++#: ../netstat.c:1204
+ msgid "DISCONNECTING"
+ msgstr ""
+
+-#: ../netstat.c:1222
++#: ../netstat.c:1235
++#, c-format
+ msgid "Active UNIX domain sockets "
+ msgstr ""
+
+-#: ../netstat.c:1224 ../netstat.c:1735
++#: ../netstat.c:1237 ../netstat.c:1756
++#, c-format
+ msgid "(servers and established)"
+ msgstr ""
+
+-#: ../netstat.c:1227 ../netstat.c:1738
++#: ../netstat.c:1240 ../netstat.c:1759
++#, c-format
+ msgid "(only servers)"
+ msgstr ""
+
+-#: ../netstat.c:1229 ../netstat.c:1740
++#: ../netstat.c:1242 ../netstat.c:1761
++#, c-format
+ msgid "(w/o servers)"
+ msgstr ""
+
+-#: ../netstat.c:1232
++#: ../netstat.c:1245
++#, c-format
+ msgid ""
+ "\n"
+ "Proto RefCnt Flags Type State I-Node"
+ msgstr ""
+
+-#: ../netstat.c:1234
++#: ../netstat.c:1247
++#, c-format
+ msgid " Path\n"
+ msgstr ""
+
+-#: ../netstat.c:1254
++#: ../netstat.c:1267
+ msgid "SABM SENT"
+ msgstr ""
+
+-#: ../netstat.c:1257
++#: ../netstat.c:1270
+ msgid "RECOVERY"
+ msgstr ""
+
+-#: ../netstat.c:1271
++#: ../netstat.c:1284
++#, c-format
+ msgid "Active AX.25 sockets\n"
+ msgstr ""
+
+-#: ../netstat.c:1272
++#: ../netstat.c:1285
++#, c-format
+ msgid "Dest Source Device State Vr/Vs Send-Q Recv-Q\n"
+ msgstr ""
+
+-#: ../netstat.c:1315
++#: ../netstat.c:1328
+ #, c-format
+ msgid "problem reading data from %s\n"
+ msgstr ""
+
+-#: ../netstat.c:1366
++#: ../netstat.c:1379
++#, c-format
+ msgid ""
+ "Active IPX sockets\n"
+ "Proto Recv-Q Send-Q Local Address Foreign Address "
+ "State"
+ msgstr ""
+
+-#: ../netstat.c:1368
++#: ../netstat.c:1381
++#, c-format
+ msgid " User"
+ msgstr ""
+
+-#: ../netstat.c:1402
++#: ../netstat.c:1415
+ msgid "ESTAB"
+ msgstr ""
+
+-#: ../netstat.c:1410
++#: ../netstat.c:1423
+ msgid "UNK."
+ msgstr ""
+
+-#: ../netstat.c:1448
++#: ../netstat.c:1461
++#, c-format
+ msgid "Kernel Interface table\n"
+ msgstr ""
+
+-#: ../netstat.c:1452
++#: ../netstat.c:1465
++#, c-format
+ msgid ""
+-"Iface MTU Met RX-OK RX-ERR RX-DRP RX-OVR TX-OK TX-ERR TX-DRP TX-OVR "
++"Iface MTU Met RX-OK RX-ERR RX-DRP RX-OVR TX-OK TX-ERR TX-DRP TX-OVR "
+ "Flg\n"
+ msgstr ""
+
+-#: ../netstat.c:1456
++#: ../netstat.c:1469
+ msgid "missing interface information"
+ msgstr ""
+
+-#: ../netstat.c:1479
++#: ../netstat.c:1492
++#, c-format
+ msgid ""
+-"usage: netstat [-veenNcCF] [<Af>] -r netstat "
+-"{-V|--version|-h|--help}\n"
++"usage: netstat [-veenNcCF] [<Af>] -r netstat {-V|--version|-h|--"
++"help}\n"
+ msgstr ""
+
+-#: ../netstat.c:1480
++#: ../netstat.c:1493
++#, c-format
+ msgid " netstat [-vnNcaeol] [<Socket> ...]\n"
+ msgstr ""
+
+-#: ../netstat.c:1481
++#: ../netstat.c:1494
++#, c-format
+ msgid ""
+ " netstat { [-veenNac] -i | [-cnNe] -M | -s }\n"
+ "\n"
+ msgstr ""
+
+-#: ../netstat.c:1483
++#: ../netstat.c:1496
++#, c-format
+ msgid " -r, --route display routing table\n"
+ msgstr ""
+
+-#: ../netstat.c:1484
++#: ../netstat.c:1497
++#, c-format
+ msgid " -i, --interfaces display interface table\n"
+ msgstr ""
+
+-#: ../netstat.c:1485
++#: ../netstat.c:1498
++#, c-format
+ msgid " -g, --groups display multicast group memberships\n"
+ msgstr ""
+
+-#: ../netstat.c:1486
++#: ../netstat.c:1499
++#, c-format
+ msgid ""
+ " -s, --statistics display networking statistics (like SNMP)\n"
+ msgstr ""
+
+-#: ../netstat.c:1488
++#: ../netstat.c:1501
++#, c-format
+ msgid ""
+ " -M, --masquerade display masqueraded connections\n"
+ "\n"
+ msgstr ""
+
+-#: ../netstat.c:1492
++#: ../netstat.c:1505
++#, c-format
+ msgid " --numeric-hosts don't resolve host names\n"
+ msgstr ""
+
+-#: ../netstat.c:1493
++#: ../netstat.c:1506
++#, c-format
+ msgid " --numeric-ports don't resolve port names\n"
+ msgstr ""
+
+-#: ../netstat.c:1494
++#: ../netstat.c:1507
++#, c-format
+ msgid " --numeric-users don't resolve user names\n"
+ msgstr ""
+
+-#: ../netstat.c:1495
++#: ../netstat.c:1508
++#, c-format
+ msgid " -N, --symbolic resolve hardware names\n"
+ msgstr ""
+
+-#: ../netstat.c:1496 ../route.c:88
++#: ../netstat.c:1509 ../route.c:88
++#, c-format
+ msgid " -e, --extend display other/more information\n"
+ msgstr ""
+
+-#: ../netstat.c:1497
++#: ../netstat.c:1510
++#, c-format
+ msgid " -p, --programs display PID/Program name for sockets\n"
+ msgstr ""
+
+-#: ../netstat.c:1498
++#: ../netstat.c:1511
++#, c-format
+ msgid ""
+ " -c, --continuous continuous listing\n"
+ "\n"
+ msgstr ""
+
+-#: ../netstat.c:1499
++#: ../netstat.c:1512
++#, c-format
+ msgid " -l, --listening display listening server sockets\n"
+ msgstr ""
+
+-#: ../netstat.c:1500
++#: ../netstat.c:1513
++#, c-format
+ msgid ""
+ " -a, --all, --listening display all sockets (default: connected)\n"
+ msgstr ""
+
+-#: ../netstat.c:1501
++#: ../netstat.c:1514
++#, c-format
+ msgid " -o, --timers display timers\n"
+ msgstr ""
+
+-#: ../netstat.c:1502 ../route.c:89
++#: ../netstat.c:1515 ../route.c:89
++#, c-format
+ msgid ""
+ " -F, --fib display Forwarding Information Base "
+ "(default)\n"
+ msgstr ""
+
+-#: ../netstat.c:1503 ../route.c:90
++#: ../netstat.c:1516 ../route.c:90
++#, c-format
+ msgid ""
+ " -C, --cache display routing cache instead of FIB\n"
+ "\n"
+ msgstr ""
+
+-#: ../netstat.c:1505
++#: ../netstat.c:1518
++#, c-format
+ msgid ""
+-" <Socket>={-t|--tcp} {-u|--udp} {-w|--raw} {-x|--unix} --ax25 --ipx "
+-"--netrom\n"
++" <Socket>={-t|--tcp} {-u|--udp} {-w|--raw} {-x|--unix} --ax25 --ipx --"
++"netrom\n"
+ msgstr ""
+
+-#: ../netstat.c:1506 ../route.c:92
++#: ../netstat.c:1519
+ #, c-format
+-msgid " <AF>=Use '-A <af>' or '--<af>'; default: %s\n"
++msgid " <AF>=Use '-6|-4' or '-A <af>' or '--<af>'; default: %s\n"
+ msgstr ""
+
+-#: ../netstat.c:1507 ../route.c:93
++#: ../netstat.c:1520 ../route.c:93
++#, c-format
+ msgid " List of possible address families (which support routing):\n"
+ msgstr ""
+
+-#: ../netstat.c:1732
++#: ../netstat.c:1753
++#, c-format
+ msgid "Active Internet connections "
+ msgstr ""
+
+-#: ../netstat.c:1742
++#: ../netstat.c:1763
++#, c-format
+ msgid ""
+ "\n"
+-"Proto Recv-Q Send-Q Local Address Foreign Address State "
+-" "
++"Proto Recv-Q Send-Q Local Address Foreign Address "
++"State "
+ msgstr ""
+
+-#: ../netstat.c:1744
++#: ../netstat.c:1765
++#, c-format
+ msgid " User Inode "
+ msgstr ""
+
+-#: ../netstat.c:1747
++#: ../netstat.c:1768
++#, c-format
+ msgid " Timer"
+ msgstr ""
+
+-#: ../netstat.c:1777
++#: ../netstat.c:1798
++#, c-format
+ msgid "IPv4 Group Memberships\n"
+ msgstr ""
+
+-#: ../netstat.c:1778
++#: ../netstat.c:1799
++#, c-format
+ msgid "Interface RefCnt Group\n"
+ msgstr ""
+
+@@ -986,23 +1143,28 @@
+ msgstr ""
+
+ #: ../rarp.c:176
++#, c-format
+ msgid "Usage: rarp -a list entries in cache.\n"
+ msgstr ""
+
+ #: ../rarp.c:177
++#, c-format
+ msgid " rarp -d <hostname> delete entry from cache.\n"
+ msgstr ""
+
+ #: ../rarp.c:178
++#, c-format
+ msgid " rarp [<HW>] -s <hostname> <hwaddr> add entry to cache.\n"
+ msgstr ""
+
+ #: ../rarp.c:179
++#, c-format
+ msgid ""
+ " rarp -f add entries from /etc/ethers.\n"
+ msgstr ""
+
+ #: ../rarp.c:180
++#, c-format
+ msgid ""
+ " rarp -V display program version.\n"
+ "\n"
+@@ -1019,38 +1181,50 @@
+ msgstr ""
+
+ #: ../route.c:80
++#, c-format
+ msgid ""
+ "Usage: route [-nNvee] [-FC] [<AF>] List kernel routing tables\n"
+ msgstr ""
+
+ #: ../route.c:81
++#, c-format
+ msgid ""
+ " route [-v] [-FC] {add|del|flush} ... Modify routing table for AF.\n"
+ "\n"
+ msgstr ""
+
+ #: ../route.c:83
++#, c-format
+ msgid ""
+ " route {-h|--help} [<AF>] Detailed usage syntax for "
+ "specified AF.\n"
+ msgstr ""
+
+ #: ../route.c:84
++#, c-format
+ msgid ""
+ " route {-V|--version} Display version/author and "
+ "exit.\n"
+ "\n"
+ msgstr ""
+
++#: ../route.c:92
++#, c-format
++msgid " <AF>=Use '-A <af>' or '--<af>'; default: %s\n"
++msgstr ""
++
+ #: ../plipconfig.c:66
++#, c-format
+ msgid "Usage: plipconfig [-a] [-i] [-v] interface\n"
+ msgstr ""
+
+ #: ../plipconfig.c:67
++#, c-format
+ msgid " [nibble NN] [trigger NN]\n"
+ msgstr ""
+
+ #: ../plipconfig.c:68
++#, c-format
+ msgid " plipconfig -V | --version\n"
+ msgstr ""
+
+@@ -1060,61 +1234,75 @@
+ msgstr ""
+
+ #: ../iptunnel.c:85
++#, c-format
+ msgid "Usage: iptunnel { add | change | del | show } [ NAME ]\n"
+ msgstr ""
+
+ #: ../iptunnel.c:86
++#, c-format
+ msgid ""
+ " [ mode { ipip | gre | sit } ] [ remote ADDR ] [ local ADDR ]\n"
+ msgstr ""
+
+ #: ../iptunnel.c:87
++#, c-format
+ msgid " [ [i|o]seq ] [ [i|o]key KEY ] [ [i|o]csum ]\n"
+ msgstr ""
+
+ #: ../iptunnel.c:88
++#, c-format
+ msgid " [ ttl TTL ] [ tos TOS ] [ nopmtudisc ] [ dev PHYS_DEV ]\n"
+ msgstr ""
+
+ #: ../iptunnel.c:89
++#, c-format
+ msgid ""
+ " iptunnel -V | --version\n"
+ "\n"
+ msgstr ""
+
+ #: ../iptunnel.c:90
++#, c-format
+ msgid "Where: NAME := STRING\n"
+ msgstr ""
+
+ #: ../iptunnel.c:91
++#, c-format
+ msgid " ADDR := { IP_ADDRESS | any }\n"
+ msgstr ""
+
+ #: ../iptunnel.c:92
++#, c-format
+ msgid " TOS := { NUMBER | inherit }\n"
+ msgstr ""
+
+ #: ../iptunnel.c:93
++#, c-format
+ msgid " TTL := { 1..255 | inherit }\n"
+ msgstr ""
+
+ #: ../iptunnel.c:94
++#, c-format
+ msgid " KEY := { DOTTED_QUAD | NUMBER }\n"
+ msgstr ""
+
+ #: ../iptunnel.c:332
++#, c-format
+ msgid "Keys are not allowed with ipip and sit.\n"
+ msgstr ""
+
+ #: ../iptunnel.c:352
++#, c-format
+ msgid "Broadcast tunnel requires a source address.\n"
+ msgstr ""
+
+ #: ../iptunnel.c:367
++#, c-format
+ msgid "ttl != 0 and noptmudisc are incompatible\n"
+ msgstr ""
+
+ #: ../iptunnel.c:379
++#, c-format
+ msgid "cannot determine tunnel mode (ipip, gre or sit)\n"
+ msgstr ""
+
+@@ -1128,22 +1316,27 @@
+ msgstr ""
+
+ #: ../iptunnel.c:453
++#, c-format
+ msgid " Drop packets out of sequence.\n"
+ msgstr ""
+
+ #: ../iptunnel.c:455
++#, c-format
+ msgid " Checksum in received packet is required.\n"
+ msgstr ""
+
+ #: ../iptunnel.c:457
++#, c-format
+ msgid " Sequence packets on output.\n"
+ msgstr ""
+
+ #: ../iptunnel.c:459
++#, c-format
+ msgid " Checksum output packets.\n"
+ msgstr ""
+
+ #: ../iptunnel.c:487
++#, c-format
+ msgid "Wrong format of /proc/net/dev. Sorry.\n"
+ msgstr ""
+
+@@ -1153,10 +1346,12 @@
+ msgstr ""
+
+ #: ../iptunnel.c:516
++#, c-format
+ msgid "RX: Packets Bytes Errors CsumErrs OutOfSeq Mcasts\n"
+ msgstr ""
+
+ #: ../iptunnel.c:519
++#, c-format
+ msgid "TX: Packets Bytes Errors DeadLoop NoRoute NoBufs\n"
+ msgstr ""
+
+@@ -1563,12 +1758,12 @@
+
+ #: ../statistics.c:178
+ #, c-format
+-msgid "%u packets directly received from backlog"
++msgid "%u of bytes directly received from backlog"
+ msgstr ""
+
+ #: ../statistics.c:180
+ #, c-format
+-msgid "%u packets directly received from prequeue"
++msgid "%u of bytes directly received from prequeue"
+ msgstr ""
+
+ #: ../statistics.c:182
+@@ -1578,7 +1773,7 @@
+
+ #: ../statistics.c:183
+ #, c-format
+-msgid "%u packets header predicted"
++msgid "%u packet headers predicted"
+ msgstr ""
+
+ #: ../statistics.c:184
+@@ -1591,19 +1786,209 @@
+ msgid "Ran %u times out of system memory during packet sending"
+ msgstr ""
+
+-#: ../statistics.c:253
++#: ../statistics.c:188
++#, c-format
++msgid "%u acknowledgments not containing data received"
++msgstr ""
++
++#: ../statistics.c:189
++#, c-format
++msgid "%u predicted acknowledgments"
++msgstr ""
++
++#: ../statistics.c:190
++#, c-format
++msgid "%u times recovered from packet loss due to fast retransmit"
++msgstr ""
++
++#: ../statistics.c:191
++#, c-format
++msgid "%u times recovered from packet loss due to SACK data"
++msgstr ""
++
++#: ../statistics.c:192
++#, c-format
++msgid "%u bad SACKs received"
++msgstr ""
++
++#: ../statistics.c:193
++#, c-format
++msgid "Detected reordering %u times using FACK"
++msgstr ""
++
++#: ../statistics.c:194
++#, c-format
++msgid "Detected reordering %u times using SACK"
++msgstr ""
++
++#: ../statistics.c:195
++#, c-format
++msgid "Detected reordering %u times using time stamp"
++msgstr ""
++
++#: ../statistics.c:196
++#, c-format
++msgid "Detected reordering %u times using reno fast retransmit"
++msgstr ""
++
++#: ../statistics.c:197
++#, c-format
++msgid "%u congestion windows fully recovered"
++msgstr ""
++
++#: ../statistics.c:198
++#, c-format
++msgid "%u congestion windows partially recovered using Hoe heuristic"
++msgstr ""
++
++#: ../statistics.c:199
++#, c-format
++msgid "%u congestion window recovered using DSACK"
++msgstr ""
++
++#: ../statistics.c:200
++#, c-format
++msgid "%u congestion windows recovered after partial ack"
++msgstr ""
++
++#: ../statistics.c:201
++#, c-format
++msgid "%u retransmits lost"
++msgstr ""
++
++#: ../statistics.c:202
++#, c-format
++msgid "%u timeouts after reno fast retransmit"
++msgstr ""
++
++#: ../statistics.c:203
++#, c-format
++msgid "%u timeouts after SACK recovery"
++msgstr ""
++
++#: ../statistics.c:204
++#, c-format
++msgid "%u timeouts in loss state"
++msgstr ""
++
++#: ../statistics.c:205
++#, c-format
++msgid "%u fast retransmits"
++msgstr ""
++
++#: ../statistics.c:206
++#, c-format
++msgid "%u forward retransmits"
++msgstr ""
++
++#: ../statistics.c:207
++#, c-format
++msgid "%u retransmits in slow start"
++msgstr ""
++
++#: ../statistics.c:208
++#, c-format
++msgid "%u other TCP timeouts"
++msgstr ""
++
++#: ../statistics.c:209
++#, c-format
++msgid "%u reno fast retransmits failed"
++msgstr ""
++
++#: ../statistics.c:210
++#, c-format
++msgid "%u sack retransmits failed"
++msgstr ""
++
++#: ../statistics.c:211
++#, c-format
++msgid "%u times receiver scheduled too late for direct processing"
++msgstr ""
++
++#: ../statistics.c:212
++#, c-format
++msgid "%u packets collapsed in receive queue due to low socket buffer"
++msgstr ""
++
++#: ../statistics.c:213
++#, c-format
++msgid "%u DSACKs sent for old packets"
++msgstr ""
++
++#: ../statistics.c:214
++#, c-format
++msgid "%u DSACKs sent for out of order packets"
++msgstr ""
++
++#: ../statistics.c:215
++#, c-format
++msgid "%u DSACKs received"
++msgstr ""
++
++#: ../statistics.c:216
++#, c-format
++msgid "%u DSACKs for out of order packets received"
++msgstr ""
++
++#: ../statistics.c:217
++#, c-format
++msgid "%u connections reset due to unexpected SYN"
++msgstr ""
++
++#: ../statistics.c:218
++#, c-format
++msgid "%u connections reset due to unexpected data"
++msgstr ""
++
++#: ../statistics.c:219
++#, c-format
++msgid "%u connections reset due to early user close"
++msgstr ""
++
++#: ../statistics.c:220
++#, c-format
++msgid "%u connections aborted due to memory pressure"
++msgstr ""
++
++#: ../statistics.c:221
++#, c-format
++msgid "%u connections aborted due to timeout"
++msgstr ""
++
++#: ../statistics.c:222
++#, c-format
++msgid "%u connections aborted after user close in linger timeout"
++msgstr ""
++
++#: ../statistics.c:223
++#, c-format
++msgid "%u times unabled to send RST due to no memory"
++msgstr ""
++
++#: ../statistics.c:224
++#, c-format
++msgid "TCP ran low on memory %u times"
++msgstr ""
++
++#: ../statistics.c:225
++#, c-format
++msgid "%u TCP data loss events"
++msgstr ""
++
++#: ../statistics.c:292
+ msgid "enabled"
+ msgstr ""
+
+-#: ../statistics.c:253
++#: ../statistics.c:292
+ msgid "disabled"
+ msgstr ""
+
+-#: ../statistics.c:336
++#: ../statistics.c:375
+ msgid "error parsing /proc/net/snmp"
+ msgstr ""
+
+-#: ../statistics.c:349
++#: ../statistics.c:388
+ msgid "cannot open /proc/net/snmp"
+ msgstr ""
+
+@@ -1617,7 +2002,7 @@
+ msgid "Cannot change line discipline to `%s'.\n"
+ msgstr ""
+
+-#: ../lib/af.c:153 ../lib/hw.c:156
++#: ../lib/af.c:153 ../lib/hw.c:161
+ msgid "UNSPEC"
+ msgstr ""
+
+@@ -1633,11 +2018,11 @@
+ msgid "IPv6"
+ msgstr ""
+
+-#: ../lib/af.c:164 ../lib/hw.c:177
++#: ../lib/af.c:164 ../lib/hw.c:182
+ msgid "AMPR AX.25"
+ msgstr ""
+
+-#: ../lib/af.c:167 ../lib/hw.c:183
++#: ../lib/af.c:167 ../lib/hw.c:188
+ msgid "AMPR NET/ROM"
+ msgstr ""
+
+@@ -1649,7 +2034,7 @@
+ msgid "Appletalk DDP"
+ msgstr ""
+
+-#: ../lib/af.c:176 ../lib/hw.c:218
++#: ../lib/af.c:176 ../lib/hw.c:223
+ msgid "Econet"
+ msgstr ""
+
+@@ -1657,19 +2042,21 @@
+ msgid "CCITT X.25"
+ msgstr ""
+
+-#: ../lib/af.c:182 ../lib/hw.c:180
++#: ../lib/af.c:182 ../lib/hw.c:185
+ msgid "AMPR ROSE"
+ msgstr ""
+
+-#: ../lib/af.c:185 ../lib/hw.c:168
++#: ../lib/af.c:185 ../lib/hw.c:173
+ msgid "Ash"
+ msgstr ""
+
+ #: ../lib/af.c:243
++#, c-format
+ msgid "Please don't supply more than one address family.\n"
+ msgstr ""
+
+ #: ../lib/af.c:304
++#, c-format
+ msgid "Too much address family arguments.\n"
+ msgstr ""
+
+@@ -1694,6 +2081,7 @@
+ msgstr ""
+
+ #: ../lib/ash.c:81
++#, c-format
+ msgid "Malformed Ash address"
+ msgstr ""
+
+@@ -1712,22 +2100,21 @@
+ msgstr ""
+
+ #: ../lib/ax25_gr.c:47
++#, c-format
+ msgid "AX.25 not configured in this system.\n"
+ msgstr ""
+
+ #: ../lib/ax25_gr.c:50
++#, c-format
+ msgid "Kernel AX.25 routing table\n"
+ msgstr ""
+
+ #. xxx
+ #: ../lib/ax25_gr.c:51 ../lib/rose_gr.c:55
++#, c-format
+ msgid "Destination Iface Use\n"
+ msgstr ""
+
+-#: ../lib/ddp_gr.c:21
+-msgid "Routing table for `ddp' not yet supported.\n"
+-msgstr ""
+-
+ #: ../lib/ether.c:74 ../lib/ether.c:91
+ #, c-format
+ msgid "in_ether(%s): invalid ether address!\n"
+@@ -1783,90 +2170,94 @@
+ msgid "in_hippi(%s): trailing junk!\n"
+ msgstr ""
+
+-#: ../lib/hw.c:155
++#: ../lib/hw.c:160
+ msgid "Local Loopback"
+ msgstr ""
+
+-#: ../lib/hw.c:158
++#: ../lib/hw.c:163
+ msgid "Serial Line IP"
+ msgstr ""
+
+-#: ../lib/hw.c:159
++#: ../lib/hw.c:164
+ msgid "VJ Serial Line IP"
+ msgstr ""
+
+-#: ../lib/hw.c:160
++#: ../lib/hw.c:165
+ msgid "6-bit Serial Line IP"
+ msgstr ""
+
+-#: ../lib/hw.c:161
++#: ../lib/hw.c:166
+ msgid "VJ 6-bit Serial Line IP"
+ msgstr ""
+
+-#: ../lib/hw.c:162
++#: ../lib/hw.c:167
+ msgid "Adaptive Serial Line IP"
+ msgstr ""
+
+-#: ../lib/hw.c:165
++#: ../lib/hw.c:170
+ msgid "Ethernet"
+ msgstr ""
+
+-#: ../lib/hw.c:171
++#: ../lib/hw.c:176
+ msgid "Fiber Distributed Data Interface"
+ msgstr ""
+
+-#: ../lib/hw.c:174
++#: ../lib/hw.c:179
+ msgid "HIPPI"
+ msgstr ""
+
+-#: ../lib/hw.c:186
++#: ../lib/hw.c:191
+ msgid "generic X.25"
+ msgstr ""
+
+-#: ../lib/hw.c:189
++#: ../lib/hw.c:194
+ msgid "IPIP Tunnel"
+ msgstr ""
+
+-#: ../lib/hw.c:192
++#: ../lib/hw.c:197
+ msgid "Point-to-Point Protocol"
+ msgstr ""
+
+-#: ../lib/hw.c:195
++#: ../lib/hw.c:200
+ msgid "(Cisco)-HDLC"
+ msgstr ""
+
+-#: ../lib/hw.c:196
++#: ../lib/hw.c:201
+ msgid "LAPB"
+ msgstr ""
+
+-#: ../lib/hw.c:199
++#: ../lib/hw.c:204
+ msgid "ARCnet"
+ msgstr ""
+
+-#: ../lib/hw.c:202
++#: ../lib/hw.c:207
+ msgid "Frame Relay DLCI"
+ msgstr ""
+
+-#: ../lib/hw.c:203
++#: ../lib/hw.c:208
+ msgid "Frame Relay Access Device"
+ msgstr ""
+
+-#: ../lib/hw.c:206
++#: ../lib/hw.c:211
+ msgid "IPv6-in-IPv4"
+ msgstr ""
+
+-#: ../lib/hw.c:209
++#: ../lib/hw.c:214
+ msgid "IrLAP"
+ msgstr ""
+
+-#: ../lib/hw.c:212
++#: ../lib/hw.c:217
+ msgid "16/4 Mbps Token Ring"
+ msgstr ""
+
+-#: ../lib/hw.c:214
++#: ../lib/hw.c:219
+ msgid "16/4 Mbps Token Ring (New)"
+ msgstr ""
+
++#: ../lib/hw.c:226
++msgid "Generic EUI-64"
++msgstr ""
++
+ #: ../lib/inet.c:153 ../lib/inet6.c:79
+ #, c-format
+ msgid "rresolve: unsupport address family %d !\n"
+@@ -1877,131 +2268,157 @@
+ msgstr ""
+
+ #: ../lib/inet6_gr.c:71
++#, c-format
+ msgid "INET6 (IPv6) not configured in this system.\n"
+ msgstr ""
+
+ #: ../lib/inet6_gr.c:74
++#, c-format
+ msgid "Kernel IPv6 routing table\n"
+ msgstr ""
+
+ #: ../lib/inet6_gr.c:76
++#, c-format
+ msgid ""
+-"Destination Next Hop "
+-" Flags Metric Ref Use Iface\n"
++"Destination Next "
++"Hop Flags Metric Ref Use Iface\n"
+ msgstr ""
+
+ #: ../lib/inet6_gr.c:150
++#, c-format
+ msgid "Kernel IPv6 Neighbour Cache\n"
+ msgstr ""
+
+ #: ../lib/inet6_gr.c:153
++#, c-format
+ msgid ""
+ "Neighbour HW Address Iface Flags "
+ "Ref State\n"
+ msgstr ""
+
+ #: ../lib/inet6_gr.c:157
++#, c-format
+ msgid ""
+ "Neighbour HW Address Iface Flags "
+ "Ref State Stale(sec) Delete(sec)\n"
+ msgstr ""
+
+ #: ../lib/inet6_sr.c:46
++#, c-format
+ msgid "Usage: inet6_route [-vF] del Target\n"
+ msgstr ""
+
+ #: ../lib/inet6_sr.c:47
++#, c-format
+ msgid " inet6_route [-vF] add Target [gw Gw] [metric M] [[dev] If]\n"
+ msgstr ""
+
+ #: ../lib/inet6_sr.c:48
++#, c-format
+ msgid " inet6_route [-FC] flush NOT supported\n"
+ msgstr ""
+
+ #: ../lib/inet6_sr.c:188
++#, c-format
+ msgid "Flushing `inet6' routing table not supported\n"
+ msgstr ""
+
+ #: ../lib/inet_gr.c:50 ../lib/inet_gr.c:220
++#, c-format
+ msgid "INET (IPv4) not configured in this system.\n"
+ msgstr ""
+
+ #: ../lib/inet_gr.c:53
++#, c-format
+ msgid "Kernel IP routing table\n"
+ msgstr ""
+
+ #: ../lib/inet_gr.c:56
++#, c-format
+ msgid ""
+ "Destination Gateway Genmask Flags Metric Ref Use "
+ "Iface\n"
+ msgstr ""
+
+ #: ../lib/inet_gr.c:59
++#, c-format
+ msgid ""
+ "Destination Gateway Genmask Flags MSS Window irtt "
+ "Iface\n"
+ msgstr ""
+
+ #: ../lib/inet_gr.c:62
++#, c-format
+ msgid ""
+ "Destination Gateway Genmask Flags Metric Ref Use "
+ "Iface MSS Window irtt\n"
+ msgstr ""
+
+ #: ../lib/inet_gr.c:237
++#, c-format
+ msgid "Kernel IP routing cache\n"
+ msgstr ""
+
+ #: ../lib/inet_gr.c:258
++#, c-format
+ msgid ""
+ "Source Destination Gateway Flags Metric Ref Use "
+ "Iface\n"
+ msgstr ""
+
+ #: ../lib/inet_gr.c:261
++#, c-format
+ msgid ""
+ "Source Destination Gateway Flags MSS Window irtt "
+ "Iface\n"
+ msgstr ""
+
+ #: ../lib/inet_gr.c:266
++#, c-format
+ msgid ""
+ "Source Destination Gateway Flags Metric Ref Use "
+ "Iface MSS Window irtt HH Arp\n"
+ msgstr ""
+
+ #: ../lib/inet_gr.c:290
++#, c-format
+ msgid ""
+ "Source Destination Gateway Flags Metric Ref Use "
+ "Iface MSS Window irtt TOS HHRef HHUptod SpecDst\n"
+ msgstr ""
+
+-#: ../lib/inet_sr.c:50
++#: ../lib/inet_sr.c:51
++#, c-format
+ msgid ""
+ "Usage: inet_route [-vF] del {-host|-net} Target[/prefix] [gw Gw] [metric M] "
+ "[[dev] If]\n"
+ msgstr ""
+
+-#: ../lib/inet_sr.c:51
++#: ../lib/inet_sr.c:52
++#, c-format
+ msgid ""
+ " inet_route [-vF] add {-host|-net} Target[/prefix] [gw Gw] [metric M]\n"
+ msgstr ""
+
+-#: ../lib/inet_sr.c:52
++#: ../lib/inet_sr.c:53
++#, c-format
+ msgid ""
+ " [netmask N] [mss Mss] [window W] [irtt I]\n"
+ msgstr ""
+
+-#: ../lib/inet_sr.c:53
++#: ../lib/inet_sr.c:54
++#, c-format
+ msgid " [mod] [dyn] [reinstate] [[dev] If]\n"
+ msgstr ""
+
+-#: ../lib/inet_sr.c:54
++#: ../lib/inet_sr.c:55
++#, c-format
+ msgid ""
+ " inet_route [-vF] add {-host|-net} Target[/prefix] [metric M] reject\n"
+ msgstr ""
+
+-#: ../lib/inet_sr.c:55
++#: ../lib/inet_sr.c:56
++#, c-format
+ msgid " inet_route [-FC] flush NOT supported\n"
+ msgstr ""
+
+@@ -2011,14 +2428,17 @@
+ msgstr ""
+
+ #: ../lib/inet_sr.c:174
++#, c-format
+ msgid "route: Invalid MSS/MTU.\n"
+ msgstr ""
+
+ #: ../lib/inet_sr.c:187
++#, c-format
+ msgid "route: Invalid window.\n"
+ msgstr ""
+
+ #: ../lib/inet_sr.c:203
++#, c-format
+ msgid "route: Invalid initial rtt.\n"
+ msgstr ""
+
+@@ -2033,73 +2453,90 @@
+ msgstr ""
+
+ #: ../lib/inet_sr.c:270
++#, c-format
+ msgid "route: netmask doesn't match route address\n"
+ msgstr ""
+
+ #: ../lib/inet_sr.c:306
++#, c-format
+ msgid "Flushing `inet' routing table not supported\n"
+ msgstr ""
+
+ #: ../lib/inet_sr.c:310
++#, c-format
+ msgid "Modifying `inet' routing cache not supported\n"
+ msgstr ""
+
+ #: ../lib/ipx_gr.c:52
++#, c-format
+ msgid "IPX not configured in this system.\n"
+ msgstr ""
+
+ #: ../lib/ipx_gr.c:56
++#, c-format
+ msgid "Kernel IPX routing table\n"
+ msgstr ""
+
+ #. xxx
+ #: ../lib/ipx_gr.c:57
++#, c-format
+ msgid "Destination Router Net Router Node\n"
+ msgstr ""
+
+ #: ../lib/ipx_sr.c:33
++#, c-format
+ msgid "IPX: this needs to be written\n"
+ msgstr ""
+
+ #: ../lib/masq_info.c:198
++#, c-format
+ msgid "IP masquerading entries\n"
+ msgstr ""
+
+ #: ../lib/masq_info.c:201
++#, c-format
+ msgid "prot expire source destination ports\n"
+ msgstr ""
+
+ #: ../lib/masq_info.c:204
++#, c-format
+ msgid ""
+-"prot expire initseq delta prevd source destination "
+-" ports\n"
++"prot expire initseq delta prevd source "
++"destination ports\n"
+ msgstr ""
+
+ #: ../lib/netrom_gr.c:48
++#, c-format
+ msgid "NET/ROM not configured in this system.\n"
+ msgstr ""
+
+ #: ../lib/netrom_gr.c:51
++#, c-format
+ msgid "Kernel NET/ROM routing table\n"
+ msgstr ""
+
+ #: ../lib/netrom_gr.c:52
++#, c-format
+ msgid "Destination Mnemonic Quality Neighbour Iface\n"
+ msgstr ""
+
+ #: ../lib/netrom_sr.c:34
++#, c-format
+ msgid "netrom usage\n"
+ msgstr ""
+
+ #: ../lib/netrom_sr.c:44
++#, c-format
+ msgid "NET/ROM: this needs to be written\n"
+ msgstr ""
+
+ #: ../lib/ppp.c:44
++#, c-format
+ msgid "You cannot start PPP with this program.\n"
+ msgstr ""
+
+ #: ../lib/ppp_ac.c:38
++#, c-format
+ msgid "Sorry, use pppd!\n"
+ msgstr ""
+
+@@ -2108,287 +2545,314 @@
+ msgstr ""
+
+ #: ../lib/rose_gr.c:51
++#, c-format
+ msgid "ROSE not configured in this system.\n"
+ msgstr ""
+
+ #: ../lib/rose_gr.c:54
++#, c-format
+ msgid "Kernel ROSE routing table\n"
+ msgstr ""
+
+-#: ../lib/tr.c:70 ../lib/tr.c:85
++#: ../lib/tr.c:86 ../lib/tr.c:101
+ #, c-format
+ msgid "in_tr(%s): invalid token ring address!\n"
+ msgstr ""
+
+-#: ../lib/tr.c:97
++#: ../lib/tr.c:113
+ #, c-format
+ msgid "in_tr(%s): trailing : ignored!\n"
+ msgstr ""
+
+-#: ../lib/tr.c:109
++#: ../lib/tr.c:125
+ #, c-format
+ msgid "in_tr(%s): trailing junk!\n"
+ msgstr ""
+
+-#: ../lib/interface.c:164
++#: ../lib/interface.c:176
+ #, c-format
+ msgid "warning: no inet socket available: %s\n"
+ msgstr ""
+
+-#: ../lib/interface.c:316
++#: ../lib/interface.c:325
+ #, c-format
+ msgid "Warning: cannot open %s (%s). Limited output.\n"
+ msgstr ""
+
+ #. Give better error message for this case.
+-#: ../lib/interface.c:556
++#: ../lib/interface.c:571
+ msgid "Device not found"
+ msgstr ""
+
+-#: ../lib/interface.c:560
++#: ../lib/interface.c:575
+ #, c-format
+ msgid "%s: error fetching interface information: %s\n"
+ msgstr ""
+
+-#: ../lib/interface.c:593
++#: ../lib/interface.c:608
+ msgid " - no statistics available -"
+ msgstr ""
+
+-#: ../lib/interface.c:597
++#: ../lib/interface.c:612
++#, c-format
+ msgid "[NO FLAGS]"
+ msgstr ""
+
+-#: ../lib/interface.c:673
++#: ../lib/interface.c:688
+ #, c-format
+ msgid "%-9.9s Link encap:%s "
+ msgstr ""
+
+-#: ../lib/interface.c:678
++#: ../lib/interface.c:693
+ #, c-format
+ msgid "HWaddr %s "
+ msgstr ""
+
+-#: ../lib/interface.c:681
++#: ../lib/interface.c:696
+ #, c-format
+ msgid "Media:%s"
+ msgstr ""
+
+-#: ../lib/interface.c:683
++#: ../lib/interface.c:698
++#, c-format
+ msgid "(auto)"
+ msgstr ""
+
+-#: ../lib/interface.c:690
++#: ../lib/interface.c:705
+ #, c-format
+ msgid " %s addr:%s "
+ msgstr ""
+
+-#: ../lib/interface.c:693
++#: ../lib/interface.c:708
+ #, c-format
+ msgid " P-t-P:%s "
+ msgstr ""
+
+-#: ../lib/interface.c:696
++#: ../lib/interface.c:711
+ #, c-format
+ msgid " Bcast:%s "
+ msgstr ""
+
+-#: ../lib/interface.c:698
++#: ../lib/interface.c:713
+ #, c-format
+ msgid " Mask:%s\n"
+ msgstr ""
+
+-#: ../lib/interface.c:715
++#: ../lib/interface.c:730
+ #, c-format
+ msgid " inet6 addr: %s/%d"
+ msgstr ""
+
+-#: ../lib/interface.c:717
++#: ../lib/interface.c:732
++#, c-format
+ msgid " Scope:"
+ msgstr ""
+
+-#: ../lib/interface.c:720
++#: ../lib/interface.c:735
++#, c-format
+ msgid "Global"
+ msgstr ""
+
+-#: ../lib/interface.c:723
++#: ../lib/interface.c:738
++#, c-format
+ msgid "Link"
+ msgstr ""
+
+-#: ../lib/interface.c:726
++#: ../lib/interface.c:741
++#, c-format
+ msgid "Site"
+ msgstr ""
+
+-#: ../lib/interface.c:729
++#: ../lib/interface.c:744
++#, c-format
+ msgid "Compat"
+ msgstr ""
+
+-#: ../lib/interface.c:732
++#: ../lib/interface.c:747
++#, c-format
+ msgid "Host"
+ msgstr ""
+
+-#: ../lib/interface.c:735
++#: ../lib/interface.c:750
++#, c-format
+ msgid "Unknown"
+ msgstr ""
+
+-#: ../lib/interface.c:750
++#: ../lib/interface.c:765
+ #, c-format
+ msgid " IPX/Ethernet II addr:%s\n"
+ msgstr ""
+
+-#: ../lib/interface.c:753
++#: ../lib/interface.c:768
+ #, c-format
+ msgid " IPX/Ethernet SNAP addr:%s\n"
+ msgstr ""
+
+-#: ../lib/interface.c:756
++#: ../lib/interface.c:771
+ #, c-format
+ msgid " IPX/Ethernet 802.2 addr:%s\n"
+ msgstr ""
+
+-#: ../lib/interface.c:759
++#: ../lib/interface.c:774
+ #, c-format
+ msgid " IPX/Ethernet 802.3 addr:%s\n"
+ msgstr ""
+
+-#: ../lib/interface.c:769
++#: ../lib/interface.c:784
+ #, c-format
+ msgid " EtherTalk Phase 2 addr:%s\n"
+ msgstr ""
+
+-#: ../lib/interface.c:778
++#: ../lib/interface.c:793
+ #, c-format
+ msgid " econet addr:%s\n"
+ msgstr ""
+
+-#: ../lib/interface.c:785
++#: ../lib/interface.c:800
++#, c-format
+ msgid "[NO FLAGS] "
+ msgstr ""
+
+-#: ../lib/interface.c:787
++#: ../lib/interface.c:802
++#, c-format
+ msgid "UP "
+ msgstr ""
+
+-#: ../lib/interface.c:789
++#: ../lib/interface.c:804
++#, c-format
+ msgid "BROADCAST "
+ msgstr ""
+
+-#: ../lib/interface.c:791
++#: ../lib/interface.c:806
++#, c-format
+ msgid "DEBUG "
+ msgstr ""
+
+-#: ../lib/interface.c:793
++#: ../lib/interface.c:808
++#, c-format
+ msgid "LOOPBACK "
+ msgstr ""
+
+-#: ../lib/interface.c:795
++#: ../lib/interface.c:810
++#, c-format
+ msgid "POINTOPOINT "
+ msgstr ""
+
+-#: ../lib/interface.c:797
++#: ../lib/interface.c:812
++#, c-format
+ msgid "NOTRAILERS "
+ msgstr ""
+
+-#: ../lib/interface.c:799
++#: ../lib/interface.c:814
++#, c-format
+ msgid "RUNNING "
+ msgstr ""
+
+-#: ../lib/interface.c:801
++#: ../lib/interface.c:816
++#, c-format
+ msgid "NOARP "
+ msgstr ""
+
+-#: ../lib/interface.c:803
++#: ../lib/interface.c:818
++#, c-format
+ msgid "PROMISC "
+ msgstr ""
+
+-#: ../lib/interface.c:805
++#: ../lib/interface.c:820
++#, c-format
+ msgid "ALLMULTI "
+ msgstr ""
+
+-#: ../lib/interface.c:807
++#: ../lib/interface.c:822
++#, c-format
+ msgid "SLAVE "
+ msgstr ""
+
+-#: ../lib/interface.c:809
++#: ../lib/interface.c:824
++#, c-format
+ msgid "MASTER "
+ msgstr ""
+
+-#: ../lib/interface.c:811
++#: ../lib/interface.c:826
++#, c-format
+ msgid "MULTICAST "
+ msgstr ""
+
+-#: ../lib/interface.c:814
++#: ../lib/interface.c:829
++#, c-format
+ msgid "DYNAMIC "
+ msgstr ""
+
+ #. DONT FORGET TO ADD THE FLAGS IN ife_print_short
+-#: ../lib/interface.c:817
++#: ../lib/interface.c:832
+ #, c-format
+ msgid " MTU:%d Metric:%d"
+ msgstr ""
+
+-#: ../lib/interface.c:821
++#: ../lib/interface.c:836
+ #, c-format
+ msgid " Outfill:%d Keepalive:%d"
+ msgstr ""
+
+-#: ../lib/interface.c:835
++#: ../lib/interface.c:850
+ #, c-format
+ msgid "RX packets:%llu errors:%lu dropped:%lu overruns:%lu frame:%lu\n"
+ msgstr ""
+
+-#: ../lib/interface.c:840
++#: ../lib/interface.c:855
+ #, c-format
+ msgid " compressed:%lu\n"
+ msgstr ""
+
+-#: ../lib/interface.c:852
++#: ../lib/interface.c:895
+ #, c-format
+ msgid "TX packets:%llu errors:%lu dropped:%lu overruns:%lu carrier:%lu\n"
+ msgstr ""
+
+-#: ../lib/interface.c:856
++#: ../lib/interface.c:899
+ #, c-format
+ msgid " collisions:%lu "
+ msgstr ""
+
+-#: ../lib/interface.c:858
++#: ../lib/interface.c:901
+ #, c-format
+ msgid "compressed:%lu "
+ msgstr ""
+
+-#: ../lib/interface.c:860
++#: ../lib/interface.c:903
+ #, c-format
+ msgid "txqueuelen:%d "
+ msgstr ""
+
+-#: ../lib/interface.c:862
++#: ../lib/interface.c:905
+ #, c-format
+ msgid "RX bytes:%llu (%lu.%lu %s) TX bytes:%llu (%lu.%lu %s)\n"
+ msgstr ""
+
+-#: ../lib/interface.c:873
++#: ../lib/interface.c:916
+ #, c-format
+ msgid "Interrupt:%d "
+ msgstr ""
+
+ #. Only print devices using it for
+ #. I/O maps
+-#: ../lib/interface.c:876
++#: ../lib/interface.c:919
+ #, c-format
+ msgid "Base address:0x%x "
+ msgstr ""
+
+-#: ../lib/interface.c:878
++#: ../lib/interface.c:921
+ #, c-format
+ msgid "Memory:%lx-%lx "
+ msgstr ""
+
+-#: ../lib/interface.c:881
++#: ../lib/interface.c:924
+ #, c-format
+ msgid "DMA chan:%x "
+ msgstr ""
+
+ #: ../lib/sockets.c:63
++#, c-format
+ msgid "No usable address families found.\n"
+ msgstr ""
+
+@@ -2413,14 +2877,17 @@
+ msgstr ""
+
+ #: ../ipmaddr.c:61
++#, c-format
+ msgid "Usage: ipmaddr [ add | del ] MULTIADDR dev STRING\n"
+ msgstr ""
+
+ #: ../ipmaddr.c:62
++#, c-format
+ msgid " ipmaddr show [ dev STRING ] [ ipv4 | ipv6 | link | all ]\n"
+ msgstr ""
+
+ #: ../ipmaddr.c:63
++#, c-format
+ msgid " ipmaddr -V | -version\n"
+ msgstr ""
+
+@@ -2449,6 +2916,7 @@
+ msgstr ""
+
+ #: ../slattach.c:192
++#, c-format
+ msgid "slattach: cannot write PID file\n"
+ msgstr ""
+
+@@ -2468,18 +2936,22 @@
+ msgstr ""
+
+ #: ../slattach.c:468
++#, c-format
+ msgid "slattach: tty name too long\n"
+ msgstr ""
+
+ #: ../slattach.c:498
++#, c-format
+ msgid "slattach: tty_open: cannot get current state!\n"
+ msgstr ""
+
+ #: ../slattach.c:505
++#, c-format
+ msgid "slattach: tty_open: cannot get current line disc!\n"
+ msgstr ""
+
+ #: ../slattach.c:513
++#, c-format
+ msgid "slattach: tty_open: cannot set RAW mode!\n"
+ msgstr ""
+
+@@ -2489,6 +2961,7 @@
+ msgstr ""
+
+ #: ../slattach.c:530
++#, c-format
+ msgid "slattach: tty_open: cannot set 8N1 mode!\n"
+ msgstr ""
+
+--- net-tools-1.60.orig/po/cs.po
++++ net-tools-1.60/po/cs.po
+@@ -5,7 +5,8 @@
+ msgid ""
+ msgstr ""
+ "Project-Id-Version: net-tools-1.51\n"
+-"POT-Creation-Date: 2000-02-14 02:31+0100\n"
++"Report-Msgid-Bugs-To: \n"
++"POT-Creation-Date: 2007-06-30 12:28+0900\n"
+ "PO-Revision-Date: 1999-08-29 23:20+0200\n"
+ "Last-Translator: Ji Pavlovsk <pavlovsk@ff.cuni.cz>\n"
+ "Language-Team: Czech <cs@li.org>\n"
+@@ -13,96 +14,110 @@
+ "Content-Type: text/plain; charset=iso-8859-2\n"
+ "Content-Transfer-Encoding: 8bit\n"
+
+-#: ../arp.c:110 ../arp.c:269
++#: ../arp.c:112 ../arp.c:279
++#, c-format
+ msgid "arp: need host name\n"
+ msgstr "arp: je teba jmno potae\n"
+
+-#: ../arp.c:207 ../arp.c:221
++#: ../arp.c:215 ../arp.c:230
+ #, c-format
+ msgid "No ARP entry for %s\n"
+ msgstr "Pro %s neexistuje ARP poloka\n"
+
+-#: ../arp.c:239
++#: ../arp.c:248
+ #, c-format
+ msgid "arp: cant get HW-Address for `%s': %s.\n"
+ msgstr "arp: HW adresu `%s' nelze zjistit: %s\n"
+
+-#: ../arp.c:243
++#: ../arp.c:252
++#, c-format
+ msgid "arp: protocol type mismatch.\n"
+ msgstr "arp: chybn zadan typ protokolu\n"
+
+-#: ../arp.c:252
++#: ../arp.c:261
+ #, c-format
+ msgid "arp: device `%s' has HW address %s `%s'.\n"
+ msgstr "arp: zazen `%s' m Hw adresu %s `%s'.\n"
+
+-#: ../arp.c:282
++#: ../arp.c:293
++#, c-format
+ msgid "arp: need hardware address\n"
+ msgstr "arp: je teba hardwarov adresa\n"
+
+-#: ../arp.c:290
++#: ../arp.c:301
++#, c-format
+ msgid "arp: invalid hardware address\n"
+ msgstr "arp: nesprvn hardwarov adresa\n"
+
+-#: ../arp.c:387
++#: ../arp.c:398
+ #, c-format
+ msgid "arp: cannot open etherfile %s !\n"
+ msgstr "arp: databzi ethernetovch adres %s nelze otevt!\n"
+
+-#: ../arp.c:403
++#: ../arp.c:414
+ #, c-format
+ msgid "arp: format error on line %u of etherfile %s !\n"
+ msgstr "arp: syntaktick chyba na dku %u databze ethernetovch adres %s!\n"
+
+-#: ../arp.c:416
++#: ../arp.c:427
+ #, c-format
+ msgid "arp: cannot set entry on line %u of etherfile %s !\n"
+ msgstr ""
+ "arp: poloku na dku %u databze ethernetovch adres %s nelze nastavit!\n"
+
+-#: ../arp.c:437
+-msgid "Address\t\t\tHWtype\tHWaddress\t Flags Mask\t\t Iface\n"
++#: ../arp.c:448
++#, fuzzy, c-format
++msgid ""
++"Address HWtype HWaddress Flags Mask "
++"Iface\n"
+ msgstr "Adresa\t\t\t HWtyp\t HWadresa\t Pz Maska\t\t Rozhran\n"
+
+-#: ../arp.c:467
++#: ../arp.c:476
++#, fuzzy
++msgid "<from_interface>"
++msgstr " rozhran %s\n"
++
++#: ../arp.c:478
+ msgid "(incomplete)"
+ msgstr "(nekompletn)"
+
+-#: ../arp.c:484
++#: ../arp.c:495
+ #, c-format
+ msgid "%s (%s) at "
+ msgstr "%s (%s) na "
+
+-#: ../arp.c:490
++#: ../arp.c:501
++#, c-format
+ msgid "<incomplete> "
+ msgstr "<nekompletn>"
+
+-#: ../arp.c:496
++#: ../arp.c:507
+ #, c-format
+ msgid "netmask %s "
+ msgstr "sov maska %s "
+
+-#: ../arp.c:513
++#: ../arp.c:524
+ #, c-format
+ msgid "on %s\n"
+ msgstr "na %s\n"
+
+-#: ../arp.c:592
++#: ../arp.c:605
+ #, c-format
+ msgid "Entries: %d\tSkipped: %d\tFound: %d\n"
+ msgstr "Poloky: %d\tVynechno: %d\tNalezeno: %d\n"
+
+-#: ../arp.c:596
++#: ../arp.c:609
+ #, c-format
+ msgid "%s (%s) -- no entry\n"
+ msgstr "%s (%s) -- dn poloka\n"
+
+-#: ../arp.c:598
++#: ../arp.c:611
+ #, c-format
+ msgid "arp: in %d entries no match found.\n"
+ msgstr "arp: dn z poloek (%d) nevyhovuje.\n"
+
+-#: ../arp.c:613
++#: ../arp.c:626
++#, c-format
+ msgid ""
+ "Usage:\n"
+ " arp [-vn] [<HW>] [-i <if>] [-a] [<hostname>] <-Display ARP "
+@@ -112,49 +127,46 @@
+ " arp [-vn] [<HW>] [-i <if> [-a] [<pota>] <-Zobraz ARP "
+ "cache\n"
+
+-#: ../arp.c:614
++#: ../arp.c:627
++#, fuzzy, c-format
+ msgid ""
+-" arp [-v] [-i <if>] -d <hostname> [pub][nopub] <-Delete ARP "
++" arp [-v] [-i <if>] -d <host> [pub] <-Delete ARP "
+ "entry\n"
+ msgstr ""
+ " arp [-v] [-i <if>] -d <pota> [pub][nopub] <-Smae poloku "
+ "ARP\n"
+
+-#: ../arp.c:615
+-#, fuzzy
++#: ../arp.c:628
++#, fuzzy, c-format
+ msgid ""
+-" arp [-vnD] [<HW>] [-i <if>] -f [<filename>] <-Add entry from "
++" arp [-vnD] [<HW>] [-i <if>] -f [<filename>] <-Add entry from "
+ "file\n"
+ msgstr ""
+ " arp [-vnD] [<HW>] [-i <if>] -f <soubor> <-Pid poloku "
+ "ze\n"
+ " souboru\n"
+
+-#: ../arp.c:616
++#: ../arp.c:629
++#, fuzzy, c-format
+ msgid ""
+-" arp [-v] [<HW>] [-i <if>] -s <hostname> <hwaddr> [temp][nopub] <-Add "
++" arp [-v] [<HW>] [-i <if>] -s <host> <hwaddr> [temp] <-Add "
+ "entry\n"
+ msgstr ""
+ " arp [-v] [<HW> [-i <if> -s <pota> <hwadr> [temp][nopub] <-Pid "
+ "poloku\n"
+
+-#: ../arp.c:617
+-msgid ""
+-" arp [-v] [<HW>] [-i <if>] -s <hostname> <hwaddr> [netmask <nm>] pub "
+-"<-''-\n"
+-msgstr ""
+-" arp [-v] [<HW>] [-i <if>] -s <soubor> <hwadr> [smask <s>] <-''-\n"
+-
+-#: ../arp.c:618
++#: ../arp.c:630
++#, fuzzy, c-format
+ msgid ""
+-" arp [-v] [<HW>] [-i <if>] -Ds <hostname> <if> [netmask <nm>] pub "
++" arp [-v] [<HW>] [-i <if>] -Ds <host> <if> [netmask <nm>] pub "
+ "<-''-\n"
+ "\n"
+ msgstr ""
+ " arp [-v] [<HW> [-i <if> -Ds <pota> <if> [smask <s>] pub "
+ "<-''-\n"
+
+-#: ../arp.c:620
++#: ../arp.c:632
++#, c-format
+ msgid ""
+ " -a display (all) hosts in alternative (BSD) "
+ "style\n"
+@@ -162,126 +174,134 @@
+ " -a zobraz jmna vech pota alternativnm\n"
+ " (BSD) zpsobem\n"
+
+-#: ../arp.c:621
++#: ../arp.c:633
++#, c-format
+ msgid " -s, --set set a new ARP entry\n"
+ msgstr " -s, --set nastav novou ARP poloku\n"
+
+-#: ../arp.c:622
++#: ../arp.c:634
++#, c-format
+ msgid " -d, --delete delete a specified entry\n"
+ msgstr " -d, --delete smae zadanou ARP poloku\n"
+
+-#: ../arp.c:623 ../netstat.c:1436 ../route.c:85
++#: ../arp.c:635 ../netstat.c:1503 ../route.c:86
++#, c-format
+ msgid " -v, --verbose be verbose\n"
+ msgstr ""
+ " -v, --verbose bude vypisovat podrobn zprvy\n"
+ " o innosti\n"
+
+-#: ../arp.c:624 ../netstat.c:1437 ../route.c:86
+-msgid " -n, --numeric dont resolve names\n"
++#: ../arp.c:636 ../netstat.c:1504 ../route.c:87
++#, fuzzy, c-format
++msgid " -n, --numeric don't resolve names\n"
+ msgstr ""
+ " -n, --numeric nebude pevdt seln adresy\n"
+ " na kanonick jmna\n"
+
+-#: ../arp.c:625
++#: ../arp.c:637
++#, c-format
+ msgid ""
+ " -i, --device specify network interface (e.g. eth0)\n"
+ msgstr " -i, --device zadv sov rozhran (nap. eth0)\n"
+
+-#: ../arp.c:626
++#: ../arp.c:638
++#, c-format
+ msgid " -D, --use-device read <hwaddr> from given device\n"
+ msgstr " -D, --use-device te <hwadr> ze zadanho zazen\n"
+
+-#: ../arp.c:627
+-#, fuzzy
++#: ../arp.c:639
++#, fuzzy, c-format
+ msgid " -A, -p, --protocol specify protocol family\n"
+ msgstr " -r, --route vype smrovac tabulku\n"
+
+-#: ../arp.c:628
+-#, fuzzy
++#: ../arp.c:640
++#, fuzzy, c-format
+ msgid ""
+-" -f, --file read new entries from file or from "
+-"/etc/ethers\n"
++" -f, --file read new entries from file or from /etc/"
++"ethers\n"
+ "\n"
+ msgstr ""
+ " -f, --file te nov poloky ze souboru\n"
+ "\n"
+
+-#: ../arp.c:630 ../rarp.c:181
++#: ../arp.c:642 ../rarp.c:182
+ #, c-format
+ msgid " <HW>=Use '-H <hw>' to specify hardware address type. Default: %s\n"
+ msgstr ""
+ " <HW>=Pouijte '-H <hw> pro zadn hardwarovho typu adresy.\n"
+ " Implicitn: %s\n"
+
+-#: ../arp.c:631 ../rarp.c:182
++#: ../arp.c:643 ../rarp.c:183
++#, c-format
+ msgid " List of possible hardware types (which support ARP):\n"
+ msgstr " Seznam monch hardwarovch typ (podporujcch ARP):\n"
+
+-#: ../arp.c:664
++#: ../arp.c:677 ../arp.c:762
+ #, c-format
+ msgid "%s: hardware type not supported!\n"
+ msgstr "hardwarov typ %s nen podporovn!\n"
+
+-#: ../arp.c:668
++#: ../arp.c:681
+ #, c-format
+ msgid "%s: address family not supported!\n"
+ msgstr "tda adres %s nen podporovna!\n"
+
+-#: ../arp.c:703
++#: ../arp.c:716
++#, c-format
+ msgid "arp: -N not yet supported.\n"
+ msgstr "arp: pepna -N nen zatm podporovn\n"
+
+-#: ../arp.c:713
++#: ../arp.c:726
+ #, c-format
+ msgid "arp: %s: unknown address family.\n"
+ msgstr "arp: neznm tda adres %s.\n"
+
+-#: ../arp.c:722
++#: ../arp.c:735
+ #, c-format
+ msgid "arp: %s: unknown hardware type.\n"
+ msgstr "arp: neznm hardwarov typ %s.\n"
+
+-#: ../arp.c:741
++#: ../arp.c:754
+ #, c-format
+ msgid "arp: %s: kernel only supports 'inet'.\n"
+ msgstr "arp: %s: jdro podporuje pouze 'inet'.\n"
+
+-#: ../arp.c:746
++#: ../arp.c:767
+ #, c-format
+ msgid "arp: %s: hardware type without ARP support.\n"
+ msgstr "arp: hardwarov typ %s nepodporuje ARP.\n"
+
+-#: ../hostname.c:69
++#: ../hostname.c:71
+ #, c-format
+ msgid "Setting nodename to `%s'\n"
+ msgstr "Nastavuji jmno uzlu na `%s'\n"
+
+-#: ../hostname.c:74
++#: ../hostname.c:76
+ #, c-format
+ msgid "%s: you must be root to change the node name\n"
+ msgstr "%s: jmno uzlu me zmnit pouze superuivatel\n"
+
+-#: ../hostname.c:77 ../hostname.c:97 ../hostname.c:116
++#: ../hostname.c:79 ../hostname.c:99 ../hostname.c:117
+ #, c-format
+ msgid "%s: name too long\n"
+ msgstr "jmno %s je pli dlouh\n"
+
+-#: ../hostname.c:89
++#: ../hostname.c:91
+ #, c-format
+ msgid "Setting hostname to `%s'\n"
+ msgstr "Nastavuji jmno potae na `%s'\n"
+
+-#: ../hostname.c:94
++#: ../hostname.c:96
+ #, c-format
+ msgid "%s: you must be root to change the host name\n"
+ msgstr "%s: jmno potae me zmnit pouze superuivatel\n"
+
+-#: ../hostname.c:108
++#: ../hostname.c:109
+ #, c-format
+ msgid "Setting domainname to `%s'\n"
+ msgstr "Nastavuji jmno domny na `%s'\n"
+
+-#: ../hostname.c:113
++#: ../hostname.c:114
+ #, c-format
+ msgid "%s: you must be root to change the domain name\n"
+ msgstr "%s: jmno domny me zmnit pouze superuivatel\n"
+@@ -306,26 +326,29 @@
+ msgid "Result: h_addr_list=`%s'\n"
+ msgstr "Vsledek: h_addr_list=`%s'\n"
+
+-#: ../hostname.c:209
++#: ../hostname.c:208
+ #, c-format
+ msgid "%s: can't open `%s'\n"
+ msgstr "%s: `%s' nelze otevt\n"
+
+-#: ../hostname.c:223
++#: ../hostname.c:222
++#, c-format
+ msgid "Usage: hostname [-v] {hostname|-F file} set hostname (from file)\n"
+ msgstr ""
+ "Pouit:\n"
+ " hostname [-v] {jmno|-F soubor} nastav jmno potae (ze "
+ "souboru)\n"
+
+-#: ../hostname.c:224
++#: ../hostname.c:223
++#, c-format
+ msgid ""
+ " domainname [-v] {nisdomain|-F file} set NIS domainname (from file)\n"
+ msgstr ""
+ " domainname [-v] {jmno|-F soubor} nastav jmno NIS domny (ze\n"
+ " souboru)\n"
+
+-#: ../hostname.c:226
++#: ../hostname.c:225
++#, c-format
+ msgid ""
+ " nodename [-v] {nodename|-F file} set DECnet node name (from "
+ "file)\n"
+@@ -333,11 +356,13 @@
+ " nodename [-v] {jmno|-F soubor} nastav jmno DECnet uzlu (ze\n"
+ " souboru)\n"
+
+-#: ../hostname.c:228
++#: ../hostname.c:227
++#, c-format
+ msgid " hostname [-v] [-d|-f|-s|-a|-i|-y|-n] display formatted name\n"
+ msgstr " hostname [-v] [-d|-f|-s|-a|-i|-y|-n] vype formtovan jmno\n"
+
+-#: ../hostname.c:229
++#: ../hostname.c:228
++#, c-format
+ msgid ""
+ " hostname [-v] display hostname\n"
+ "\n"
+@@ -345,7 +370,8 @@
+ " hostname [-v] vype jmno potae\n"
+ "\n"
+
+-#: ../hostname.c:230
++#: ../hostname.c:229
++#, c-format
+ msgid ""
+ " hostname -V|--version|-h|--help print info and exit\n"
+ "\n"
+@@ -353,7 +379,8 @@
+ " hostname -V|--version|-h|--help vype informace a skon\n"
+ "\n"
+
+-#: ../hostname.c:231
++#: ../hostname.c:230
++#, c-format
+ msgid ""
+ " dnsdomainname=hostname -d, {yp,nis,}domainname=hostname -y\n"
+ "\n"
+@@ -361,35 +388,43 @@
+ " dnsdomainname=hostname -d, {yp,nis,}domainname=hostname -y\n"
+ "\n"
+
+-#: ../hostname.c:232
++#: ../hostname.c:231
++#, c-format
+ msgid " -s, --short short host name\n"
+ msgstr " -s, --short krtk jmno potae\n"
+
+-#: ../hostname.c:233
++#: ../hostname.c:232
++#, c-format
+ msgid " -a, --alias alias names\n"
+ msgstr " -a, --alias pezdvky\n"
+
+-#: ../hostname.c:234
++#: ../hostname.c:233
++#, c-format
+ msgid " -i, --ip-address addresses for the hostname\n"
+ msgstr " -i, --ip-address adresy odpovdajc jmnu potae\n"
+
+-#: ../hostname.c:235
++#: ../hostname.c:234
++#, c-format
+ msgid " -f, --fqdn, --long long host name (FQDN)\n"
+ msgstr " -f, --fqdn, --long dlouh jmno potae (kanonick)\n"
+
+-#: ../hostname.c:236
++#: ../hostname.c:235
++#, c-format
+ msgid " -d, --domain DNS domain name\n"
+ msgstr " -d, --domain jmno DNS domny\n"
+
+-#: ../hostname.c:237
++#: ../hostname.c:236
++#, c-format
+ msgid " -y, --yp, --nis NIS/YP domainname\n"
+ msgstr " -y, --yp, --nis jmno NIS/YP domny\n"
+
+-#: ../hostname.c:239
++#: ../hostname.c:238
++#, c-format
+ msgid " -n, --node DECnet node name\n"
+ msgstr " -n, --node jmno DECnet uzlu\n"
+
+-#: ../hostname.c:241
++#: ../hostname.c:240
++#, c-format
+ msgid ""
+ " -F, --file read hostname or NIS domainname from given file\n"
+ "\n"
+@@ -397,7 +432,8 @@
+ " -F, --file te jmno potae i nis domny ze souboru\n"
+ "\n"
+
+-#: ../hostname.c:243
++#: ../hostname.c:242
++#, c-format
+ msgid ""
+ " This command can read or set the hostname or the NIS domainname. You can\n"
+ " also read the DNS domain or the FQDN (fully qualified domain name).\n"
+@@ -412,6 +448,7 @@
+ msgstr "%s: Tmto pkazem nelze DNS jmno domny zmnit\n"
+
+ #: ../hostname.c:339
++#, c-format
+ msgid ""
+ "\n"
+ "Unless you are using bind or NIS for host lookups you can change the DNS\n"
+@@ -421,6 +458,7 @@
+ "zmnit\n"
+
+ #: ../hostname.c:340
++#, c-format
+ msgid "domain name (which is part of the FQDN) in the /etc/hosts file.\n"
+ msgstr ""
+ "DNS jmno domny (je soust kanonickho jmna potae) v souboru\n"
+@@ -441,349 +479,223 @@
+ msgid "getnodename()=`%s'\n"
+ msgstr "getnodename()=`%s'\n"
+
+-#: ../ifconfig.c:159
+-#, c-format
+-msgid "%-9.9s Link encap:%s "
+-msgstr "%-9.9s Zapouzden:%s "
++#: ../ifconfig.c:107
++#, fuzzy, c-format
++msgid ""
++"Iface MTU Met RX-OK RX-ERR RX-DRP RX-OVR TX-OK TX-ERR TX-DRP TX-OVR "
++"Flg\n"
++msgstr ""
++"Rozhr MTU Met P-OK P-CHYB P-ZAH P-PT OD-OK OD-CHYB OD-ZAH OD-PT "
++"PZ\n"
+
+-#: ../ifconfig.c:164
+-#, c-format
+-msgid "HWaddr %s "
+-msgstr "HWadr %s "
++#: ../ifconfig.c:129 ../ifconfig.c:161
++#, fuzzy, c-format
++msgid "%s: ERROR while getting interface flags: %s\n"
++msgstr "%s: chyba pi zskvn informac o rozhran %s\n"
+
+-#: ../ifconfig.c:167
++#: ../ifconfig.c:153 ../ifconfig.c:185 ../ifconfig.c:771 ../ifconfig.c:862
++#: ../ifconfig.c:973
+ #, c-format
+-msgid "Media:%s"
+-msgstr "Mdium:%s"
++msgid "No support for INET on this system.\n"
++msgstr "Tento systm nepodporuje INET.\n"
+
+-#: ../ifconfig.c:169
+-msgid "(auto)"
+-msgstr "(auto)"
++#: ../ifconfig.c:193
++#, fuzzy, c-format
++msgid "%s: ERROR while testing interface flags: %s\n"
++msgstr "%s: chyba pi zskvn informac o rozhran %s\n"
+
+-#: ../ifconfig.c:176
+-#, c-format
+-msgid " %s addr:%s "
+-msgstr " %s adr:%s "
++#: ../ifconfig.c:202
++#, fuzzy, c-format
++msgid ""
++"Usage:\n"
++" ifconfig [-a] [-v] [-s] <interface> [[<AF>] <address>]\n"
++msgstr ""
++"Pouit:\n"
++" ifconfig [-a] [-i] [-v] <rozhran> [[<AF>] <adresa>]\n"
+
+-#: ../ifconfig.c:179
++#: ../ifconfig.c:204
+ #, c-format
+-msgid " P-t-P:%s "
+-msgstr " P-t-P:%s "
++msgid " [add <address>[/<prefixlen>]]\n"
++msgstr " [add <adresa>[/<dlka prefixu>]]\n"
+
+-# V ostatnch katalozch se pekld Broadcast -> vesmrov vysln.
+-# Tudi bcast -> Vesmr :)
+-#: ../ifconfig.c:182
++#: ../ifconfig.c:205
+ #, c-format
+-msgid " Bcast:%s "
+-msgstr " Vesmr:%s "
++msgid " [del <address>[/<prefixlen>]]\n"
++msgstr " [del <adresa>[/<dlka prefixu>]]\n"
+
+-#: ../ifconfig.c:184
++#: ../ifconfig.c:206
+ #, c-format
+-msgid " Mask:%s\n"
+-msgstr "Maska:%s\n"
++msgid " [[-]broadcast [<address>]] [[-]pointopoint [<address>]]\n"
++msgstr " [[-]broadcast [<adresa>]] [[-]pointopoint [<adresa>]]\n"
+
+-#: ../ifconfig.c:201
++#: ../ifconfig.c:207
+ #, c-format
+-msgid " inet6 addr: %s/%d"
+-msgstr " inet6-adr: %s/%d"
++msgid " [netmask <address>] [dstaddr <address>] [tunnel <address>]\n"
++msgstr " [netmask <adresa>] [dstaddr <adresa>] [tunnel <adresa>]\n"
+
+-#: ../ifconfig.c:203
+-msgid " Scope:"
+-msgstr " Rozsah:"
++#: ../ifconfig.c:210
++#, c-format
++msgid " [outfill <NN>] [keepalive <NN>]\n"
++msgstr " [outfill <NN>] [keepalive <NN>]\n"
+
+-#: ../ifconfig.c:206
+-msgid "Global"
+-msgstr "Globl"
++#: ../ifconfig.c:212
++#, c-format
++msgid " [hw <HW> <address>] [metric <NN>] [mtu <NN>]\n"
++msgstr " [hw <HW> <adresa>] [metric <NN>] [mtu <NN>]\n"
+
+-#: ../ifconfig.c:209
+-msgid "Link"
+-msgstr "Linka"
++#: ../ifconfig.c:213
++#, c-format
++msgid " [[-]trailers] [[-]arp] [[-]allmulti]\n"
++msgstr " [[-]trailers] [[-]arp] [[-]allmulti]\n"
+
+-#: ../ifconfig.c:212
+-msgid "Site"
+-msgstr "Stanovit"
++#: ../ifconfig.c:214
++#, c-format
++msgid " [multicast] [[-]promisc]\n"
++msgstr " [multicast] [[-]promisc]\n"
+
+ #: ../ifconfig.c:215
+-msgid "Compat"
+-msgstr "Kompatibilita"
++#, c-format
++msgid " [mem_start <NN>] [io_addr <NN>] [irq <NN>] [media <type>]\n"
++msgstr " [mem_start <NN>] [io_addr <NN>] [irq <NN>] [media <typ>]\n"
+
+-#: ../ifconfig.c:218
+-msgid "Host"
+-msgstr "Pota"
++#: ../ifconfig.c:217
++#, c-format
++msgid " [txqueuelen <NN>]\n"
++msgstr " [txqueuelen dlka]\n"
+
+-#: ../ifconfig.c:221
+-msgid "Unknown"
+-msgstr "Neznm."
++#: ../ifconfig.c:220
++#, c-format
++msgid " [[-]dynamic]\n"
++msgstr " [[-]dynamic]\n"
+
+-#: ../ifconfig.c:236
++#: ../ifconfig.c:222
+ #, c-format
+-msgid " IPX/Ethernet II addr:%s\n"
+-msgstr " IPX/Ethernet II adr: %s\n"
++msgid ""
++" [up|down] ...\n"
++"\n"
++msgstr ""
++" [up|down] ...\n"
++"\n"
+
+-#: ../ifconfig.c:239
++#: ../ifconfig.c:224
+ #, c-format
+-msgid " IPX/Ethernet SNAP addr:%s\n"
+-msgstr " IPX/Ethernet SNAP adr:%s\n"
++msgid " <HW>=Hardware Type.\n"
++msgstr " <HW>=Hardwarov Typ.\n"
+
+-#: ../ifconfig.c:242
++#: ../ifconfig.c:225
+ #, c-format
+-msgid " IPX/Ethernet 802.2 addr:%s\n"
+-msgstr " IPX/Ethernet 802.2 adr:%s\n"
++msgid " List of possible hardware types:\n"
++msgstr " Seznam monch hardwarovch typ:\n"
+
+-#: ../ifconfig.c:245
++#. 1 = ARPable
++#: ../ifconfig.c:227
+ #, c-format
+-msgid " IPX/Ethernet 802.3 addr:%s\n"
+-msgstr " IPX/Ethernet 802.3 adr:%s\n"
++msgid " <AF>=Address family. Default: %s\n"
++msgstr " <AF>=tda adres. Implicitn: %s\n"
+
+-#: ../ifconfig.c:255
++#: ../ifconfig.c:228
+ #, c-format
+-msgid " EtherTalk Phase 2 addr:%s\n"
+-msgstr " EtherTalk Phase 2 adr:%s\n"
++msgid " List of possible address families:\n"
++msgstr " Seznam monch td adres:\n"
+
+-#: ../ifconfig.c:264
++#: ../ifconfig.c:303
+ #, c-format
+-msgid " econet addr:%s\n"
+-msgstr " econet adr:%s\n"
++msgid "ifconfig: option `%s' not recognised.\n"
++msgstr ""
+
+-# Hic sunt leones ...
+-#: ../ifconfig.c:270
+-msgid "[NO FLAGS] "
+-msgstr "[DN PZNAKY]"
++#: ../ifconfig.c:305 ../ifconfig.c:962
++#, c-format
++msgid "ifconfig: `--help' gives usage information.\n"
++msgstr ""
+
+-#: ../ifconfig.c:272
+-msgid "UP "
+-msgstr "AKTIVOVNO "
++#: ../ifconfig.c:380
++#, c-format
++msgid "Unknown media type.\n"
++msgstr "Neznm typ mdia.\n"
+
+-#: ../ifconfig.c:274
+-msgid "BROADCAST "
+-msgstr "VESMROV_VYSLN "
++#: ../ifconfig.c:417
++#, c-format
++msgid ""
++"Warning: Interface %s still in promisc mode... maybe other application is "
++"running?\n"
++msgstr ""
+
+-#: ../ifconfig.c:276
+-msgid "DEBUG "
+-msgstr "DEBUG "
++#: ../ifconfig.c:429
++#, c-format
++msgid "Warning: Interface %s still in MULTICAST mode.\n"
++msgstr ""
+
+-#: ../ifconfig.c:278
+-msgid "LOOPBACK "
+-msgstr "SMYKA "
++#: ../ifconfig.c:441
++#, c-format
++msgid "Warning: Interface %s still in ALLMULTI mode.\n"
++msgstr ""
+
+-#: ../ifconfig.c:280
+-msgid "POINTOPOINT "
+-msgstr "POINTOPOINT "
++#: ../ifconfig.c:465
++#, c-format
++msgid "Warning: Interface %s still in DYNAMIC mode.\n"
++msgstr ""
+
+-# ??
+-#: ../ifconfig.c:282
+-msgid "NOTRAILERS "
+-msgstr "NOTRAILERS "
++#: ../ifconfig.c:523
++#, c-format
++msgid "Warning: Interface %s still in BROADCAST mode.\n"
++msgstr ""
+
+-#: ../ifconfig.c:284
+-msgid "RUNNING "
+-msgstr "B̮ "
++#: ../ifconfig.c:652
++#, c-format
++msgid "Warning: Interface %s still in POINTOPOINT mode.\n"
++msgstr ""
+
+-#: ../ifconfig.c:286
+-msgid "NOARP "
+-msgstr "NEARP "
++#: ../ifconfig.c:684
++#, c-format
++msgid "hw address type `%s' has no handler to set address. failed.\n"
++msgstr ""
+
+-#: ../ifconfig.c:288
+-msgid "PROMISC "
+-msgstr "PROMISK "
++#: ../ifconfig.c:693
++#, c-format
++msgid "%s: invalid %s address.\n"
++msgstr "%s: adresa %s je nesprvn.\n"
+
+-#: ../ifconfig.c:290
+-msgid "ALLMULTI "
+-msgstr "ALLMULTI "
++#: ../ifconfig.c:737 ../ifconfig.c:827 ../ifconfig.c:913
++#, c-format
++msgid "No support for INET6 on this system.\n"
++msgstr "Tento systm nepodporuje INET6.\n"
+
+-#: ../ifconfig.c:292
+-msgid "SLAVE "
+-msgstr "SLAVE "
++#: ../ifconfig.c:780 ../ifconfig.c:871
++#, c-format
++msgid "Interface %s not initialized\n"
++msgstr ""
+
+-#: ../ifconfig.c:294
+-msgid "MASTER "
+-msgstr "MASTER "
++#: ../ifconfig.c:792 ../ifconfig.c:882
++#, fuzzy, c-format
++msgid "Bad address.\n"
++msgstr "%s: adresa %s je nesprvn.\n"
+
+-#: ../ifconfig.c:296
+-msgid "MULTICAST "
+-msgstr "MULTICAST "
+-
+-#: ../ifconfig.c:299
+-msgid "DYNAMIC "
+-msgstr "DYNAMIC "
+-
+-#: ../ifconfig.c:302
+-#, c-format
+-msgid " MTU:%d Metric:%d"
+-msgstr " MTU:%d Metrika:%d"
+-
+-#: ../ifconfig.c:306
+-#, c-format
+-msgid " Outfill:%d Keepalive:%d"
+-msgstr " Outfill:%d Keepalive:%d"
+-
+-#: ../ifconfig.c:320
+-#, c-format
+-msgid "RX packets:%lu errors:%lu dropped:%lu overruns:%lu frame:%lu\n"
+-msgstr "pijmutch paket:%lu chyb:%lu zahozeno:%lu peteen:%lu rmc:%lu\n"
+-
+-#: ../ifconfig.c:325
+-#, c-format
+-msgid " compressed:%lu\n"
+-msgstr " komprimovno:%lu\n"
+-
+-# carrier?
+-#: ../ifconfig.c:329
+-#, c-format
+-msgid "TX packets:%lu errors:%lu dropped:%lu overruns:%lu carrier:%lu\n"
+-msgstr "odeslanch paket:%lu chyb:%lu zahozeno:%lu peteen:%lu penos:%lu\n"
+-
+-#: ../ifconfig.c:333
+-#, c-format
+-msgid " collisions:%lu "
+-msgstr " koliz:%lu "
+-
+-#: ../ifconfig.c:335
+-#, c-format
+-msgid "compressed:%lu "
+-msgstr "komprimovno:%lu "
+-
+-#: ../ifconfig.c:337
+-#, c-format
+-msgid "txqueuelen:%d "
+-msgstr "dlka odchoz fronty:%d "
+-
+-#: ../ifconfig.c:345
+-#, c-format
+-msgid "Interrupt:%d "
+-msgstr "Peruen:%d "
+-
+-#. Only print devices using it for
+-#. I/O maps
+-#: ../ifconfig.c:348
+-#, c-format
+-msgid "Base address:0x%x "
+-msgstr "Vstupn/Vstupn port:0x%x "
+-
+-#: ../ifconfig.c:350
+-#, c-format
+-msgid "Memory:%lx-%lx "
+-msgstr "Pam:%lx-%lx "
+-
+-#: ../ifconfig.c:353
+-#, c-format
+-msgid "DMA chan:%x "
+-msgstr "Kanl DMA:%x "
+-
+-#: ../ifconfig.c:384 ../ifconfig.c:405
+-#, c-format
+-msgid "%s: unknown interface: %s\n"
+-msgstr "%s: rozhran %s nen znmo\n"
+-
+-#: ../ifconfig.c:421
+-msgid ""
+-"Usage:\n"
+-" ifconfig [-a] [-i] [-v] <interface> [[<AF>] <address>]\n"
+-msgstr ""
+-"Pouit:\n"
+-" ifconfig [-a] [-i] [-v] <rozhran> [[<AF>] <adresa>]\n"
+-
+-#: ../ifconfig.c:425
+-msgid " [add <address>[/<prefixlen>]]\n"
+-msgstr " [add <adresa>[/<dlka prefixu>]]\n"
+-
+-#: ../ifconfig.c:427
+-msgid " [del <address>[/<prefixlen>]]\n"
+-msgstr " [del <adresa>[/<dlka prefixu>]]\n"
+-
+-#: ../ifconfig.c:432
+-msgid " [[-]broadcast [<address>]] [[-]pointopoint [<address>]]\n"
+-msgstr " [[-]broadcast [<adresa>]] [[-]pointopoint [<adresa>]]\n"
+-
+-#: ../ifconfig.c:433
+-msgid " [netmask <address>] [dstaddr <address>] [tunnel <address>]\n"
+-msgstr " [netmask <adresa>] [dstaddr <adresa>] [tunnel <adresa>]\n"
+-
+-#: ../ifconfig.c:436
+-msgid " [outfill <NN>] [keepalive <NN>]\n"
+-msgstr " [outfill <NN>] [keepalive <NN>]\n"
+-
+-#: ../ifconfig.c:438
+-msgid " [hw <HW> <address>] [metric <NN>] [mtu <NN>]\n"
+-msgstr " [hw <HW> <adresa>] [metric <NN>] [mtu <NN>]\n"
+-
+-#: ../ifconfig.c:439
+-msgid " [[-]trailers] [[-]arp] [[-]allmulti]\n"
+-msgstr " [[-]trailers] [[-]arp] [[-]allmulti]\n"
+-
+-#: ../ifconfig.c:440
+-msgid " [multicast] [[-]promisc]\n"
+-msgstr " [multicast] [[-]promisc]\n"
+-
+-#: ../ifconfig.c:441
+-msgid " [mem_start <NN>] [io_addr <NN>] [irq <NN>] [media <type>]\n"
+-msgstr " [mem_start <NN>] [io_addr <NN>] [irq <NN>] [media <typ>]\n"
+-
+-#: ../ifconfig.c:443
+-msgid " [txqueuelen <NN>]\n"
+-msgstr " [txqueuelen dlka]\n"
+-
+-#: ../ifconfig.c:446
+-msgid " [[-]dynamic]\n"
+-msgstr " [[-]dynamic]\n"
+-
+-#: ../ifconfig.c:448
+-msgid ""
+-" [up|down] ...\n"
+-"\n"
+-msgstr ""
+-" [up|down] ...\n"
+-"\n"
+-
+-#: ../ifconfig.c:450
+-msgid " <HW>=Hardware Type.\n"
+-msgstr " <HW>=Hardwarov Typ.\n"
+-
+-#: ../ifconfig.c:451
+-msgid " List of possible hardware types:\n"
+-msgstr " Seznam monch hardwarovch typ:\n"
+-
+-#. 1 = ARPable
+-#: ../ifconfig.c:453
+-#, c-format
+-msgid " <AF>=Address family. Default: %s\n"
+-msgstr " <AF>=tda adres. Implicitn: %s\n"
+-
+-#: ../ifconfig.c:454
+-msgid " List of possible address families:\n"
+-msgstr " Seznam monch td adres:\n"
+-
+-#: ../ifconfig.c:593
+-msgid "Unknown media type.\n"
+-msgstr "Neznm typ mdia.\n"
+-
+-#: ../ifconfig.c:881
++#: ../ifconfig.c:885
+ #, c-format
+-msgid "%s: invalid %s address.\n"
+-msgstr "%s: adresa %s je nesprvn.\n"
+-
+-#: ../ifconfig.c:920 ../ifconfig.c:963 ../ifconfig.c:1011
+-msgid "No support for INET6 on this system.\n"
+-msgstr "Tento systm nepodporuje INET6.\n"
+-
+-#: ../ifconfig.c:983
+ msgid "Address deletion not supported on this system.\n"
+ msgstr "Tento systm nepodporuje mazn adres.\n"
+
+-#: ../ifconfig.c:1066
+-msgid "No support for INET on this system.\n"
+-msgstr "Tento systm nepodporuje INET.\n"
++#: ../ifconfig.c:957
++#, fuzzy, c-format
++msgid "ifconfig: Cannot set address for this protocol family.\n"
++msgstr "Nevm, jak nastavit adresu tdy %d.\n"
+
+-#: ../ifconfig.c:1076
++#: ../ifconfig.c:983
++#, c-format
+ msgid "No support for ECONET on this system.\n"
+ msgstr "Tento systm nepodporuje ECONET.\n"
+
+-#: ../ifconfig.c:1084
++#: ../ifconfig.c:991
+ #, c-format
+ msgid "Don't know how to set addresses for family %d.\n"
+ msgstr "Nevm, jak nastavit adresu tdy %d.\n"
+
+-#: ../netstat.c:383
++#: ../ifconfig.c:1021
++#, c-format
++msgid "WARNING: at least one error occured. (%d)\n"
++msgstr ""
++
++#: ../netstat.c:434
+ #, c-format
+ msgid ""
+ "(No info could be read for \"-p\": geteuid()=%d but you should be root.)\n"
+@@ -792,7 +704,8 @@
+ "jste\n"
+ "byl superuivatelem)\n"
+
+-#: ../netstat.c:387
++#: ../netstat.c:438
++#, c-format
+ msgid ""
+ "(Not all processes could be identified, non-owned process info\n"
+ " will not be shown, you would have to be root to see it all.)\n"
+@@ -801,199 +714,223 @@
+ "pouze o procesech, jich jste vlastnkem. Aby jste mohl vidt ve, musel\n"
+ "byste bt superuivatelem.)\n"
+
+-#: ../netstat.c:394 ../netstat.c:1089 ../netstat.c:1166
++#: ../netstat.c:445 ../netstat.c:1189 ../netstat.c:1266
+ msgid "LISTENING"
+ msgstr "NASLOUCH"
+
+-#: ../netstat.c:395
++#: ../netstat.c:446
+ msgid "CONN SENT"
+ msgstr "CONN ODESLN"
+
+-#: ../netstat.c:396 ../netstat.c:1168
++#: ../netstat.c:447 ../netstat.c:1268
+ msgid "DISC SENT"
+ msgstr "DISC ODESLN"
+
+-#: ../netstat.c:397 ../netstat.c:464 ../netstat.c:809 ../netstat.c:1169
++#: ../netstat.c:448 ../netstat.c:515 ../netstat.c:904 ../netstat.c:1269
+ msgid "ESTABLISHED"
+ msgstr "SPOJENO"
+
+-#: ../netstat.c:419
++#: ../netstat.c:470
++#, c-format
+ msgid "Active NET/ROM sockets\n"
+ msgstr "Aktivn NET/ROM sokety\n"
+
+-#: ../netstat.c:420
++#: ../netstat.c:471
++#, c-format
+ msgid ""
+-"User Dest Source Device State Vr/Vs Send-Q "
+-"Recv-Q\n"
++"User Dest Source Device State Vr/Vs Send-Q Recv-"
++"Q\n"
+ msgstr ""
+-"Uivatel Cl Zdroj Zazen Stav Vr/Vs Odch-F "
+-"Pch-F\n"
++"Uivatel Cl Zdroj Zazen Stav Vr/Vs Odch-F Pch-"
++"F\n"
+
+-#: ../netstat.c:430 ../netstat.c:1208
++#: ../netstat.c:481 ../netstat.c:1308
+ #, c-format
+ msgid "Problem reading data from %s\n"
+ msgstr "Chyba pi ten dat z %s\n"
+
+ # nsledujc radji ponechat v originle ?!
+-#: ../netstat.c:465
++#: ../netstat.c:516
+ msgid "SYN_SENT"
+ msgstr "SYN_SENT"
+
+-#: ../netstat.c:466
++#: ../netstat.c:517
+ msgid "SYN_RECV"
+ msgstr "SYN_RECV"
+
+-#: ../netstat.c:467
++#: ../netstat.c:518
+ msgid "FIN_WAIT1"
+ msgstr "FIN_WAIT1"
+
+-#: ../netstat.c:468
++#: ../netstat.c:519
+ msgid "FIN_WAIT2"
+ msgstr "FIN_WAIT2"
+
+-#: ../netstat.c:469
++#: ../netstat.c:520
+ msgid "TIME_WAIT"
+ msgstr "TIME_WAIT"
+
+-#: ../netstat.c:470
++#: ../netstat.c:521
+ msgid "CLOSE"
+ msgstr "ZAVEN"
+
+-#: ../netstat.c:471
++#: ../netstat.c:522
+ msgid "CLOSE_WAIT"
+ msgstr "CLOSE_WAIT"
+
+-#: ../netstat.c:472
++#: ../netstat.c:523
+ msgid "LAST_ACK"
+ msgstr "POSLEDN ACK"
+
+-#: ../netstat.c:473
++#: ../netstat.c:524
+ msgid "LISTEN"
+ msgstr "LISTEN"
+
+-#: ../netstat.c:474
++#: ../netstat.c:525
+ msgid "CLOSING"
+ msgstr "ZAVR"
+
+-#: ../netstat.c:544
++#: ../netstat.c:596
+ #, c-format
+ msgid "warning, got bogus igmp6 line %d.\n"
+ msgstr "varovn, nesmysln igmp6 dek %d.\n"
+
+-#: ../netstat.c:549 ../netstat.c:587 ../netstat.c:670 ../netstat.c:803
+-#: ../netstat.c:935 ../netstat.c:940
++#: ../netstat.c:601 ../netstat.c:639 ../netstat.c:763 ../netstat.c:898
++#: ../netstat.c:1032 ../netstat.c:1037
+ #, c-format
+ msgid "netstat: unsupported address family %d !\n"
+ msgstr "netstat: tda adres %d nen podporovna !\n"
+
+-#: ../netstat.c:562 ../netstat.c:567 ../netstat.c:575 ../netstat.c:582
++#: ../netstat.c:614 ../netstat.c:619 ../netstat.c:627 ../netstat.c:634
+ #, c-format
+ msgid "warning, got bogus igmp line %d.\n"
+ msgstr "varovn, nesmysln igmp dek %d.\n"
+
+-#: ../netstat.c:666
++#: ../netstat.c:677
++#, fuzzy, c-format
++msgid "Active X.25 sockets\n"
++msgstr "Aktivn AX.25 sokety\n"
++
++#. IMHO, Vr/Vs is not very usefull --SF
++#: ../netstat.c:679
++#, fuzzy, c-format
++msgid ""
++"Dest Source Device LCI State Vr/Vs Send-Q Recv-"
++"Q\n"
++msgstr "Cl Zdroj Zaz Stav Vr/Vs Odhod-F Pch-F\n"
++
++#: ../netstat.c:759
++#, c-format
+ msgid "warning, got bogus tcp line.\n"
+ msgstr "varovn, nesmysln tcp dek.\n"
+
+-#: ../netstat.c:704 ../netstat.c:855 ../netstat.c:975
++#: ../netstat.c:800 ../netstat.c:953 ../netstat.c:1075
+ #, c-format
+ msgid "off (0.00/%ld/%d)"
+ msgstr "vyp (0.00/%ld/%d)"
+
+-#: ../netstat.c:708
++#: ../netstat.c:804
+ #, fuzzy, c-format
+ msgid "on (%2.2f/%ld/%d)"
+ msgstr "zap%d (%2.2f/%ld/%d)"
+
+-#: ../netstat.c:713
++#: ../netstat.c:809
+ #, fuzzy, c-format
+ msgid "keepalive (%2.2f/%ld/%d)"
+ msgstr "zap%d (%2.2f/%ld/%d)"
+
+-#: ../netstat.c:718
++#: ../netstat.c:814
+ #, fuzzy, c-format
+ msgid "timewait (%2.2f/%ld/%d)"
+ msgstr "zap%d (%2.2f/%ld/%d)"
+
+-#: ../netstat.c:723 ../netstat.c:864 ../netstat.c:985
++#: ../netstat.c:819 ../netstat.c:962 ../netstat.c:1085
+ #, c-format
+ msgid "unkn-%d (%2.2f/%ld/%d)"
+ msgstr "nezn-%d (%2.2f/%ld/%d)"
+
+-#: ../netstat.c:799
++#: ../netstat.c:894
++#, c-format
+ msgid "warning, got bogus udp line.\n"
+ msgstr "varovn, nesmysln udp dek.\n"
+
+-#: ../netstat.c:817 ../netstat.c:1075 ../netstat.c:1108
++#: ../netstat.c:912 ../netstat.c:1175 ../netstat.c:1208
+ msgid "UNKNOWN"
+ msgstr "NEZNM"
+
+-#: ../netstat.c:860 ../netstat.c:980
++#: ../netstat.c:958 ../netstat.c:1080
+ #, c-format
+ msgid "on%d (%2.2f/%ld/%d)"
+ msgstr "zap%d (%2.2f/%ld/%d)"
+
+-#: ../netstat.c:949
++#: ../netstat.c:1046
++#, c-format
+ msgid "warning, got bogus raw line.\n"
+ msgstr "varovn, nesmysln 'raw' dek.\n"
+
+-#: ../netstat.c:1028
++#: ../netstat.c:1128
++#, c-format
+ msgid "warning, got bogus unix line.\n"
+ msgstr "varovn, netstat 'unix' dek.\n"
+
+-#: ../netstat.c:1055
++#: ../netstat.c:1155
+ msgid "STREAM"
+ msgstr "STREAM"
+
+-#: ../netstat.c:1059
++#: ../netstat.c:1159
+ msgid "DGRAM"
+ msgstr "DGRAM"
+
+-#: ../netstat.c:1063
++#: ../netstat.c:1163
+ msgid "RAW"
+ msgstr "RAW"
+
+-#: ../netstat.c:1067
++#: ../netstat.c:1167
+ msgid "RDM"
+ msgstr "RDM"
+
+-#: ../netstat.c:1071
++#: ../netstat.c:1171
+ msgid "SEQPACKET"
+ msgstr "SEQPACKET"
+
+-#: ../netstat.c:1080
++#: ../netstat.c:1180
+ msgid "FREE"
+ msgstr "NEALOKOVN"
+
+-#: ../netstat.c:1096
++#: ../netstat.c:1196
+ msgid "CONNECTING"
+ msgstr "SPOJUJE"
+
+-#: ../netstat.c:1100
++#: ../netstat.c:1200
+ msgid "CONNECTED"
+ msgstr "SPOJEN"
+
+-#: ../netstat.c:1104
++#: ../netstat.c:1204
+ msgid "DISCONNECTING"
+ msgstr "ODPOJUJE"
+
+-#: ../netstat.c:1135
++#: ../netstat.c:1235
++#, c-format
+ msgid "Active UNIX domain sockets "
+ msgstr "Aktivn sokety domny UNIX "
+
+-#: ../netstat.c:1137 ../netstat.c:1666
++#: ../netstat.c:1237 ../netstat.c:1756
++#, c-format
+ msgid "(servers and established)"
+ msgstr "(servery a navzan spojen)"
+
+-#: ../netstat.c:1140 ../netstat.c:1669
++#: ../netstat.c:1240 ../netstat.c:1759
++#, c-format
+ msgid "(only servers)"
+ msgstr "(pouze servery)"
+
+-#: ../netstat.c:1142 ../netstat.c:1671
++#: ../netstat.c:1242 ../netstat.c:1761
++#, c-format
+ msgid "(w/o servers)"
+ msgstr "(w/o servery)"
+
+-#: ../netstat.c:1145
++#: ../netstat.c:1245
++#, c-format
+ msgid ""
+ "\n"
+ "Proto RefCnt Flags Type State I-Node"
+@@ -1001,90 +938,92 @@
+ "\n"
+ "Proto ta Pznaky Typ Stav I-Uzel"
+
+-#: ../netstat.c:1147
++#: ../netstat.c:1247
++#, c-format
+ msgid " Path\n"
+ msgstr " Cesta\n"
+
+-#: ../netstat.c:1167
++#: ../netstat.c:1267
+ msgid "SABM SENT"
+ msgstr "SABM ODESLN"
+
+-#: ../netstat.c:1170
++#: ../netstat.c:1270
+ msgid "RECOVERY"
+ msgstr "OBNOVA"
+
+-#: ../netstat.c:1184
++#: ../netstat.c:1284
++#, c-format
+ msgid "Active AX.25 sockets\n"
+ msgstr "Aktivn AX.25 sokety\n"
+
+-#: ../netstat.c:1185
++#: ../netstat.c:1285
++#, c-format
+ msgid "Dest Source Device State Vr/Vs Send-Q Recv-Q\n"
+ msgstr "Cl Zdroj Zaz Stav Vr/Vs Odhod-F Pch-F\n"
+
+-#: ../netstat.c:1228
++#: ../netstat.c:1328
+ #, c-format
+ msgid "problem reading data from %s\n"
+ msgstr "chyba pi ten dat z %s\n"
+
+-#: ../netstat.c:1279
++#: ../netstat.c:1379
++#, c-format
+ msgid ""
+ "Active IPX sockets\n"
+ "Proto Recv-Q Send-Q Local Address Foreign Address "
+ "State"
+ msgstr ""
+ "Aktivn IPX sokety\n"
+-"Proto Pch-F Odch-F Lokl adresa Vzdlen adresa "
+-" Stav"
++"Proto Pch-F Odch-F Lokl adresa Vzdlen "
++"adresa Stav"
+
+-#: ../netstat.c:1281
++#: ../netstat.c:1381
++#, c-format
+ msgid " User"
+ msgstr " Uivatel"
+
+-#: ../netstat.c:1315
++#: ../netstat.c:1415
+ msgid "ESTAB"
+ msgstr "SPOJEN"
+
+-#: ../netstat.c:1323
++#: ../netstat.c:1423
+ msgid "UNK."
+ msgstr "NEZ."
+
+-#: ../netstat.c:1367
+-msgid " - no statistics available -"
+-msgstr " - statistick data nejsou dostupn -"
+-
+-#: ../netstat.c:1370
+-msgid "[NO FLAGS]"
+-msgstr "[DN PZNAKY]"
+-
+-#: ../netstat.c:1400
++#: ../netstat.c:1461
++#, c-format
+ msgid "Kernel Interface table\n"
+ msgstr "Tabulka rozhran v jdru\n"
+
+-#: ../netstat.c:1401
++#: ../netstat.c:1465
++#, fuzzy, c-format
+ msgid ""
+-"Iface MTU Met RX-OK RX-ERR RX-DRP RX-OVR TX-OK TX-ERR TX-DRP TX-OVR "
++"Iface MTU Met RX-OK RX-ERR RX-DRP RX-OVR TX-OK TX-ERR TX-DRP TX-OVR "
+ "Flg\n"
+ msgstr ""
+ "Rozhr MTU Met P-OK P-CHYB P-ZAH P-PT OD-OK OD-CHYB OD-ZAH OD-PT "
+ "PZ\n"
+
+-#: ../netstat.c:1404
++#: ../netstat.c:1469
+ msgid "missing interface information"
+ msgstr "chyb informace o rozhran"
+
+-#: ../netstat.c:1425
++#: ../netstat.c:1492
++#, c-format
+ msgid ""
+-"usage: netstat [-veenNcCF] [<Af>] -r netstat "
+-"{-V|--version|-h|--help}\n"
++"usage: netstat [-veenNcCF] [<Af>] -r netstat {-V|--version|-h|--"
++"help}\n"
+ msgstr ""
+-"Pouit: netstat [--veenNcCF] [<TA>] -r netstat "
+-"{-V|--version|-h|--help}\n"
++"Pouit: netstat [--veenNcCF] [<TA>] -r netstat {-V|--version|-h|--"
++"help}\n"
+
+-#: ../netstat.c:1426
++#: ../netstat.c:1493
++#, c-format
+ msgid " netstat [-vnNcaeol] [<Socket> ...]\n"
+ msgstr " netstat [-vnNcaeol] [<Soket> ...]\n"
+
+-#: ../netstat.c:1427
++#: ../netstat.c:1494
++#, c-format
+ msgid ""
+ " netstat { [-veenNac] -i | [-cnNe] -M | -s }\n"
+ "\n"
+@@ -1092,27 +1031,32 @@
+ " netstat { [-veenNac] -i | [-cnNe] -M | -s }\n"
+ "\n"
+
+-#: ../netstat.c:1429
++#: ../netstat.c:1496
++#, c-format
+ msgid " -r, --route display routing table\n"
+ msgstr " -r, --route vype smrovac tabulku\n"
+
+-#: ../netstat.c:1430
++#: ../netstat.c:1497
++#, c-format
+ msgid " -i, --interfaces display interface table\n"
+ msgstr " -i, --interfaces vype tabulku rozhran\n"
+
+-#: ../netstat.c:1431
++#: ../netstat.c:1498
++#, c-format
+ msgid " -g, --groups display multicast group memberships\n"
+ msgstr ""
+ " -g, --groups vype lenstv v multicast skupinch\n"
+
+-#: ../netstat.c:1432
++#: ../netstat.c:1499
++#, c-format
+ msgid ""
+ " -s, --statistics display networking statistics (like SNMP)\n"
+ msgstr ""
+ " -s, --statistics vype statistiku sov aktivity (jako "
+ "SNMP)\n"
+
+-#: ../netstat.c:1434
++#: ../netstat.c:1501
++#, c-format
+ msgid ""
+ " -M, --masquerade display masqueraded connections\n"
+ "\n"
+@@ -1120,20 +1064,45 @@
+ " -M, --masquerade vype maskovan spojen\n"
+ "\n"
+
+-#: ../netstat.c:1438 ../route.c:87
++#: ../netstat.c:1505
++#, fuzzy, c-format
++msgid " --numeric-hosts don't resolve host names\n"
++msgstr ""
++" -n, --numeric nebude pevdt seln adresy\n"
++" na kanonick jmna\n"
++
++#: ../netstat.c:1506
++#, fuzzy, c-format
++msgid " --numeric-ports don't resolve port names\n"
++msgstr ""
++" -n, --numeric nebude pevdt seln adresy\n"
++" na kanonick jmna\n"
++
++#: ../netstat.c:1507
++#, fuzzy, c-format
++msgid " --numeric-users don't resolve user names\n"
++msgstr ""
++" -n, --numeric nebude pevdt seln adresy\n"
++" na kanonick jmna\n"
++
++#: ../netstat.c:1508
++#, c-format
+ msgid " -N, --symbolic resolve hardware names\n"
+ msgstr " -N, --symbolic pevede hw jmna\n"
+
+-#: ../netstat.c:1439 ../route.c:88
++#: ../netstat.c:1509 ../route.c:88
++#, c-format
+ msgid " -e, --extend display other/more information\n"
+ msgstr " -e, --extend vype podrobnj informace\n"
+
+-#: ../netstat.c:1440
++#: ../netstat.c:1510
++#, c-format
+ msgid " -p, --programs display PID/Program name for sockets\n"
+ msgstr ""
+ " -p, --programs vype PID/jmno programu pro sokety\n"
+
+-#: ../netstat.c:1441
++#: ../netstat.c:1511
++#, c-format
+ msgid ""
+ " -c, --continuous continuous listing\n"
+ "\n"
+@@ -1141,23 +1110,27 @@
+ " -c, --continuous neperuovan vpis\n"
+ "\n"
+
+-#: ../netstat.c:1442
++#: ../netstat.c:1512
++#, c-format
+ msgid " -l, --listening display listening server sockets\n"
+ msgstr ""
+ " -l, --listening vype sokety, na nich je naslouchno\n"
+
+-#: ../netstat.c:1443
++#: ../netstat.c:1513
++#, c-format
+ msgid ""
+ " -a, --all, --listening display all sockets (default: connected)\n"
+ msgstr ""
+ " -a, --all, --listening vype vechny sokety (implicitn: "
+ "spojen)\n"
+
+-#: ../netstat.c:1444
++#: ../netstat.c:1514
++#, c-format
+ msgid " -o, --timers display timers\n"
+ msgstr " -o, --timers zobraz asovae\n"
+
+-#: ../netstat.c:1445 ../route.c:89
++#: ../netstat.c:1515 ../route.c:89
++#, c-format
+ msgid ""
+ " -F, --fib display Forwarding Information Base "
+ "(default)\n"
+@@ -1165,112 +1138,126 @@
+ " -F, --fib zobraz Forwarding Infomation Base\n"
+ " (implicitn)\n"
+
+-#: ../netstat.c:1446 ../route.c:90
++#: ../netstat.c:1516 ../route.c:90
++#, c-format
+ msgid ""
+ " -C, --cache display routing cache instead of FIB\n"
+ "\n"
+ msgstr " -C, --cache msto FIB zobraz smrovac cache\n"
+
+-#: ../netstat.c:1448
++#: ../netstat.c:1518
++#, c-format
+ msgid ""
+-" <Socket>={-t|--tcp} {-u|--udp} {-w|--raw} {-x|--unix} --ax25 --ipx "
+-"--netrom\n"
++" <Socket>={-t|--tcp} {-u|--udp} {-w|--raw} {-x|--unix} --ax25 --ipx --"
++"netrom\n"
+ msgstr ""
+-" <Soket>={-t|--tcp} {-u|--udp} {-w|--raw} {-x|--unix} --ax25 --ipx "
+-"--netrom\n"
++" <Soket>={-t|--tcp} {-u|--udp} {-w|--raw} {-x|--unix} --ax25 --ipx --"
++"netrom\n"
+
+-#: ../netstat.c:1449 ../route.c:92
+-#, c-format
+-msgid " <AF>=Use '-A <af>' or '--<af>' Default: %s\n"
++#: ../netstat.c:1519
++#, fuzzy, c-format
++msgid " <AF>=Use '-6|-4' or '-A <af>' or '--<af>'; default: %s\n"
+ msgstr " <AF>=Pouijte '-A <af>' or '--<af>' Implicitn: %s\n"
+
+-#: ../netstat.c:1450 ../route.c:93
++#: ../netstat.c:1520 ../route.c:93
++#, c-format
+ msgid " List of possible address families (which support routing):\n"
+ msgstr " Seznam monch td adres (podporujcch smrovn):\n"
+
+-#: ../netstat.c:1663
++#: ../netstat.c:1753
++#, c-format
+ msgid "Active Internet connections "
+ msgstr "Aktivn Internetov spojen "
+
+-#: ../netstat.c:1673
++#: ../netstat.c:1763
++#, c-format
+ msgid ""
+ "\n"
+-"Proto Recv-Q Send-Q Local Address Foreign Address State "
+-" "
++"Proto Recv-Q Send-Q Local Address Foreign Address "
++"State "
+ msgstr ""
+ "\n"
+ "Proto Pch-F Odch-F Mstn Adresa Vzdlen Adresa Stav "
+
+-#: ../netstat.c:1675
++#: ../netstat.c:1765
++#, c-format
+ msgid " User Inode "
+ msgstr " Uivatel I-uzel "
+
+-#: ../netstat.c:1678
++#: ../netstat.c:1768
++#, c-format
+ msgid " Timer"
+ msgstr " asova"
+
+-#: ../netstat.c:1708
++#: ../netstat.c:1798
++#, c-format
+ msgid "IPv4 Group Memberships\n"
+ msgstr "lenstv v IPv4 skupinch\n"
+
+-#: ../netstat.c:1709
++#: ../netstat.c:1799
++#, c-format
+ msgid "Interface RefCnt Group\n"
+ msgstr "Rozhran ta Skupina\n"
+
+-#: ../rarp.c:43
++#: ../rarp.c:44
+ msgid "This kernel does not support RARP.\n"
+ msgstr "Toto jdro nepodporuje RARP.\n"
+
+-#: ../rarp.c:82
++#: ../rarp.c:83
+ #, c-format
+ msgid "no RARP entry for %s.\n"
+ msgstr "pro %s neexistuje RARP poloka.\n"
+
+-#: ../rarp.c:95
++#: ../rarp.c:96
+ #, c-format
+ msgid "%s: bad hardware address\n"
+ msgstr "hardwarov adresa %s je nesprvn\n"
+
+-#: ../rarp.c:127
++#: ../rarp.c:128
+ #, c-format
+ msgid "rarp: cannot open file %s:%s.\n"
+ msgstr "rarp: soubor %s:%s nelze otevt.\n"
+
+-#: ../rarp.c:139
++#: ../rarp.c:140
+ #, c-format
+ msgid "rarp: format error at %s:%u\n"
+ msgstr "rarp: syntaktick chyba na dku %2$u souboru %1$s\n"
+
+-#: ../rarp.c:143 ../rarp.c:287
++#: ../rarp.c:144 ../rarp.c:289
+ #, c-format
+ msgid "rarp: %s: unknown host\n"
+ msgstr "rarp: pota %s nen znm\n"
+
+-#: ../rarp.c:146
++#: ../rarp.c:147
+ #, c-format
+ msgid "rarp: cannot set entry from %s:%u\n"
+ msgstr "rarp: nelze nastavit poloku z dku %2$u souboru %1$s\n"
+
+-#: ../rarp.c:175
++#: ../rarp.c:176
++#, c-format
+ msgid "Usage: rarp -a list entries in cache.\n"
+ msgstr "Pouit: rarp -a vype poloky z cache.\n"
+
+-#: ../rarp.c:176
++#: ../rarp.c:177
++#, c-format
+ msgid " rarp -d <hostname> delete entry from cache.\n"
+ msgstr " rarp -d <jmno> smae poloku z cache.\n"
+
+-#: ../rarp.c:177
++#: ../rarp.c:178
++#, c-format
+ msgid " rarp [<HW>] -s <hostname> <hwaddr> add entry to cache.\n"
+ msgstr ""
+ " rarp [<HW>] -s <jmno> <hwadr> pid poloku do cache.\n"
+
+-#: ../rarp.c:178
++#: ../rarp.c:179
++#, c-format
+ msgid ""
+ " rarp -f add entries from /etc/ethers.\n"
+ msgstr ""
+ " rarp -f pid poloky z /etc/ethers.\n"
+
+-#: ../rarp.c:179
++#: ../rarp.c:180
++#, c-format
+ msgid ""
+ " rarp -V display program version.\n"
+ "\n"
+@@ -1279,24 +1266,26 @@
+ "programu.\n"
+ "\n"
+
+-#: ../rarp.c:236
++#: ../rarp.c:238
+ #, c-format
+ msgid "%s: illegal option mix.\n"
+ msgstr "Kombinace pepna %s je nesprvn.\n"
+
+-#: ../rarp.c:267
++#: ../rarp.c:269
+ #, c-format
+ msgid "rarp: %s: unknown hardware type.\n"
+ msgstr "rarp: hardwarov typ %s nen znm.\n"
+
+-#: ../route.c:79
++#: ../route.c:80
++#, c-format
+ msgid ""
+ "Usage: route [-nNvee] [-FC] [<AF>] List kernel routing tables\n"
+ msgstr ""
+ "Pouit: route [-nNvee] [-FC] [<AF>] Zobraz smrovac tabulky v "
+ "jdru\n"
+
+-#: ../route.c:80
++#: ../route.c:81
++#, c-format
+ msgid ""
+ " route [-v] [-FC] {add|del|flush} ... Modify routing table for AF.\n"
+ "\n"
+@@ -1305,14 +1294,16 @@
+ "AF.\n"
+ "\n"
+
+-#: ../route.c:82
++#: ../route.c:83
++#, c-format
+ msgid ""
+ " route {-h|--help} [<AF>] Detailed usage syntax for "
+ "specified AF.\n"
+ msgstr ""
+ " route {-h|--help [<AF>] Npovda pro pouit s AF.\n"
+
+-#: ../route.c:83
++#: ../route.c:84
++#, c-format
+ msgid ""
+ " route {-V|--version} Display version/author and "
+ "exit.\n"
+@@ -1321,15 +1312,23 @@
+ " route {-V|--version} Vype oznaen verze a autora\n"
+ " programu.\n"
+
++#: ../route.c:92
++#, fuzzy, c-format
++msgid " <AF>=Use '-A <af>' or '--<af>'; default: %s\n"
++msgstr " <AF>=Pouijte '-A <af>' or '--<af>' Implicitn: %s\n"
++
+ #: ../plipconfig.c:66
++#, c-format
+ msgid "Usage: plipconfig [-a] [-i] [-v] interface\n"
+ msgstr "Pouit: plipconfig [-a] [-i] [-v] rozhran\n"
+
+ #: ../plipconfig.c:67
++#, c-format
+ msgid " [nibble NN] [trigger NN]\n"
+ msgstr " [nibble NN] [trigger NN]\n"
+
+ #: ../plipconfig.c:68
++#, c-format
+ msgid " plipconfig -V | --version\n"
+ msgstr " plipconfig -V | --version\n"
+
+@@ -1338,25 +1337,30 @@
+ msgid "%s\tnibble %lu trigger %lu\n"
+ msgstr "%s\tnibble %lu trigger %lu\n"
+
+-#: ../iptunnel.c:79
++#: ../iptunnel.c:85
++#, c-format
+ msgid "Usage: iptunnel { add | change | del | show } [ NAME ]\n"
+ msgstr "Pouit: iptunnel { add | change | del | show } [ JMNO ]\n"
+
+-#: ../iptunnel.c:80
++#: ../iptunnel.c:86
++#, c-format
+ msgid ""
+ " [ mode { ipip | gre | sit } ] [ remote ADDR ] [ local ADDR ]\n"
+ msgstr ""
+ " [ mode { ipip | gre | sit } ] [ vzdlen ADR ] [ mstn ADR ]\n"
+
+-#: ../iptunnel.c:81
++#: ../iptunnel.c:87
++#, c-format
+ msgid " [ [i|o]seq ] [ [i|o]key KEY ] [ [i|o]csum ]\n"
+ msgstr " [ [i|o]seq ] [ [i|o]key KL ] [ [i|o]csum ]\n"
+
+-#: ../iptunnel.c:82
++#: ../iptunnel.c:88
++#, c-format
+ msgid " [ ttl TTL ] [ tos TOS ] [ nopmtudisc ] [ dev PHYS_DEV ]\n"
+ msgstr " [ ttl TTL ] [ tos TOS ] [ nopmtudisc ] [ dev ZAZEN ]\n"
+
+-#: ../iptunnel.c:83
++#: ../iptunnel.c:89
++#, c-format
+ msgid ""
+ " iptunnel -V | --version\n"
+ "\n"
+@@ -1364,450 +1368,737 @@
+ " iptunnel -V | --version\n"
+ "\n"
+
+-#: ../iptunnel.c:84
++#: ../iptunnel.c:90
++#, c-format
+ msgid "Where: NAME := STRING\n"
+ msgstr "Kde: JMNO := ETZEC\n"
+
+-#: ../iptunnel.c:85
++#: ../iptunnel.c:91
++#, c-format
+ msgid " ADDR := { IP_ADDRESS | any }\n"
+ msgstr " ADR := { IP-ADRESA | any }\n"
+
+-#: ../iptunnel.c:86
++#: ../iptunnel.c:92
++#, c-format
+ msgid " TOS := { NUMBER | inherit }\n"
+ msgstr " TOS := { SLO | inherit }\n"
+
+-#: ../iptunnel.c:87
++#: ../iptunnel.c:93
++#, c-format
+ msgid " TTL := { 1..255 | inherit }\n"
+ msgstr " TTL := { 1..255 | inherit }\n"
+
+-#: ../iptunnel.c:88
++#: ../iptunnel.c:94
++#, c-format
+ msgid " KEY := { DOTTED_QUAD | NUMBER }\n"
+ msgstr " KL := { DOTTED_QUAD | SLO }\n"
+
+-#: ../iptunnel.c:326
++#: ../iptunnel.c:332
++#, c-format
+ msgid "Keys are not allowed with ipip and sit.\n"
+ msgstr "S ipip a sit nejsou kle povoleny.\n"
+
+-#: ../iptunnel.c:346
++#: ../iptunnel.c:352
++#, c-format
+ msgid "Broadcast tunnel requires a source address.\n"
+ msgstr "Tunel se vesmrovm vyslnm vyaduje zdrojovou adresu.\n"
+
+-#: ../iptunnel.c:361
++#: ../iptunnel.c:367
++#, c-format
+ msgid "ttl != 0 and noptmudisc are incompatible\n"
+ msgstr "ttl != 0 a noptmudisc se navzjem vyluuj\n"
+
+-#: ../iptunnel.c:373
++#: ../iptunnel.c:379
++#, c-format
+ msgid "cannot determine tunnel mode (ipip, gre or sit)\n"
+ msgstr "reim tunelu (ipip, gre i sit) nelze zjistit\n"
+
+-#: ../iptunnel.c:411
++#: ../iptunnel.c:417
+ #, c-format
+ msgid "%s: %s/ip remote %s local %s "
+ msgstr "%s: %s/ip vzdlen %s mstn %s "
+
+-#: ../iptunnel.c:415
++#: ../iptunnel.c:421
+ msgid "unknown"
+ msgstr "Neznm."
+
+-#: ../iptunnel.c:447
++#: ../iptunnel.c:453
++#, c-format
+ msgid " Drop packets out of sequence.\n"
+ msgstr " Zahazuje pakety mimo poad.\n"
+
+-#: ../iptunnel.c:449
++#: ../iptunnel.c:455
++#, c-format
+ msgid " Checksum in received packet is required.\n"
+ msgstr " Pijman pakety mus mt kontroln souet.\n"
+
+ # ???
+-#: ../iptunnel.c:451
++#: ../iptunnel.c:457
++#, c-format
+ msgid " Sequence packets on output.\n"
+ msgstr " ad odchoz pakety.\n"
+
+-#: ../iptunnel.c:453
++#: ../iptunnel.c:459
++#, c-format
+ msgid " Checksum output packets.\n"
+ msgstr " Odchoz pakety budou mt kontroln souet.\n"
+
+-#: ../iptunnel.c:481
++#: ../iptunnel.c:487
++#, c-format
+ msgid "Wrong format of /proc/net/dev. Sorry.\n"
+ msgstr "Lituji, formt /proc/net/dev je chybn.\n"
+
+-#: ../iptunnel.c:494
++#: ../iptunnel.c:500
+ #, c-format
+ msgid "Failed to get type of [%s]\n"
+ msgstr "Typ [%s] se nepodailo zjistit.\n"
+
+-#: ../iptunnel.c:510
++#: ../iptunnel.c:516
++#, c-format
+ msgid "RX: Packets Bytes Errors CsumErrs OutOfSeq Mcasts\n"
+ msgstr "RX: Pakety Bajty Chyby CsumChyb MimoPo Mcasts\n"
+
+-#: ../iptunnel.c:513
++#: ../iptunnel.c:519
++#, c-format
+ msgid "TX: Packets Bytes Errors DeadLoop NoRoute NoBufs\n"
+ msgstr "TX: Pakety Bajty Chyby DeadLoop NoRoute NoBufs\n"
+
+-#: ../statistics.c:45
++#: ../statistics.c:47
+ msgid "ICMP input histogram:"
+ msgstr "histogram ICMP vstupu:"
+
+-#: ../statistics.c:46
++#: ../statistics.c:48
+ msgid "ICMP output histogram:"
+ msgstr "histogram ICMP vstupu:"
+
+-#: ../statistics.c:63
++#: ../statistics.c:65
+ #, c-format
+ msgid "Forwarding is %s"
+ msgstr "Pedvn je %s"
+
+-#: ../statistics.c:64
+-#, c-format
+-msgid "Default TTL is %d"
++#: ../statistics.c:66
++#, fuzzy, c-format
++msgid "Default TTL is %u"
+ msgstr "Implicitn TTL je %d"
+
+-#: ../statistics.c:65
+-#, c-format
+-msgid "%d total packets received"
++#: ../statistics.c:67
++#, fuzzy, c-format
++msgid "%u total packets received"
+ msgstr "celkem pijmutch paket: %d"
+
+-#: ../statistics.c:66
+-#, c-format
+-msgid "%d with invalid headers"
++#: ../statistics.c:68
++#, fuzzy, c-format
++msgid "%u with invalid headers"
+ msgstr "s nesprvnmi hlavikami: %d"
+
+-#: ../statistics.c:67
+-#, c-format
+-msgid "%d with invalid addresses"
++#: ../statistics.c:69
++#, fuzzy, c-format
++msgid "%u with invalid addresses"
+ msgstr "s nesprvnmi adresami: %d"
+
+-#: ../statistics.c:68
+-#, c-format
+-msgid "%d forwarded"
++#: ../statistics.c:70
++#, fuzzy, c-format
++msgid "%u forwarded"
+ msgstr "pedno: %d"
+
+-#: ../statistics.c:69
+-#, c-format
+-msgid "%d with unknown protocol"
++#: ../statistics.c:71
++#, fuzzy, c-format
++msgid "%u with unknown protocol"
+ msgstr "s neznmm protokolem: %d"
+
+-#: ../statistics.c:70
+-#, c-format
+-msgid "%d incoming packets discarded"
++#: ../statistics.c:72
++#, fuzzy, c-format
++msgid "%u incoming packets discarded"
+ msgstr "poet zahozench pchozch paket: %d"
+
+-#: ../statistics.c:71
+-#, c-format
+-msgid "%d incoming packets delivered"
++#: ../statistics.c:73
++#, fuzzy, c-format
++msgid "%u incoming packets delivered"
+ msgstr "poet doruench pchozch paket: %d"
+
+-#: ../statistics.c:72
+-#, c-format
+-msgid "%d requests sent out"
++#: ../statistics.c:74
++#, fuzzy, c-format
++msgid "%u requests sent out"
+ msgstr "poet odeslanch poadavk: %d"
+
+ #. ?
+-#: ../statistics.c:73
+-#, c-format
+-msgid "%d outgoing packets dropped"
++#: ../statistics.c:75
++#, fuzzy, c-format
++msgid "%u outgoing packets dropped"
+ msgstr "poet zahozench odchozch paket: %d"
+
+-#: ../statistics.c:74
+-#, c-format
+-msgid "%d dropped because of missing route"
++#: ../statistics.c:76
++#, fuzzy, c-format
++msgid "%u dropped because of missing route"
+ msgstr "zahozeno kvli chybjc cest: %d"
+
+-#: ../statistics.c:75
+-#, c-format
+-msgid "%d fragments dropped after timeout"
++#: ../statistics.c:77
++#, fuzzy, c-format
++msgid "%u fragments dropped after timeout"
+ msgstr "poet fragment zahozench po vypren asu: %d"
+
+-#: ../statistics.c:76
+-#, c-format
+-msgid "%d reassemblies required"
++#: ../statistics.c:78
++#, fuzzy, c-format
++msgid "%u reassemblies required"
+ msgstr "poet nutnch znovusestaven: %d"
+
+ #. ?
+-#: ../statistics.c:77
+-#, c-format
+-msgid "%d packets reassembled ok"
++#: ../statistics.c:79
++#, fuzzy, c-format
++msgid "%u packets reassembled ok"
+ msgstr "poet v podku znovu sestavench paket: %d"
+
+-#: ../statistics.c:78
+-#, c-format
+-msgid "%d packet reassembles failed"
++#: ../statistics.c:80
++#, fuzzy, c-format
++msgid "%u packet reassembles failed"
+ msgstr "poet paket, je se nepodailo znovu sestavit: %d"
+
+-#: ../statistics.c:79
+-#, c-format
+-msgid "%d fragments received ok"
++#: ../statistics.c:81
++#, fuzzy, c-format
++msgid "%u fragments received ok"
+ msgstr "poet v podku pijmutch fragment: %d"
+
+-#: ../statistics.c:80
+-#, c-format
+-msgid "%d fragments failed"
++#: ../statistics.c:82
++#, fuzzy, c-format
++msgid "%u fragments failed"
+ msgstr "poet chybnch fragment: %d"
+
+-#: ../statistics.c:81
+-#, c-format
+-msgid "%d fragments created"
++#: ../statistics.c:83
++#, fuzzy, c-format
++msgid "%u fragments created"
+ msgstr "poet vytvoench fragment: %d"
+
+-#: ../statistics.c:86
+-#, c-format
+-msgid "%d ICMP messages received"
++#: ../statistics.c:88
++#, fuzzy, c-format
++msgid "%u ICMP messages received"
+ msgstr "poet pijmutch ICMP zprv: %d"
+
+-#: ../statistics.c:87
+-#, c-format
+-msgid "%d input ICMP message failed."
++#: ../statistics.c:89
++#, fuzzy, c-format
++msgid "%u input ICMP message failed."
+ msgstr "poet chybnch pchozch ICMP zprv: %d"
+
+-#: ../statistics.c:88 ../statistics.c:101
+-#, c-format
+-msgid "destination unreachable: %d"
++#: ../statistics.c:90 ../statistics.c:103
++#, fuzzy, c-format
++msgid "destination unreachable: %u"
+ msgstr "adrest nedostupn: %d"
+
+-#: ../statistics.c:89
+-#, c-format
+-msgid "timeout in transit: %d"
++#: ../statistics.c:91
++#, fuzzy, c-format
++msgid "timeout in transit: %u"
+ msgstr "vyprel as pi penosu: %d"
+
+-#: ../statistics.c:90 ../statistics.c:103
+-#, c-format
+-msgid "wrong parameters: %d"
++#: ../statistics.c:92 ../statistics.c:105
++#, fuzzy, c-format
++msgid "wrong parameters: %u"
+ msgstr "chybn parametry: %d"
+
+ #. ?
+-#: ../statistics.c:91
+-#, c-format
+-msgid "source quenchs: %d"
++#: ../statistics.c:93
++#, fuzzy, c-format
++msgid "source quenches: %u"
+ msgstr "zen toku dat: %d"
+
+-#: ../statistics.c:92
+-#, c-format
+-msgid "redirects: %d"
++#: ../statistics.c:94
++#, fuzzy, c-format
++msgid "redirects: %u"
+ msgstr "zmna cesty: %d"
+
+-#: ../statistics.c:93
+-#, c-format
+-msgid "echo requests: %d"
++#: ../statistics.c:95
++#, fuzzy, c-format
++msgid "echo requests: %u"
+ msgstr "dost o echo: %d"
+
+-#: ../statistics.c:94 ../statistics.c:107
+-#, c-format
+-msgid "echo replies: %d"
++#: ../statistics.c:96 ../statistics.c:109
++#, fuzzy, c-format
++msgid "echo replies: %u"
+ msgstr "odpov na dost o echo: %d"
+
+-#: ../statistics.c:95
+-#, c-format
+-msgid "timestamp request: %d"
++#: ../statistics.c:97
++#, fuzzy, c-format
++msgid "timestamp request: %u"
+ msgstr "dost o as: %d"
+
+-#: ../statistics.c:96
+-#, c-format
+-msgid "timestamp reply: %d"
++#: ../statistics.c:98
++#, fuzzy, c-format
++msgid "timestamp reply: %u"
+ msgstr "odpov na dost o as: %d"
+
+-#: ../statistics.c:97
+-#, c-format
+-msgid "address mask request: %d"
++#: ../statistics.c:99
++#, fuzzy, c-format
++msgid "address mask request: %u"
+ msgstr "dost o masku podst: %d"
+
+ #. ?
+-#: ../statistics.c:98
+-msgid "address mask replies"
+-msgstr "odpovdi na dost o masku podst"
++#: ../statistics.c:100 ../statistics.c:113
++#, fuzzy, c-format
++msgid "address mask replies: %u"
++msgstr "odpov na dost o masku podst: %d"
+
+ #. ?
+-#: ../statistics.c:99
+-#, c-format
+-msgid "%d ICMP messages sent"
++#: ../statistics.c:101
++#, fuzzy, c-format
++msgid "%u ICMP messages sent"
+ msgstr "poet odeslanch ICMP zprv: %d"
+
+-#: ../statistics.c:100
+-#, c-format
+-msgid "%d ICMP messages failed"
++#: ../statistics.c:102
++#, fuzzy, c-format
++msgid "%u ICMP messages failed"
+ msgstr "poet chybnch ICMP zprv: %d"
+
+-#: ../statistics.c:102
+-#, c-format
+-msgid "time exceeded: %d"
++#: ../statistics.c:104
++#, fuzzy, c-format
++msgid "time exceeded: %u"
+ msgstr "vypren ivotnosti: %d"
+
+ #. ?
+-#: ../statistics.c:104
+-#, c-format
+-msgid "source quench: %d"
++#: ../statistics.c:106
++#, fuzzy, c-format
++msgid "source quench: %u"
+ msgstr "zen toku dat: %d"
+
+-#: ../statistics.c:105
+-#, c-format
+-msgid "redirect: %d"
++#: ../statistics.c:107
++#, fuzzy, c-format
++msgid "redirect: %u"
+ msgstr "zmna cesty: %d"
+
+-#: ../statistics.c:106
+-#, c-format
+-msgid "echo request: %d"
++#: ../statistics.c:108
++#, fuzzy, c-format
++msgid "echo request: %u"
+ msgstr "dost o echo: %d"
+
+-#: ../statistics.c:108
+-#, c-format
+-msgid "timestamp requests: %d"
++#: ../statistics.c:110
++#, fuzzy, c-format
++msgid "timestamp requests: %u"
+ msgstr "dost o as: %d"
+
+-#: ../statistics.c:109
+-#, c-format
+-msgid "timestamp replies: %d"
++#: ../statistics.c:111
++#, fuzzy, c-format
++msgid "timestamp replies: %u"
+ msgstr "odpov na dost o as: %d"
+
+-#: ../statistics.c:110
+-#, c-format
+-msgid "address mask requests: %d"
++#: ../statistics.c:112
++#, fuzzy, c-format
++msgid "address mask requests: %u"
+ msgstr "dost o masku podst: %d"
+
+-#: ../statistics.c:111
+-#, c-format
+-msgid "address mask replies: %d"
+-msgstr "odpov na dost o masku podst: %d"
+-
+-#: ../statistics.c:116
++#: ../statistics.c:118
+ #, c-format
+ msgid "RTO algorithm is %s"
+ msgstr "RTO algoritmus je %s"
+
+-#: ../statistics.c:120
+-#, c-format
+-msgid "%d active connections openings"
++#: ../statistics.c:122
++#, fuzzy, c-format
++msgid "%u active connections openings"
+ msgstr "poet aktivn navzanch spojen: %d"
+
+-#: ../statistics.c:121
+-#, c-format
+-msgid "%d passive connection openings"
++#: ../statistics.c:123
++#, fuzzy, c-format
++msgid "%u passive connection openings"
+ msgstr "poet pasivn navzanch spojen: %d"
+
+-#: ../statistics.c:122
+-#, c-format
+-msgid "%d failed connection attempts"
++#: ../statistics.c:124
++#, fuzzy, c-format
++msgid "%u failed connection attempts"
+ msgstr "poet nespnch pokus o spojen: %d"
+
+-#: ../statistics.c:123
+-#, c-format
+-msgid "%d connection resets received"
++#: ../statistics.c:125
++#, fuzzy, c-format
++msgid "%u connection resets received"
+ msgstr "poet pijmutch reset: %d"
+
+-#: ../statistics.c:124
+-#, c-format
+-msgid "%d connections established"
++#: ../statistics.c:126
++#, fuzzy, c-format
++msgid "%u connections established"
+ msgstr "poet navzanch spojen: %d"
+
+-#: ../statistics.c:125
+-#, c-format
+-msgid "%d segments received"
++#: ../statistics.c:127
++#, fuzzy, c-format
++msgid "%u segments received"
+ msgstr "poet pijmutch segment: %d"
+
+-#: ../statistics.c:126
+-#, c-format
+-msgid "%d segments send out"
++#: ../statistics.c:128
++#, fuzzy, c-format
++msgid "%u segments send out"
+ msgstr "poet odeslanch segment: %d"
+
+-#: ../statistics.c:127
+-#, c-format
+-msgid "%d segments retransmited"
++#: ../statistics.c:129
++#, fuzzy, c-format
++msgid "%u segments retransmited"
+ msgstr "poet penesench segment: %d"
+
+-#: ../statistics.c:128
+-#, c-format
+-msgid "%d bad segments received."
++#: ../statistics.c:130
++#, fuzzy, c-format
++msgid "%u bad segments received."
+ msgstr "poet chybnch pchozch segment: %d."
+
+-#: ../statistics.c:129
+-#, c-format
+-msgid "%d resets sent"
++#: ../statistics.c:131
++#, fuzzy, c-format
++msgid "%u resets sent"
+ msgstr "poet odeslanch reset: %d"
+
+-#: ../statistics.c:134
+-#, c-format
+-msgid "%d packets received"
++#: ../statistics.c:136
++#, fuzzy, c-format
++msgid "%u packets received"
+ msgstr "poet pijmutch paket: %d"
+
+-#: ../statistics.c:135
+-#, c-format
+-msgid "%d packets to unknown port received."
++#: ../statistics.c:137
++#, fuzzy, c-format
++msgid "%u packets to unknown port received."
+ msgstr "poet paket pijmutch pro neznm port: %d."
+
+-#: ../statistics.c:136
+-#, c-format
+-msgid "%d packet receive errors"
++#: ../statistics.c:138
++#, fuzzy, c-format
++msgid "%u packet receive errors"
+ msgstr "poet chyb pi pjmu paket: %d"
+
+-#: ../statistics.c:137
+-#, c-format
+-msgid "%d packets sent"
++#: ../statistics.c:139
++#, fuzzy, c-format
++msgid "%u packets sent"
+ msgstr "poet odeslanch paket: %d"
+
+-#: ../statistics.c:142
+-#, c-format
+-msgid "%d SYN cookies sent"
++#: ../statistics.c:144
++#, fuzzy, c-format
++msgid "%u SYN cookies sent"
+ msgstr "poet odeslanch SYN cookies: %d"
+
+-#: ../statistics.c:143
+-#, c-format
+-msgid "%d SYN cookies received"
++#: ../statistics.c:145
++#, fuzzy, c-format
++msgid "%u SYN cookies received"
+ msgstr "poet pijmutch SYN cookies: %d"
+
+-#: ../statistics.c:144
+-#, c-format
+-msgid "%d invalid SYN cookies received"
++#: ../statistics.c:146
++#, fuzzy, c-format
++msgid "%u invalid SYN cookies received"
+ msgstr "poet chybnch pchozch SYN cookies: %d"
+
+-#: ../statistics.c:146
+-#, c-format
+-msgid "%d resets received for embryonic SYN_RECV sockets"
++#: ../statistics.c:148
++#, fuzzy, c-format
++msgid "%u resets received for embryonic SYN_RECV sockets"
+ msgstr "poet reset pijmutch pro sokety ve stavu SYN_PCH: %d"
+
+-#: ../statistics.c:148
+-#, c-format
+-msgid "%d packets pruned from receive queue because of socket buffer overrun"
++#: ../statistics.c:150
++#, fuzzy, c-format
++msgid "%u packets pruned from receive queue because of socket buffer overrun"
+ msgstr "poet paket odstrannch z fronty kvli peteen bufferu soketu: %d"
+
+ #. obsolete: 2.2.0 doesn't do that anymore
+-#: ../statistics.c:151
+-#, c-format
+-msgid "%d packets pruned from out-of-order queue"
++#: ../statistics.c:153
++#, fuzzy, c-format
++msgid "%u packets pruned from receive queue"
+ msgstr "poet paket odstrannch z fronty mimo-poad: %d"
+
+-#: ../statistics.c:152
+-#, c-format
++#: ../statistics.c:154
++#, fuzzy, c-format
+ msgid ""
+-"%d packets dropped from out-of-order queue because of socket buffer overrun"
++"%u packets dropped from out-of-order queue because of socket buffer overrun"
+ msgstr ""
+ "poet paket zahozench z fronty mimo-poad kvli peteen bufferu soketu: "
+ "%d"
+
+-#: ../statistics.c:154
+-#, c-format
+-msgid "%d ICMP packets dropped because they were out-of-window"
++#: ../statistics.c:156
++#, fuzzy, c-format
++msgid "%u ICMP packets dropped because they were out-of-window"
+ msgstr "poet ICMP paket zahozench, protoe byly mimo-okno: %d"
+
+-#: ../statistics.c:156
+-#, c-format
+-msgid "%d ICMP packets dropped because socket was locked"
++#: ../statistics.c:158
++#, fuzzy, c-format
++msgid "%u ICMP packets dropped because socket was locked"
+ msgstr "poet ICMP paket zahozench kvli zamenmu soketu: %d"
+
++#: ../statistics.c:160
++#, c-format
++msgid "%u TCP sockets finished time wait in fast timer"
++msgstr ""
++
++#: ../statistics.c:161
++#, c-format
++msgid "%u time wait sockets recycled by time stamp"
++msgstr ""
++
++#: ../statistics.c:162
++#, c-format
++msgid "%u TCP sockets finished time wait in slow timer"
++msgstr ""
++
++#: ../statistics.c:163
++#, c-format
++msgid "%u passive connections rejected because of time stamp"
++msgstr ""
++
++#: ../statistics.c:165
++#, c-format
++msgid "%u active connections rejected because of time stamp"
++msgstr ""
++
++#: ../statistics.c:167
++#, c-format
++msgid "%u packets rejects in established connections because of timestamp"
++msgstr ""
++
++#: ../statistics.c:169
++#, fuzzy, c-format
++msgid "%u delayed acks sent"
++msgstr "poet odeslanch paket: %d"
++
++#: ../statistics.c:170
++#, c-format
++msgid "%u delayed acks further delayed because of locked socket"
++msgstr ""
++
++#: ../statistics.c:172
++#, c-format
++msgid "Quick ack mode was activated %u times"
++msgstr ""
++
++#: ../statistics.c:173
++#, c-format
++msgid "%u times the listen queue of a socket overflowed"
++msgstr ""
++
++#: ../statistics.c:175
++#, c-format
++msgid "%u SYNs to LISTEN sockets ignored"
++msgstr ""
++
++#: ../statistics.c:176
++#, c-format
++msgid "%u packets directly queued to recvmsg prequeue."
++msgstr ""
++
++#: ../statistics.c:178
++#, c-format
++msgid "%u of bytes directly received from backlog"
++msgstr ""
++
++#: ../statistics.c:180
++#, c-format
++msgid "%u of bytes directly received from prequeue"
++msgstr ""
++
++#: ../statistics.c:182
++#, fuzzy, c-format
++msgid "%u packets dropped from prequeue"
++msgstr "poet paket odstrannch z fronty mimo-poad: %d"
++
++#: ../statistics.c:183
++#, fuzzy, c-format
++msgid "%u packet headers predicted"
++msgstr "poet pijmutch paket: %d"
++
++#: ../statistics.c:184
++#, c-format
++msgid "%u packets header predicted and directly queued to user"
++msgstr ""
++
++#: ../statistics.c:186
++#, c-format
++msgid "Ran %u times out of system memory during packet sending"
++msgstr ""
++
++#: ../statistics.c:188
++#, fuzzy, c-format
++msgid "%u acknowledgments not containing data received"
++msgstr "poet paket pijmutch pro neznm port: %d."
++
++#: ../statistics.c:189
++#, c-format
++msgid "%u predicted acknowledgments"
++msgstr ""
++
++#: ../statistics.c:190
++#, c-format
++msgid "%u times recovered from packet loss due to fast retransmit"
++msgstr ""
++
++#: ../statistics.c:191
++#, c-format
++msgid "%u times recovered from packet loss due to SACK data"
++msgstr ""
++
++#: ../statistics.c:192
++#, fuzzy, c-format
++msgid "%u bad SACKs received"
++msgstr "poet chybnch pchozch segment: %d."
++
++#: ../statistics.c:193
++#, c-format
++msgid "Detected reordering %u times using FACK"
++msgstr ""
++
++#: ../statistics.c:194
++#, c-format
++msgid "Detected reordering %u times using SACK"
++msgstr ""
++
++#: ../statistics.c:195
++#, c-format
++msgid "Detected reordering %u times using time stamp"
++msgstr ""
++
++#: ../statistics.c:196
++#, c-format
++msgid "Detected reordering %u times using reno fast retransmit"
++msgstr ""
++
++#: ../statistics.c:197
++#, c-format
++msgid "%u congestion windows fully recovered"
++msgstr ""
++
++#: ../statistics.c:198
++#, c-format
++msgid "%u congestion windows partially recovered using Hoe heuristic"
++msgstr ""
++
++#: ../statistics.c:199
++#, c-format
++msgid "%u congestion window recovered using DSACK"
++msgstr ""
++
++#: ../statistics.c:200
++#, c-format
++msgid "%u congestion windows recovered after partial ack"
++msgstr ""
++
++#: ../statistics.c:201
++#, fuzzy, c-format
++msgid "%u retransmits lost"
++msgstr "poet odeslanch reset: %d"
++
++#: ../statistics.c:202
++#, c-format
++msgid "%u timeouts after reno fast retransmit"
++msgstr ""
++
++#: ../statistics.c:203
++#, c-format
++msgid "%u timeouts after SACK recovery"
++msgstr ""
++
++#: ../statistics.c:204
++#, c-format
++msgid "%u timeouts in loss state"
++msgstr ""
++
++#: ../statistics.c:205
++#, fuzzy, c-format
++msgid "%u fast retransmits"
++msgstr "poet penesench segment: %d"
++
++#: ../statistics.c:206
++#, c-format
++msgid "%u forward retransmits"
++msgstr ""
++
++#: ../statistics.c:207
++#, c-format
++msgid "%u retransmits in slow start"
++msgstr ""
++
++#: ../statistics.c:208
++#, c-format
++msgid "%u other TCP timeouts"
++msgstr ""
++
++#: ../statistics.c:209
++#, fuzzy, c-format
++msgid "%u reno fast retransmits failed"
++msgstr "poet penesench segment: %d"
++
++#: ../statistics.c:210
++#, fuzzy, c-format
++msgid "%u sack retransmits failed"
++msgstr "poet paket, je se nepodailo znovu sestavit: %d"
++
++#: ../statistics.c:211
++#, c-format
++msgid "%u times receiver scheduled too late for direct processing"
++msgstr ""
++
++#: ../statistics.c:212
++#, fuzzy, c-format
++msgid "%u packets collapsed in receive queue due to low socket buffer"
++msgstr "poet paket odstrannch z fronty kvli peteen bufferu soketu: %d"
++
++#: ../statistics.c:213
++#, c-format
++msgid "%u DSACKs sent for old packets"
++msgstr ""
++
++#: ../statistics.c:214
++#, c-format
++msgid "%u DSACKs sent for out of order packets"
++msgstr ""
++
++#: ../statistics.c:215
++#, fuzzy, c-format
++msgid "%u DSACKs received"
++msgstr "poet pijmutch paket: %d"
++
++#: ../statistics.c:216
++#, fuzzy, c-format
++msgid "%u DSACKs for out of order packets received"
++msgstr "celkem pijmutch paket: %d"
++
++#: ../statistics.c:217
++#, fuzzy, c-format
++msgid "%u connections reset due to unexpected SYN"
++msgstr "poet pijmutch reset: %d"
++
++#: ../statistics.c:218
++#, fuzzy, c-format
++msgid "%u connections reset due to unexpected data"
++msgstr "poet pijmutch reset: %d"
++
++#: ../statistics.c:219
++#, fuzzy, c-format
++msgid "%u connections reset due to early user close"
++msgstr "poet pijmutch reset: %d"
++
++#: ../statistics.c:220
++#, c-format
++msgid "%u connections aborted due to memory pressure"
++msgstr ""
++
++#: ../statistics.c:221
++#, fuzzy, c-format
++msgid "%u connections aborted due to timeout"
++msgstr "poet pijmutch reset: %d"
++
+ #: ../statistics.c:222
++#, c-format
++msgid "%u connections aborted after user close in linger timeout"
++msgstr ""
++
++#: ../statistics.c:223
++#, c-format
++msgid "%u times unabled to send RST due to no memory"
++msgstr ""
++
++#: ../statistics.c:224
++#, c-format
++msgid "TCP ran low on memory %u times"
++msgstr ""
++
++#: ../statistics.c:225
++#, c-format
++msgid "%u TCP data loss events"
++msgstr ""
++
++#: ../statistics.c:292
+ msgid "enabled"
+ msgstr "zapnuto"
+
+-#: ../statistics.c:222
++#: ../statistics.c:292
+ msgid "disabled"
+ msgstr "vypnuto"
+
+-#: ../statistics.c:272
+-#, c-format
+-msgid "unknown title %s\n"
+-msgstr "titulek %s je neznm\n"
+-
+-#: ../statistics.c:298
++#: ../statistics.c:375
+ msgid "error parsing /proc/net/snmp"
+ msgstr "chyba pi zpracovn /proc/net/snmp"
+
+-#: ../statistics.c:311
++#: ../statistics.c:388
+ msgid "cannot open /proc/net/snmp"
+ msgstr "/proc/net/snmp nelze otevt"
+
+@@ -1821,89 +2112,95 @@
+ msgid "Cannot change line discipline to `%s'.\n"
+ msgstr "Linkovou disciplnu nelze na `%s' zmnit.\n"
+
+-#: ../lib/af.c:145 ../lib/hw.c:148
++#: ../lib/af.c:153 ../lib/hw.c:161
+ msgid "UNSPEC"
+ msgstr "NEZNM"
+
+-#: ../lib/af.c:147
++#: ../lib/af.c:155
+ msgid "UNIX Domain"
+ msgstr "Domna UNIX"
+
+-#: ../lib/af.c:150
++#: ../lib/af.c:158
+ msgid "DARPA Internet"
+ msgstr "DARPA Internet"
+
+-#: ../lib/af.c:153
++#: ../lib/af.c:161
+ msgid "IPv6"
+ msgstr "IPv6"
+
+-#: ../lib/af.c:156 ../lib/hw.c:169
++#: ../lib/af.c:164 ../lib/hw.c:182
+ msgid "AMPR AX.25"
+ msgstr "AMPR AX.25"
+
+-#: ../lib/af.c:159 ../lib/hw.c:175
++#: ../lib/af.c:167 ../lib/hw.c:188
+ msgid "AMPR NET/ROM"
+ msgstr "AMPR NET/ROM"
+
+-#: ../lib/af.c:162
++#: ../lib/af.c:170
+ msgid "Novell IPX"
+ msgstr "Novell IPX"
+
+-#: ../lib/af.c:165
++#: ../lib/af.c:173
+ msgid "Appletalk DDP"
+ msgstr "Appletalk DDP"
+
+-#: ../lib/af.c:168 ../lib/hw.c:207
++#: ../lib/af.c:176 ../lib/hw.c:223
+ msgid "Econet"
+ msgstr "Econet"
+
+-#: ../lib/af.c:171 ../lib/hw.c:172
++#: ../lib/af.c:179
++msgid "CCITT X.25"
++msgstr ""
++
++#: ../lib/af.c:182 ../lib/hw.c:185
+ msgid "AMPR ROSE"
+ msgstr "AMPR ROSE"
+
+-#: ../lib/af.c:174 ../lib/hw.c:160
++#: ../lib/af.c:185 ../lib/hw.c:173
+ msgid "Ash"
+ msgstr "Ash"
+
+-#: ../lib/af.c:232
++#: ../lib/af.c:243
++#, c-format
+ msgid "Please don't supply more than one address family.\n"
+ msgstr "Nezadvejte vce ne jednu tdu adres.\n"
+
+-#: ../lib/af.c:293
++#: ../lib/af.c:304
++#, c-format
+ msgid "Too much address family arguments.\n"
+ msgstr "Bylo zadno pli mnoho td adres.\n"
+
+-#: ../lib/af.c:304
++#: ../lib/af.c:315
+ #, c-format
+ msgid "Unknown address family `%s'.\n"
+ msgstr "Tda adres `%s' nen znma.\n"
+
+-#: ../lib/arcnet.c:53 ../lib/ax25.c:75 ../lib/ddp.c:50 ../lib/econet.c:52
+-#: ../lib/fddi.c:67 ../lib/hippi.c:68 ../lib/inet.c:244 ../lib/inet.c:259
+-#: ../lib/inet6.c:129 ../lib/ipx.c:81 ../lib/netrom.c:78 ../lib/rose.c:71
+-#: ../lib/rose.c:126 ../lib/unix.c:56 ../lib/unix.c:76
+-msgid "[NONE SET]"
+-msgstr "[NENASTAVENO]"
+-
+-#: ../lib/arcnet.c:81 ../lib/arcnet.c:96
++#: ../lib/arcnet.c:70 ../lib/arcnet.c:85
+ #, c-format
+ msgid "in_arcnet(%s): invalid arcnet address!\n"
+ msgstr "in_arcnet(%s): chybn arcnet adresa!\n"
+
+-#: ../lib/arcnet.c:108
++#: ../lib/arcnet.c:97
+ #, c-format
+ msgid "in_arcnet(%s): trailing : ignored!\n"
+ msgstr "in_arcnet(%s): nadbyten : ignorovno!\n"
+
+-#: ../lib/arcnet.c:120
++#: ../lib/arcnet.c:109
+ #, c-format
+ msgid "in_arcnet(%s): trailing junk!\n"
+ msgstr "in_arcnet(%s): nadbyten znaky!\n"
+
+ #: ../lib/ash.c:81
++#, c-format
+ msgid "Malformed Ash address"
+ msgstr "Chybn Ash adresa"
+
++#: ../lib/ax25.c:75 ../lib/ddp.c:50 ../lib/econet.c:52 ../lib/inet.c:244
++#: ../lib/inet.c:259 ../lib/inet6.c:129 ../lib/ipx.c:81 ../lib/netrom.c:78
++#: ../lib/rose.c:71 ../lib/unix.c:56 ../lib/unix.c:76
++msgid "[NONE SET]"
++msgstr "[NENASTAVENO]"
++
+ #: ../lib/ax25.c:97 ../lib/netrom.c:100
+ msgid "Invalid callsign"
+ msgstr "Nesprvn volac znak"
+@@ -1913,22 +2210,21 @@
+ msgstr "Volac znak je pli dlouh."
+
+ #: ../lib/ax25_gr.c:47
++#, c-format
+ msgid "AX.25 not configured in this system.\n"
+ msgstr "AX.25 nen na tomto systmu nakonfigurovno.\n"
+
+ #: ../lib/ax25_gr.c:50
++#, c-format
+ msgid "Kernel AX.25 routing table\n"
+ msgstr "Smrovac tabulka v jdru pro AX.25\n"
+
+ #. xxx
+ #: ../lib/ax25_gr.c:51 ../lib/rose_gr.c:55
++#, c-format
+ msgid "Destination Iface Use\n"
+ msgstr "Adrest Rozhran Uit\n"
+
+-#: ../lib/ddp_gr.c:21
+-msgid "Routing table for `ddp' not yet supported.\n"
+-msgstr "Smrovac tabulka pro `ddp' nen zatm podporovna.\n"
+-
+ #: ../lib/ether.c:74 ../lib/ether.c:91
+ #, c-format
+ msgid "in_ether(%s): invalid ether address!\n"
+@@ -1944,153 +2240,171 @@
+ msgid "in_ether(%s): trailing junk!\n"
+ msgstr "in_ether(%s): nadbyten znaky!\n"
+
+-#: ../lib/fddi.c:95 ../lib/fddi.c:110
++#: ../lib/fddi.c:84 ../lib/fddi.c:99
+ #, c-format
+ msgid "in_fddi(%s): invalid fddi address!\n"
+ msgstr "in_fddi(%s): chybn fddi adresa!\n"
+
+-#: ../lib/fddi.c:122
++#: ../lib/fddi.c:111
+ #, c-format
+ msgid "in_fddi(%s): trailing : ignored!\n"
+ msgstr "in_fddi(%s): nadbyten : ignorovno!\n"
+
+-#: ../lib/fddi.c:134
++#: ../lib/fddi.c:123
+ #, c-format
+ msgid "in_fddi(%s): trailing junk!\n"
+ msgstr "in_fddi(%s): nadbyten znaky!\n"
+
+-#: ../lib/getroute.c:97 ../lib/setroute.c:76
++#: ../lib/getroute.c:101 ../lib/setroute.c:80
+ #, c-format
+ msgid "Address family `%s' not supported.\n"
+ msgstr "Tda adres `%s' nen podporovna.\n"
+
+-#: ../lib/getroute.c:103 ../lib/setroute.c:80
++#: ../lib/getroute.c:107 ../lib/setroute.c:84
+ #, c-format
+ msgid "No routing for address family `%s'.\n"
+ msgstr "Pro tdu adres `%s' nen dn smrovn.\n"
+
+-#: ../lib/hippi.c:96 ../lib/hippi.c:111
++#: ../lib/hippi.c:84 ../lib/hippi.c:99
+ #, c-format
+ msgid "in_hippi(%s): invalid hippi address!\n"
+ msgstr "in_hippi(%s): chybn hippi adresa!\n"
+
+-#: ../lib/hippi.c:123
++#: ../lib/hippi.c:111
+ #, c-format
+ msgid "in_hippi(%s): trailing : ignored!\n"
+ msgstr "in_hippi(%s): nadbyten : ignorovno!\n"
+
+-#: ../lib/hippi.c:134
++#: ../lib/hippi.c:122
+ #, c-format
+ msgid "in_hippi(%s): trailing junk!\n"
+ msgstr "in_hippi(%s): nadbyten znaky!\n"
+
+-#: ../lib/hw.c:147
++#: ../lib/hw.c:160
+ msgid "Local Loopback"
+ msgstr "Mstn smyka"
+
+-#: ../lib/hw.c:150
++#: ../lib/hw.c:163
+ msgid "Serial Line IP"
+ msgstr "IP po sriov lince"
+
+-#: ../lib/hw.c:151
++#: ../lib/hw.c:164
+ msgid "VJ Serial Line IP"
+ msgstr "Vj IP po sriov lince"
+
+-#: ../lib/hw.c:152
++#: ../lib/hw.c:165
+ msgid "6-bit Serial Line IP"
+ msgstr "6bitov IP po sriov lince"
+
+-#: ../lib/hw.c:153
++#: ../lib/hw.c:166
+ msgid "VJ 6-bit Serial Line IP"
+ msgstr "6bitov VJ IP po sriov lince"
+
+-#: ../lib/hw.c:154
++#: ../lib/hw.c:167
+ msgid "Adaptive Serial Line IP"
+ msgstr "Adaptivn IP po sriov lince"
+
+-#: ../lib/hw.c:157
++#: ../lib/hw.c:170
+ msgid "Ethernet"
+ msgstr "Ethernet"
+
+-#: ../lib/hw.c:163
++#: ../lib/hw.c:176
+ msgid "Fiber Distributed Data Interface"
+ msgstr "Fiber Distributed Data Interface"
+
+-#: ../lib/hw.c:166
++#: ../lib/hw.c:179
+ msgid "HIPPI"
+ msgstr "HIPPI"
+
+-#: ../lib/hw.c:178
++#: ../lib/hw.c:191
++msgid "generic X.25"
++msgstr ""
++
++#: ../lib/hw.c:194
+ msgid "IPIP Tunnel"
+ msgstr "IPIP Tunnel"
+
+-#: ../lib/hw.c:181
++#: ../lib/hw.c:197
+ msgid "Point-to-Point Protocol"
+ msgstr "Point-to-Point Protokol"
+
+-#: ../lib/hw.c:184
++#: ../lib/hw.c:200
+ msgid "(Cisco)-HDLC"
+ msgstr "(Cisco)-HDLC"
+
+-#: ../lib/hw.c:185
++#: ../lib/hw.c:201
+ msgid "LAPB"
+ msgstr "LAPB"
+
+-#: ../lib/hw.c:188
++#: ../lib/hw.c:204
+ msgid "ARCnet"
+ msgstr "ARCnet"
+
+-#: ../lib/hw.c:191
++#: ../lib/hw.c:207
+ msgid "Frame Relay DLCI"
+ msgstr "Frame Relay DLCI"
+
+-#: ../lib/hw.c:192
++#: ../lib/hw.c:208
+ msgid "Frame Relay Access Device"
+ msgstr "Pstupov zazen Frame Relay"
+
+-#: ../lib/hw.c:195
++#: ../lib/hw.c:211
+ msgid "IPv6-in-IPv4"
+ msgstr "IPv6-in-IPv4"
+
+-#: ../lib/hw.c:198
++#: ../lib/hw.c:214
+ msgid "IrLAP"
+ msgstr "IrLAP"
+
+-#: ../lib/hw.c:201
++#: ../lib/hw.c:217
+ msgid "16/4 Mbps Token Ring"
+ msgstr "Token Ring 16/4 Mb/s"
+
+-#: ../lib/hw.c:203
++#: ../lib/hw.c:219
+ #, fuzzy
+ msgid "16/4 Mbps Token Ring (New)"
+ msgstr "Token Ring 16/4 Mb/s"
+
++#: ../lib/hw.c:226
++msgid "Generic EUI-64"
++msgstr ""
++
+ #: ../lib/inet.c:153 ../lib/inet6.c:79
+ #, c-format
+ msgid "rresolve: unsupport address family %d !\n"
+ msgstr "rresolve: tda adres %d nen podporovna!\n"
+
+-#: ../lib/inet6_gr.c:79
++#: ../lib/inet6.c:131
++#, fuzzy
++msgid "[UNKNOWN]"
++msgstr "NEZNM"
++
++#: ../lib/inet6_gr.c:71
++#, c-format
+ msgid "INET6 (IPv6) not configured in this system.\n"
+ msgstr "INET6 (IPv6) nen na tomto systmu nakonfigurovno.\n"
+
+-#: ../lib/inet6_gr.c:82
++#: ../lib/inet6_gr.c:74
++#, c-format
+ msgid "Kernel IPv6 routing table\n"
+ msgstr "Smrovac tabulka v jdru pro IPv6\n"
+
+-#: ../lib/inet6_gr.c:84
++#: ../lib/inet6_gr.c:76
++#, c-format
+ msgid ""
+-"Destination Next Hop "
+-" Flags Metric Ref Use Iface\n"
++"Destination Next "
++"Hop Flags Metric Ref Use Iface\n"
+ msgstr ""
+-"Adrest Dal Smrova "
+-" Pzn Metrika Odkaz Uit Rozhran\n"
++"Adrest Dal "
++"Smrova Pzn Metrika Odkaz Uit Rozhran\n"
+
+-#: ../lib/inet6_gr.c:158
++#: ../lib/inet6_gr.c:150
++#, c-format
+ msgid "Kernel IPv6 Neighbour Cache\n"
+ msgstr "Cache soused v jdru pro IPv6\n"
+
+-#: ../lib/inet6_gr.c:161
++#: ../lib/inet6_gr.c:153
++#, c-format
+ msgid ""
+ "Neighbour HW Address Iface Flags "
+ "Ref State\n"
+@@ -2098,7 +2412,8 @@
+ "Soused HW Adresa Rozhran Pzn "
+ "Odkazy Stav\n"
+
+-#: ../lib/inet6_gr.c:165
++#: ../lib/inet6_gr.c:157
++#, c-format
+ msgid ""
+ "Neighbour HW Address Iface Flags "
+ "Ref State Stale(sec) Delete(sec)\n"
+@@ -2107,30 +2422,37 @@
+ "Pznaky Odkazy Stav Prol(sec) Smazat(sec)\n"
+
+ #: ../lib/inet6_sr.c:46
++#, c-format
+ msgid "Usage: inet6_route [-vF] del Target\n"
+ msgstr "Pouit: inet6_route [-vF] del Cl\n"
+
+ #: ../lib/inet6_sr.c:47
++#, c-format
+ msgid " inet6_route [-vF] add Target [gw Gw] [metric M] [[dev] If]\n"
+ msgstr " inet6_route [-vF] add Cl [gw Gw] [metrika M] [[dev] If]\n"
+
+ #: ../lib/inet6_sr.c:48
++#, c-format
+ msgid " inet6_route [-FC] flush NOT supported\n"
+ msgstr " inet6_route [-FC] flush NEN podporovno\n"
+
+-#: ../lib/inet6_sr.c:182
++#: ../lib/inet6_sr.c:188
++#, c-format
+ msgid "Flushing `inet6' routing table not supported\n"
+ msgstr "Smrovac tabulku `inet6' nelze vyprazdovat\n"
+
+ #: ../lib/inet_gr.c:50 ../lib/inet_gr.c:220
++#, c-format
+ msgid "INET (IPv4) not configured in this system.\n"
+ msgstr "INET (IPv4) nen na tomto systmu nakonfigurovno.\n"
+
+ #: ../lib/inet_gr.c:53
++#, c-format
+ msgid "Kernel IP routing table\n"
+ msgstr "Smrovac tabulka v jdru pro IP\n"
+
+ #: ../lib/inet_gr.c:56
++#, c-format
+ msgid ""
+ "Destination Gateway Genmask Flags Metric Ref Use "
+ "Iface\n"
+@@ -2139,6 +2461,7 @@
+ "Rozhran\n"
+
+ #: ../lib/inet_gr.c:59
++#, c-format
+ msgid ""
+ "Destination Gateway Genmask Flags MSS Window irtt "
+ "Iface\n"
+@@ -2147,6 +2470,7 @@
+ "Rozhran\n"
+
+ #: ../lib/inet_gr.c:62
++#, c-format
+ msgid ""
+ "Destination Gateway Genmask Flags Metric Ref Use "
+ "Iface MSS Window irtt\n"
+@@ -2155,10 +2479,12 @@
+ "Rozhran MSS Okno irtt\n"
+
+ #: ../lib/inet_gr.c:237
++#, c-format
+ msgid "Kernel IP routing cache\n"
+ msgstr "Smrovac cache v jdru pro IP\n"
+
+ #: ../lib/inet_gr.c:258
++#, c-format
+ msgid ""
+ "Source Destination Gateway Flags Metric Ref Use "
+ "Iface\n"
+@@ -2167,6 +2493,7 @@
+ "Rozhran\n"
+
+ #: ../lib/inet_gr.c:261
++#, c-format
+ msgid ""
+ "Source Destination Gateway Flags MSS Window irtt "
+ "Iface\n"
+@@ -2175,6 +2502,7 @@
+ "Rozhran\n"
+
+ #: ../lib/inet_gr.c:266
++#, c-format
+ msgid ""
+ "Source Destination Gateway Flags Metric Ref Use "
+ "Iface MSS Window irtt HH Arp\n"
+@@ -2183,6 +2511,7 @@
+ "Rozhran MSS Okno irtt HH Arp\n"
+
+ #: ../lib/inet_gr.c:290
++#, c-format
+ msgid ""
+ "Source Destination Gateway Flags Metric Ref Use "
+ "Iface MSS Window irtt TOS HHRef HHUptod SpecDst\n"
+@@ -2190,7 +2519,8 @@
+ "Odeslatel Adrest Maska Pzn Metrik Odkazy Ut "
+ "Rozhran MSS Okno irtt TOS HHOdk HHAktul ZvltCl\n"
+
+-#: ../lib/inet_sr.c:50
++#: ../lib/inet_sr.c:51
++#, c-format
+ msgid ""
+ "Usage: inet_route [-vF] del {-host|-net} Target[/prefix] [gw Gw] [metric M] "
+ "[[dev] If]\n"
+@@ -2198,29 +2528,34 @@
+ "Pouit: inet_route [-vF] del {-host|-net} Cl[/prefix] [gw Gw] [metrika M] "
+ "[[dev] If]\n"
+
+-#: ../lib/inet_sr.c:51
++#: ../lib/inet_sr.c:52
++#, c-format
+ msgid ""
+ " inet_route [-vF] add {-host|-net} Target[/prefix] [gw Gw] [metric M]\n"
+ msgstr ""
+ " inet_route [-vF] add {-host|-net} Cl[/prefix] [gw Gw] [metrika M]\n"
+
+-#: ../lib/inet_sr.c:52
++#: ../lib/inet_sr.c:53
++#, c-format
+ msgid ""
+ " [netmask N] [mss Mss] [window W] [irtt I]\n"
+ msgstr ""
+ " [netmask N] [mss Mss] [window W] [irtt I]\n"
+
+-#: ../lib/inet_sr.c:53
++#: ../lib/inet_sr.c:54
++#, c-format
+ msgid " [mod] [dyn] [reinstate] [[dev] If]\n"
+ msgstr " [mod] [dyn] [reinstate] [[dev] If]\n"
+
+-#: ../lib/inet_sr.c:54
++#: ../lib/inet_sr.c:55
++#, c-format
+ msgid ""
+ " inet_route [-vF] add {-host|-net} Target[/prefix] [metric M] reject\n"
+ msgstr ""
+ " inet_route [-vF] add {-host|-net} Cl/[prefix] [metrika M] reject\n"
+
+-#: ../lib/inet_sr.c:55
++#: ../lib/inet_sr.c:56
++#, c-format
+ msgid " inet_route [-FC] flush NOT supported\n"
+ msgstr " inet_route [-FC] flush NEN podporovno\n"
+
+@@ -2230,15 +2565,17 @@
+ msgstr "route: %s: s nelze pout jako brnu!\n"
+
+ #: ../lib/inet_sr.c:174
+-#, fuzzy
++#, fuzzy, c-format
+ msgid "route: Invalid MSS/MTU.\n"
+ msgstr "route: Nesprvn NSS.\n"
+
+ #: ../lib/inet_sr.c:187
++#, c-format
+ msgid "route: Invalid window.\n"
+ msgstr "route: Nesprvn okno.\n"
+
+ #: ../lib/inet_sr.c:203
++#, c-format
+ msgid "route: Invalid initial rtt.\n"
+ msgstr "route: Nesprvn zahajovac rtt.\n"
+
+@@ -2253,75 +2590,92 @@
+ msgstr "route: sov maska %s je nesprvn\n"
+
+ #: ../lib/inet_sr.c:270
++#, c-format
+ msgid "route: netmask doesn't match route address\n"
+ msgstr "route: sov maska nevyhovuje adrese cesty\n"
+
+ #: ../lib/inet_sr.c:306
++#, c-format
+ msgid "Flushing `inet' routing table not supported\n"
+ msgstr "Smrovac cache `inet' nelze vyprazdovat\n"
+
+ #: ../lib/inet_sr.c:310
++#, c-format
+ msgid "Modifying `inet' routing cache not supported\n"
+ msgstr "Smrovac cache `inet' nelze mnit\n"
+
+ #: ../lib/ipx_gr.c:52
++#, c-format
+ msgid "IPX not configured in this system.\n"
+ msgstr "IPX nen na tomto systmu nakonfigurovno.\n"
+
+ #: ../lib/ipx_gr.c:56
++#, c-format
+ msgid "Kernel IPX routing table\n"
+ msgstr "Smrovac tabulka v jdru pro IPX\n"
+
+ #. xxx
+ #: ../lib/ipx_gr.c:57
++#, c-format
+ msgid "Destination Router Net Router Node\n"
+ msgstr "Cl Smrova S Smrova Uzel\n"
+
+ #: ../lib/ipx_sr.c:33
++#, c-format
+ msgid "IPX: this needs to be written\n"
+ msgstr "IPX: toto je teba uloit\n"
+
+-#: ../lib/masq_info.c:197
++#: ../lib/masq_info.c:198
++#, c-format
+ msgid "IP masquerading entries\n"
+ msgstr "IP maskovac poloky\n"
+
+-#: ../lib/masq_info.c:200
++#: ../lib/masq_info.c:201
++#, c-format
+ msgid "prot expire source destination ports\n"
+ msgstr "prot ivot zdroj cl porty\n"
+
+-#: ../lib/masq_info.c:203
++#: ../lib/masq_info.c:204
++#, c-format
+ msgid ""
+-"prot expire initseq delta prevd source destination "
+-" ports\n"
++"prot expire initseq delta prevd source "
++"destination ports\n"
+ msgstr ""
+-"prot ivot zahajsek delta pedchd zdroj cl "
+-" porty\n"
++"prot ivot zahajsek delta pedchd zdroj "
++"cl porty\n"
+
+ #: ../lib/netrom_gr.c:48
++#, c-format
+ msgid "NET/ROM not configured in this system.\n"
+ msgstr "NET/ROM nen na tomto systmu nakonfigurovno.\n"
+
+ #: ../lib/netrom_gr.c:51
++#, c-format
+ msgid "Kernel NET/ROM routing table\n"
+ msgstr "Smrovac tabulka v jdru pro NET/ROM\n"
+
+ #: ../lib/netrom_gr.c:52
++#, c-format
+ msgid "Destination Mnemonic Quality Neighbour Iface\n"
+ msgstr "Cl Mnemonika Kvalita Soused Rozhran\n"
+
+ #: ../lib/netrom_sr.c:34
++#, c-format
+ msgid "netrom usage\n"
+ msgstr "pouit netrom\n"
+
+ #: ../lib/netrom_sr.c:44
++#, c-format
+ msgid "NET/ROM: this needs to be written\n"
+ msgstr "NET/ROM: toto je poteba uloit\n"
+
+ #: ../lib/ppp.c:44
++#, c-format
+ msgid "You cannot start PPP with this program.\n"
+ msgstr "Tmto programem nelze PPP spustit.\n"
+
+ #: ../lib/ppp_ac.c:38
++#, c-format
+ msgid "Sorry, use pppd!\n"
+ msgstr "Lituji, pouijte pppd!\n"
+
+@@ -2330,49 +2684,319 @@
+ msgstr "Adresa uzlu mus mt 10 slic"
+
+ #: ../lib/rose_gr.c:51
++#, c-format
+ msgid "ROSE not configured in this system.\n"
+ msgstr "ROSE nen na tomto systmu nakonfigurovno.\n"
+
+ #: ../lib/rose_gr.c:54
++#, c-format
+ msgid "Kernel ROSE routing table\n"
+ msgstr "Smrovac tabulka v jdru pro ROSE\n"
+
+-#: ../lib/tr.c:70 ../lib/tr.c:85
++#: ../lib/tr.c:86 ../lib/tr.c:101
+ #, c-format
+ msgid "in_tr(%s): invalid token ring address!\n"
+ msgstr "in_tr(%s): nesprvn token ring adresa!\n"
+
+-#: ../lib/tr.c:97
++#: ../lib/tr.c:113
+ #, c-format
+ msgid "in_tr(%s): trailing : ignored!\n"
+ msgstr "in_tr(%s): nadbyten: ignorovno!\n"
+
+-#: ../lib/tr.c:109
++#: ../lib/tr.c:125
+ #, c-format
+ msgid "in_tr(%s): trailing junk!\n"
+ msgstr "in_tr(%s): nadbyten znaky!\n"
+
+-#: ../lib/interface.c:124
++#: ../lib/interface.c:176
+ #, c-format
+ msgid "warning: no inet socket available: %s\n"
+ msgstr "varovn: nen dostupn dn inet soket: %s\n"
+
+-#: ../lib/interface.c:270
++#: ../lib/interface.c:325
+ #, c-format
+ msgid "Warning: cannot open %s (%s). Limited output.\n"
+ msgstr ""
+
+ #. Give better error message for this case.
+-#: ../lib/interface.c:504
++#: ../lib/interface.c:571
+ msgid "Device not found"
+ msgstr "Zazen nebylo nalezeno"
+
+-#: ../lib/interface.c:508
++#: ../lib/interface.c:575
+ #, c-format
+ msgid "%s: error fetching interface information: %s\n"
+ msgstr "%s: chyba pi zskvn informac o rozhran %s\n"
+
+-#: ../lib/sockets.c:59
++#: ../lib/interface.c:608
++msgid " - no statistics available -"
++msgstr " - statistick data nejsou dostupn -"
++
++#: ../lib/interface.c:612
++#, c-format
++msgid "[NO FLAGS]"
++msgstr "[DN PZNAKY]"
++
++#: ../lib/interface.c:688
++#, c-format
++msgid "%-9.9s Link encap:%s "
++msgstr "%-9.9s Zapouzden:%s "
++
++#: ../lib/interface.c:693
++#, c-format
++msgid "HWaddr %s "
++msgstr "HWadr %s "
++
++#: ../lib/interface.c:696
++#, c-format
++msgid "Media:%s"
++msgstr "Mdium:%s"
++
++#: ../lib/interface.c:698
++#, c-format
++msgid "(auto)"
++msgstr "(auto)"
++
++#: ../lib/interface.c:705
++#, c-format
++msgid " %s addr:%s "
++msgstr " %s adr:%s "
++
++#: ../lib/interface.c:708
++#, c-format
++msgid " P-t-P:%s "
++msgstr " P-t-P:%s "
++
++# V ostatnch katalozch se pekld Broadcast -> vesmrov vysln.
++# Tudi bcast -> Vesmr :)
++#: ../lib/interface.c:711
++#, c-format
++msgid " Bcast:%s "
++msgstr " Vesmr:%s "
++
++#: ../lib/interface.c:713
++#, c-format
++msgid " Mask:%s\n"
++msgstr "Maska:%s\n"
++
++#: ../lib/interface.c:730
++#, c-format
++msgid " inet6 addr: %s/%d"
++msgstr " inet6-adr: %s/%d"
++
++#: ../lib/interface.c:732
++#, c-format
++msgid " Scope:"
++msgstr " Rozsah:"
++
++#: ../lib/interface.c:735
++#, c-format
++msgid "Global"
++msgstr "Globl"
++
++#: ../lib/interface.c:738
++#, c-format
++msgid "Link"
++msgstr "Linka"
++
++#: ../lib/interface.c:741
++#, c-format
++msgid "Site"
++msgstr "Stanovit"
++
++#: ../lib/interface.c:744
++#, c-format
++msgid "Compat"
++msgstr "Kompatibilita"
++
++#: ../lib/interface.c:747
++#, c-format
++msgid "Host"
++msgstr "Pota"
++
++#: ../lib/interface.c:750
++#, c-format
++msgid "Unknown"
++msgstr "Neznm."
++
++#: ../lib/interface.c:765
++#, c-format
++msgid " IPX/Ethernet II addr:%s\n"
++msgstr " IPX/Ethernet II adr: %s\n"
++
++#: ../lib/interface.c:768
++#, c-format
++msgid " IPX/Ethernet SNAP addr:%s\n"
++msgstr " IPX/Ethernet SNAP adr:%s\n"
++
++#: ../lib/interface.c:771
++#, c-format
++msgid " IPX/Ethernet 802.2 addr:%s\n"
++msgstr " IPX/Ethernet 802.2 adr:%s\n"
++
++#: ../lib/interface.c:774
++#, c-format
++msgid " IPX/Ethernet 802.3 addr:%s\n"
++msgstr " IPX/Ethernet 802.3 adr:%s\n"
++
++#: ../lib/interface.c:784
++#, c-format
++msgid " EtherTalk Phase 2 addr:%s\n"
++msgstr " EtherTalk Phase 2 adr:%s\n"
++
++#: ../lib/interface.c:793
++#, c-format
++msgid " econet addr:%s\n"
++msgstr " econet adr:%s\n"
++
++# Hic sunt leones ...
++#: ../lib/interface.c:800
++#, c-format
++msgid "[NO FLAGS] "
++msgstr "[DN PZNAKY]"
++
++#: ../lib/interface.c:802
++#, c-format
++msgid "UP "
++msgstr "AKTIVOVNO "
++
++#: ../lib/interface.c:804
++#, c-format
++msgid "BROADCAST "
++msgstr "VESMROV_VYSLN "
++
++#: ../lib/interface.c:806
++#, c-format
++msgid "DEBUG "
++msgstr "DEBUG "
++
++#: ../lib/interface.c:808
++#, c-format
++msgid "LOOPBACK "
++msgstr "SMYKA "
++
++#: ../lib/interface.c:810
++#, c-format
++msgid "POINTOPOINT "
++msgstr "POINTOPOINT "
++
++# ??
++#: ../lib/interface.c:812
++#, c-format
++msgid "NOTRAILERS "
++msgstr "NOTRAILERS "
++
++#: ../lib/interface.c:814
++#, c-format
++msgid "RUNNING "
++msgstr "B̮ "
++
++#: ../lib/interface.c:816
++#, c-format
++msgid "NOARP "
++msgstr "NEARP "
++
++#: ../lib/interface.c:818
++#, c-format
++msgid "PROMISC "
++msgstr "PROMISK "
++
++#: ../lib/interface.c:820
++#, c-format
++msgid "ALLMULTI "
++msgstr "ALLMULTI "
++
++#: ../lib/interface.c:822
++#, c-format
++msgid "SLAVE "
++msgstr "SLAVE "
++
++#: ../lib/interface.c:824
++#, c-format
++msgid "MASTER "
++msgstr "MASTER "
++
++#: ../lib/interface.c:826
++#, c-format
++msgid "MULTICAST "
++msgstr "MULTICAST "
++
++#: ../lib/interface.c:829
++#, c-format
++msgid "DYNAMIC "
++msgstr "DYNAMIC "
++
++#. DONT FORGET TO ADD THE FLAGS IN ife_print_short
++#: ../lib/interface.c:832
++#, c-format
++msgid " MTU:%d Metric:%d"
++msgstr " MTU:%d Metrika:%d"
++
++#: ../lib/interface.c:836
++#, c-format
++msgid " Outfill:%d Keepalive:%d"
++msgstr " Outfill:%d Keepalive:%d"
++
++#: ../lib/interface.c:850
++#, fuzzy, c-format
++msgid "RX packets:%llu errors:%lu dropped:%lu overruns:%lu frame:%lu\n"
++msgstr "pijmutch paket:%lu chyb:%lu zahozeno:%lu peteen:%lu rmc:%lu\n"
++
++#: ../lib/interface.c:855
++#, c-format
++msgid " compressed:%lu\n"
++msgstr " komprimovno:%lu\n"
++
++# carrier?
++#: ../lib/interface.c:895
++#, fuzzy, c-format
++msgid "TX packets:%llu errors:%lu dropped:%lu overruns:%lu carrier:%lu\n"
++msgstr "odeslanch paket:%lu chyb:%lu zahozeno:%lu peteen:%lu penos:%lu\n"
++
++#: ../lib/interface.c:899
++#, c-format
++msgid " collisions:%lu "
++msgstr " koliz:%lu "
++
++#: ../lib/interface.c:901
++#, c-format
++msgid "compressed:%lu "
++msgstr "komprimovno:%lu "
++
++#: ../lib/interface.c:903
++#, c-format
++msgid "txqueuelen:%d "
++msgstr "dlka odchoz fronty:%d "
++
++#: ../lib/interface.c:905
++#, c-format
++msgid "RX bytes:%llu (%lu.%lu %s) TX bytes:%llu (%lu.%lu %s)\n"
++msgstr ""
++
++#: ../lib/interface.c:916
++#, c-format
++msgid "Interrupt:%d "
++msgstr "Peruen:%d "
++
++#. Only print devices using it for
++#. I/O maps
++#: ../lib/interface.c:919
++#, c-format
++msgid "Base address:0x%x "
++msgstr "Vstupn/Vstupn port:0x%x "
++
++#: ../lib/interface.c:921
++#, c-format
++msgid "Memory:%lx-%lx "
++msgstr "Pam:%lx-%lx "
++
++#: ../lib/interface.c:924
++#, c-format
++msgid "DMA chan:%x "
++msgstr "Kanl DMA:%x "
++
++#: ../lib/sockets.c:63
++#, c-format
+ msgid "No usable address families found.\n"
+ msgstr "Nebyla nalezena dn pouiteln tda adres.\n"
+
+@@ -2396,29 +3020,32 @@
+ msgid "ip: argument is wrong: %s\n"
+ msgstr "ip: argument %s je nesprvn\n"
+
+-#: ../ipmaddr.c:56
++#: ../ipmaddr.c:61
++#, c-format
+ msgid "Usage: ipmaddr [ add | del ] MULTIADDR dev STRING\n"
+ msgstr " Usage: ipmaddr [ add | del ] MULTIADR dev ETZEC\n"
+
+-#: ../ipmaddr.c:57
++#: ../ipmaddr.c:62
++#, c-format
+ msgid " ipmaddr show [ dev STRING ] [ ipv4 | ipv6 | link | all ]\n"
+ msgstr " ipmaddr show [ dev ETZEC ] [ ipv4 | ipv6 | link | all ]\n"
+
+-#: ../ipmaddr.c:58
++#: ../ipmaddr.c:63
++#, c-format
+ msgid " ipmaddr -V | -version\n"
+ msgstr " ipmaddr -V | -version\n"
+
+-#: ../ipmaddr.c:258
++#: ../ipmaddr.c:263
+ #, c-format
+ msgid "family %d "
+ msgstr "tda %d "
+
+-#: ../ipmaddr.c:267
++#: ../ipmaddr.c:272
+ #, c-format
+ msgid " users %d"
+ msgstr " uivatel %d"
+
+-#: ../ipmaddr.c:353
++#: ../ipmaddr.c:358
+ msgid "Cannot create socket"
+ msgstr "Soket nelze vytvoit"
+
+@@ -2433,6 +3060,7 @@
+ msgstr "slattach: tty_lock: (%s): %s\n"
+
+ #: ../slattach.c:192
++#, c-format
+ msgid "slattach: cannot write PID file\n"
+ msgstr "slattach: do PID souboru nelze zapisovat\n"
+
+@@ -2451,44 +3079,77 @@
+ msgid "slattach: tty_hangup(RAISE): %s\n"
+ msgstr "slattach: tty_hangup(RAISE): %s\n"
+
+-#: ../slattach.c:486
++#: ../slattach.c:468
++#, fuzzy, c-format
++msgid "slattach: tty name too long\n"
++msgstr "jmno %s je pli dlouh\n"
++
++#: ../slattach.c:498
++#, c-format
+ msgid "slattach: tty_open: cannot get current state!\n"
+ msgstr "slattach: tty_open: aktuln stav nelze zjistit!\n"
+
+-#: ../slattach.c:493
++#: ../slattach.c:505
++#, c-format
+ msgid "slattach: tty_open: cannot get current line disc!\n"
+ msgstr "slattach: tty_open: aktuln linkovou disciplnu nelze zjistit!\n"
+
+-#: ../slattach.c:501
++#: ../slattach.c:513
++#, c-format
+ msgid "slattach: tty_open: cannot set RAW mode!\n"
+ msgstr "slattach: tty_open: reim RAW nelze nastavit!\n"
+
+-#: ../slattach.c:508
++#: ../slattach.c:520
+ #, c-format
+ msgid "slattach: tty_open: cannot set %s bps!\n"
+ msgstr "slattach: tty_open: %s bps nelze nastavit!\n"
+
+-#: ../slattach.c:518
++#: ../slattach.c:530
++#, c-format
+ msgid "slattach: tty_open: cannot set 8N1 mode!\n"
+ msgstr "slattach: tty_open: reim 8N1 nelze nastavit!\n"
+
+-#: ../slattach.c:686
++#: ../slattach.c:672
++#, c-format
++msgid "slattach: setvbuf(stdout,0,_IOLBF,0) : %s\n"
++msgstr ""
++
++#: ../slattach.c:704
+ #, c-format
+ msgid "%s started"
+ msgstr "protokol %s sputn"
+
+-#: ../slattach.c:687
++#: ../slattach.c:705
+ #, c-format
+ msgid " on %s"
+ msgstr " na %s"
+
+-#: ../slattach.c:688
++#: ../slattach.c:706
+ #, c-format
+ msgid " interface %s\n"
+ msgstr " rozhran %s\n"
+
+ #~ msgid ""
+-#~ " This comand can read or set the hostname or the NIS domainname. You can\n"
++#~ " arp [-v] [<HW>] [-i <if>] -s <hostname> <hwaddr> [netmask <nm>] pub "
++#~ "<-''-\n"
++#~ msgstr ""
++#~ " arp [-v] [<HW>] [-i <if>] -s <soubor> <hwadr> [smask <s>] <-''-\n"
++
++#~ msgid "%s: unknown interface: %s\n"
++#~ msgstr "%s: rozhran %s nen znmo\n"
++
++#~ msgid "address mask replies"
++#~ msgstr "odpovdi na dost o masku podst"
++
++#~ msgid "unknown title %s\n"
++#~ msgstr "titulek %s je neznm\n"
++
++#~ msgid "Routing table for `ddp' not yet supported.\n"
++#~ msgstr "Smrovac tabulka pro `ddp' nen zatm podporovna.\n"
++
++#~ msgid ""
++#~ " This comand can read or set the hostname or the NIS domainname. You "
++#~ "can\n"
+ #~ msgstr ""
+ #~ " Tento program zjiuje a nastavuje jmno potae i NIS domny. Me "
+ #~ "tak\n"
+@@ -2500,7 +3161,8 @@
+ #~ msgid ""
+ #~ " Unless you are using bind or NIS for host lookups you can change the\n"
+ #~ msgstr ""
+-#~ " Pokud nepouvte bind i NIS pro vyhledvn jmen pota, pak mete\n"
++#~ " Pokud nepouvte bind i NIS pro vyhledvn jmen pota, pak "
++#~ "mete\n"
+
+ #~ msgid ""
+ #~ " FQDN (Fully Qualified Domain Name) and the DNS domain name (which is\n"
+--- net-tools-1.60.orig/po/ja.po
++++ net-tools-1.60/po/ja.po
+@@ -0,0 +1,3133 @@
++# Net-tool Japanese locale data
++# Kenshi Muto <kmuto@debian.org>, 2007.
++# Yasuyuki Furukawa <yasu@on.cs.keio.ac.jp>, 1999.
++#
++msgid ""
++msgstr ""
++"Report-Msgid-Bugs-To: \n"
++"POT-Creation-Date: 2007-06-30 12:28+0900\n"
++"PO-Revision-Date: 2007-07-04 20:47+0900\n"
++"Last-Translator: Kenshi Muto <kmuto@debian.org>\n"
++"Language-Team: Japanese\n"
++"MIME-Version: 1.0\n"
++"Content-Type: text/plain; charset=UTF-8\n"
++"Content-Transfer-Encoding: 8-bit\n"
++
++#: ../arp.c:112 ../arp.c:279
++#, c-format
++msgid "arp: need host name\n"
++msgstr "arp: ホスト名が必要です\n"
++
++#: ../arp.c:215 ../arp.c:230
++#, c-format
++msgid "No ARP entry for %s\n"
++msgstr "%sのARPエントリがありません\n"
++
++#: ../arp.c:248
++#, c-format
++msgid "arp: cant get HW-Address for `%s': %s.\n"
++msgstr "arp: '%s'のハードウェアアドレスを取得できません: %s.\n"
++
++#: ../arp.c:252
++#, c-format
++msgid "arp: protocol type mismatch.\n"
++msgstr "arp: プロトコルタイプが適合しません.\n"
++
++#: ../arp.c:261
++#, c-format
++msgid "arp: device `%s' has HW address %s `%s'.\n"
++msgstr "arp: デバイス`%s'はハードウェアアドレス%s `%s'です.\n"
++
++#: ../arp.c:293
++#, c-format
++msgid "arp: need hardware address\n"
++msgstr "arp: ハードウェアアドレスが必要です\n"
++
++#: ../arp.c:301
++#, c-format
++msgid "arp: invalid hardware address\n"
++msgstr "arp: ハードウェアアドレスが不適当です\n"
++
++#: ../arp.c:398
++#, c-format
++msgid "arp: cannot open etherfile %s !\n"
++msgstr "arp: etherファイル%sが開けません!\n"
++
++#: ../arp.c:414
++#, c-format
++msgid "arp: format error on line %u of etherfile %s !\n"
++msgstr "arp: %u行(ファイル%s)にフォーマットエラーがあります!\n"
++
++#: ../arp.c:427
++#, c-format
++msgid "arp: cannot set entry on line %u of etherfile %s !\n"
++msgstr "arp: etherファイル%u行(%s)のエントリを設定できません!\n"
++
++#: ../arp.c:448
++#, c-format
++msgid ""
++"Address HWtype HWaddress Flags Mask "
++"Iface\n"
++msgstr "アドレス HWタイプ HWアドレス フラグ マスク インタフェース\n"
++
++#: ../arp.c:476
++msgid "<from_interface>"
++msgstr "<起点インタフェース>"
++
++#: ../arp.c:478
++msgid "(incomplete)"
++msgstr "(不完全)"
++
++# translatable?
++#: ../arp.c:495
++#, c-format
++msgid "%s (%s) at "
++msgstr "%s (%s) at "
++
++#: ../arp.c:501
++#, c-format
++msgid "<incomplete> "
++msgstr "<不完全> "
++
++#: ../arp.c:507
++#, c-format
++msgid "netmask %s "
++msgstr "ネットマスク %s "
++
++# translatable?
++#: ../arp.c:524
++#, c-format
++msgid "on %s\n"
++msgstr "on %s\n"
++
++#: ../arp.c:605
++#, c-format
++msgid "Entries: %d\tSkipped: %d\tFound: %d\n"
++msgstr "エントリ: %d\tスキップ: %d\t発見: %d\n"
++
++#: ../arp.c:609
++#, c-format
++msgid "%s (%s) -- no entry\n"
++msgstr "%s (%s) -- エントリなし\n"
++
++#: ../arp.c:611
++#, c-format
++msgid "arp: in %d entries no match found.\n"
++msgstr "arp: %dのエントリ中, 一致するものが見つかりません.\n"
++
++#: ../arp.c:626
++#, c-format
++msgid ""
++"Usage:\n"
++" arp [-vn] [<HW>] [-i <if>] [-a] [<hostname>] <-Display ARP "
++"cache\n"
++msgstr ""
++"使用法:\n"
++" arp [-vn] [<HW>] [-i <インタフェース>]\n"
++" [-a] [<ホスト名>] ‥‥ ARPキャッシュの表"
++"示\n"
++
++#: ../arp.c:627
++#, c-format
++msgid ""
++" arp [-v] [-i <if>] -d <host> [pub] <-Delete ARP "
++"entry\n"
++msgstr " arp [-v] [-i <インタフェース>] -d <ホスト名> [pub] ‥‥ARPエントリを削除\n"
++
++#: ../arp.c:628
++#, c-format
++msgid ""
++" arp [-vnD] [<HW>] [-i <if>] -f [<filename>] <-Add entry from "
++"file\n"
++msgstr ""
++" arp [-vnD] [<HW>] [-i <インタフェース>] \n"
++" -f <ファイル名> ‥‥ファイルからエントリを追加\n"
++
++#: ../arp.c:629
++#, c-format
++msgid ""
++" arp [-v] [<HW>] [-i <if>] -s <host> <hwaddr> [temp] <-Add "
++"entry\n"
++msgstr ""
++" arp [-v] [<HW>] [-i <インタフェース>]\n"
++" -s <ホスト名> <ハードウェアアドレス> [temp] ‥‥エントリを追加\n"
++
++# FIXME:What does '' mean?
++#: ../arp.c:630
++#, c-format
++msgid ""
++" arp [-v] [<HW>] [-i <if>] -Ds <host> <if> [netmask <nm>] pub "
++"<-''-\n"
++"\n"
++msgstr ""
++" arp [-v] [<HW>] [-i <インタフェース>] -Ds <ホスト名>\n"
++" <インタフェース> [netmask <ネットマスク>] pub ‥‥ 〃\n"
++
++#: ../arp.c:632
++#, c-format
++msgid ""
++" -a display (all) hosts in alternative (BSD) "
++"style\n"
++msgstr ""
++" -a 新しい(BSD)スタイルでエントリされた全ホストを表示"
++"する\n"
++
++#: ../arp.c:633
++#, c-format
++msgid " -s, --set set a new ARP entry\n"
++msgstr " -s, --set 新規ARPエントリを設定する\n"
++
++#: ../arp.c:634
++#, c-format
++msgid " -d, --delete delete a specified entry\n"
++msgstr " -d, --delete 指定エントリを削除する\n"
++
++#: ../arp.c:635 ../netstat.c:1503 ../route.c:86
++#, c-format
++msgid " -v, --verbose be verbose\n"
++msgstr " -v, --verbose 詳細表示を行なう\n"
++
++#: ../arp.c:636 ../netstat.c:1504 ../route.c:87
++#, c-format
++msgid " -n, --numeric don't resolve names\n"
++msgstr " -n, --numeric 名前のレゾルブをしない\n"
++
++#: ../arp.c:637
++#, c-format
++msgid ""
++" -i, --device specify network interface (e.g. eth0)\n"
++msgstr " -i, --device ネットワークインタフェースの指定(例 eth0)\n"
++
++#: ../arp.c:638
++#, c-format
++msgid " -D, --use-device read <hwaddr> from given device\n"
++msgstr ""
++" -D, --use-device 与えられたデバイスから\n"
++" <HWアドレス>を読み込む\n"
++
++#: ../arp.c:639
++#, c-format
++msgid " -A, -p, --protocol specify protocol family\n"
++msgstr " -A, -p, --protocol プロトコルファミリを指定する\n"
++
++#: ../arp.c:640
++#, c-format
++msgid ""
++" -f, --file read new entries from file or from /etc/"
++"ethers\n"
++"\n"
++msgstr " -f, --file /etc/ethersファイルから新規エントリを読み込む\n\n"
++
++#: ../arp.c:642 ../rarp.c:182
++#, c-format
++msgid " <HW>=Use '-H <hw>' to specify hardware address type. Default: %s\n"
++msgstr " <HW>=ハードウェアアドレスタイプを指定するには'-H <hw>'を使って下さい。標準: %s\n"
++
++#: ../arp.c:643 ../rarp.c:183
++#, c-format
++msgid " List of possible hardware types (which support ARP):\n"
++msgstr " (ARPをサポートした)指定可能なハードウェアタイプのリスト:\n"
++
++#: ../arp.c:677 ../arp.c:762
++#, c-format
++msgid "%s: hardware type not supported!\n"
++msgstr "%s: ハードウェアタイプがサポートされていません!\n"
++
++#: ../arp.c:681
++#, c-format
++msgid "%s: address family not supported!\n"
++msgstr "%s: アドレスファミリがサポートされていません!\n"
++
++#: ../arp.c:716
++#, c-format
++msgid "arp: -N not yet supported.\n"
++msgstr "arp: -Nはまだサポートしていません.\n"
++
++#: ../arp.c:726
++#, c-format
++msgid "arp: %s: unknown address family.\n"
++msgstr "arp: %s: 不明なアドレスファミリです.\n"
++
++#: ../arp.c:735
++#, c-format
++msgid "arp: %s: unknown hardware type.\n"
++msgstr "arp: %s: 不明なハードウェアタイプです.\n"
++
++#: ../arp.c:754
++#, c-format
++msgid "arp: %s: kernel only supports 'inet'.\n"
++msgstr "arp: %s: カーネルは'inet'以外はサポートしていません.\n"
++
++#: ../arp.c:767
++#, c-format
++msgid "arp: %s: hardware type without ARP support.\n"
++msgstr "arp: %s: ARPサポートのないハードウェアタイプです.\n"
++
++#: ../hostname.c:71
++#, c-format
++msgid "Setting nodename to `%s'\n"
++msgstr "ノード名を`%s'へ設定しました\n"
++
++#: ../hostname.c:76
++#, c-format
++msgid "%s: you must be root to change the node name\n"
++msgstr "%s: ノード名の変更はルートでなければなりません\n"
++
++#: ../hostname.c:79 ../hostname.c:99 ../hostname.c:117
++#, c-format
++msgid "%s: name too long\n"
++msgstr "%s: 名前が長すぎます\n"
++
++#: ../hostname.c:91
++#, c-format
++msgid "Setting hostname to `%s'\n"
++msgstr "ホスト名を`%s'へ設定しました\n"
++
++#: ../hostname.c:96
++#, c-format
++msgid "%s: you must be root to change the host name\n"
++msgstr "%s: ホスト名の変更はルートでなければなりません\n"
++
++#: ../hostname.c:109
++#, c-format
++msgid "Setting domainname to `%s'\n"
++msgstr "ドメインを`%s'へ設定しました\n"
++
++#: ../hostname.c:114
++#, c-format
++msgid "%s: you must be root to change the domain name\n"
++msgstr "%s: ドメイン名の変更はルートでなければなりません\n"
++
++#: ../hostname.c:131
++#, c-format
++msgid "Resolving `%s' ...\n"
++msgstr "`%s'をレゾルブ中 ...\n"
++
++#: ../hostname.c:137
++#, c-format
++msgid "Result: h_name=`%s'\n"
++msgstr "結果: h_name=`%s'\n"
++
++#: ../hostname.c:142
++#, c-format
++msgid "Result: h_aliases=`%s'\n"
++msgstr "結果: h_aliases=`%s'\n"
++
++#: ../hostname.c:147
++#, c-format
++msgid "Result: h_addr_list=`%s'\n"
++msgstr "結果: h_addr_list=`%s'\n"
++
++#: ../hostname.c:208
++#, c-format
++msgid "%s: can't open `%s'\n"
++msgstr "%s: `%s'を開けません\n"
++
++#: ../hostname.c:222
++#, c-format
++msgid "Usage: hostname [-v] {hostname|-F file} set hostname (from file)\n"
++msgstr "使用法: hostname [-v] {ホスト名|-F ファイル} (ファイルによる)ホスト名の設定\n"
++
++#: ../hostname.c:223
++#, c-format
++msgid ""
++" domainname [-v] {nisdomain|-F file} set NIS domainname (from file)\n"
++msgstr " domainname [-v] {NISドメイン|-F ファイル} (ファイルによる)NISドメイン名の設定\n"
++
++#: ../hostname.c:225
++#, c-format
++msgid ""
++" nodename [-v] {nodename|-F file} set DECnet node name (from "
++"file)\n"
++msgstr ""
++"nodename [-v] {ノード名|-F ファイル} (ファイルによる)DECnetノード名の設定\n"
++
++#: ../hostname.c:227
++#, c-format
++msgid " hostname [-v] [-d|-f|-s|-a|-i|-y|-n] display formatted name\n"
++msgstr " hostname [-v] [-d|-f|-s|-a|-i|-y] 形式を指定して表示\n"
++
++#: ../hostname.c:228
++#, c-format
++msgid ""
++" hostname [-v] display hostname\n"
++"\n"
++msgstr ""
++" hostname [-v] ホスト名の出力\n"
++"\n"
++
++#: ../hostname.c:229
++#, c-format
++msgid ""
++" hostname -V|--version|-h|--help print info and exit\n"
++"\n"
++msgstr ""
++" hostname -V|--version|-h|--help 諸情報を出力して終了\n"
++"\n"
++"\n"
++
++#: ../hostname.c:230
++#, c-format
++msgid ""
++" dnsdomainname=hostname -d, {yp,nis,}domainname=hostname -y\n"
++"\n"
++msgstr " dnsdomainname=ホスト名 -d, {yp,nis,}domainname=ホスト名 -y\n\n"
++
++#: ../hostname.c:231
++#, c-format
++msgid " -s, --short short host name\n"
++msgstr " -s, --short 短縮ホスト名\n"
++
++#: ../hostname.c:232
++#, c-format
++msgid " -a, --alias alias names\n"
++msgstr " -a, --alias エイリアス名\n"
++
++#: ../hostname.c:233
++#, c-format
++msgid " -i, --ip-address addresses for the hostname\n"
++msgstr " -i, --ip-address ホスト名に対するアドレス\n"
++
++#: ../hostname.c:234
++#, c-format
++msgid " -f, --fqdn, --long long host name (FQDN)\n"
++msgstr " -f, --fqdn, --long ロングホスト名(FQDN)\n"
++
++#: ../hostname.c:235
++#, c-format
++msgid " -d, --domain DNS domain name\n"
++msgstr " -d, --domain DNSドメイン名\n"
++
++#: ../hostname.c:236
++#, c-format
++msgid " -y, --yp, --nis NIS/YP domainname\n"
++msgstr " -y, --yp, --nis NIS/YPドメイン名\n"
++
++#: ../hostname.c:238
++#, c-format
++msgid " -n, --node DECnet node name\n"
++msgstr " -n, --node DECnetノード名\n"
++
++#: ../hostname.c:240
++#, c-format
++msgid ""
++" -F, --file read hostname or NIS domainname from given file\n"
++"\n"
++msgstr " -F, --file 指定のファイルからホスト名かNISドメイン名を読み込む\n\n"
++
++#: ../hostname.c:242
++#, c-format
++msgid ""
++" This command can read or set the hostname or the NIS domainname. You can\n"
++" also read the DNS domain or the FQDN (fully qualified domain name).\n"
++" Unless you are using bind or NIS for host lookups you can change the\n"
++" FQDN (Fully Qualified Domain Name) and the DNS domain name (which is\n"
++" part of the FQDN) in the /etc/hosts file.\n"
++msgstr ""
++" このコマンドでは、ホスト名またはNISドメイン名を読み込みまたは設定できます。\n"
++" DNSドメインまたはFDN(完全修飾ドメイン名)を読み込むこともできます。\n"
++" ホスト名の参照にBindおよび, NISも使わない場合, /etc/hostsファイルにある\n"
++" FQDNや, (FQDNの一部分の)ドメイン名を変更できます.\n"
++
++#: ../hostname.c:338
++#, c-format
++msgid "%s: You can't change the DNS domain name with this command\n"
++msgstr "%s: このコマンドではDNSドメイン名は変更できません.\n"
++
++#: ../hostname.c:339
++#, c-format
++msgid ""
++"\n"
++"Unless you are using bind or NIS for host lookups you can change the DNS\n"
++msgstr ""
++"\n"
++"ホスト名の参照にBindおよび, NISも使わない場合、/etc/hostsファイル\n"
++
++#: ../hostname.c:340
++#, c-format
++msgid "domain name (which is part of the FQDN) in the /etc/hosts file.\n"
++msgstr "にあるFQDNや, (FQDNの一部分の)ドメイン名を変更できます.\n"
++
++#: ../hostname.c:357
++#, c-format
++msgid "gethostname()=`%s'\n"
++msgstr "gethostname()=`%s'\n"
++
++#: ../hostname.c:374
++#, c-format
++msgid "getdomainname()=`%s'\n"
++msgstr "getdomainname()=`%s'\n"
++
++#: ../hostname.c:389
++#, c-format
++msgid "getnodename()=`%s'\n"
++msgstr "getnodename()=`%s'\n"
++
++#: ../ifconfig.c:107
++#, c-format
++msgid ""
++"Iface MTU Met RX-OK RX-ERR RX-DRP RX-OVR TX-OK TX-ERR TX-DRP TX-OVR "
++"Flg\n"
++msgstr "Iface MTU Met RX-OK RX-ERR RX-DRP RX-OVR TX-OK TX-ERR TX-DRP TX-OVR フラグ\n"
++
++#: ../ifconfig.c:129 ../ifconfig.c:161
++#, c-format
++msgid "%s: ERROR while getting interface flags: %s\n"
++msgstr "%s: インタフェースフラグの取得中にエラーが発生しました:%s\n"
++
++#: ../ifconfig.c:153 ../ifconfig.c:185 ../ifconfig.c:771 ../ifconfig.c:862
++#: ../ifconfig.c:973
++#, c-format
++msgid "No support for INET on this system.\n"
++msgstr "INETはこのシステムではサポートされていません.\n"
++
++#: ../ifconfig.c:193
++#, c-format
++msgid "%s: ERROR while testing interface flags: %s\n"
++msgstr "%s: インタフェースフラグのテスト中にエラーが発生しました: %s\n"
++
++#: ../ifconfig.c:202
++#, c-format
++msgid ""
++"Usage:\n"
++" ifconfig [-a] [-v] [-s] <interface> [[<AF>] <address>]\n"
++msgstr ""
++"使用法:\n"
++" ifconfig [-a] [-v] [-s] <インタフェース> [[<AF>] <アドレス>]\n"
++
++#: ../ifconfig.c:204
++#, c-format
++msgid " [add <address>[/<prefixlen>]]\n"
++msgstr " [add <アドレス>[/<プレフィックス長>]]\n"
++
++#: ../ifconfig.c:205
++#, c-format
++msgid " [del <address>[/<prefixlen>]]\n"
++msgstr " [del <アドレス>[/<プレフィックス長>]]\n"
++
++#: ../ifconfig.c:206
++#, c-format
++msgid " [[-]broadcast [<address>]] [[-]pointopoint [<address>]]\n"
++msgstr " [[-]broadcast [<アドレス>]] [[-]pointopoint [<アドレス>]]\n"
++
++#: ../ifconfig.c:207
++#, c-format
++msgid " [netmask <address>] [dstaddr <address>] [tunnel <address>]\n"
++msgstr " [netmask <アドレス>] [dstaddr <アドレス>] [tunnel <アドレス>]\n"
++
++#: ../ifconfig.c:210
++#, c-format
++msgid " [outfill <NN>] [keepalive <NN>]\n"
++msgstr " [outfill <数値>] [keepalive <数値>]\n"
++
++#: ../ifconfig.c:212
++#, c-format
++msgid " [hw <HW> <address>] [metric <NN>] [mtu <NN>]\n"
++msgstr " [hw <HW> <アドレス>] [metric <数値>] [mtu <数値>]\n"
++
++#: ../ifconfig.c:213
++#, c-format
++msgid " [[-]trailers] [[-]arp] [[-]allmulti]\n"
++msgstr " [[-]trailers] [[-]arp] [[-]allmulti]\n"
++
++#: ../ifconfig.c:214
++#, c-format
++msgid " [multicast] [[-]promisc]\n"
++msgstr " [multicast] [[-]promisc]\n"
++
++#: ../ifconfig.c:215
++#, c-format
++msgid " [mem_start <NN>] [io_addr <NN>] [irq <NN>] [media <type>]\n"
++msgstr " [mem_start <開始アドレス>] [io_addr <IOアドレス>] [irq <番号>] [media <タイプ>]\n"
++
++#: ../ifconfig.c:217
++#, c-format
++msgid " [txqueuelen <NN>]\n"
++msgstr " [txqueuelen <TXキュー長>]\n"
++
++#: ../ifconfig.c:220
++#, c-format
++msgid " [[-]dynamic]\n"
++msgstr " [[-]dynamic]\n"
++
++#: ../ifconfig.c:222
++#, c-format
++msgid ""
++" [up|down] ...\n"
++"\n"
++msgstr " [up|down] ...\n\n"
++
++#: ../ifconfig.c:224
++#, c-format
++msgid " <HW>=Hardware Type.\n"
++msgstr " <HW>=ハードウェアタイプ.\n"
++
++#: ../ifconfig.c:225
++#, c-format
++msgid " List of possible hardware types:\n"
++msgstr " 利用可能なハードウェアタイプのリスト:\n"
++
++#. 1 = ARPable
++#: ../ifconfig.c:227
++#, c-format
++msgid " <AF>=Address family. Default: %s\n"
++msgstr " <AF>=アドレスファミリ. 標準: %s\n"
++
++#: ../ifconfig.c:228
++#, c-format
++msgid " List of possible address families:\n"
++msgstr " 利用可能なアドレスファミリのリスト:\n"
++
++#: ../ifconfig.c:303
++#, c-format
++msgid "ifconfig: option `%s' not recognised.\n"
++msgstr "ifconfig: オプション`%s'を解釈できません.\n"
++
++#: ../ifconfig.c:305 ../ifconfig.c:962
++#, c-format
++msgid "ifconfig: `--help' gives usage information.\n"
++msgstr "ifconfig: `--help'で使用法を見られます.\n"
++
++#: ../ifconfig.c:380
++#, c-format
++msgid "Unknown media type.\n"
++msgstr "不明なメディアタイプです.\n"
++
++#: ../ifconfig.c:417
++#, c-format
++msgid ""
++"Warning: Interface %s still in promisc mode... maybe other application is "
++"running?\n"
++msgstr "警告: インタフェース%sはまだpromiscモードです...恐らく他のアプリケーションが実行中ではありませんか?\n"
++
++#: ../ifconfig.c:429
++#, c-format
++msgid "Warning: Interface %s still in MULTICAST mode.\n"
++msgstr "警告: インタフェース%sはまだMULTICASTモードです.\n"
++
++#: ../ifconfig.c:441
++#, c-format
++msgid "Warning: Interface %s still in ALLMULTI mode.\n"
++msgstr "警告: インタフェース%sはまだALLMULTIモードです.\n"
++
++#: ../ifconfig.c:465
++#, c-format
++msgid "Warning: Interface %s still in DYNAMIC mode.\n"
++msgstr "警告: インタフェース%sはまだDYNAMICモードです.\n"
++
++#: ../ifconfig.c:523
++#, c-format
++msgid "Warning: Interface %s still in BROADCAST mode.\n"
++msgstr "警告: インタフェース%sはまだBROADCASTモードです.\n"
++
++#: ../ifconfig.c:652
++#, c-format
++msgid "Warning: Interface %s still in POINTOPOINT mode.\n"
++msgstr "警告: インタフェース%sはまだPOINTOPOINTモードです.\n"
++
++#: ../ifconfig.c:684
++#, c-format
++msgid "hw address type `%s' has no handler to set address. failed.\n"
++msgstr "ハードウェアアドレスタイプ`%s'はアドレスを設定するハンドラを持っていません. 失敗しました.\n"
++
++#: ../ifconfig.c:693
++#, c-format
++msgid "%s: invalid %s address.\n"
++msgstr "%s: 不適切なアドレスです(%s).\n"
++
++#: ../ifconfig.c:737 ../ifconfig.c:827 ../ifconfig.c:913
++#, c-format
++msgid "No support for INET6 on this system.\n"
++msgstr "INET6はこのシステムではサポートされていません.\n"
++
++#: ../ifconfig.c:780 ../ifconfig.c:871
++#, c-format
++msgid "Interface %s not initialized\n"
++msgstr "インタフェース%sは初期化されていません.\n"
++
++#: ../ifconfig.c:792 ../ifconfig.c:882
++#, c-format
++msgid "Bad address.\n"
++msgstr "不適切なアドレスです.\n"
++
++#: ../ifconfig.c:885
++#, c-format
++msgid "Address deletion not supported on this system.\n"
++msgstr "アドレス削除はこのシステムではサポートされていません.\n"
++
++#: ../ifconfig.c:957
++#, c-format
++msgid "ifconfig: Cannot set address for this protocol family.\n"
++msgstr "ifconfig:このプロトコルファミリにアドレスを設定できません.\n"
++
++#: ../ifconfig.c:983
++#, c-format
++msgid "No support for ECONET on this system.\n"
++msgstr "ECONETはこのシステムではサポートされていません.\n"
++
++#: ../ifconfig.c:991
++#, c-format
++msgid "Don't know how to set addresses for family %d.\n"
++msgstr "ファミリ%dのアドレスの設定方法が不明です.\n"
++
++#: ../ifconfig.c:1021
++#, c-format
++msgid "WARNING: at least one error occured. (%d)\n"
++msgstr "警告: 少なくとも1つのエラーが発生しました. (%d)\n"
++
++#: ../netstat.c:434
++#, c-format
++msgid ""
++"(No info could be read for \"-p\": geteuid()=%d but you should be root.)\n"
++msgstr "(\"-p\"の情報を読み込めませんでした: geteuid()=%d しかしルートであるべきです.)\n"
++
++#: ../netstat.c:438
++#, c-format
++msgid ""
++"(Not all processes could be identified, non-owned process info\n"
++" will not be shown, you would have to be root to see it all.)\n"
++msgstr ""
++"(一部のプロセスが識別されますが, 所有していないプロセスの情報は\n"
++"表示されません。それら全てを見るにはルートになる必要があります.)\n"
++
++# translatable?
++#: ../netstat.c:445 ../netstat.c:1189 ../netstat.c:1266
++msgid "LISTENING"
++msgstr "LISTENING"
++
++# translatable?
++#: ../netstat.c:446
++msgid "CONN SENT"
++msgstr "CONN SENT"
++
++# translatable?
++#: ../netstat.c:447 ../netstat.c:1268
++msgid "DISC SENT"
++msgstr "DISC SENT"
++
++# translatable?
++#: ../netstat.c:448 ../netstat.c:515 ../netstat.c:904 ../netstat.c:1269
++msgid "ESTABLISHED"
++msgstr "ESTABLISHED"
++
++#: ../netstat.c:470
++#, c-format
++msgid "Active NET/ROM sockets\n"
++msgstr "稼働中のNET/ROMソケット\n"
++
++#: ../netstat.c:471
++#, c-format
++msgid ""
++"User Dest Source Device State Vr/Vs Send-Q Recv-"
++"Q\n"
++msgstr "ユーザ 受信先 発信元 デバイス 状態 Vr/Vs 送信-Q 受信-Q\n"
++
++#: ../netstat.c:481 ../netstat.c:1308
++#, c-format
++msgid "Problem reading data from %s\n"
++msgstr "%sからのデータの読み込みに問題\n"
++
++# translatable?
++#: ../netstat.c:516
++msgid "SYN_SENT"
++msgstr "SYN_SENT"
++
++# translatable?
++#: ../netstat.c:517
++msgid "SYN_RECV"
++msgstr "SYN_RECV"
++
++# translatable?
++#: ../netstat.c:518
++msgid "FIN_WAIT1"
++msgstr "FIN_WAIT1"
++
++# translatable?
++#: ../netstat.c:519
++msgid "FIN_WAIT2"
++msgstr "FIN_WAIT2"
++
++# translatable?
++#: ../netstat.c:520
++msgid "TIME_WAIT"
++msgstr "TIME_WAIT"
++
++# translatable?
++#: ../netstat.c:521
++msgid "CLOSE"
++msgstr "CLOSE"
++
++# translatable?
++#: ../netstat.c:522
++msgid "CLOSE_WAIT"
++msgstr "CLOSE_WAIT"
++
++# translatable?
++#: ../netstat.c:523
++msgid "LAST_ACK"
++msgstr "LAST_ACK"
++
++# translatable?
++#: ../netstat.c:524
++msgid "LISTEN"
++msgstr "LISTEN"
++
++# translatable?
++#: ../netstat.c:525
++msgid "CLOSING"
++msgstr "CLOSING"
++
++#: ../netstat.c:596
++#, c-format
++msgid "warning, got bogus igmp6 line %d.\n"
++msgstr "警告, 偽のigmp6ライン%dを得ました.\n"
++
++#: ../netstat.c:601 ../netstat.c:639 ../netstat.c:763 ../netstat.c:898
++#: ../netstat.c:1032 ../netstat.c:1037
++#, c-format
++msgid "netstat: unsupported address family %d !\n"
++msgstr "netstat: サポートしてないアドレスファミリ%dです!\n"
++
++# c-format
++#: ../netstat.c:614 ../netstat.c:619 ../netstat.c:627 ../netstat.c:634
++#, c-format
++msgid "warning, got bogus igmp line %d.\n"
++msgstr "警告, 偽のigmpライン%dを得ました.\n"
++
++#: ../netstat.c:677
++#, c-format
++msgid "Active X.25 sockets\n"
++msgstr "稼働中のX.25ソケット\n"
++
++#. IMHO, Vr/Vs is not very usefull --SF
++#: ../netstat.c:679
++#, c-format
++msgid ""
++"Dest Source Device LCI State Vr/Vs Send-Q Recv-"
++"Q\n"
++msgstr "受信先 発信元 デバイス LCI 状態 Vr/Vs 送信-Q 受信-Q\n"
++
++#: ../netstat.c:759
++#, c-format
++msgid "warning, got bogus tcp line.\n"
++msgstr "警告, 偽のTCPラインを得ました.\n"
++
++#: ../netstat.c:800 ../netstat.c:953 ../netstat.c:1075
++#, c-format
++msgid "off (0.00/%ld/%d)"
++msgstr "オフ (0.00/%ld/%d)"
++
++#: ../netstat.c:804
++#, c-format
++msgid "on (%2.2f/%ld/%d)"
++msgstr "オン (%2.2f/%ld/%d)"
++
++#: ../netstat.c:809
++#, c-format
++msgid "keepalive (%2.2f/%ld/%d)"
++msgstr "キープアライブ (%2.2f/%ld/%d)"
++
++#: ../netstat.c:814
++#, c-format
++msgid "timewait (%2.2f/%ld/%d)"
++msgstr "時間待ち (%2.2f/%ld/%d)"
++
++#: ../netstat.c:819 ../netstat.c:962 ../netstat.c:1085
++#, c-format
++msgid "unkn-%d (%2.2f/%ld/%d)"
++msgstr "不明-%d (%2.2f/%ld/%d)"
++
++#: ../netstat.c:894
++#, c-format
++msgid "warning, got bogus udp line.\n"
++msgstr "警告, 偽のUDPラインを得ました.\n"
++
++#: ../netstat.c:912 ../netstat.c:1175 ../netstat.c:1208
++msgid "UNKNOWN"
++msgstr "不明"
++
++#: ../netstat.c:958 ../netstat.c:1080
++#, c-format
++msgid "on%d (%2.2f/%ld/%d)"
++msgstr "オン%d (%2.2f/%ld/%d)"
++
++#: ../netstat.c:1046
++#, c-format
++msgid "warning, got bogus raw line.\n"
++msgstr "警告, 偽のRawラインを得ました.\n"
++
++#: ../netstat.c:1128
++#, c-format
++msgid "warning, got bogus unix line.\n"
++msgstr "警告, 偽のunixラインを得ました.\n"
++
++# translatable?
++#: ../netstat.c:1155
++msgid "STREAM"
++msgstr "STREAM"
++
++# translatable?
++#: ../netstat.c:1159
++msgid "DGRAM"
++msgstr "DGRAM"
++
++# translatable?
++#: ../netstat.c:1163
++msgid "RAW"
++msgstr "RAW"
++
++# translatable?
++#: ../netstat.c:1167
++msgid "RDM"
++msgstr "RDM"
++
++# translatable?
++#: ../netstat.c:1171
++msgid "SEQPACKET"
++msgstr "SEQPACKET"
++
++# translatable?
++#: ../netstat.c:1180
++msgid "FREE"
++msgstr "FREE"
++
++# translatable?
++#: ../netstat.c:1196
++msgid "CONNECTING"
++msgstr "CONNECTING"
++
++# translatable?
++#: ../netstat.c:1200
++msgid "CONNECTED"
++msgstr "CONNECTED"
++
++# translatable?
++#: ../netstat.c:1204
++msgid "DISCONNECTING"
++msgstr "DISCONNECTING"
++
++#: ../netstat.c:1235
++#, c-format
++msgid "Active UNIX domain sockets "
++msgstr "稼働中のUNIXドメインソケット "
++
++#: ../netstat.c:1237 ../netstat.c:1756
++#, c-format
++msgid "(servers and established)"
++msgstr "(サーバと確立)"
++
++#: ../netstat.c:1240 ../netstat.c:1759
++#, c-format
++msgid "(only servers)"
++msgstr "(サーバのみ)"
++
++#: ../netstat.c:1242 ../netstat.c:1761
++#, c-format
++msgid "(w/o servers)"
++msgstr "(w/oサーバ)"
++
++#: ../netstat.c:1245
++#, c-format
++msgid ""
++"\n"
++"Proto RefCnt Flags Type State I-Node"
++msgstr ""
++"\n"
++"Proto RefCnt フラグ タイプ 状態 Iノード"
++
++#: ../netstat.c:1247
++#, c-format
++msgid " Path\n"
++msgstr " パス\n"
++
++# translatable?
++#: ../netstat.c:1267
++msgid "SABM SENT"
++msgstr "SABM SENT"
++
++# translatable?
++#: ../netstat.c:1270
++msgid "RECOVERY"
++msgstr "RECOVERY"
++
++#: ../netstat.c:1284
++#, c-format
++msgid "Active AX.25 sockets\n"
++msgstr "稼働中のAX.25ソケット\n"
++
++#: ../netstat.c:1285
++#, c-format
++msgid "Dest Source Device State Vr/Vs Send-Q Recv-Q\n"
++msgstr "受信先 発信元 デバイス 状態 Vr/Vs 送信-Q 受信-Q\n"
++
++#: ../netstat.c:1328
++#, c-format
++msgid "problem reading data from %s\n"
++msgstr "%sからのデータ読み込み中に問題\n"
++
++#: ../netstat.c:1379
++#, c-format
++msgid ""
++"Active IPX sockets\n"
++"Proto Recv-Q Send-Q Local Address Foreign Address "
++"State"
++msgstr ""
++"稼働中のIPXソケット\n"
++"Proto 受信-Q 送信-Q 内部アドレス 外部アドレス 状"
++"態"
++
++#: ../netstat.c:1381
++#, c-format
++msgid " User"
++msgstr " ユーザ"
++
++# translatable?
++#: ../netstat.c:1415
++msgid "ESTAB"
++msgstr "ESTAB"
++
++# translatable?
++#: ../netstat.c:1423
++msgid "UNK."
++msgstr "UNK."
++
++#: ../netstat.c:1461
++#, c-format
++msgid "Kernel Interface table\n"
++msgstr "カーネルインタフェーステーブル\n"
++
++#: ../netstat.c:1465
++#, c-format
++msgid ""
++"Iface MTU Met RX-OK RX-ERR RX-DRP RX-OVR TX-OK TX-ERR TX-DRP TX-OVR "
++"Flg\n"
++msgstr "Iface MTU Met RX-OK RX-ERR RX-DRP RX-OVR TX-OK TX-ERR TX-DRP TX-OVR フラグ\n"
++
++#: ../netstat.c:1469
++msgid "missing interface information"
++msgstr "インタフェース情報が足りません"
++
++#: ../netstat.c:1492
++#, c-format
++msgid ""
++"usage: netstat [-veenNcCF] [<Af>] -r netstat {-V|--version|-h|--"
++"help}\n"
++msgstr ""
++"使用法: netstat [-veenNcCF] [<アドレスファミリ>] -r\n"
++" netstat {-V|--version|-h|--help}\n"
++
++#: ../netstat.c:1493
++#, c-format
++msgid " netstat [-vnNcaeol] [<Socket> ...]\n"
++msgstr " netstat [-vnNcaeol] [<ソケット> ...]\n"
++
++#: ../netstat.c:1494
++#, c-format
++msgid ""
++" netstat { [-veenNac] -i | [-cnNe] -M | -s }\n"
++"\n"
++msgstr " netstat { [-veenNac] -i | [-cnNe] -M | -s }\n\n"
++
++#: ../netstat.c:1496
++#, c-format
++msgid " -r, --route display routing table\n"
++msgstr " -r, --routing 経路テーブルの表示\n"
++
++#: ../netstat.c:1497
++#, c-format
++msgid " -i, --interfaces display interface table\n"
++msgstr " -i, --interfaces インタフェーステーブルの表示\n"
++
++#: ../netstat.c:1498
++#, c-format
++msgid " -g, --groups display multicast group memberships\n"
++msgstr " -g, --groups マルチキャスト・グループメンバシップの表示\n"
++
++#: ../netstat.c:1499
++#, c-format
++msgid ""
++" -s, --statistics display networking statistics (like SNMP)\n"
++msgstr ""
++" -s, --statistics (SNMPのように)ネットワーク統計を表示\n"
++
++#: ../netstat.c:1501
++#, c-format
++msgid ""
++" -M, --masquerade display masqueraded connections\n"
++"\n"
++msgstr ""
++" -M, --masquerade マスカレード接続の表示\n"
++"\n"
++
++#: ../netstat.c:1505
++#, c-format
++msgid " --numeric-hosts don't resolve host names\n"
++msgstr " --numeric-hosts ホスト名をレゾルブしない\n"
++
++#: ../netstat.c:1506
++#, c-format
++msgid " --numeric-ports don't resolve port names\n"
++msgstr " --numeric-ports ポート名をレゾルブしない\n"
++
++#: ../netstat.c:1507
++#, c-format
++msgid " --numeric-users don't resolve user names\n"
++msgstr " --numeric-users ユーザ名をレゾルブしない\n"
++
++#: ../netstat.c:1508
++#, c-format
++msgid " -N, --symbolic resolve hardware names\n"
++msgstr " -N, --symbolic ハードウェア名をレゾルブする\n"
++
++#: ../netstat.c:1509 ../route.c:88
++#, c-format
++msgid " -e, --extend display other/more information\n"
++msgstr " -e, --extend 他の情報や多くの情報を表示する\n"
++
++#: ../netstat.c:1510
++#, c-format
++msgid " -p, --programs display PID/Program name for sockets\n"
++msgstr " -p, --programs ソケットのPID/プログラム名を表示する\n"
++
++#: ../netstat.c:1511
++#, c-format
++msgid ""
++" -c, --continuous continuous listing\n"
++"\n"
++msgstr ""
++" -c, --continous 継続的な表示\n"
++"\n"
++
++#: ../netstat.c:1512
++#, c-format
++msgid " -l, --listening display listening server sockets\n"
++msgstr " -l, --listening サーバのlistenソケットの表示\n"
++
++#: ../netstat.c:1513
++#, c-format
++msgid ""
++" -a, --all, --listening display all sockets (default: connected)\n"
++msgstr " -a, --all, --listening 全ての情報を表示 (標準: connected)\n"
++
++#: ../netstat.c:1514
++#, c-format
++msgid " -o, --timers display timers\n"
++msgstr " -o, --timers タイマの表示\n"
++
++#: ../netstat.c:1515 ../route.c:89
++#, c-format
++msgid ""
++" -F, --fib display Forwarding Information Base "
++"(default)\n"
++msgstr " -F, --fib フォワード情報ベースを表示する(標準)\n"
++
++#: ../netstat.c:1516 ../route.c:90
++#, c-format
++msgid ""
++" -C, --cache display routing cache instead of FIB\n"
++"\n"
++msgstr " -C, --cache FIBのかわりに経路キャッシュを表示する\n\n"
++
++#: ../netstat.c:1518
++#, c-format
++msgid ""
++" <Socket>={-t|--tcp} {-u|--udp} {-w|--raw} {-x|--unix} --ax25 --ipx --"
++"netrom\n"
++msgstr ""
++" <ソケット>={-t|--tcp} {-u|--udp} {-w|--raw} {-x|--unix} --ax25 --ipx --"
++"netrom\n"
++
++#: ../netstat.c:1519
++#, c-format
++msgid " <AF>=Use '-6|-4' or '-A <af>' or '--<af>'; default: %s\n"
++msgstr " <AF>='-6|-4'または'-A <af>'または'--<af>'を利用; 標準: %s\n"
++
++#: ../netstat.c:1520 ../route.c:93
++#, c-format
++msgid " List of possible address families (which support routing):\n"
++msgstr " (ルーティングをサポートした)利用可能なアドレスファミリのリスト:\n"
++
++#: ../netstat.c:1753
++#, c-format
++msgid "Active Internet connections "
++msgstr "稼働中のインターネット接続 "
++
++#: ../netstat.c:1763
++#, c-format
++msgid ""
++"\n"
++"Proto Recv-Q Send-Q Local Address Foreign Address "
++"State "
++msgstr ""
++"\n"
++"Proto 受信-Q 送信-Q 内部アドレス 外部アドレス 状"
++"態 "
++
++#: ../netstat.c:1765
++#, c-format
++msgid " User Inode "
++msgstr " ユーザ Iノード "
++
++#: ../netstat.c:1768
++#, c-format
++msgid " Timer"
++msgstr "タイマ"
++
++#: ../netstat.c:1798
++#, c-format
++msgid "IPv4 Group Memberships\n"
++msgstr "IPv4グループメンバシップ\n"
++
++#: ../netstat.c:1799
++#, c-format
++msgid "Interface RefCnt Group\n"
++msgstr "インタフェース 参照Cnt グループ\n"
++
++#: ../rarp.c:44
++msgid "This kernel does not support RARP.\n"
++msgstr "このカーネルはRARPをサポートしていません.\n"
++
++#: ../rarp.c:83
++#, c-format
++msgid "no RARP entry for %s.\n"
++msgstr "%sのRARPエントリがありません.\n"
++
++#: ../rarp.c:96
++#, c-format
++msgid "%s: bad hardware address\n"
++msgstr "%s: 不正なハードウェアアドレスです\n"
++
++#: ../rarp.c:128
++#, c-format
++msgid "rarp: cannot open file %s:%s.\n"
++msgstr "rarp: ファイル%sを開けません:%s.\n"
++
++#: ../rarp.c:140
++#, c-format
++msgid "rarp: format error at %s:%u\n"
++msgstr "rarp: %s:%u行にフォーマットエラーがあります\n"
++
++#: ../rarp.c:144 ../rarp.c:289
++#, c-format
++msgid "rarp: %s: unknown host\n"
++msgstr "rarp: %s: 不明なホストです\n"
++
++#: ../rarp.c:147
++#, c-format
++msgid "rarp: cannot set entry from %s:%u\n"
++msgstr "rarp: %s:%u行からエントリを設定できません\n"
++
++#: ../rarp.c:176
++#, c-format
++msgid "Usage: rarp -a list entries in cache.\n"
++msgstr ""
++"使用法: rarp -a キャッシュエントリの表示.\n"
++
++#: ../rarp.c:177
++#, c-format
++msgid " rarp -d <hostname> delete entry from cache.\n"
++msgstr ""
++" rarp -d <ホスト名> キャッシュからエントリを削除す"
++"る.\n"
++
++#: ../rarp.c:178
++#, c-format
++msgid " rarp [<HW>] -s <hostname> <hwaddr> add entry to cache.\n"
++msgstr ""
++" rarp [<HW>] -s <ホスト名> <ハードウェアアドレス>\n"
++" キャッシュへエントリを追加.\n"
++
++#: ../rarp.c:179
++#, c-format
++msgid ""
++" rarp -f add entries from /etc/ethers.\n"
++msgstr ""
++" rarp -f /etc/ethersからエントリ追加.\n"
++
++#: ../rarp.c:180
++#, c-format
++msgid ""
++" rarp -V display program version.\n"
++"\n"
++msgstr " rarp -V バージョン情報の出力.\n"
++
++#: ../rarp.c:238
++#, c-format
++msgid "%s: illegal option mix.\n"
++msgstr "%s: オプションの組合せが間違っています.\n"
++
++#: ../rarp.c:269
++#, c-format
++msgid "rarp: %s: unknown hardware type.\n"
++msgstr "rarp: %s: ハードウェアタイプが不明です.\n"
++
++#: ../route.c:80
++#, c-format
++msgid ""
++"Usage: route [-nNvee] [-FC] [<AF>] List kernel routing tables\n"
++msgstr "使用法:route [-nNvee] [-FC] [アドレスファミリ] カーネル経路テーブルの表示.\n"
++
++#: ../route.c:81
++#, c-format
++msgid ""
++" route [-v] [-FC] {add|del|flush} ... Modify routing table for AF.\n"
++"\n"
++msgstr ""
++" route [-v] [-FC] {add|del|flush}‥‥\n"
++"\t\t\t\t アドレスファミリの経路テーブルの設定.\n"
++"\n"
++
++#: ../route.c:83
++#, c-format
++msgid ""
++" route {-h|--help} [<AF>] Detailed usage syntax for "
++"specified AF.\n"
++msgstr ""
++" route {-h|--help} [アドレスファミリ]\n"
++" アドレスファミリ特定の文法の説明.\n"
++
++#: ../route.c:84
++#, c-format
++msgid ""
++" route {-V|--version} Display version/author and "
++"exit.\n"
++"\n"
++msgstr " route {-V|--version} バージョン/作者情報の出力と終了.\n\n"
++
++#: ../route.c:92
++#, c-format
++msgid " <AF>=Use '-A <af>' or '--<af>'; default: %s\n"
++msgstr " <AF>='-A <af>'または'--<af>'を利用; 標準: %s\n"
++
++#: ../plipconfig.c:66
++#, c-format
++msgid "Usage: plipconfig [-a] [-i] [-v] interface\n"
++msgstr "使用法: plipconfig [-a] [-i] [-v] インタフェース\n"
++
++#: ../plipconfig.c:67
++#, c-format
++msgid " [nibble NN] [trigger NN]\n"
++msgstr " [nibble 数値] [trigger 数値]\n"
++
++#: ../plipconfig.c:68
++#, c-format
++msgid " plipconfig -V | --version\n"
++msgstr " plipconfig -V | --version\n"
++
++# translatable?
++#: ../plipconfig.c:74
++#, c-format
++msgid "%s\tnibble %lu trigger %lu\n"
++msgstr "%s\tnibble %lu trigger %lu\n"
++
++#: ../iptunnel.c:85
++#, c-format
++msgid "Usage: iptunnel { add | change | del | show } [ NAME ]\n"
++msgstr "Usage: iptunnel { add | change | del | show } [ NAME ]\n"
++
++#: ../iptunnel.c:86
++#, c-format
++msgid ""
++" [ mode { ipip | gre | sit } ] [ remote ADDR ] [ local ADDR ]\n"
++msgstr " [ mode { ipip | gre | sit } ] [ remote ADDR ] [ local ADDR ]\n"
++
++#: ../iptunnel.c:87
++#, c-format
++msgid " [ [i|o]seq ] [ [i|o]key KEY ] [ [i|o]csum ]\n"
++msgstr " [ [i|o]seq ] [ [i|o]key KEY ] [ [i|o]csum ]\n"
++
++#: ../iptunnel.c:88
++#, c-format
++msgid " [ ttl TTL ] [ tos TOS ] [ nopmtudisc ] [ dev PHYS_DEV ]\n"
++msgstr " [ ttl TTL ] [ tos TOS ] [ nopmtudisc ] [ dev PHYS_DEV ]\n"
++
++#: ../iptunnel.c:89
++#, c-format
++msgid ""
++" iptunnel -V | --version\n"
++"\n"
++msgstr " iptunnel -V | --version\n\n"
++
++#: ../iptunnel.c:90
++#, c-format
++msgid "Where: NAME := STRING\n"
++msgstr "意味: NAME := STRING\n"
++
++#: ../iptunnel.c:91
++#, c-format
++msgid " ADDR := { IP_ADDRESS | any }\n"
++msgstr " ADDR := { IP_ADDRESS | any }\n"
++
++#: ../iptunnel.c:92
++#, c-format
++msgid " TOS := { NUMBER | inherit }\n"
++msgstr " TOS := { NUMBER | inherit }\n"
++
++#: ../iptunnel.c:93
++#, c-format
++msgid " TTL := { 1..255 | inherit }\n"
++msgstr " TTL := { 1..255 | inherit }\n"
++
++#: ../iptunnel.c:94
++#, c-format
++msgid " KEY := { DOTTED_QUAD | NUMBER }\n"
++msgstr " KEY := { DOTTED_QUAD | NUMBER }\n"
++
++#: ../iptunnel.c:332
++#, c-format
++msgid "Keys are not allowed with ipip and sit.\n"
++msgstr "キーはipipおよびsitでは許可されません.\n"
++
++#: ../iptunnel.c:352
++#, c-format
++msgid "Broadcast tunnel requires a source address.\n"
++msgstr "ブロードキャストトンネルは発信元アドレスが必要です.\n"
++
++#: ../iptunnel.c:367
++#, c-format
++msgid "ttl != 0 and noptmudisc are incompatible\n"
++msgstr "ttl != 0およびnoptmudiscは矛盾します\n"
++
++#: ../iptunnel.c:379
++#, c-format
++msgid "cannot determine tunnel mode (ipip, gre or sit)\n"
++msgstr "トンネルモードを決定できません(ipip, greまたはsit)\n"
++
++#: ../iptunnel.c:417
++#, c-format
++msgid "%s: %s/ip remote %s local %s "
++msgstr "%s: %s/ip リモート%s ローカル%s "
++
++#: ../iptunnel.c:421
++msgid "unknown"
++msgstr "不明"
++
++# FIXME: what does it mean?
++#: ../iptunnel.c:453
++#, c-format
++msgid " Drop packets out of sequence.\n"
++msgstr " シーケンスから外れたパケットをドロップ.\n"
++
++#: ../iptunnel.c:455
++#, c-format
++msgid " Checksum in received packet is required.\n"
++msgstr " 受信パケットのチェックサムは必須です.\n"
++
++# FIXME: what does it mean?
++#: ../iptunnel.c:457
++#, c-format
++msgid " Sequence packets on output.\n"
++msgstr " 送信のシーケンスパケット.\n"
++
++# FIXME: what does it mean?
++#: ../iptunnel.c:459
++#, c-format
++msgid " Checksum output packets.\n"
++msgstr " 送信パケットのチェックサム.\n"
++
++#: ../iptunnel.c:487
++#, c-format
++msgid "Wrong format of /proc/net/dev. Sorry.\n"
++msgstr "/proc/net/devが不正なフォーマットです. すみません.\n"
++
++#: ../iptunnel.c:500
++#, c-format
++msgid "Failed to get type of [%s]\n"
++msgstr "[%s]のタイプの取得に失敗\n"
++
++#: ../iptunnel.c:516
++#, c-format
++msgid "RX: Packets Bytes Errors CsumErrs OutOfSeq Mcasts\n"
++msgstr "RX: パケット バイト エラー CsumErrs outOfSeq マルチキャスト\n"
++
++#: ../iptunnel.c:519
++#, c-format
++msgid "TX: Packets Bytes Errors DeadLoop NoRoute NoBufs\n"
++msgstr "TX: パケット バイト エラー DeadLoop NoRoute バッファなし\n"
++
++#: ../statistics.c:47
++msgid "ICMP input histogram:"
++msgstr "ICMP入力ヒストグラム:"
++
++#: ../statistics.c:48
++msgid "ICMP output histogram:"
++msgstr "ICMP出力ヒストグラム:"
++
++#: ../statistics.c:65
++#, c-format
++msgid "Forwarding is %s"
++msgstr "フォワードは%sです"
++
++#: ../statistics.c:66
++#, c-format
++msgid "Default TTL is %u"
++msgstr "標準TTLは%uです"
++
++#: ../statistics.c:67
++#, c-format
++msgid "%u total packets received"
++msgstr "合計%uパケットを受信"
++
++#: ../statistics.c:68
++#, c-format
++msgid "%u with invalid headers"
++msgstr "不適当なヘッダが%u"
++
++#: ../statistics.c:69
++#, c-format
++msgid "%u with invalid addresses"
++msgstr "不適当なアドレスが%u"
++
++#: ../statistics.c:70
++#, c-format
++msgid "%u forwarded"
++msgstr "%uの転送"
++
++#: ../statistics.c:71
++#, c-format
++msgid "%u with unknown protocol"
++msgstr "%uの不明なプロトコル"
++
++#: ../statistics.c:72
++#, c-format
++msgid "%u incoming packets discarded"
++msgstr "%uの受信パケットを破棄"
++
++#: ../statistics.c:73
++#, c-format
++msgid "%u incoming packets delivered"
++msgstr "%uの受信パケットを配送"
++
++#: ../statistics.c:74
++#, c-format
++msgid "%u requests sent out"
++msgstr "%uの要求を送信"
++
++#. ?
++#: ../statistics.c:75
++#, c-format
++msgid "%u outgoing packets dropped"
++msgstr "%uの送信パケットをドロップ"
++
++#: ../statistics.c:76
++#, c-format
++msgid "%u dropped because of missing route"
++msgstr "不明な経路で%uをドロップ"
++
++#: ../statistics.c:77
++#, c-format
++msgid "%u fragments dropped after timeout"
++msgstr "タイムアウト後に%uのフラグメントをドロップ"
++
++#: ../statistics.c:78
++#, c-format
++msgid "%u reassemblies required"
++msgstr "%uの再構築が必要"
++
++#. ?
++#: ../statistics.c:79
++#, c-format
++msgid "%u packets reassembled ok"
++msgstr "%uパケットの再構築に成功"
++
++#: ../statistics.c:80
++#, c-format
++msgid "%u packet reassembles failed"
++msgstr "%uパケットの再構築に失敗"
++
++#: ../statistics.c:81
++#, c-format
++msgid "%u fragments received ok"
++msgstr "%uフラグメントの受信に成功"
++
++#: ../statistics.c:82
++#, c-format
++msgid "%u fragments failed"
++msgstr "%uフラグメントで失敗"
++
++#: ../statistics.c:83
++#, c-format
++msgid "%u fragments created"
++msgstr "%uフラグメントを生成"
++
++#: ../statistics.c:88
++#, c-format
++msgid "%u ICMP messages received"
++msgstr "%uのICMPメッセージ受信"
++
++#: ../statistics.c:89
++#, c-format
++msgid "%u input ICMP message failed."
++msgstr "%uのICMPメッセージ入力失敗."
++
++#: ../statistics.c:90 ../statistics.c:103
++#, c-format
++msgid "destination unreachable: %u"
++msgstr "送信先到達不可: %u"
++
++#: ../statistics.c:91
++#, c-format
++msgid "timeout in transit: %u"
++msgstr "送信時間オーバ: %u"
++
++#: ../statistics.c:92 ../statistics.c:105
++#, c-format
++msgid "wrong parameters: %u"
++msgstr "謝ったパラメータ: %u"
++
++#. ?
++#: ../statistics.c:93
++#, c-format
++msgid "source quenches: %u"
++msgstr "発信元消滅: %u"
++
++#: ../statistics.c:94
++#, c-format
++msgid "redirects: %u"
++msgstr "リダイレクト: %u"
++
++#: ../statistics.c:95
++#, c-format
++msgid "echo requests: %u"
++msgstr "エコー要求: %u"
++
++#: ../statistics.c:96 ../statistics.c:109
++#, c-format
++msgid "echo replies: %u"
++msgstr "エコー応答: %u"
++
++#: ../statistics.c:97
++#, c-format
++msgid "timestamp request: %u"
++msgstr "タイムスタンプ要求: %u"
++
++#: ../statistics.c:98
++#, c-format
++msgid "timestamp reply: %u"
++msgstr "タイムスタンプ応答: %u"
++
++#: ../statistics.c:99
++#, c-format
++msgid "address mask request: %u"
++msgstr "アドレスマスク要求: %u"
++
++#. ?
++#: ../statistics.c:100 ../statistics.c:113
++#, c-format
++msgid "address mask replies: %u"
++msgstr "アドレスマスク応答: %u"
++
++#. ?
++#: ../statistics.c:101
++#, c-format
++msgid "%u ICMP messages sent"
++msgstr "%uのICMPメッセージ送信"
++
++#: ../statistics.c:102
++#, c-format
++msgid "%u ICMP messages failed"
++msgstr "%uのICMPメッセージ失敗"
++
++#: ../statistics.c:104
++#, c-format
++msgid "time exceeded: %u"
++msgstr "時間切れ: %u"
++
++#. ?
++#: ../statistics.c:106
++#, c-format
++msgid "source quench: %u"
++msgstr "発信元消滅: %u"
++
++#: ../statistics.c:107
++#, c-format
++msgid "redirect: %u"
++msgstr "リダイレクト: %u"
++
++#: ../statistics.c:108
++#, c-format
++msgid "echo request: %u"
++msgstr "エコー要求: %u"
++
++#: ../statistics.c:110
++#, c-format
++msgid "timestamp requests: %u"
++msgstr "タイムスタンプ要求: %u"
++
++#: ../statistics.c:111
++#, c-format
++msgid "timestamp replies: %u"
++msgstr "タイムスタンプ応答: %u"
++
++#: ../statistics.c:112
++#, c-format
++msgid "address mask requests: %u"
++msgstr "アドレスマスク要求: %u"
++
++#: ../statistics.c:118
++#, c-format
++msgid "RTO algorithm is %s"
++msgstr "RTOアルゴリズムは%sです"
++
++#: ../statistics.c:122
++#, c-format
++msgid "%u active connections openings"
++msgstr "%uの能動接続開始"
++
++#: ../statistics.c:123
++#, c-format
++msgid "%u passive connection openings"
++msgstr "%uの受動接続開始"
++
++#: ../statistics.c:124
++#, c-format
++msgid "%u failed connection attempts"
++msgstr "%uの接続試行失敗"
++
++#: ../statistics.c:125
++#, c-format
++msgid "%u connection resets received"
++msgstr "%uの接続リセット受信"
++
++#: ../statistics.c:126
++#, c-format
++msgid "%u connections established"
++msgstr "%uの接続確立"
++
++#: ../statistics.c:127
++#, c-format
++msgid "%u segments received"
++msgstr "%uセグメントの受信"
++
++#: ../statistics.c:128
++#, c-format
++msgid "%u segments send out"
++msgstr "%uセグメントの送信"
++
++#: ../statistics.c:129
++#, c-format
++msgid "%u segments retransmited"
++msgstr "%uセグメントの再転送"
++
++#: ../statistics.c:130
++#, c-format
++msgid "%u bad segments received."
++msgstr "%uの不正セグメント受信."
++
++#: ../statistics.c:131
++#, c-format
++msgid "%u resets sent"
++msgstr "%uのリセット送信"
++
++#: ../statistics.c:136
++#, c-format
++msgid "%u packets received"
++msgstr "%uパケット受信"
++
++#: ../statistics.c:137
++#, c-format
++msgid "%u packets to unknown port received."
++msgstr "不明なポートからの%uパケットの受信."
++
++#: ../statistics.c:138
++#, c-format
++msgid "%u packet receive errors"
++msgstr "%uのパケット受信エラー"
++
++#: ../statistics.c:139
++#, c-format
++msgid "%u packets sent"
++msgstr "%uのパケットを送信"
++
++#: ../statistics.c:144
++#, c-format
++msgid "%u SYN cookies sent"
++msgstr "%uのSYNクッキーを送信"
++
++#: ../statistics.c:145
++#, c-format
++msgid "%u SYN cookies received"
++msgstr "%uのSYNクッキーを受信"
++
++#: ../statistics.c:146
++#, c-format
++msgid "%u invalid SYN cookies received"
++msgstr "%uの不適当なSYNクッキーを受信"
++
++#: ../statistics.c:148
++#, c-format
++msgid "%u resets received for embryonic SYN_RECV sockets"
++msgstr "%uの未完成のSYN_RECVソケットに対するリセットを受信"
++
++#: ../statistics.c:150
++#, c-format
++msgid "%u packets pruned from receive queue because of socket buffer overrun"
++msgstr "%uのパケットをソケットバッファオーバランのため受信キューから除外"
++
++#. obsolete: 2.2.0 doesn't do that anymore
++#: ../statistics.c:153
++#, c-format
++msgid "%u packets pruned from receive queue"
++msgstr "%uのパケットを受信キューから除外"
++
++#: ../statistics.c:154
++#, c-format
++msgid ""
++"%u packets dropped from out-of-order queue because of socket buffer overrun"
++msgstr "%uのパケットがソケットバッファオーバーランのためout-of-orderキューからドロップ"
++
++#: ../statistics.c:156
++#, c-format
++msgid "%u ICMP packets dropped because they were out-of-window"
++msgstr "%uのICMPパケットがout-of-windowのためドロップ"
++
++#: ../statistics.c:158
++#, c-format
++msgid "%u ICMP packets dropped because socket was locked"
++msgstr "%uのICMPパケットをソケットのロックによってドロップ"
++
++# FIXME: what does it mean?
++#: ../statistics.c:160
++#, c-format
++msgid "%u TCP sockets finished time wait in fast timer"
++msgstr "%uのTCPソケットがファーストタイマでの時間待ちを完了"
++
++# FIXME
++#: ../statistics.c:161
++#, c-format
++msgid "%u time wait sockets recycled by time stamp"
++msgstr "%uの時間待ちソケットがタイムスタンプで再利用"
++
++# FIXME
++#: ../statistics.c:162
++#, c-format
++msgid "%u TCP sockets finished time wait in slow timer"
++msgstr "%uのTCPソケットがスロータイマでの時間待ちを完了"
++
++#: ../statistics.c:163
++#, c-format
++msgid "%u passive connections rejected because of time stamp"
++msgstr "%uの受動的接続がタイムスタンプのために拒否"
++
++#: ../statistics.c:165
++#, c-format
++msgid "%u active connections rejected because of time stamp"
++msgstr "%uの能動的接続がタイムスタンプのために拒否"
++
++#: ../statistics.c:167
++#, c-format
++msgid "%u packets rejects in established connections because of timestamp"
++msgstr "%uのパケットがタイムスタンプのために接続確立を拒否"
++
++#: ../statistics.c:169
++#, c-format
++msgid "%u delayed acks sent"
++msgstr "%uの遅延ackを送信"
++
++# FIXME
++#: ../statistics.c:170
++#, c-format
++msgid "%u delayed acks further delayed because of locked socket"
++msgstr "%uの遅延ackがロックされたソケットのためにさらに遅延"
++
++#: ../statistics.c:172
++#, c-format
++msgid "Quick ack mode was activated %u times"
++msgstr "クイックackモードが%u回稼働"
++
++# FIXME
++#: ../statistics.c:173
++#, c-format
++msgid "%u times the listen queue of a socket overflowed"
++msgstr "ソケットのリスンキューが%u回オーバフロー"
++
++# FIXME
++#: ../statistics.c:175
++#, c-format
++msgid "%u SYNs to LISTEN sockets ignored"
++msgstr "%uのソケットリスンSYNが無視"
++
++#: ../statistics.c:176
++#, c-format
++msgid "%u packets directly queued to recvmsg prequeue."
++msgstr "%uパケットをrecvmsgプレキューに直接キュー."
++
++#: ../statistics.c:178
++#, c-format
++msgid "%u of bytes directly received from backlog"
++msgstr "%uバイトをバックログから直接受信"
++
++#: ../statistics.c:180
++#, c-format
++msgid "%u of bytes directly received from prequeue"
++msgstr "%uバイトをプレキューから直接受信"
++
++#: ../statistics.c:182
++#, c-format
++msgid "%u packets dropped from prequeue"
++msgstr "%uのパケットをプレキューからドロップ"
++
++#: ../statistics.c:183
++#, c-format
++msgid "%u packet headers predicted"
++msgstr "%uのパケットヘッダを予測"
++
++#: ../statistics.c:184
++#, c-format
++msgid "%u packets header predicted and directly queued to user"
++msgstr "%uのパケットヘッダを予測してユーザに直接キュー"
++
++#: ../statistics.c:186
++#, c-format
++msgid "Ran %u times out of system memory during packet sending"
++msgstr "%u回のパケット送信中のシステムメモリあふれ"
++
++#: ../statistics.c:188
++#, c-format
++msgid "%u acknowledgments not containing data received"
++msgstr "データを含まない%uの承認の受信"
++
++#: ../statistics.c:189
++#, c-format
++msgid "%u predicted acknowledgments"
++msgstr "%uの予測承認"
++
++#: ../statistics.c:190
++#, c-format
++msgid "%u times recovered from packet loss due to fast retransmit"
++msgstr "高速な再送によるパケットロスの%u回の回復"
++
++#: ../statistics.c:191
++#, c-format
++msgid "%u times recovered from packet loss due to SACK data"
++msgstr "SACKデータによるパケットロスの%u回の回復"
++
++#: ../statistics.c:192
++#, c-format
++msgid "%u bad SACKs received"
++msgstr "%uの不正なSACKを受信"
++
++#: ../statistics.c:193
++#, c-format
++msgid "Detected reordering %u times using FACK"
++msgstr "FACKを使った%u回の検出された並べ替え"
++
++#: ../statistics.c:194
++#, c-format
++msgid "Detected reordering %u times using SACK"
++msgstr "SACKを使った%u回の検出された並べ替え"
++
++#: ../statistics.c:195
++#, c-format
++msgid "Detected reordering %u times using time stamp"
++msgstr "タイムスタンプを使った%u回の検出された並べ替え"
++
++# FIXME:what does it mean?
++#: ../statistics.c:196
++#, c-format
++msgid "Detected reordering %u times using reno fast retransmit"
++msgstr "高速再送を使った%u回の検出された並べ替え"
++
++#: ../statistics.c:197
++#, c-format
++msgid "%u congestion windows fully recovered"
++msgstr "%uの輻輳ウィンドウを完全に回復"
++
++#: ../statistics.c:198
++#, c-format
++msgid "%u congestion windows partially recovered using Hoe heuristic"
++msgstr "Hoeヒューリスティックを使って%uの輻輳ウィンドウを部分的に回復"
++
++#: ../statistics.c:199
++#, c-format
++msgid "%u congestion window recovered using DSACK"
++msgstr "DSACKを使って%uの輻輳ウィンドウを回復"
++
++#: ../statistics.c:200
++#, c-format
++msgid "%u congestion windows recovered after partial ack"
++msgstr "部分ack後に%uの輻輳ウィンドウを回復"
++
++#: ../statistics.c:201
++#, c-format
++msgid "%u retransmits lost"
++msgstr "%uの再送ロスト"
++
++# FIXME
++#: ../statistics.c:202
++#, c-format
++msgid "%u timeouts after reno fast retransmit"
++msgstr "高速再送後の%uのタイムアウト"
++
++#: ../statistics.c:203
++#, c-format
++msgid "%u timeouts after SACK recovery"
++msgstr "SACK復元後の%uのタイムアウト"
++
++#: ../statistics.c:204
++#, c-format
++msgid "%u timeouts in loss state"
++msgstr "状態ロスでの%uのタイムアウト"
++
++#: ../statistics.c:205
++#, c-format
++msgid "%u fast retransmits"
++msgstr "%uの高速再送"
++
++#: ../statistics.c:206
++#, c-format
++msgid "%u forward retransmits"
++msgstr "%uの転送再送"
++
++#: ../statistics.c:207
++#, c-format
++msgid "%u retransmits in slow start"
++msgstr "スロースタートでの%uの再送"
++
++#: ../statistics.c:208
++#, c-format
++msgid "%u other TCP timeouts"
++msgstr "%uのその他のTCPタイムアウト"
++
++# FIXME
++#: ../statistics.c:209
++#, c-format
++msgid "%u reno fast retransmits failed"
++msgstr "%dの高速再送失敗"
++
++#: ../statistics.c:210
++#, c-format
++msgid "%u sack retransmits failed"
++msgstr "%uのsack再送失敗"
++
++# FIXME
++#: ../statistics.c:211
++#, c-format
++msgid "%u times receiver scheduled too late for direct processing"
++msgstr "直接処理には遅すぎるとスケジュールされた%u回のレシーバ"
++
++# FIXME
++#: ../statistics.c:212
++#, c-format
++msgid "%u packets collapsed in receive queue due to low socket buffer"
++msgstr "%uのパケットを低ソケットバッファのために受信キューから除外"
++
++#: ../statistics.c:213
++#, c-format
++msgid "%u DSACKs sent for old packets"
++msgstr "%uのDSACKを古いパケットとして送信"
++
++#: ../statistics.c:214
++#, c-format
++msgid "%u DSACKs sent for out of order packets"
++msgstr "%uのDSACKを順序外パケットとして送信"
++
++#: ../statistics.c:215
++#, c-format
++msgid "%u DSACKs received"
++msgstr "%uのDSACKを受信"
++
++#: ../statistics.c:216
++#, c-format
++msgid "%u DSACKs for out of order packets received"
++msgstr "%uのDSACKを順序外パケットとして受信"
++
++#: ../statistics.c:217
++#, c-format
++msgid "%u connections reset due to unexpected SYN"
++msgstr "予期せぬSYNのために%uの接続をリセット"
++
++#: ../statistics.c:218
++#, c-format
++msgid "%u connections reset due to unexpected data"
++msgstr "予期せぬデータのために%uの接続をリセット"
++
++#: ../statistics.c:219
++#, c-format
++msgid "%u connections reset due to early user close"
++msgstr "早期のユーザのクローズのために%uの接続をリセット"
++
++#: ../statistics.c:220
++#, c-format
++msgid "%u connections aborted due to memory pressure"
++msgstr "メモリの制約のために%uの接続を中止"
++
++#: ../statistics.c:221
++#, c-format
++msgid "%u connections aborted due to timeout"
++msgstr "タイムアウトのために%uの接続を中止"
++
++# FIXME
++#: ../statistics.c:222
++#, c-format
++msgid "%u connections aborted after user close in linger timeout"
++msgstr "ユーザの長期タイムアウトでのクローズ後に%uの接続が中止"
++
++#: ../statistics.c:223
++#, c-format
++msgid "%u times unabled to send RST due to no memory"
++msgstr "メモリ不足のためにRSTの送信が%u回不能"
++
++# FIXME
++#: ../statistics.c:224
++#, c-format
++msgid "TCP ran low on memory %u times"
++msgstr "TCPが少ないメモリで%u回実行"
++
++#: ../statistics.c:225
++#, c-format
++msgid "%u TCP data loss events"
++msgstr "%uのTCPデータがイベントをロス"
++
++#: ../statistics.c:292
++msgid "enabled"
++msgstr "有効"
++
++#: ../statistics.c:292
++msgid "disabled"
++msgstr "無効"
++
++#: ../statistics.c:375
++msgid "error parsing /proc/net/snmp"
++msgstr "/proc/net/snmpの処理中にエラーが発生しました"
++
++#: ../statistics.c:388
++msgid "cannot open /proc/net/snmp"
++msgstr "/proc/net/snmpを開けません"
++
++#: ../lib/activate.c:69
++#, c-format
++msgid "Hardware type `%s' not supported.\n"
++msgstr "ハードウェアタイプ`%s'はサポートされていません.\n"
++
++#: ../lib/activate.c:73
++#, c-format
++msgid "Cannot change line discipline to `%s'.\n"
++msgstr "`%s'のline disciplineを変更できません.\n"
++
++#: ../lib/af.c:153 ../lib/hw.c:161
++msgid "UNSPEC"
++msgstr "不明なネット"
++
++#: ../lib/af.c:155
++msgid "UNIX Domain"
++msgstr "UNIXドメイン"
++
++#: ../lib/af.c:158
++msgid "DARPA Internet"
++msgstr "DARPAインターネット"
++
++#: ../lib/af.c:161
++msgid "IPv6"
++msgstr "IPv6"
++
++#: ../lib/af.c:164 ../lib/hw.c:182
++msgid "AMPR AX.25"
++msgstr "AMPR AX.25"
++
++#: ../lib/af.c:167 ../lib/hw.c:188
++msgid "AMPR NET/ROM"
++msgstr "AMPR NET/ROM"
++
++#: ../lib/af.c:170
++msgid "Novell IPX"
++msgstr "Novell IPX"
++
++#: ../lib/af.c:173
++msgid "Appletalk DDP"
++msgstr "アップルトークDDP"
++
++#: ../lib/af.c:176 ../lib/hw.c:223
++msgid "Econet"
++msgstr "エコネット"
++
++#: ../lib/af.c:179
++msgid "CCITT X.25"
++msgstr "CCITT X.25"
++
++#: ../lib/af.c:182 ../lib/hw.c:185
++msgid "AMPR ROSE"
++msgstr "AMPR ROSE"
++
++#: ../lib/af.c:185 ../lib/hw.c:173
++msgid "Ash"
++msgstr "Ash"
++
++#: ../lib/af.c:243
++#, c-format
++msgid "Please don't supply more than one address family.\n"
++msgstr "複数のアドレスファミリをしないで下さい.\n"
++
++#: ../lib/af.c:304
++#, c-format
++msgid "Too much address family arguments.\n"
++msgstr "アドレスファミリの引数が多すぎます.\n"
++
++#: ../lib/af.c:315
++#, c-format
++msgid "Unknown address family `%s'.\n"
++msgstr "不明なアドレスファミリです `%s'.\n"
++
++#: ../lib/arcnet.c:70 ../lib/arcnet.c:85
++#, c-format
++msgid "in_arcnet(%s): invalid arcnet address!\n"
++msgstr "in_arcnet(%s): 不適当なARCNETアドレスです!\n"
++
++#: ../lib/arcnet.c:97
++#, c-format
++msgid "in_arcnet(%s): trailing : ignored!\n"
++msgstr "in_arcnet(%s): trailing : 無効!\n"
++
++# translatable?
++#: ../lib/arcnet.c:109
++#, c-format
++msgid "in_arcnet(%s): trailing junk!\n"
++msgstr "in_arcnet(%s): trailing junk!\n"
++
++#: ../lib/ash.c:81
++#, c-format
++msgid "Malformed Ash address"
++msgstr "異常なAshアドレスです"
++
++#: ../lib/ax25.c:75 ../lib/ddp.c:50 ../lib/econet.c:52 ../lib/inet.c:244
++#: ../lib/inet.c:259 ../lib/inet6.c:129 ../lib/ipx.c:81 ../lib/netrom.c:78
++#: ../lib/rose.c:71 ../lib/unix.c:56 ../lib/unix.c:76
++msgid "[NONE SET]"
++msgstr "[設定なし]"
++
++#: ../lib/ax25.c:97 ../lib/netrom.c:100
++msgid "Invalid callsign"
++msgstr "不適当なコールサインです"
++
++#: ../lib/ax25.c:110 ../lib/netrom.c:113
++msgid "Callsign too long"
++msgstr "コールサインが長すぎます"
++
++#: ../lib/ax25_gr.c:47
++#, c-format
++msgid "AX.25 not configured in this system.\n"
++msgstr "AX.25はこのシステムでは設定されていません.\n"
++
++#: ../lib/ax25_gr.c:50
++#, c-format
++msgid "Kernel AX.25 routing table\n"
++msgstr "カーネル AX.25経路テーブル\n"
++
++#. xxx
++#: ../lib/ax25_gr.c:51 ../lib/rose_gr.c:55
++#, c-format
++msgid "Destination Iface Use\n"
++msgstr "送信先サイト Iface 使用数\n"
++
++#: ../lib/ether.c:74 ../lib/ether.c:91
++#, c-format
++msgid "in_ether(%s): invalid ether address!\n"
++msgstr "in_ether(%s): 不適当なイーサアドレス!\n"
++
++#: ../lib/ether.c:105
++#, c-format
++msgid "in_ether(%s): trailing : ignored!\n"
++msgstr "in_ether(%s): trailing : 無効!\n"
++
++# translatable?
++#: ../lib/ether.c:117
++#, c-format
++msgid "in_ether(%s): trailing junk!\n"
++msgstr "in_ether(%s): trailing junk!\n"
++
++#: ../lib/fddi.c:84 ../lib/fddi.c:99
++#, c-format
++msgid "in_fddi(%s): invalid fddi address!\n"
++msgstr "in_fddi(%s): 不適当なfddiアドレス!\n"
++
++#: ../lib/fddi.c:111
++#, c-format
++msgid "in_fddi(%s): trailing : ignored!\n"
++msgstr "in_fddi(%s): trailing : 無効!\n"
++
++# translatable?
++#: ../lib/fddi.c:123
++#, c-format
++msgid "in_fddi(%s): trailing junk!\n"
++msgstr "in_fddi(%s): trailing junk!\n"
++
++#: ../lib/getroute.c:101 ../lib/setroute.c:80
++#, c-format
++msgid "Address family `%s' not supported.\n"
++msgstr "アドレスファミリ`%s'はサポートされていません.\n"
++
++#: ../lib/getroute.c:107 ../lib/setroute.c:84
++#, c-format
++msgid "No routing for address family `%s'.\n"
++msgstr "アドレスファミリ`%s'への経路が見つかりません.\n"
++
++#: ../lib/hippi.c:84 ../lib/hippi.c:99
++#, c-format
++msgid "in_hippi(%s): invalid hippi address!\n"
++msgstr "in_hippi(%s): 不適当なhippiアドレスです!\n"
++
++#: ../lib/hippi.c:111
++#, c-format
++msgid "in_hippi(%s): trailing : ignored!\n"
++msgstr "in_hippi(%s): trailing : 無効!\n"
++
++# translatable?
++#: ../lib/hippi.c:122
++#, c-format
++msgid "in_hippi(%s): trailing junk!\n"
++msgstr "in_hippi(%s): trailing junk!\n"
++
++#: ../lib/hw.c:160
++msgid "Local Loopback"
++msgstr "ローカルループバック"
++
++#: ../lib/hw.c:163
++msgid "Serial Line IP"
++msgstr "シリアルラインIP"
++
++#: ../lib/hw.c:164
++msgid "VJ Serial Line IP"
++msgstr "VJシリアルラインIP"
++
++#: ../lib/hw.c:165
++msgid "6-bit Serial Line IP"
++msgstr "6ビットシリアルラインIP"
++
++#: ../lib/hw.c:166
++msgid "VJ 6-bit Serial Line IP"
++msgstr "VJ 6ビットシリアルラインIP"
++
++#: ../lib/hw.c:167
++msgid "Adaptive Serial Line IP"
++msgstr "AdaptiveシリアルラインIP"
++
++#: ../lib/hw.c:170
++msgid "Ethernet"
++msgstr "イーサネット"
++
++# translatable?
++#: ../lib/hw.c:176
++msgid "Fiber Distributed Data Interface"
++msgstr "Fiber Distributed Data Interface"
++
++#: ../lib/hw.c:179
++msgid "HIPPI"
++msgstr "HIPPI"
++
++#: ../lib/hw.c:191
++msgid "generic X.25"
++msgstr "ジェネリックX.25"
++
++#: ../lib/hw.c:194
++msgid "IPIP Tunnel"
++msgstr "IPIPトンネル"
++
++#: ../lib/hw.c:197
++msgid "Point-to-Point Protocol"
++msgstr "Point-to-Pointプロトコル"
++
++#: ../lib/hw.c:200
++msgid "(Cisco)-HDLC"
++msgstr "(Cisco)-HDLC"
++
++#: ../lib/hw.c:201
++msgid "LAPB"
++msgstr "LAPB"
++
++#: ../lib/hw.c:204
++msgid "ARCnet"
++msgstr "ARCネット"
++
++#: ../lib/hw.c:207
++msgid "Frame Relay DLCI"
++msgstr "フレームリレーDLCI"
++
++#: ../lib/hw.c:208
++msgid "Frame Relay Access Device"
++msgstr "フレームリレーアクセスデバイス"
++
++#: ../lib/hw.c:211
++msgid "IPv6-in-IPv4"
++msgstr "IPv6-in-IPv4"
++
++#: ../lib/hw.c:214
++msgid "IrLAP"
++msgstr "IrLAP"
++
++#: ../lib/hw.c:217
++msgid "16/4 Mbps Token Ring"
++msgstr "16/4 Mbpsトークンリング"
++
++#: ../lib/hw.c:219
++msgid "16/4 Mbps Token Ring (New)"
++msgstr "16/4 Mbpsトークンリング(新)"
++
++#: ../lib/hw.c:226
++msgid "Generic EUI-64"
++msgstr "ジェネリックEUI-64"
++
++#: ../lib/inet.c:153 ../lib/inet6.c:79
++#, c-format
++msgid "rresolve: unsupport address family %d !\n"
++msgstr "rresolve: アドレスファミリ%dをサポートしていません!\n"
++
++#: ../lib/inet6.c:131
++msgid "[UNKNOWN]"
++msgstr "[不明]"
++
++#: ../lib/inet6_gr.c:71
++#, c-format
++msgid "INET6 (IPv6) not configured in this system.\n"
++msgstr "INET6(IPv6)はこのシステムでは利用できるよう設定されていません.\n"
++
++#: ../lib/inet6_gr.c:74
++#, c-format
++msgid "Kernel IPv6 routing table\n"
++msgstr "カーネルIPv6 経路テーブル\n"
++
++#: ../lib/inet6_gr.c:76
++#, c-format
++msgid ""
++"Destination Next "
++"Hop Flags Metric Ref Use Iface\n"
++msgstr "送信先サイト 次回ホップ フラグ Metric Ref 使用数 インタフェース\n"
++
++#: ../lib/inet6_gr.c:150
++#, c-format
++msgid "Kernel IPv6 Neighbour Cache\n"
++msgstr "カーネルIPv6 近隣ネットワークのキャッシュ\n"
++
++#: ../lib/inet6_gr.c:153
++#, c-format
++msgid ""
++"Neighbour HW Address Iface Flags "
++"Ref State\n"
++msgstr ""
++"近隣サイト ハードウェアアドレス Iface フラグ "
++"Ref 状態\n"
++
++#: ../lib/inet6_gr.c:157
++#, c-format
++msgid ""
++"Neighbour HW Address Iface Flags "
++"Ref State Stale(sec) Delete(sec)\n"
++msgstr ""
++"近隣サイト ハードウェアアドレス Iface フラグ "
++"Ref 状態 Stale[秒] Delete[秒]\n"
++
++#: ../lib/inet6_sr.c:46
++#, c-format
++msgid "Usage: inet6_route [-vF] del Target\n"
++msgstr "使用法: inet6_route [-vF] del ターゲット\n"
++
++#: ../lib/inet6_sr.c:47
++#, c-format
++msgid " inet6_route [-vF] add Target [gw Gw] [metric M] [[dev] If]\n"
++msgstr ""
++" inet6_route [-vF] add ターゲット \n"
++" [gw ゲートウェイ] [metric メトリック]\n"
++" [[dev] インタフェース]\n"
++
++#: ../lib/inet6_sr.c:48
++#, c-format
++msgid " inet6_route [-FC] flush NOT supported\n"
++msgstr " inet6_route [-FC] flush サポートしていません\n"
++
++#: ../lib/inet6_sr.c:188
++#, c-format
++msgid "Flushing `inet6' routing table not supported\n"
++msgstr "`inet6'経路テーブルのフラッシュはサポートしていません\n"
++
++#: ../lib/inet_gr.c:50 ../lib/inet_gr.c:220
++#, c-format
++msgid "INET (IPv4) not configured in this system.\n"
++msgstr "INET(IPv4)はこのシステムでは利用できるように設定されていません.\n"
++
++#: ../lib/inet_gr.c:53
++#, c-format
++msgid "Kernel IP routing table\n"
++msgstr "カーネルIP経路テーブル\n"
++
++#: ../lib/inet_gr.c:56
++#, c-format
++msgid ""
++"Destination Gateway Genmask Flags Metric Ref Use "
++"Iface\n"
++msgstr "受信先サイト ゲートウェイ ネットマスク フラグ Metric Ref 使用数 インタフェース\n"
++
++#: ../lib/inet_gr.c:59
++#, c-format
++msgid ""
++"Destination Gateway Genmask Flags MSS Window irtt "
++"Iface\n"
++msgstr "受信先サイト ゲートウェイ ネットマスク フラグ MSS Window irtt インタフェース\n"
++
++#: ../lib/inet_gr.c:62
++#, c-format
++msgid ""
++"Destination Gateway Genmask Flags Metric Ref Use "
++"Iface MSS Window irtt\n"
++msgstr ""
++"受信先サイト ゲートウェイ ネットマスク フラグ Metric Ref 使用数 "
++"Iface MSS Window irtt\n"
++
++#: ../lib/inet_gr.c:237
++#, c-format
++msgid "Kernel IP routing cache\n"
++msgstr "カーネルIP経路キャッシュ\n"
++
++#: ../lib/inet_gr.c:258
++#, c-format
++msgid ""
++"Source Destination Gateway Flags Metric Ref Use "
++"Iface\n"
++msgstr "発信元サイト 受信先サイト ゲートウェイ フラグ Metric Ref 使用数 インタフェース\n"
++
++#: ../lib/inet_gr.c:261
++#, c-format
++msgid ""
++"Source Destination Gateway Flags MSS Window irtt "
++"Iface\n"
++msgstr "発信元サイト 受信先サイト ゲートウェイ フラグ MSS Window irtt インタフェース\n"
++
++#: ../lib/inet_gr.c:266
++#, c-format
++msgid ""
++"Source Destination Gateway Flags Metric Ref Use "
++"Iface MSS Window irtt HH Arp\n"
++msgstr ""
++"発信元サイト 受信先サイト ゲートウェイ フラグ Metric Ref 使用数 "
++"Iface MSS Window irtt HH Arp\n"
++
++#: ../lib/inet_gr.c:290
++#, c-format
++msgid ""
++"Source Destination Gateway Flags Metric Ref Use "
++"Iface MSS Window irtt TOS HHRef HHUptod SpecDst\n"
++msgstr ""
++"発信元サイト 受信先サイト ゲートウェイ フラグ Metric Ref 使用数 "
++"Iface MSS Window irtt TOS HHRef HHUptod SpecDst\n"
++
++#: ../lib/inet_sr.c:51
++#, c-format
++msgid ""
++"Usage: inet_route [-vF] del {-host|-net} Target[/prefix] [gw Gw] [metric M] "
++"[[dev] If]\n"
++msgstr ""
++"使用法:inet_route [-vF] del {-host|-net} 受信先[/プレフィックス]\n"
++" [gw ゲートウェイ] [metric メトリック]\n"
++" [[dev] インタフェース]\n"
++
++#: ../lib/inet_sr.c:52
++#, c-format
++msgid ""
++" inet_route [-vF] add {-host|-net} Target[/prefix] [gw Gw] [metric M]\n"
++msgstr ""
++" inet_route [-vF] add {-host|-net} 受信先[/プレフィックス]\n"
++" [gw ゲートウェイ] [metric メトリック]\n"
++
++#: ../lib/inet_sr.c:53
++#, c-format
++msgid ""
++" [netmask N] [mss Mss] [window W] [irtt I]\n"
++msgstr " [netmask ネットマスク] [mss Mss] [window W] [irtt I]\n"
++
++#: ../lib/inet_sr.c:54
++#, c-format
++msgid " [mod] [dyn] [reinstate] [[dev] If]\n"
++msgstr " [mod] [dyn] [reinstate] [[dev] インタフェース]\n"
++
++#: ../lib/inet_sr.c:55
++#, c-format
++msgid ""
++" inet_route [-vF] add {-host|-net} Target[/prefix] [metric M] reject\n"
++msgstr ""
++" inet_route [-vF] add {-host|-net} 受信先[/プレフィックス]\n"
++" [metric メトリック] reject\n"
++
++#: ../lib/inet_sr.c:56
++#, c-format
++msgid " inet_route [-FC] flush NOT supported\n"
++msgstr " inet_route [-FC] flush サポートしていません\n"
++
++#: ../lib/inet_sr.c:158
++#, c-format
++msgid "route: %s: cannot use a NETWORK as gateway!\n"
++msgstr "route: %s: NETWORKをゲートウェイとして使えません!\n"
++
++#: ../lib/inet_sr.c:174
++#, c-format
++msgid "route: Invalid MSS/MTU.\n"
++msgstr "route: MSS/MTUが不適当です.\n"
++
++#: ../lib/inet_sr.c:187
++#, c-format
++msgid "route: Invalid window.\n"
++msgstr "route: windowが不適当です.\n"
++
++#: ../lib/inet_sr.c:203
++#, c-format
++msgid "route: Invalid initial rtt.\n"
++msgstr "route: 初期rttが不適当です.\n"
++
++#: ../lib/inet_sr.c:261
++#, c-format
++msgid "route: netmask %.8x doesn't make sense with host route\n"
++msgstr "route: ネットマスク%.8xがホスト経路を検出しません\n"
++
++#: ../lib/inet_sr.c:265
++#, c-format
++msgid "route: bogus netmask %s\n"
++msgstr "route: 偽のネットマスク`%s'です\n"
++
++#: ../lib/inet_sr.c:270
++#, c-format
++msgid "route: netmask doesn't match route address\n"
++msgstr "route: ネットマスクが経路アドレスと一致しません\n"
++
++#: ../lib/inet_sr.c:306
++#, c-format
++msgid "Flushing `inet' routing table not supported\n"
++msgstr "`inet'経路テーブルのフラッシュはサポートしていません\n"
++
++#: ../lib/inet_sr.c:310
++#, c-format
++msgid "Modifying `inet' routing cache not supported\n"
++msgstr "`inet'経路テーブルの変更はサポートしていません\n"
++
++#: ../lib/ipx_gr.c:52
++#, c-format
++msgid "IPX not configured in this system.\n"
++msgstr "IPXはこのシステムでは設定されていません.\n"
++
++#: ../lib/ipx_gr.c:56
++#, c-format
++msgid "Kernel IPX routing table\n"
++msgstr "カーネルIPX経路テーブル\n"
++
++#. xxx
++#: ../lib/ipx_gr.c:57
++#, c-format
++msgid "Destination Router Net Router Node\n"
++msgstr "送信先サイト ルータ ネット ルータノード\n"
++
++#: ../lib/ipx_sr.c:33
++#, c-format
++msgid "IPX: this needs to be written\n"
++msgstr "IPX: これは書き込みが必要です\n"
++
++#: ../lib/masq_info.c:198
++#, c-format
++msgid "IP masquerading entries\n"
++msgstr "IPマスカレード エントリ\n"
++
++#: ../lib/masq_info.c:201
++#, c-format
++msgid "prot expire source destination ports\n"
++msgstr "プロト expire 発信元サイト 送信先サイト ポート\n"
++
++#: ../lib/masq_info.c:204
++#, c-format
++msgid ""
++"prot expire initseq delta prevd source "
++"destination ports\n"
++msgstr ""
++"プロト expire 初期seq delta prevd 発信元サイト 受信先サイ"
++"ト ポート\n"
++
++#: ../lib/netrom_gr.c:48
++#, c-format
++msgid "NET/ROM not configured in this system.\n"
++msgstr "NET/ROMはこのシステムでは利用可能なように設定されていません.\n"
++
++#: ../lib/netrom_gr.c:51
++#, c-format
++msgid "Kernel NET/ROM routing table\n"
++msgstr "カーネルNET/ROM経路テーブル\n"
++
++#: ../lib/netrom_gr.c:52
++#, c-format
++msgid "Destination Mnemonic Quality Neighbour Iface\n"
++msgstr "受信先サイト ニーモニック 品質 近隣サイト インタフェース\n"
++
++#: ../lib/netrom_sr.c:34
++#, c-format
++msgid "netrom usage\n"
++msgstr "netrom使用法\n"
++
++#: ../lib/netrom_sr.c:44
++#, c-format
++msgid "NET/ROM: this needs to be written\n"
++msgstr "NET/ROM: これは書き込みが必要です\n"
++
++#: ../lib/ppp.c:44
++#, c-format
++msgid "You cannot start PPP with this program.\n"
++msgstr "このプログラムではPPPを開始できません. \n"
++
++#: ../lib/ppp_ac.c:38
++#, c-format
++msgid "Sorry, use pppd!\n"
++msgstr "申し訳ありませんが, pppdを使って下さい!\n"
++
++#: ../lib/rose.c:87
++msgid "Node address must be ten digits"
++msgstr "ノードアドレスは10進数でなければなりません"
++
++#: ../lib/rose_gr.c:51
++#, c-format
++msgid "ROSE not configured in this system.\n"
++msgstr "ROSEはこのシステムでは利用可能なように設定されていません\n"
++
++#: ../lib/rose_gr.c:54
++#, c-format
++msgid "Kernel ROSE routing table\n"
++msgstr "カーネルROSE経路テーブル\n"
++
++#: ../lib/tr.c:86 ../lib/tr.c:101
++#, c-format
++msgid "in_tr(%s): invalid token ring address!\n"
++msgstr "in_tr(%s): 不適当なトークンリングアドレスです!\n"
++
++#: ../lib/tr.c:113
++#, c-format
++msgid "in_tr(%s): trailing : ignored!\n"
++msgstr "in_tr(%s): trailing : 無効!\n"
++
++# translatable?
++#: ../lib/tr.c:125
++#, c-format
++msgid "in_tr(%s): trailing junk!\n"
++msgstr "in_tr(%s): trailing junk!\n"
++
++#: ../lib/interface.c:176
++#, c-format
++msgid "warning: no inet socket available: %s\n"
++msgstr "警告: Inetソケットは利用できません: %s\n"
++
++#: ../lib/interface.c:325
++#, c-format
++msgid "Warning: cannot open %s (%s). Limited output.\n"
++msgstr "警告: %sを開けません(%s). 限定された出力です.\n"
++
++#. Give better error message for this case.
++#: ../lib/interface.c:571
++msgid "Device not found"
++msgstr "デバイスが見つかりません"
++
++#: ../lib/interface.c:575
++#, c-format
++msgid "%s: error fetching interface information: %s\n"
++msgstr "%s: インタフェース情報を取得中にエラーが発生しました: %s\n"
++
++#: ../lib/interface.c:608
++msgid " - no statistics available -"
++msgstr " - 統計情報を利用できません -"
++
++#: ../lib/interface.c:612
++#, c-format
++msgid "[NO FLAGS]"
++msgstr "[フラグなし]"
++
++#: ../lib/interface.c:688
++#, c-format
++msgid "%-9.9s Link encap:%s "
++msgstr "%-9.9s リンク方法:%s "
++
++#: ../lib/interface.c:693
++#, c-format
++msgid "HWaddr %s "
++msgstr "ハードウェアアドレス %s "
++
++#: ../lib/interface.c:696
++#, c-format
++msgid "Media:%s"
++msgstr "メディア:%s"
++
++#: ../lib/interface.c:698
++#, c-format
++msgid "(auto)"
++msgstr "(自動)"
++
++#: ../lib/interface.c:705
++#, c-format
++msgid " %s addr:%s "
++msgstr " %sアドレス:%s"
++
++#: ../lib/interface.c:708
++#, c-format
++msgid " P-t-P:%s "
++msgstr " P-t-P:%s "
++
++#: ../lib/interface.c:711
++#, c-format
++msgid " Bcast:%s "
++msgstr " ブロードキャスト:%s "
++
++#: ../lib/interface.c:713
++#, c-format
++msgid " Mask:%s\n"
++msgstr " マスク:%s\n"
++
++#: ../lib/interface.c:730
++#, c-format
++msgid " inet6 addr: %s/%d"
++msgstr " inet6アドレス: %s/%d"
++
++#: ../lib/interface.c:732
++#, c-format
++msgid " Scope:"
++msgstr " 範囲:"
++
++#: ../lib/interface.c:735
++#, c-format
++msgid "Global"
++msgstr "グローバル"
++
++#: ../lib/interface.c:738
++#, c-format
++msgid "Link"
++msgstr "リンク"
++
++#: ../lib/interface.c:741
++#, c-format
++msgid "Site"
++msgstr "サイト"
++
++# translatable?
++#: ../lib/interface.c:744
++#, c-format
++msgid "Compat"
++msgstr "Compat"
++
++#: ../lib/interface.c:747
++#, c-format
++msgid "Host"
++msgstr "ホスト"
++
++#: ../lib/interface.c:750
++#, c-format
++msgid "Unknown"
++msgstr "不明"
++
++#: ../lib/interface.c:765
++#, c-format
++msgid " IPX/Ethernet II addr:%s\n"
++msgstr " IPX/イーサネットIIアドレス:%s\n"
++
++#: ../lib/interface.c:768
++#, c-format
++msgid " IPX/Ethernet SNAP addr:%s\n"
++msgstr " IPX/イーサネットSNAPアドレス:%s\n"
++
++#: ../lib/interface.c:771
++#, c-format
++msgid " IPX/Ethernet 802.2 addr:%s\n"
++msgstr " IPX/イーサネット802.2アドレス:%s\n"
++
++#: ../lib/interface.c:774
++#, c-format
++msgid " IPX/Ethernet 802.3 addr:%s\n"
++msgstr " IPX/イーサネット802.3アドレス:%s\n"
++
++#: ../lib/interface.c:784
++#, c-format
++msgid " EtherTalk Phase 2 addr:%s\n"
++msgstr " イーサトーク フェーズ2アドレス:%s\n"
++
++#: ../lib/interface.c:793
++#, c-format
++msgid " econet addr:%s\n"
++msgstr " エコネットアドレス:%s\n"
++
++#: ../lib/interface.c:800
++#, c-format
++msgid "[NO FLAGS] "
++msgstr "[フラグなし]"
++
++# translatable?
++#: ../lib/interface.c:802
++#, c-format
++msgid "UP "
++msgstr "UP "
++
++# translatable?
++#: ../lib/interface.c:804
++#, c-format
++msgid "BROADCAST "
++msgstr "BROADCAST "
++
++# translatable?
++#: ../lib/interface.c:806
++#, c-format
++msgid "DEBUG "
++msgstr "DEBUG "
++
++# translatable?
++#: ../lib/interface.c:808
++#, c-format
++msgid "LOOPBACK "
++msgstr "LOOPBACK "
++
++# translatable?
++#: ../lib/interface.c:810
++#, c-format
++msgid "POINTOPOINT "
++msgstr "POINTOPOINT "
++
++# translatable?
++#: ../lib/interface.c:812
++#, c-format
++msgid "NOTRAILERS "
++msgstr "NOTRAILERS "
++
++# translatable?
++#: ../lib/interface.c:814
++#, c-format
++msgid "RUNNING "
++msgstr "RUNNING "
++
++# translatable?
++#: ../lib/interface.c:816
++#, c-format
++msgid "NOARP "
++msgstr "NOARP "
++
++# translatable?
++#: ../lib/interface.c:818
++#, c-format
++msgid "PROMISC "
++msgstr "PROMISC "
++
++# translatable?
++#: ../lib/interface.c:820
++#, c-format
++msgid "ALLMULTI "
++msgstr "ALLMULTI "
++
++# translatable?
++#: ../lib/interface.c:822
++#, c-format
++msgid "SLAVE "
++msgstr "SLAVE "
++
++# translatable?
++#: ../lib/interface.c:824
++#, c-format
++msgid "MASTER "
++msgstr "MASTER "
++
++# translatable?
++#: ../lib/interface.c:826
++#, c-format
++msgid "MULTICAST "
++msgstr "MULTICAST "
++
++# translatable?
++#: ../lib/interface.c:829
++#, c-format
++msgid "DYNAMIC "
++msgstr "DYNAMIC "
++
++#. DONT FORGET TO ADD THE FLAGS IN ife_print_short
++#: ../lib/interface.c:832
++#, c-format
++msgid " MTU:%d Metric:%d"
++msgstr " MTU:%d メトリック:%d"
++
++# translatable?
++#: ../lib/interface.c:836
++#, c-format
++msgid " Outfill:%d Keepalive:%d"
++msgstr " Outfill:%d キープアライブ:%d"
++
++#: ../lib/interface.c:850
++#, c-format
++msgid "RX packets:%llu errors:%lu dropped:%lu overruns:%lu frame:%lu\n"
++msgstr "RXパケット:%llu エラー:%lu 損失:%lu オーバラン:%lu フレーム:%lu\n"
++
++#: ../lib/interface.c:855
++#, c-format
++msgid " compressed:%lu\n"
++msgstr " 圧縮:%lu\n"
++
++#: ../lib/interface.c:895
++#, c-format
++msgid "TX packets:%llu errors:%lu dropped:%lu overruns:%lu carrier:%lu\n"
++msgstr "TXパケット:%llu エラー:%lu 損失:%lu オーバラン:%lu キャリア:%lu\n"
++
++#: ../lib/interface.c:899
++#, c-format
++msgid " collisions:%lu "
++msgstr " 衝突(Collisions):%lu "
++
++#: ../lib/interface.c:901
++#, c-format
++msgid "compressed:%lu "
++msgstr "圧縮:%lu "
++
++#: ../lib/interface.c:903
++#, c-format
++msgid "txqueuelen:%d "
++msgstr "TXキュー長:%d "
++
++#: ../lib/interface.c:905
++#, c-format
++msgid "RX bytes:%llu (%lu.%lu %s) TX bytes:%llu (%lu.%lu %s)\n"
++msgstr "RXバイト:%llu (%lu.%lu %s) TXバイト:%llu (%lu.%lu %s)\n"
++
++#: ../lib/interface.c:916
++#, c-format
++msgid "Interrupt:%d "
++msgstr "割り込み:%d "
++
++#. Only print devices using it for
++#. I/O maps
++#: ../lib/interface.c:919
++#, c-format
++msgid "Base address:0x%x "
++msgstr "ベースアドレス:0x%x "
++
++#: ../lib/interface.c:921
++#, c-format
++msgid "Memory:%lx-%lx "
++msgstr "メモリ:%lx-%lx "
++
++#: ../lib/interface.c:924
++#, c-format
++msgid "DMA chan:%x "
++msgstr "DMAチェイン:%x "
++
++#: ../lib/sockets.c:63
++#, c-format
++msgid "No usable address families found.\n"
++msgstr "利用可能なアドレスファミリが見つかりません.\n"
++
++#: ../lib/util-ank.c:229
++#, c-format
++msgid "ip: %s is invalid inet address\n"
++msgstr "ip: %sは不適切なInetアドレスです.\n"
++
++#: ../lib/util-ank.c:238
++#, c-format
++msgid "ip: %s is invalid inet prefix\n"
++msgstr "ip: %sは不適切なInetプレフィックスです\n"
++
++#: ../lib/util-ank.c:248
++#, c-format
++msgid "ip: %s is invalid IPv4 address\n"
++msgstr "ip: %sは不適切なIPv4アドレスです.\n"
++
++#: ../lib/util-ank.c:256
++#, c-format
++msgid "ip: argument is wrong: %s\n"
++msgstr "ip: 引数が間違っています: %s\n"
++
++#: ../ipmaddr.c:61
++#, c-format
++msgid "Usage: ipmaddr [ add | del ] MULTIADDR dev STRING\n"
++msgstr "使用法: ipmaddr [ add | del ] マルチキャストアドレス dev 文字列\n"
++
++#: ../ipmaddr.c:62
++#, c-format
++msgid " ipmaddr show [ dev STRING ] [ ipv4 | ipv6 | link | all ]\n"
++msgstr " ipmaddr show [ dev 文字列 ] [ ipv4 | ipv6 | link | all ]\n"
++
++#: ../ipmaddr.c:63
++#, c-format
++msgid " ipmaddr -V | -version\n"
++msgstr " ipmaddr -V | -version\n"
++
++#: ../ipmaddr.c:263
++#, c-format
++msgid "family %d "
++msgstr "ファミリ %d "
++
++#: ../ipmaddr.c:272
++#, c-format
++msgid " users %d"
++msgstr " ユーザ %d"
++
++#: ../ipmaddr.c:358
++msgid "Cannot create socket"
++msgstr "ソケットを作成できません"
++
++#: ../slattach.c:180
++#, c-format
++msgid "slattach: /dev/%s already locked!\n"
++msgstr "slattach: /dev/%s はすでにロックされています!\n"
++
++#: ../slattach.c:186
++#, c-format
++msgid "slattach: tty_lock: (%s): %s\n"
++msgstr "slattach: tty_lock: (%s): %s\n"
++
++#: ../slattach.c:192
++#, c-format
++msgid "slattach: cannot write PID file\n"
++msgstr "slattach: PIDファイルを書き込めません\n"
++
++#: ../slattach.c:202
++#, c-format
++msgid "slattach: tty_lock: UUCP user %s unknown!\n"
++msgstr "slattach: tty_lock: UUCPユーザ%sは不明です!\n"
++
++#: ../slattach.c:430
++#, c-format
++msgid "slattach: tty_hangup(DROP): %s\n"
++msgstr "slattach: tty_hangup(DROP): %s\n"
++
++#: ../slattach.c:437
++#, c-format
++msgid "slattach: tty_hangup(RAISE): %s\n"
++msgstr "slattach: tty_hangup(RAISE): %s\n"
++
++#: ../slattach.c:468
++#, c-format
++msgid "slattach: tty name too long\n"
++msgstr "slattach: tty名が長すぎます\n"
++
++#: ../slattach.c:498
++#, c-format
++msgid "slattach: tty_open: cannot get current state!\n"
++msgstr "slattach: tty_open: 現在の状態を得られません!\n"
++
++#: ../slattach.c:505
++#, c-format
++msgid "slattach: tty_open: cannot get current line disc!\n"
++msgstr "slattach: tty_open: 現在のライン・ディスクを得られません!\n"
++
++#: ../slattach.c:513
++#, c-format
++msgid "slattach: tty_open: cannot set RAW mode!\n"
++msgstr "slattach: tty_open: RAWモードを設定できません!\n"
++
++#: ../slattach.c:520
++#, c-format
++msgid "slattach: tty_open: cannot set %s bps!\n"
++msgstr "slattach: tty_open: %s bpsを設定できません!\n"
++
++#: ../slattach.c:530
++#, c-format
++msgid "slattach: tty_open: cannot set 8N1 mode!\n"
++msgstr "slattach: tty_open: 8N1モードへ設定できません!\n"
++
++#: ../slattach.c:672
++#, c-format
++msgid "slattach: setvbuf(stdout,0,_IOLBF,0) : %s\n"
++msgstr "slattach: setvbuf(stdout,0,_IOLBF,0) : %s\n"
++
++#: ../slattach.c:704
++#, c-format
++msgid "%s started"
++msgstr "%sを開始しました"
++
++#: ../slattach.c:705
++#, c-format
++msgid " on %s"
++msgstr "(%s上)"
++
++#: ../slattach.c:706
++#, c-format
++msgid " interface %s\n"
++msgstr " インタフェース %s\n"
+--- net-tools-1.60.orig/ipmaddr.c
++++ net-tools-1.60/ipmaddr.c
+@@ -291,13 +291,15 @@
+ static int multiaddr_list(int argc, char **argv)
+ {
+ struct ma_info *list = NULL;
++ size_t l;
+
+ while (argc > 0) {
+ if (strcmp(*argv, "dev") == 0) {
+ NEXT_ARG();
+- if (filter_dev[0])
++ l = strlen(*argv);
++ if (l <= 0 || l >= sizeof(filter_dev))
+ usage();
+- strcpy(filter_dev, *argv);
++ strncpy(filter_dev, *argv, sizeof (filter_dev));
+ } else if (strcmp(*argv, "all") == 0) {
+ filter_family = AF_UNSPEC;
+ } else if (strcmp(*argv, "ipv4") == 0) {
+@@ -307,9 +309,10 @@
+ } else if (strcmp(*argv, "link") == 0) {
+ filter_family = AF_PACKET;
+ } else {
+- if (filter_dev[0])
++ l = strlen(*argv);
++ if (l <= 0 || l >= sizeof(filter_dev))
+ usage();
+- strcpy(filter_dev, *argv);
++ strncpy(filter_dev, *argv, sizeof (filter_dev));
+ }
+ argv++; argc--;
+ }
+--- net-tools-1.60.orig/Makefile
++++ net-tools-1.60/Makefile
+@@ -76,7 +76,7 @@
+ NET_LIB_PATH = lib
+ NET_LIB_NAME = net-tools
+
+-PROGS := ifconfig hostname arp netstat route rarp slattach plipconfig nameif
++PROGS := ifconfig arp netstat route rarp slattach plipconfig nameif # hostname
+
+ -include config.make
+ ifeq ($(HAVE_IP_TOOLS),1)
+@@ -88,7 +88,7 @@
+
+ # Compiler and Linker Options
+ # You may need to uncomment and edit these if you are using libc5 and IPv6.
+-COPTS = -D_GNU_SOURCE -O2 -Wall -g # -I/usr/inet6/include
++COPTS = -D_GNU_SOURCE -O2 -Wall # -g -I/usr/inet6/include
+ ifeq ($(origin LOPTS), undefined)
+ LOPTS =
+ endif
+@@ -116,6 +116,18 @@
+ CFLAGS = $(COPTS) -I. -idirafter ./include/ -I$(NET_LIB_PATH)
+ LDFLAGS = $(LOPTS) -L$(NET_LIB_PATH)
+
++INSTALL = install
++INSTALL_PROGRAM = $(INSTALL) -p -o root -g root -m 755
++
++ifneq (,$(findstring debug,$(DEB_BUILD_OPTIONS)))
++CFLAGS += -g
++endif
++
++ifeq (,$(findstring nostrip,$(DEB_BUILD_OPTIONS)))
++INSTALL_PROGRAM += -s
++endif
++
++
+ SUBDIRS = man/ $(NET_LIB_PATH)/
+
+ ifeq ($(origin CC), undefined)
+@@ -223,29 +235,29 @@
+ installbin:
+ install -m 0755 -d ${BASEDIR}/sbin
+ install -m 0755 -d ${BASEDIR}/bin
+- install -m 0755 arp ${BASEDIR}/sbin
+- install -m 0755 hostname ${BASEDIR}/bin
+- install -m 0755 ifconfig ${BASEDIR}/sbin
+- install -m 0755 nameif ${BASEDIR}/sbin
+- install -m 0755 netstat ${BASEDIR}/bin
+- install -m 0755 plipconfig $(BASEDIR)/sbin
+- install -m 0755 rarp ${BASEDIR}/sbin
+- install -m 0755 route ${BASEDIR}/sbin
+- install -m 0755 slattach $(BASEDIR)/sbin
++ $(INSTALL_PROGRAM) arp ${BASEDIR}/sbin
++# $(INSTALL_PROGRAM) hostname ${BASEDIR}/bin
++ $(INSTALL_PROGRAM) ifconfig ${BASEDIR}/sbin
++ $(INSTALL_PROGRAM) nameif ${BASEDIR}/sbin
++ $(INSTALL_PROGRAM) netstat ${BASEDIR}/bin
++ $(INSTALL_PROGRAM) plipconfig $(BASEDIR)/sbin
++ $(INSTALL_PROGRAM) rarp ${BASEDIR}/sbin
++ $(INSTALL_PROGRAM) route ${BASEDIR}/sbin
++ $(INSTALL_PROGRAM) slattach $(BASEDIR)/sbin
+ ifeq ($(HAVE_IP_TOOLS),1)
+- install -m 0755 ipmaddr $(BASEDIR)/sbin
+- install -m 0755 iptunnel $(BASEDIR)/sbin
++ $(INSTALL_PROGRAM) ipmaddr $(BASEDIR)/sbin
++ $(INSTALL_PROGRAM) iptunnel $(BASEDIR)/sbin
+ endif
+ ifeq ($(HAVE_MII),1)
+- install -m 0755 mii-tool $(BASEDIR)/sbin
+-endif
+- ln -fs hostname $(BASEDIR)/bin/dnsdomainname
+- ln -fs hostname $(BASEDIR)/bin/ypdomainname
+- ln -fs hostname $(BASEDIR)/bin/nisdomainname
+- ln -fs hostname $(BASEDIR)/bin/domainname
+-ifeq ($(HAVE_AFDECnet),1)
+- ln -fs hostname $(BASEDIR)/bin/nodename
++ $(INSTALL_PROGRAM) mii-tool $(BASEDIR)/sbin
+ endif
++# ln -fs hostname $(BASEDIR)/bin/dnsdomainname
++# ln -fs hostname $(BASEDIR)/bin/ypdomainname
++# ln -fs hostname $(BASEDIR)/bin/nisdomainname
++# ln -fs hostname $(BASEDIR)/bin/domainname
++#ifeq ($(HAVE_AFDECnet),1)
++# ln -fs hostname $(BASEDIR)/bin/nodename
++#endif
+
+ savebin:
+ @for i in ${BASEDIR}/sbin/arp ${BASEDIR}/sbin/ifconfig \
+--- net-tools-1.60.orig/README
++++ net-tools-1.60/README
+@@ -10,7 +10,7 @@
+ subsystem of the Linux kernel. This includes arp, hostname, ifconfig,
+ netstat, rarp and route. Additionally, this package contains
+ utilities relating to particular network hardware types (plipconfig,
+-slattach) and advanced aspects of IP configuration (iptunnel,
++slattach, mii-tool) and advanced aspects of IP configuration (iptunnel,
+ ipmaddr).
+
+ Please include the output of "program --version" when reporting bugs.
+@@ -24,10 +24,14 @@
+
+ INSTALLING Installation instructions.
+
+- COPYING Your free copy of the GNU Public License.
+-
+ TODO Some things that need to be done.
+
++The Homepage (including CVS repository, release downloads and a form to
++request enhancements) is hosted by BerliOS Developer. Please consider to
++join the project if you want to contribute:
++
++ http://net-tools.berlios.de/
++
+
+ Notes
+ -----
+--- net-tools-1.60.orig/arp.c
++++ net-tools-1.60/arp.c
+@@ -8,7 +8,7 @@
+ * NET-3 Networking Distribution for the LINUX operating
+ * system.
+ *
+- * Version: $Id: arp.c,v 1.20 2001/04/08 17:05:05 pb Exp $
++ * Version: $Id: arp.c,v 1.25 2005/12/04 02:57:15 ecki Exp $
+ *
+ * Maintainer: Bernd 'eckes' Eckenfels, <net-tools@lina.inka.de>
+ *
+@@ -100,9 +100,10 @@
+ {
+ char host[128];
+ struct arpreq req;
+- struct sockaddr sa;
++ struct sockaddr_storage ss;
++ struct sockaddr *sa;
+ int flags = 0;
+- int err;
++ int deleted = 0;
+
+ memset((char *) &req, 0, sizeof(req));
+
+@@ -112,12 +113,13 @@
+ return (-1);
+ }
+ safe_strncpy(host, *args, (sizeof host));
+- if (ap->input(0, host, &sa) < 0) {
++ sa = (struct sockaddr *)&ss;
++ if (ap->input(0, host, sa) < 0) {
+ ap->herror(host);
+ return (-1);
+ }
+ /* If a host has more than one address, use the correct one! */
+- memcpy((char *) &req.arp_pa, (char *) &sa, sizeof(struct sockaddr));
++ memcpy((char *) &req.arp_pa, (char *) sa, sizeof(struct sockaddr));
+
+ if (hw_set)
+ req.arp_ha.sa_family = hw->type;
+@@ -148,7 +150,7 @@
+ continue;
+ }
+ if (!strcmp(*args, "dontpub")) {
+-#ifdef HAVE_ATF_DONTPUB
++#ifdef ATF_DONTPUB
+ req.arp_flags |= ATF_DONTPUB;
+ #else
+ ENOSUPP("arp", "ATF_DONTPUB");
+@@ -157,7 +159,7 @@
+ continue;
+ }
+ if (!strcmp(*args, "auto")) {
+-#ifdef HAVE_ATF_MAGIC
++#ifdef ATF_MAGIC
+ req.arp_flags |= ATF_MAGIC;
+ #else
+ ENOSUPP("arp", "ATF_MAGIC");
+@@ -177,11 +179,11 @@
+ usage();
+ if (strcmp(*args, "255.255.255.255") != 0) {
+ strcpy(host, *args);
+- if (ap->input(0, host, &sa) < 0) {
++ if (ap->input(0, host, sa) < 0) {
+ ap->herror(host);
+ return (-1);
+ }
+- memcpy((char *) &req.arp_netmask, (char *) &sa,
++ memcpy((char *) &req.arp_netmask, (char *) sa,
+ sizeof(struct sockaddr));
+ req.arp_flags |= ATF_NETMASK;
+ }
+@@ -190,35 +192,41 @@
+ }
+ usage();
+ }
++
++ // if neighter priv nor pub is given, work on both
+ if (flags == 0)
+ flags = 3;
+
+ strcpy(req.arp_dev, device);
+
+- err = -1;
++ /* unfortuatelly the kernel interface does not allow us to
++ delete private entries anlone, so we need this hack
++ to avoid "not found" errors if we try both. */
++ deleted = 0;
+
+ /* Call the kernel. */
+ if (flags & 2) {
+ if (opt_v)
+- fprintf(stderr, "arp: SIOCDARP(nopub)\n");
+- if ((err = ioctl(sockfd, SIOCDARP, &req) < 0)) {
+- if (errno == ENXIO) {
++ fprintf(stderr, "arp: SIOCDARP(dontpub)\n");
++ if (ioctl(sockfd, SIOCDARP, &req) < 0) {
++ if ((errno == ENXIO) || (errno == ENOENT)) {
+ if (flags & 1)
+- goto nopub;
++ goto dontpub;
+ printf(_("No ARP entry for %s\n"), host);
+ return (-1);
+ }
+- perror("SIOCDARP(priv)");
++ perror("SIOCDARP(dontpub)");
+ return (-1);
+- }
++ } else
++ deleted = 1;
+ }
+- if ((flags & 1) && (err)) {
+- nopub:
++ if (!deleted && (flags & 1)) {
++ dontpub:
+ req.arp_flags |= ATF_PUBL;
+ if (opt_v)
+ fprintf(stderr, "arp: SIOCDARP(pub)\n");
+ if (ioctl(sockfd, SIOCDARP, &req) < 0) {
+- if (errno == ENXIO) {
++ if ((errno == ENXIO) || (errno == ENOENT)) {
+ printf(_("No ARP entry for %s\n"), host);
+ return (-1);
+ }
+@@ -260,7 +268,8 @@
+ {
+ char host[128];
+ struct arpreq req;
+- struct sockaddr sa;
++ struct sockaddr_storage ss;
++ struct sockaddr *sa;
+ int flags;
+
+ memset((char *) &req, 0, sizeof(req));
+@@ -271,12 +280,13 @@
+ return (-1);
+ }
+ safe_strncpy(host, *args++, (sizeof host));
+- if (ap->input(0, host, &sa) < 0) {
++ sa = (struct sockaddr *)&ss;
++ if (ap->input(0, host, sa) < 0) {
+ ap->herror(host);
+ return (-1);
+ }
+ /* If a host has more than one address, use the correct one! */
+- memcpy((char *) &req.arp_pa, (char *) &sa, sizeof(struct sockaddr));
++ memcpy((char *) &req.arp_pa, (char *) sa, sizeof(struct sockaddr));
+
+ /* Fetch the hardware address. */
+ if (*args == NULL) {
+@@ -317,7 +327,7 @@
+ continue;
+ }
+ if (!strcmp(*args, "dontpub")) {
+-#ifdef HAVE_ATF_DONTPUB
++#ifdef ATF_DONTPUB
+ flags |= ATF_DONTPUB;
+ #else
+ ENOSUPP("arp", "ATF_DONTPUB");
+@@ -326,7 +336,7 @@
+ continue;
+ }
+ if (!strcmp(*args, "auto")) {
+-#ifdef HAVE_ATF_MAGIC
++#ifdef ATF_MAGIC
+ flags |= ATF_MAGIC;
+ #else
+ ENOSUPP("arp", "ATF_MAGIC");
+@@ -346,11 +356,11 @@
+ usage();
+ if (strcmp(*args, "255.255.255.255") != 0) {
+ strcpy(host, *args);
+- if (ap->input(0, host, &sa) < 0) {
++ if (ap->input(0, host, sa) < 0) {
+ ap->herror(host);
+ return (-1);
+ }
+- memcpy((char *) &req.arp_netmask, (char *) &sa,
++ memcpy((char *) &req.arp_netmask, (char *) sa,
+ sizeof(struct sockaddr));
+ flags |= ATF_NETMASK;
+ }
+@@ -445,11 +455,11 @@
+ strcat(flags, "M");
+ if (arp_flags & ATF_PUBL)
+ strcat(flags, "P");
+-#ifdef HAVE_ATF_MAGIC
++#ifdef ATF_MAGIC
+ if (arp_flags & ATF_MAGIC)
+ strcat(flags, "A");
+ #endif
+-#ifdef HAVE_ATF_DONTPUB
++#ifdef ATF_DONTPUB
+ if (arp_flags & ATF_DONTPUB)
+ strcat(flags, "!");
+ #endif
+@@ -463,7 +473,7 @@
+
+ if (!(arp_flags & ATF_COM)) {
+ if (arp_flags & ATF_PUBL)
+- printf("%-8.8s%-20.20s", "*", "*");
++ printf("%-8.8s%-20.20s", "*", _("<from_interface>"));
+ else
+ printf("%-8.8s%-20.20s", "", _("(incomplete)"));
+ } else {
+@@ -486,7 +496,7 @@
+
+ if (!(arp_flags & ATF_COM)) {
+ if (arp_flags & ATF_PUBL)
+- printf("* ");
++ printf("<from_interface> ");
+ else
+ printf(_("<incomplete> "));
+ } else {
+@@ -499,12 +509,12 @@
+ if (arp_flags & ATF_PERM)
+ printf("PERM ");
+ if (arp_flags & ATF_PUBL)
+- printf("PUP ");
+-#ifdef HAVE_ATF_MAGIC
++ printf("PUB ");
++#ifdef ATF_MAGIC
+ if (arp_flags & ATF_MAGIC)
+ printf("AUTO ");
+ #endif
+-#ifdef HAVE_ATF_DONTPUB
++#ifdef ATF_DONTPUB
+ if (arp_flags & ATF_DONTPUB)
+ printf("DONTPUB ");
+ #endif
+@@ -519,7 +529,8 @@
+ static int arp_show(char *name)
+ {
+ char host[100];
+- struct sockaddr sa;
++ struct sockaddr_storage ss;
++ struct sockaddr *sa;
+ char ip[100];
+ char hwa[100];
+ char mask[100];
+@@ -532,14 +543,15 @@
+
+ host[0] = '\0';
+
++ sa = (struct sockaddr *)&ss;
+ if (name != NULL) {
+ /* Resolve the host name. */
+ safe_strncpy(host, name, (sizeof host));
+- if (ap->input(0, host, &sa) < 0) {
++ if (ap->input(0, host, sa) < 0) {
+ ap->herror(host);
+ return (-1);
+ }
+- safe_strncpy(host, ap->sprint(&sa, 1), sizeof(host));
++ safe_strncpy(host, ap->sprint(sa, 1), sizeof(host));
+ }
+ /* Open the PROCps kernel table. */
+ if ((fp = fopen(_PATH_PROCNET_ARP, "r")) == NULL) {
+@@ -575,10 +587,10 @@
+ if (opt_n)
+ hostname = "?";
+ else {
+- if (ap->input(0, ip, &sa) < 0)
++ if (ap->input(0, ip, sa) < 0)
+ hostname = ip;
+ else
+- hostname = ap->sprint(&sa, opt_n | 0x8000);
++ hostname = ap->sprint(sa, opt_n | 0x8000);
+ if (strcmp(hostname, ip) == 0)
+ hostname = "?";
+ }
+@@ -612,11 +624,10 @@
+ static void usage(void)
+ {
+ fprintf(stderr, _("Usage:\n arp [-vn] [<HW>] [-i <if>] [-a] [<hostname>] <-Display ARP cache\n"));
+- fprintf(stderr, _(" arp [-v] [-i <if>] -d <hostname> [pub][nopub] <-Delete ARP entry\n"));
+- fprintf(stderr, _(" arp [-vnD] [<HW>] [-i <if>] -f [<filename>] <-Add entry from file\n"));
+- fprintf(stderr, _(" arp [-v] [<HW>] [-i <if>] -s <hostname> <hwaddr> [temp][nopub] <-Add entry\n"));
+- fprintf(stderr, _(" arp [-v] [<HW>] [-i <if>] -s <hostname> <hwaddr> [netmask <nm>] pub <-''-\n"));
+- fprintf(stderr, _(" arp [-v] [<HW>] [-i <if>] -Ds <hostname> <if> [netmask <nm>] pub <-''-\n\n"));
++ fprintf(stderr, _(" arp [-v] [-i <if>] -d <host> [pub] <-Delete ARP entry\n"));
++ fprintf(stderr, _(" arp [-vnD] [<HW>] [-i <if>] -f [<filename>] <-Add entry from file\n"));
++ fprintf(stderr, _(" arp [-v] [<HW>] [-i <if>] -s <host> <hwaddr> [temp] <-Add entry\n"));
++ fprintf(stderr, _(" arp [-v] [<HW>] [-i <if>] -Ds <host> <if> [netmask <nm>] pub <-''-\n\n"));
+
+ fprintf(stderr, _(" -a display (all) hosts in alternative (BSD) style\n"));
+ fprintf(stderr, _(" -s, --set set a new ARP entry\n"));
+--- net-tools-1.60.orig/config.in
++++ net-tools-1.60/config.in
+@@ -49,16 +49,16 @@
+ *
+ bool 'UNIX protocol family' HAVE_AFUNIX y
+ bool 'INET (TCP/IP) protocol family' HAVE_AFINET y
+-bool 'INET6 (IPv6) protocol family' HAVE_AFINET6 n
++bool 'INET6 (IPv6) protocol family' HAVE_AFINET6 y
+ bool 'Novell IPX/SPX protocol family' HAVE_AFIPX y
+ bool 'Appletalk DDP protocol family' HAVE_AFATALK y
+ bool 'AX25 (packet radio) protocol family' HAVE_AFAX25 y
+ bool 'NET/ROM (packet radio) protocol family' HAVE_AFNETROM y
+-bool 'Rose (packet radio) protocol family' HAVE_AFROSE n
++bool 'Rose (packet radio) protocol family' HAVE_AFROSE y
+ bool 'X.25 (CCITT) protocol family' HAVE_AFX25 y
+-bool 'Econet protocol family' HAVE_AFECONET n
++bool 'Econet protocol family' HAVE_AFECONET y
+ bool 'DECnet protocol family' HAVE_AFDECnet n
+-bool 'Ash protocol family' HAVE_AFASH n
++bool 'Ash protocol family' HAVE_AFASH y
+ *
+ *
+ * Device Hardware types.
+@@ -71,21 +71,23 @@
+ bool 'STRIP (Metricom radio) support' HAVE_HWSTRIP y
+ bool 'Token ring (generic) support' HAVE_HWTR y
+ bool 'AX25 (packet radio) support' HAVE_HWAX25 y
+-bool 'Rose (packet radio) support' HAVE_HWROSE n
++bool 'Rose (packet radio) support' HAVE_HWROSE y
+ bool 'NET/ROM (packet radio) support' HAVE_HWNETROM y
+ bool 'X.25 (generic) support' HAVE_HWX25 y
+ bool 'DLCI/FRAD (frame relay) support' HAVE_HWFR y
+-bool 'SIT (IPv6-in-IPv4) support' HAVE_HWSIT n
+-bool 'FDDI (generic) support' HAVE_HWFDDI n
+-bool 'HIPPI (generic) support' HAVE_HWHIPPI n
+-bool 'Ash hardware support' HAVE_HWASH n
+-bool '(Cisco)-HDLC/LAPB support' HAVE_HWHDLCLAPB n
++bool 'SIT (IPv6-in-IPv4) support' HAVE_HWSIT y
++bool 'FDDI (generic) support' HAVE_HWFDDI y
++bool 'HIPPI (generic) support' HAVE_HWHIPPI y
++bool 'Ash hardware support' HAVE_HWASH y
++bool '(Cisco)-HDLC/LAPB support' HAVE_HWHDLCLAPB y
+ bool 'IrDA support' HAVE_HWIRDA y
+-bool 'Econet hardware support' HAVE_HWEC n
++bool 'Econet hardware support' HAVE_HWEC y
++bool 'Generic EUI-64 hardware support' HAVE_HWEUI64 y
++
+ *
+ *
+ * Other Features.
+ *
+-bool 'IP Masquerading support' HAVE_FW_MASQUERADE n
+-bool 'Build iptunnel and ipmaddr' HAVE_IP_TOOLS n
+-bool 'Build mii-tool' HAVE_MII n
++bool 'IP Masquerading support' HAVE_FW_MASQUERADE y
++bool 'Build iptunnel and ipmaddr' HAVE_IP_TOOLS y
++bool 'Build mii-tool' HAVE_MII y
+--- net-tools-1.60.orig/hostname.c
++++ net-tools-1.60/hostname.c
+@@ -9,20 +9,19 @@
+ * dnsdmoainname
+ * nisdomainname {name|-F file}
+ *
+- * Version: hostname 1.96 (1996-02-18)
++ * Version: hostname 1.101 (2003-10-11)
+ *
+ * Author: Peter Tobias <tobias@et-inf.fho-emden.de>
+ *
+ * Changes:
+- * {1.90} Peter Tobias : Added -a and -i options.
+- * {1.91} Bernd Eckenfels : -v,-V rewritten, long_opts
+- * (major rewrite), usage.
+- *960120 {1.95} Bernd Eckenfels : -y/nisdomainname - support for get/
+- * setdomainname added
+- *960218 {1.96} Bernd Eckenfels : netinet/in.h added
+- *980629 {1.97} Arnaldo Carvalho de Melo : gettext instead of catgets for i18n
+- *20000213 {1.99} Arnaldo Carvalho de Melo : fixed some i18n strings
++ * {1.90} Peter Tobias : Added -a and -i options.
++ * {1.91} Bernd Eckenfels : -v,-V rewritten, long_opts (major rewrite), usage.
++ *19960120 {1.95} Bernd Eckenfels : -y/nisdomainname - support for get/setdomainname added
++ *19960218 {1.96} Bernd Eckenfels : netinet/in.h added
++ *19980629 {1.97} Arnaldo Carvalho de Melo : gettext instead of catgets for i18n
++ *20000213 {1.99} Arnaldo Carvalho de Melo : fixed some i18n strings
+ *20010404 {1.100} Arnaldo Carvalho de Melo: use setlocale
++ *20031011 {1.101} Maik Broemme: gcc 3.x fixes (default: break)
+ *
+ * This program is free software; you can redistribute it
+ * and/or modify it under the terms of the GNU General
+@@ -31,7 +30,9 @@
+ * your option) any later version.
+ */
+ #include <stdio.h>
++#include <stdlib.h>
+ #include <unistd.h>
++#include <stdlib.h>
+ #include <getopt.h>
+ #include <string.h>
+ #include <netdb.h>
+@@ -78,6 +79,7 @@
+ fprintf(stderr, _("%s: name too long\n"), program_name);
+ break;
+ default:
++ break;
+ }
+ exit(1);
+ }
+@@ -97,7 +99,6 @@
+ case EINVAL:
+ fprintf(stderr, _("%s: name too long\n"), program_name);
+ break;
+- default:
+ }
+ exit(1);
+ };
+@@ -116,7 +117,6 @@
+ case EINVAL:
+ fprintf(stderr, _("%s: name too long\n"), program_name);
+ break;
+- default:
+ }
+ exit(1);
+ };
+@@ -173,7 +173,6 @@
+ *p = '\0';
+ printf("%s\n", hp->h_name);
+ break;
+- default:
+ }
+ }
+
+@@ -326,11 +325,12 @@
+ break;
+ case 'V':
+ version();
++ break; // not reached
+ case '?':
+ case 'h':
+ default:
+ usage();
+-
++ break; // not reached
+ };
+
+
+--- net-tools-1.60.orig/ifconfig.c
++++ net-tools-1.60/ifconfig.c
+@@ -3,7 +3,7 @@
+ * that either displays or sets the characteristics of
+ * one or more of the system's networking interfaces.
+ *
+- * Version: $Id: ifconfig.c,v 1.50 2001/04/13 18:25:18 pb Exp $
++ * Version: $Id: ifconfig.c,v 1.57 2002/12/10 00:56:41 ecki Exp $
+ *
+ * Author: Fred N. van Kempen, <waltje@uwalt.nl.mugnet.org>
+ * and others. Copyright 1993 MicroWalt Corporation
+@@ -88,7 +88,6 @@
+ char *Release = RELEASE, *Version = "ifconfig 1.42 (2001-04-13)";
+
+ int opt_a = 0; /* show all interfaces */
+-int opt_i = 0; /* show the statistics */
+ int opt_v = 0; /* debugging output flag */
+
+ int addr_family = 0; /* currently selected AF */
+@@ -105,7 +104,7 @@
+ int res;
+
+ if (ife_short)
+- printf(_("Iface MTU Met RX-OK RX-ERR RX-DRP RX-OVR TX-OK TX-ERR TX-DRP TX-OVR Flg\n"));
++ printf(_("Iface MTU Met RX-OK RX-ERR RX-DRP RX-OVR TX-OK TX-ERR TX-DRP TX-OVR Flg\n"));
+
+ if (!ifname) {
+ res = for_all_interfaces(do_if_print, &opt_a);
+@@ -127,7 +126,7 @@
+
+ safe_strncpy(ifr.ifr_name, ifname, IFNAMSIZ);
+ if (ioctl(skfd, SIOCGIFFLAGS, &ifr) < 0) {
+- fprintf(stderr, _("%s: unknown interface: %s\n"),
++ fprintf(stderr, _("%s: ERROR while getting interface flags: %s\n"),
+ ifname, strerror(errno));
+ return (-1);
+ }
+@@ -159,7 +158,7 @@
+
+ safe_strncpy(ifr.ifr_name, ifname, IFNAMSIZ);
+ if (ioctl(fd, SIOCGIFFLAGS, &ifr) < 0) {
+- fprintf(stderr, _("%s: unknown interface: %s\n"),
++ fprintf(stderr, _("%s: ERROR while getting interface flags: %s\n"),
+ ifname, strerror(errno));
+ return -1;
+ }
+@@ -172,9 +171,35 @@
+ return (0);
+ }
+
++/** test is a specified flag is set */
++static int test_flag(char *ifname, short flags)
++{
++ struct ifreq ifr;
++ int fd;
++
++ if (strchr(ifname, ':')) {
++ /* This is a v4 alias interface. Downing it via a socket for
++ another AF may have bad consequences. */
++ fd = get_socket_for_af(AF_INET);
++ if (fd < 0) {
++ fprintf(stderr, _("No support for INET on this system.\n"));
++ return -1;
++ }
++ } else
++ fd = skfd;
++
++ safe_strncpy(ifr.ifr_name, ifname, IFNAMSIZ);
++ if (ioctl(fd, SIOCGIFFLAGS, &ifr) < 0) {
++ fprintf(stderr, _("%s: ERROR while testing interface flags: %s\n"),
++ ifname, strerror(errno));
++ return -1;
++ }
++ return (ifr.ifr_flags & flags);
++}
++
+ static void usage(void)
+ {
+- fprintf(stderr, _("Usage:\n ifconfig [-a] [-i] [-v] [-s] <interface> [[<AF>] <address>]\n"));
++ fprintf(stderr, _("Usage:\n ifconfig [-a] [-v] [-s] <interface> [[<AF>] <address>]\n"));
+ #if HAVE_AFINET
+ fprintf(stderr, _(" [add <address>[/<prefixlen>]]\n"));
+ fprintf(stderr, _(" [del <address>[/<prefixlen>]]\n"));
+@@ -208,7 +233,7 @@
+ static void version(void)
+ {
+ fprintf(stderr, "%s\n%s\n", Release, Version);
+- exit(0);
++ exit(E_USAGE);
+ }
+
+ static int set_netmask(int skfd, struct ifreq *ifr, struct sockaddr *sa)
+@@ -222,18 +247,19 @@
+ strerror(errno));
+ err = 1;
+ }
+- return 0;
++ return err;
+ }
+
+ int main(int argc, char **argv)
+ {
+ struct sockaddr sa;
++ struct sockaddr samask;
+ struct sockaddr_in sin;
+ char host[128];
+ struct aftype *ap;
+ struct hwtype *hw;
+ struct ifreq ifr;
+- int goterr = 0, didnetmask = 0;
++ int goterr = 0, didnetmask = 0, neednetmask=0;
+ char **spp;
+ int fd;
+ #if HAVE_AFINET6
+@@ -388,6 +414,8 @@
+ }
+ if (!strcmp(*spp, "-promisc")) {
+ goterr |= clr_flag(ifr.ifr_name, IFF_PROMISC);
++ if (test_flag(ifr.ifr_name, IFF_PROMISC) > 0)
++ fprintf(stderr, _("Warning: Interface %s still in promisc mode... maybe other application is running?\n"), ifr.ifr_name);
+ spp++;
+ continue;
+ }
+@@ -398,6 +426,8 @@
+ }
+ if (!strcmp(*spp, "-multicast")) {
+ goterr |= clr_flag(ifr.ifr_name, IFF_MULTICAST);
++ if (test_flag(ifr.ifr_name, IFF_MULTICAST) > 0)
++ fprintf(stderr, _("Warning: Interface %s still in MULTICAST mode.\n"), ifr.ifr_name);
+ spp++;
+ continue;
+ }
+@@ -408,6 +438,8 @@
+ }
+ if (!strcmp(*spp, "-allmulti")) {
+ goterr |= clr_flag(ifr.ifr_name, IFF_ALLMULTI);
++ if (test_flag(ifr.ifr_name, IFF_MULTICAST) > 0)
++ fprintf(stderr, _("Warning: Interface %s still in ALLMULTI mode.\n"), ifr.ifr_name);
+ spp++;
+ continue;
+ }
+@@ -430,6 +462,8 @@
+ if (!strcmp(*spp, "-dynamic")) {
+ goterr |= clr_flag(ifr.ifr_name, IFF_DYNAMIC);
+ spp++;
++ if (test_flag(ifr.ifr_name, IFF_MULTICAST) > 0)
++ fprintf(stderr, _("Warning: Interface %s still in DYNAMIC mode.\n"), ifr.ifr_name);
+ continue;
+ }
+ #endif
+@@ -486,6 +520,8 @@
+
+ if (!strcmp(*spp, "-broadcast")) {
+ goterr |= clr_flag(ifr.ifr_name, IFF_BROADCAST);
++ if (test_flag(ifr.ifr_name, IFF_MULTICAST) > 0)
++ fprintf(stderr, _("Warning: Interface %s still in BROADCAST mode.\n"), ifr.ifr_name);
+ spp++;
+ continue;
+ }
+@@ -493,7 +529,10 @@
+ if (*++spp != NULL) {
+ safe_strncpy(host, *spp, (sizeof host));
+ if (ap->input(0, host, &sa) < 0) {
+- ap->herror(host);
++ if (ap->herror)
++ ap->herror(host);
++ else
++ fprintf(stderr, _("ifconfig: Error resolving '%s' for broadcast\n"), host);
+ goterr = 1;
+ spp++;
+ continue;
+@@ -515,7 +554,10 @@
+ usage();
+ safe_strncpy(host, *spp, (sizeof host));
+ if (ap->input(0, host, &sa) < 0) {
+- ap->herror(host);
++ if (ap->herror)
++ ap->herror(host);
++ else
++ fprintf(stderr, _("ifconfig: Error resolving '%s' for dstaddr\n"), host);
+ goterr = 1;
+ spp++;
+ continue;
+@@ -535,13 +577,16 @@
+ usage();
+ safe_strncpy(host, *spp, (sizeof host));
+ if (ap->input(0, host, &sa) < 0) {
+- ap->herror(host);
++ if (ap->herror)
++ ap->herror(host);
++ else
++ fprintf(stderr, _("ifconfig: Error resolving '%s' for netmask\n"), host);
+ goterr = 1;
+ spp++;
+ continue;
+ }
+ didnetmask++;
+- goterr = set_netmask(ap->fd, &ifr, &sa);
++ goterr |= set_netmask(ap->fd, &ifr, &sa);
+ spp++;
+ continue;
+ }
+@@ -613,6 +658,8 @@
+ if (!strcmp(*spp, "-pointopoint")) {
+ goterr |= clr_flag(ifr.ifr_name, IFF_POINTOPOINT);
+ spp++;
++ if (test_flag(ifr.ifr_name, IFF_MULTICAST) > 0)
++ fprintf(stderr, _("Warning: Interface %s still in POINTOPOINT mode.\n"), ifr.ifr_name);
+ continue;
+ }
+ if (!strcmp(*spp, "pointopoint")) {
+@@ -620,7 +667,10 @@
+ spp++;
+ safe_strncpy(host, *spp, (sizeof host));
+ if (ap->input(0, host, &sa)) {
+- ap->herror(host);
++ if (ap->herror)
++ ap->herror(host);
++ else
++ fprintf(stderr, _("ifconfig: Error resolving '%s' for pointopoint\n"), host);
+ goterr = 1;
+ spp++;
+ continue;
+@@ -661,8 +711,12 @@
+ memcpy((char *) &ifr.ifr_hwaddr, (char *) &sa,
+ sizeof(struct sockaddr));
+ if (ioctl(skfd, SIOCSIFHWADDR, &ifr) < 0) {
+- fprintf(stderr, "SIOCSIFHWADDR: %s\n",
+- strerror(errno));
++ if (errno == EBUSY)
++ fprintf(stderr, "SIOCSIFHWADDR: %s - you may need to down the interface\n",
++ strerror(errno));
++ else
++ fprintf(stderr, "SIOCSIFHWADDR: %s\n",
++ strerror(errno));
+ goterr = 1;
+ }
+ spp++;
+@@ -681,12 +735,15 @@
+ usage();
+ *cp = 0;
+ } else {
+- prefix_len = 0;
++ prefix_len = 128;
+ }
+ safe_strncpy(host, *spp, (sizeof host));
+ if (inet6_aftype.input(1, host,
+ (struct sockaddr *) &sa6) < 0) {
+- inet6_aftype.herror(host);
++ if (inet6_aftype.herror)
++ inet6_aftype.herror(host);
++ else
++ fprintf(stderr, _("ifconfig: Error resolving '%s' for add\n"), host);
+ goterr = 1;
+ spp++;
+ continue;
+@@ -771,7 +828,7 @@
+ usage();
+ *cp = 0;
+ } else {
+- prefix_len = 0;
++ prefix_len = 128;
+ }
+ safe_strncpy(host, *spp, (sizeof host));
+ if (inet6_aftype.input(1, host,
+@@ -800,6 +857,8 @@
+ }
+ ifr6.ifr6_ifindex = ifr.ifr_ifindex;
+ ifr6.ifr6_prefixlen = prefix_len;
++ if (opt_v)
++ fprintf(stderr, "now deleting: ioctl(SIOCDIFADDR,{ifindex=%d,prefixlen=%ld})\n",ifr.ifr_ifindex,prefix_len);
+ if (ioctl(fd, SIOCDIFADDR, &ifr6) < 0) {
+ fprintf(stderr, "SIOCDIFADDR: %s\n",
+ strerror(errno));
+@@ -859,7 +918,7 @@
+ usage();
+ *cp = 0;
+ } else {
+- prefix_len = 0;
++ prefix_len = 128;
+ }
+ safe_strncpy(host, *spp, (sizeof host));
+ if (inet6_aftype.input(1, host, (struct sockaddr *) &sa6) < 0) {
+@@ -903,7 +962,7 @@
+ /* FIXME: sa is too small for INET6 addresses, inet6 should use that too,
+ broadcast is unexpected */
+ if (ap->getmask) {
+- switch (ap->getmask(host, &sa, NULL)) {
++ switch (ap->getmask(host, &samask, NULL)) {
+ case -1:
+ usage();
+ break;
+@@ -911,8 +970,8 @@
+ if (didnetmask)
+ usage();
+
+- goterr = set_netmask(skfd, &ifr, &sa);
+- didnetmask++;
++ // remeber to set the netmask from samask later
++ neednetmask = 1;
+ break;
+ }
+ }
+@@ -921,9 +980,11 @@
+ exit(1);
+ }
+ if (ap->input(0, host, &sa) < 0) {
+- ap->herror(host);
+- fprintf(stderr, _("ifconfig: `--help' gives usage information.\n"));
+- exit(1);
++ if (ap->herror)
++ ap->herror(host);
++ else
++ fprintf(stderr,_("ifconfig: error resolving '%s' to set address for af=%s\n"), host, ap->name); fprintf(stderr,
++ _("ifconfig: `--help' gives usage information.\n")); exit(1);
+ }
+ memcpy((char *) &ifr.ifr_addr, (char *) &sa, sizeof(struct sockaddr));
+ {
+@@ -980,6 +1041,14 @@
+ spp++;
+ }
+
++ if (neednetmask) {
++ goterr |= set_netmask(skfd, &ifr, &samask);
++ didnetmask++;
++ }
++
++ if (opt_v && goterr)
++ fprintf(stderr, _("WARNING: at least one error occured. (%d)\n"), goterr);
++
+ return (goterr);
+ }
+
+--- net-tools-1.60.orig/netstat.c
++++ net-tools-1.60/netstat.c
+@@ -6,7 +6,7 @@
+ * NET-3 Networking Distribution for the LINUX operating
+ * system.
+ *
+- * Version: $Id: netstat.c,v 1.43 2001/04/15 14:41:17 pb Exp $
++ * Version: $Id: netstat.c,v 1.55 2007/12/01 19:00:40 ecki Exp $
+ *
+ * Authors: Fred Baumgarten, <dc6iq@insu1.etec.uni-karlsruhe.de>
+ * Fred N. van Kempen, <waltje@uwalt.nl.mugnet.org>
+@@ -94,6 +94,7 @@
+ #include "sockets.h"
+ #include "interface.h"
+ #include "util.h"
++#include "proc.h"
+
+ #define PROGNAME_WIDTH 20
+
+@@ -153,7 +154,7 @@
+ FILE *procinfo;
+
+ #define INFO_GUTS1(file,name,proc) \
+- procinfo = fopen((file), "r"); \
++ procinfo = proc_fopen((file)); \
+ if (procinfo == NULL) { \
+ if (errno != ENOENT) { \
+ perror((file)); \
+@@ -174,7 +175,7 @@
+ #if HAVE_AFINET6
+ #define INFO_GUTS2(file,proc) \
+ lnr = 0; \
+- procinfo = fopen((file), "r"); \
++ procinfo = proc_fopen((file)); \
+ if (procinfo != NULL) { \
+ do { \
+ if (fgets(buffer, sizeof(buffer), procinfo)) \
+@@ -216,7 +217,7 @@
+
+ static struct prg_node {
+ struct prg_node *next;
+- int inode;
++ unsigned long inode;
+ char name[PROGNAME_WIDTH];
+ } *prg_hash[PRG_HASH_SIZE];
+
+@@ -249,7 +250,7 @@
+ /* NOT working as of glibc-2.0.7: */
+ #undef DIRENT_HAVE_D_TYPE_WORKS
+
+-static void prg_cache_add(int inode, char *name)
++static void prg_cache_add(unsigned long inode, char *name)
+ {
+ unsigned hi = PRG_HASHIT(inode);
+ struct prg_node **pnp,*pn;
+@@ -272,7 +273,7 @@
+ strcpy(pn->name,name);
+ }
+
+-static const char *prg_cache_get(int inode)
++static const char *prg_cache_get(unsigned long inode)
+ {
+ unsigned hi=PRG_HASHIT(inode);
+ struct prg_node *pn;
+@@ -295,16 +296,18 @@
+ prg_cache_loaded=0;
+ }
+
+-static void extract_type_1_socket_inode(const char lname[], long * inode_p) {
++static int extract_type_1_socket_inode(const char lname[], unsigned long * inode_p) {
+
+ /* If lname is of the form "socket:[12345]", extract the "12345"
+ as *inode_p. Otherwise, return -1 as *inode_p.
+ */
+
+- if (strlen(lname) < PRG_SOCKET_PFXl+3) *inode_p = -1;
+- else if (memcmp(lname, PRG_SOCKET_PFX, PRG_SOCKET_PFXl)) *inode_p = -1;
+- else if (lname[strlen(lname)-1] != ']') *inode_p = -1;
+- else {
++ if (strlen(lname) < PRG_SOCKET_PFXl+3) return(-1);
++
++ if (memcmp(lname, PRG_SOCKET_PFX, PRG_SOCKET_PFXl)) return(-1);
++ if (lname[strlen(lname)-1] != ']') return(-1);
++
++ {
+ char inode_str[strlen(lname + 1)]; /* e.g. "12345" */
+ const int inode_str_len = strlen(lname) - PRG_SOCKET_PFXl - 1;
+ char *serr;
+@@ -313,37 +316,41 @@
+ inode_str[inode_str_len] = '\0';
+ *inode_p = strtol(inode_str,&serr,0);
+ if (!serr || *serr || *inode_p < 0 || *inode_p >= INT_MAX)
+- *inode_p = -1;
++ return(-1);
+ }
++ return(0);
+ }
+
+
+
+-static void extract_type_2_socket_inode(const char lname[], long * inode_p) {
++static int extract_type_2_socket_inode(const char lname[], unsigned long * inode_p) {
+
+ /* If lname is of the form "[0000]:12345", extract the "12345"
+ as *inode_p. Otherwise, return -1 as *inode_p.
+ */
+
+- if (strlen(lname) < PRG_SOCKET_PFX2l+1) *inode_p = -1;
+- else if (memcmp(lname, PRG_SOCKET_PFX2, PRG_SOCKET_PFX2l)) *inode_p = -1;
+- else {
++ if (strlen(lname) < PRG_SOCKET_PFX2l+1) return(-1);
++ if (memcmp(lname, PRG_SOCKET_PFX2, PRG_SOCKET_PFX2l)) return(-1);
++
++ {
+ char *serr;
+
+ *inode_p=strtol(lname + PRG_SOCKET_PFX2l,&serr,0);
+ if (!serr || *serr || *inode_p < 0 || *inode_p >= INT_MAX)
+- *inode_p = -1;
++ return(-1);
+ }
++ return(0);
+ }
+
+
+
++
+ static void prg_cache_load(void)
+ {
+ char line[LINE_MAX],eacces=0;
+ int procfdlen,fd,cmdllen,lnamelen;
+ char lname[30],cmdlbuf[512],finbuf[PROGNAME_WIDTH];
+- long inode;
++ unsigned long inode;
+ const char *cs,*cmdlp;
+ DIR *dirproc=NULL,*dirfd=NULL;
+ struct dirent *direproc,*direfd;
+@@ -386,11 +393,9 @@
+ lnamelen=readlink(line,lname,sizeof(lname)-1);
+ lname[lnamelen] = '\0'; /*make it a null-terminated string*/
+
+- extract_type_1_socket_inode(lname, &inode);
+-
+- if (inode < 0) extract_type_2_socket_inode(lname, &inode);
+-
+- if (inode < 0) continue;
++ if (extract_type_1_socket_inode(lname, &inode) < 0)
++ if (extract_type_2_socket_inode(lname, &inode) < 0)
++ continue;
+
+ if (!cmdlp) {
+ if (procfdlen - PATH_FD_SUFFl + PATH_CMDLINEl >=
+@@ -450,7 +455,7 @@
+ char buffer[256], dev[16];
+ int st, vs, vr, sendq, recvq, ret;
+
+- f = fopen(_PATH_PROCNET_NR, "r");
++ f = proc_fopen(_PATH_PROCNET_NR);
+ if (f == NULL) {
+ if (errno != ENOENT) {
+ perror(_PATH_PROCNET_NR);
+@@ -527,15 +532,15 @@
+
+ if (flag_exp > 1) {
+ if (!(flag_not & FLAG_NUM_USER) && ((pw = getpwuid(uid)) != NULL))
+- printf("%-10s ", pw->pw_name);
++ printf(" %-10s ", pw->pw_name);
+ else
+- printf("%-10d ", uid);
+- printf("%-10ld ",inode);
++ printf(" %-10d ", uid);
++ printf("%-10lu ",inode);
+ }
+ if (flag_prg)
+- printf("%-" PROGNAME_WIDTHs "s",prg_cache_get(inode));
++ printf(" %-16s",prg_cache_get(inode));
+ if (flag_opt)
+- printf("%s", timers);
++ printf(" %s", timers);
+ putchar('\n');
+ }
+
+@@ -646,7 +651,7 @@
+ #if HAVE_AFX25
+ static int x25_info(void)
+ {
+- FILE *f=fopen(_PATH_PROCNET_X25, "r");
++ FILE *f=proc_fopen(_PATH_PROCNET_X25);
+ char buffer[256],dev[16];
+ int st,vs,vr,sendq,recvq,lci;
+ static char *x25_state[5]=
+@@ -657,7 +662,7 @@
+ "ESTABLISHED",
+ "RECOVERY"
+ };
+- if(!(f=fopen(_PATH_PROCNET_X25, "r")))
++ if(!(f=proc_fopen(_PATH_PROCNET_X25)))
+ {
+ if (errno != ENOENT) {
+ perror(_PATH_PROCNET_X25);
+@@ -705,6 +710,7 @@
+ unsigned long rxq, txq, time_len, retr, inode;
+ int num, local_port, rem_port, d, state, uid, timer_run, timeout;
+ char rem_addr[128], local_addr[128], timers[64], buffer[1024], more[512];
++ char *protname;
+ struct aftype *ap;
+ #if HAVE_AFINET6
+ struct sockaddr_in6 localaddr, remaddr;
+@@ -719,12 +725,13 @@
+ return;
+
+ num = sscanf(line,
+- "%d: %64[0-9A-Fa-f]:%X %64[0-9A-Fa-f]:%X %X %lX:%lX %X:%lX %lX %d %d %ld %512s\n",
++ "%d: %64[0-9A-Fa-f]:%X %64[0-9A-Fa-f]:%X %X %lX:%lX %X:%lX %lX %d %d %lu %512s\n",
+ &d, local_addr, &local_port, rem_addr, &rem_port, &state,
+ &txq, &rxq, &timer_run, &time_len, &retr, &uid, &timeout, &inode, more);
+
+ if (strlen(local_addr) > 8) {
+ #if HAVE_AFINET6
++ protname = "tcp6";
+ /* Demangle what the kernel gives us */
+ sscanf(local_addr, "%08X%08X%08X%08X",
+ &in6.s6_addr32[0], &in6.s6_addr32[1],
+@@ -740,6 +747,7 @@
+ remaddr.sin6_family = AF_INET6;
+ #endif
+ } else {
++ protname = "tcp";
+ sscanf(local_addr, "%X",
+ &((struct sockaddr_in *) &localaddr)->sin_addr.s_addr);
+ sscanf(rem_addr, "%X",
+@@ -813,8 +821,8 @@
+ timer_run, (double) time_len / HZ, retr, timeout);
+ break;
+ }
+- printf("tcp %6ld %6ld %-23s %-23s %-12s",
+- rxq, txq, local_addr, rem_addr, _(tcp_state[state]));
++ printf("%-4s %6ld %6ld %-*s %-*s %-11s",
++ protname, rxq, txq, netmax(23,strlen(local_addr)), local_addr, netmax(23,strlen(rem_addr)), rem_addr, _(tcp_state[state]));
+
+ finish_this_one(uid,inode,timers);
+ }
+@@ -831,6 +839,7 @@
+ char buffer[8192], local_addr[64], rem_addr[64];
+ char *udp_state, timers[64], more[512];
+ int num, local_port, rem_port, d, state, timer_run, uid, timeout;
++ char *protname;
+ #if HAVE_AFINET6
+ struct sockaddr_in6 localaddr, remaddr;
+ char addr6[INET6_ADDRSTRLEN];
+@@ -847,13 +856,14 @@
+
+ more[0] = '\0';
+ num = sscanf(line,
+- "%d: %64[0-9A-Fa-f]:%X %64[0-9A-Fa-f]:%X %X %lX:%lX %X:%lX %lX %d %d %ld %512s\n",
++ "%d: %64[0-9A-Fa-f]:%X %64[0-9A-Fa-f]:%X %X %lX:%lX %X:%lX %lX %d %d %lu %512s\n",
+ &d, local_addr, &local_port,
+ rem_addr, &rem_port, &state,
+ &txq, &rxq, &timer_run, &time_len, &retr, &uid, &timeout, &inode, more);
+
+ if (strlen(local_addr) > 8) {
+ #if HAVE_AFINET6
++ protname="udp6";
+ sscanf(local_addr, "%08X%08X%08X%08X",
+ &in6.s6_addr32[0], &in6.s6_addr32[1],
+ &in6.s6_addr32[2], &in6.s6_addr32[3]);
+@@ -868,6 +878,7 @@
+ remaddr.sin6_family = AF_INET6;
+ #endif
+ } else {
++ protname="udp";
+ sscanf(local_addr, "%X",
+ &((struct sockaddr_in *) &localaddr)->sin_addr.s_addr);
+ sscanf(rem_addr, "%X",
+@@ -953,8 +964,8 @@
+ retr, timeout);
+ break;
+ }
+- printf("udp %6ld %6ld %-23s %-23s %-12s",
+- rxq, txq, local_addr, rem_addr, udp_state);
++ printf("%-4s %6ld %6ld %-23s %-23s %-11s",
++ protname, rxq, txq, local_addr, rem_addr, udp_state);
+
+ finish_this_one(uid,inode,timers);
+ }
+@@ -971,6 +982,7 @@
+ char buffer[8192], local_addr[64], rem_addr[64];
+ char timers[64], more[512];
+ int num, local_port, rem_port, d, state, timer_run, uid, timeout;
++ char *protname;
+ #if HAVE_AFINET6
+ struct sockaddr_in6 localaddr, remaddr;
+ char addr6[INET6_ADDRSTRLEN];
+@@ -987,12 +999,13 @@
+
+ more[0] = '\0';
+ num = sscanf(line,
+- "%d: %64[0-9A-Fa-f]:%X %64[0-9A-Fa-f]:%X %X %lX:%lX %X:%lX %lX %d %d %ld %512s\n",
++ "%d: %64[0-9A-Fa-f]:%X %64[0-9A-Fa-f]:%X %X %lX:%lX %X:%lX %lX %d %d %lu %512s\n",
+ &d, local_addr, &local_port, rem_addr, &rem_port, &state,
+ &txq, &rxq, &timer_run, &time_len, &retr, &uid, &timeout, &inode, more);
+
+ if (strlen(local_addr) > 8) {
+ #if HAVE_AFINET6
++ protname = "raw6";
+ sscanf(local_addr, "%08X%08X%08X%08X",
+ &in6.s6_addr32[0], &in6.s6_addr32[1],
+ &in6.s6_addr32[2], &in6.s6_addr32[3]);
+@@ -1007,6 +1020,7 @@
+ remaddr.sin6_family = AF_INET6;
+ #endif
+ } else {
++ protname = "raw";
+ sscanf(local_addr, "%X",
+ &((struct sockaddr_in *) &localaddr)->sin_addr.s_addr);
+ sscanf(rem_addr, "%X",
+@@ -1074,8 +1088,8 @@
+ retr, timeout);
+ break;
+ }
+- printf("raw %6ld %6ld %-23s %-23s %-12d",
+- rxq, txq, local_addr, rem_addr, state);
++ printf("%-4s %6ld %6ld %-23s %-23s %-11d",
++ protname, rxq, txq, local_addr, rem_addr, state);
+
+ finish_this_one(uid,inode,timers);
+ }
+@@ -1099,9 +1113,9 @@
+ static int has = 0;
+ char path[MAXPATHLEN], ss_flags[32];
+ char *ss_proto, *ss_state, *ss_type;
+- int num, state, type, inode;
++ int num, state, type;
+ void *d;
+- unsigned long refcnt, proto, flags;
++ unsigned long refcnt, proto, flags, inode;
+
+ if (nr == 0) {
+ if (strstr(line, "Inode"))
+@@ -1109,14 +1123,14 @@
+ return;
+ }
+ path[0] = '\0';
+- num = sscanf(line, "%p: %lX %lX %lX %X %X %d %s",
++ num = sscanf(line, "%p: %lX %lX %lX %X %X %lu %s",
+ &d, &refcnt, &proto, &flags, &type, &state, &inode, path);
+ if (num < 6) {
+ fprintf(stderr, _("warning, got bogus unix line.\n"));
+ return;
+ }
+ if (!(has & HAS_INODE))
+- snprintf(path,sizeof(path),"%d",inode);
++ snprintf(path,sizeof(path),"%lu",inode);
+
+ if (!flag_all) {
+ if ((state == SS_UNCONNECTED) && (flags & SO_ACCEPTCON)) {
+@@ -1208,9 +1222,9 @@
+ printf("%-5s %-6ld %-11s %-10s %-13s ",
+ ss_proto, refcnt, ss_flags, ss_type, ss_state);
+ if (has & HAS_INODE)
+- printf("%-6d ",inode);
++ printf("%-8lu ",inode);
+ else
+- printf("- ");
++ printf("- ");
+ if (flag_prg)
+ printf("%-" PROGNAME_WIDTHs "s",(has & HAS_INODE?prg_cache_get(inode):"-"));
+ puts(path);
+@@ -1229,7 +1243,7 @@
+ printf(_("(w/o servers)"));
+ }
+
+- printf(_("\nProto RefCnt Flags Type State I-Node"));
++ printf(_("\nProto RefCnt Flags Type State I-Node "));
+ print_progname_banner();
+ printf(_(" Path\n")); /* xxx */
+
+@@ -1256,7 +1270,7 @@
+ N_("ESTABLISHED"),
+ N_("RECOVERY")
+ };
+- if (!(f = fopen(_PATH_PROCNET_AX25, "r"))) {
++ if (!(f = proc_fopen(_PATH_PROCNET_AX25))) {
+ if (errno != ENOENT) {
+ perror(_PATH_PROCNET_AX25);
+ return (-1);
+@@ -1350,18 +1364,37 @@
+ char sad[50], dad[50];
+ struct sockaddr sa;
+ unsigned sport = 0, dport = 0;
+-
+- if (!(f = fopen(_PATH_PROCNET_IPX, "r"))) {
+- if (errno != ENOENT) {
+- perror(_PATH_PROCNET_IPX);
+- return (-1);
+- }
+- if (flag_arg || flag_ver)
+- ESYSNOT("netstat", "AF IPX");
+- if (flag_arg)
+- return (1);
+- else
+- return (0);
++ struct stat s;
++
++ f = proc_fopen(_PATH_PROCNET_IPX_SOCKET1);
++ if (!f) {
++ if (errno != ENOENT) {
++ perror(_PATH_PROCNET_IPX_SOCKET1);
++ return (-1);
++ }
++ f = proc_fopen(_PATH_PROCNET_IPX_SOCKET2);
++
++ /* We need to check for directory */
++ if (f) {
++ fstat(fileno(f), &s);
++ if (!S_ISREG(s.st_mode)) {
++ fclose(f);
++ f=NULL;
++ }
++ }
++
++ if (!f) {
++ if (errno != ENOENT) {
++ perror(_PATH_PROCNET_IPX_SOCKET2);
++ return (-1);
++ }
++ if (flag_arg || flag_ver)
++ ESYSNOT("netstat", "AF IPX");
++ if (flag_arg)
++ return (1);
++ else
++ return (0);
++ }
+ }
+ printf(_("Active IPX sockets\nProto Recv-Q Send-Q Local Address Foreign Address State")); /* xxx */
+ if (flag_exp > 1)
+@@ -1381,7 +1414,7 @@
+ sscanf(st, "%X", &sport); /* net byt order */
+ sport = ntohs(sport);
+ } else {
+- EINTERN("netstat.c", _PATH_PROCNET_IPX " sport format error");
++ EINTERN("netstat.c", "ipx socket format error in source port");
+ return (-1);
+ }
+ nc = 0;
+@@ -1391,7 +1424,7 @@
+ sscanf(st, "%X", &dport); /* net byt order */
+ dport = ntohs(dport);
+ } else {
+- EINTERN("netstat.c", _PATH_PROCNET_IPX " dport format error");
++ EINTERN("netstat.c", "ipx soket format error in destination port");
+ return (-1);
+ }
+ } else
+@@ -1449,7 +1482,7 @@
+ }
+ if (flag_exp < 2) {
+ ife_short = 1;
+- printf(_("Iface MTU Met RX-OK RX-ERR RX-DRP RX-OVR TX-OK TX-ERR TX-DRP TX-OVR Flg\n"));
++ printf(_("Iface MTU Met RX-OK RX-ERR RX-DRP RX-OVR TX-OK TX-ERR TX-DRP TX-OVR Flg\n"));
+ }
+
+ if (for_all_interfaces(do_if_print, &flag_all) < 0) {
+@@ -1457,7 +1490,7 @@
+ exit(1);
+ }
+ if (flag_cnt)
+- free_interface_list();
++ if_cache_free();
+ else {
+ close(skfd);
+ skfd = -1;
+@@ -1503,7 +1536,7 @@
+ fprintf(stderr, _(" -C, --cache display routing cache instead of FIB\n\n"));
+
+ fprintf(stderr, _(" <Socket>={-t|--tcp} {-u|--udp} {-w|--raw} {-x|--unix} --ax25 --ipx --netrom\n"));
+- fprintf(stderr, _(" <AF>=Use '-A <af>' or '--<af>'; default: %s\n"), DFLT_AF);
++ fprintf(stderr, _(" <AF>=Use '-6|-4' or '-A <af>' or '--<af>'; default: %s\n"), DFLT_AF);
+ fprintf(stderr, _(" List of possible address families (which support routing):\n"));
+ print_aflist(1); /* 1 = routeable */
+ exit(E_USAGE);
+@@ -1514,7 +1547,7 @@
+ (int argc, char *argv[]) {
+ int i;
+ int lop;
+- struct option longopts[] =
++ static struct option longopts[] =
+ {
+ AFTRANS_OPTS,
+ {"version", 0, 0, 'V'},
+@@ -1556,7 +1589,7 @@
+ getroute_init(); /* Set up AF routing support */
+
+ afname[0] = '\0';
+- while ((i = getopt_long(argc, argv, "MCFA:acdegphinNorstuVv?wxl", longopts, &lop)) != EOF)
++ while ((i = getopt_long(argc, argv, "MCFA:acdegphinNorstuVv?wxl64", longopts, &lop)) != EOF)
+ switch (i) {
+ case -1:
+ break;
+@@ -1624,6 +1657,14 @@
+ case 'o':
+ flag_opt++;
+ break;
++ case '6':
++ if (aftrans_opt("inet6"))
++ exit(1);
++ break;
++ case '4':
++ if (aftrans_opt("inet"))
++ exit(1);
++ break;
+ case 'V':
+ version();
+ /*NOTREACHED */
+@@ -1741,10 +1782,11 @@
+ }
+ printf(_("\nProto Recv-Q Send-Q Local Address Foreign Address State ")); /* xxx */
+ if (flag_exp > 1)
+- printf(_(" User Inode "));
+- print_progname_banner();
++ printf(_(" User Inode "));
++ if (flag_prg)
++ printf(_(" PID/Program name"));
+ if (flag_opt)
+- printf(_(" Timer")); /* xxx */
++ printf(_(" Timer"));
+ printf("\n");
+ #else
+ if (flag_arg) {
+@@ -1845,6 +1887,7 @@
+ }
+ #endif
+ }
++
+ if (!flag_cnt || i)
+ break;
+ sleep(1);
+--- net-tools-1.60.orig/route.c
++++ net-tools-1.60/route.c
+@@ -2,7 +2,7 @@
+ * route This file contains an implementation of the command
+ * that manages the IP routing table in the kernel.
+ *
+- * Version: $Id: route.c,v 1.9 2001/04/15 14:41:17 pb Exp $
++ * Version: $Id: route.c,v 1.10 2002/07/30 05:24:20 ecki Exp $
+ *
+ * Maintainer: Bernd 'eckes' Eckenfels, <net-tools@lina.inka.de>
+ *
+@@ -142,7 +142,7 @@
+ }
+
+ /* Fetch the command-line arguments. */
+- while ((i = getopt_long(argc, argv, "A:eCFhnNVv?", longopts, &lop)) != EOF)
++ while ((i = getopt_long(argc, argv, "A:eCFhnN64Vv?", longopts, &lop)) != EOF)
+ switch (i) {
+ case -1:
+ break;
+@@ -176,6 +176,14 @@
+ if ((i = aftrans_opt(optarg)))
+ exit(i);
+ break;
++ case '6':
++ if ((i = aftrans_opt("inet6")))
++ exit(i);
++ break;
++ case '4':
++ if ((i = aftrans_opt("inet")))
++ exit(i);
++ break;
+ case 'V':
+ version();
+ case 'h':
+--- net-tools-1.60.orig/statistics.c
++++ net-tools-1.60/statistics.c
+@@ -1,6 +1,6 @@
+ /*
+ * Copyright 1997,1999,2000 Andi Kleen. Subject to the GPL.
+- * $Id: statistics.c,v 1.14 2001/02/02 18:01:23 pb Exp $
++ * $Id: statistics.c,v 1.20 2007/12/01 18:44:56 ecki Exp $
+ * 19980630 - i18n - Arnaldo Carvalho de Melo <acme@conectiva.com.br>
+ * 19981113 - i18n fixes - Arnaldo Carvalho de Melo <acme@conectiva.com.br>
+ * 19990101 - added net/netstat, -t, -u, -w supprt - Bernd Eckenfels
+@@ -11,6 +11,7 @@
+ #include <string.h>
+ #include "config.h"
+ #include "intl.h"
++#include "proc.h"
+
+ /* #define WARN 1 */
+
+@@ -172,19 +173,59 @@
+ { "DelayedACKLost", N_("Quick ack mode was activated %u times"), opt_number },
+ { "ListenOverflows", N_("%u times the listen queue of a socket overflowed"),
+ opt_number },
+- { "ListenDrops", N_("%u SYNs to LISTEN sockets ignored"), opt_number },
++ { "ListenDrops", N_("%u SYNs to LISTEN sockets dropped"), opt_number },
+ { "TCPPrequeued", N_("%u packets directly queued to recvmsg prequeue."),
+ opt_number },
+- { "TCPDirectCopyFromBacklog", N_("%u packets directly received"
+- " from backlog"), opt_number },
+- { "TCPDirectCopyFromPrequeue", N_("%u packets directly received"
+- " from prequeue"), opt_number },
++ { "TCPDirectCopyFromBacklog", N_("%u bytes directly in process context from backlog"), opt_number },
++ { "TCPDirectCopyFromPrequeue", N_("%u bytes directly received in process context from prequeue"),
++ opt_number },
+ { "TCPPrequeueDropped", N_("%u packets dropped from prequeue"), opt_number },
+- { "TCPHPHits", N_("%u packets header predicted"), number },
++ { "TCPHPHits", N_("%u packet headers predicted"), number },
+ { "TCPHPHitsToUser", N_("%u packets header predicted and "
+ "directly queued to user"), opt_number },
+ { "SockMallocOOM", N_("Ran %u times out of system memory during "
+ "packet sending"), opt_number },
++ { "TCPPureAcks", N_("%u acknowledgments not containing data payload received"), opt_number },
++ { "TCPHPAcks", N_("%u predicted acknowledgments"), opt_number },
++ { "TCPRenoRecovery", N_("%u times recovered from packet loss due to fast retransmit"), opt_number },
++ { "TCPSackRecovery", N_("%u times recovered from packet loss by selective acknowledgements"), opt_number },
++ { "TCPSACKReneging", N_("%u bad SACK blocks received"), opt_number },
++ { "TCPFACKReorder", N_("Detected reordering %u times using FACK"), opt_number },
++ { "TCPSACKReorder", N_("Detected reordering %u times using SACK"), opt_number },
++ { "TCPTSReorder", N_("Detected reordering %u times using time stamp"), opt_number },
++ { "TCPRenoReorder", N_("Detected reordering %u times using reno fast retransmit"), opt_number },
++ { "TCPFullUndo", N_("%u congestion windows fully recovered without slow start"), opt_number },
++ { "TCPPartialUndo", N_("%u congestion windows partially recovered using Hoe heuristic"), opt_number },
++ { "TCPDSackUndo", N_("%u congestion window recovered without slow start using DSACK"), opt_number },
++ { "TCPLossUndo", N_("%u congestion windows recovered without slow start after partial ack"), opt_number },
++ { "TCPLostRetransmits", N_("%u retransmits lost"), opt_number },
++ { "TCPRenoFailures", N_("%u timeouts after reno fast retransmit"), opt_number },
++ { "TCPSackFailures", N_("%u timeouts after SACK recovery"), opt_number },
++ { "TCPLossFailures", N_("%u timeouts in loss state"), opt_number },
++ { "TCPFastRetrans", N_("%u fast retransmits"), opt_number },
++ { "TCPForwardRetrans", N_("%u forward retransmits"), opt_number },
++ { "TCPSlowStartRetrans", N_("%u retransmits in slow start"), opt_number },
++ { "TCPTimeouts", N_("%u other TCP timeouts"), opt_number },
++ { "TCPRenoRecoveryFailed", N_("%u reno fast retransmits failed"), opt_number },
++ { "TCPSackRecoveryFail", N_("%u SACK retransmits failed"), opt_number },
++ { "TCPSchedulerFailed", N_("%u times receiver scheduled too late for direct processing"), opt_number },
++ { "TCPRcvCollapsed", N_("%u packets collapsed in receive queue due to low socket buffer"), opt_number },
++ { "TCPDSACKOldSent", N_("%u DSACKs sent for old packets"), opt_number },
++ { "TCPDSACKOfoSent", N_("%u DSACKs sent for out of order packets"), opt_number },
++ { "TCPDSACKRecv", N_("%u DSACKs received"), opt_number },
++ { "TCPDSACKOfoRecv", N_("%u DSACKs for out of order packets received"), opt_number },
++ { "TCPAbortOnSyn", N_("%u connections reset due to unexpected SYN"), opt_number },
++ { "TCPAbortOnData", N_("%u connections reset due to unexpected data"), opt_number },
++ { "TCPAbortOnClose", N_("%u connections reset due to early user close"), opt_number },
++ { "TCPAbortOnMemory", N_("%u connections aborted due to memory pressure"), opt_number },
++ { "TCPAbortOnTimeout", N_("%u connections aborted due to timeout"), opt_number },
++ { "TCPAbortOnLinger", N_("%u connections aborted after user close in linger timeout"), opt_number },
++ { "TCPAbortFailed", N_("%u times unabled to send RST due to no memory"), opt_number },
++ { "TCPMemoryPressures", N_("TCP ran low on memory %u times"), opt_number },
++ { "TCPLoss", N_("%u TCP data loss events"), opt_number },
++ { "TCPDSACKUndo", N_("%u congestion windows recovered without slow start by DSACK"),
++ opt_number },
++ { "TCPRenoRecoveryFail", N_("%u classic Reno fast retransmits failed"), opt_number },
+ };
+
+ struct tabtab {
+@@ -222,7 +263,8 @@
+ ent = bsearch(&key, tab->tab, tab->size / sizeof(struct entry),
+ sizeof(struct entry), cmpentries);
+ if (!ent) { /* try our best */
+- printf("%*s%s: %d\n", states[state].indent, "", title, val);
++ if (val)
++ printf("%*s%s: %d\n", states[state].indent, "", title, val);
+ return;
+ }
+ type = ent->type;
+@@ -289,14 +331,17 @@
+ return &dummytab;
+ }
+
+-void process_fd(FILE *f)
++int process_fd(FILE *f)
+ {
+- char buf1[1024], buf2[1024];
++ char buf1[2048], buf2[2048];
+ char *sp, *np, *p;
+ while (fgets(buf1, sizeof buf1, f)) {
+ int endflag;
+ struct tabtab *tab;
+
++ if (buf1[0] == '\n') // skip empty first line in 2.6 kernels
++ continue;
++
+ if (!fgets(buf2, sizeof buf2, f))
+ break;
+ sp = strchr(buf1, ':');
+@@ -330,11 +375,10 @@
+ sp = p + 1;
+ }
+ }
+- return;
++ return 0;
+
+ formaterr:
+- perror(_("error parsing /proc/net/snmp"));
+- return;
++ return -1;
+ }
+
+
+@@ -344,22 +388,25 @@
+
+ f_raw = flag_raw; f_tcp = flag_tcp; f_udp = flag_udp;
+
+- f = fopen("/proc/net/snmp", "r");
++ f = proc_fopen("/proc/net/snmp");
+ if (!f) {
+ perror(_("cannot open /proc/net/snmp"));
+ return;
+ }
+- process_fd(f);
++
++ if (process_fd(f) < 0)
++ fprintf(stderr, _("Problem while parsing /proc/net/snmp\n"));
+
+ if (ferror(f))
+ perror("/proc/net/snmp");
+
+ fclose(f);
+
+- f = fopen("/proc/net/netstat", "r");
++ f = proc_fopen("/proc/net/netstat");
+
+ if (f) {
+- process_fd(f);
++ if (process_fd(f) <0)
++ fprintf(stderr, _("Problem while parsing /proc/net/netstat\n"));
+
+ if (ferror(f))
+ perror("/proc/net/netstat");
+--- net-tools-1.60.orig/nameif.c
++++ net-tools-1.60/nameif.c
+@@ -3,7 +3,7 @@
+ * Writen 2000 by Andi Kleen.
+ * Subject to the Gnu Public License, version 2.
+ * TODO: make it support token ring etc.
+- * $Id: nameif.c,v 1.1 2000/10/18 17:26:29 ak Exp $
++ * $Id: nameif.c,v 1.4 2003/09/11 03:46:49 ak Exp $
+ */
+ #ifndef _GNU_SOURCE
+ #define _GNU_SOURCE
+@@ -117,7 +117,8 @@
+ }
+
+ struct change {
+- struct change *next,**pprev;
++ struct change *next;
++ int found;
+ char ifname[IFNAMSIZ+1];
+ unsigned char mac[6];
+ };
+@@ -139,10 +140,7 @@
+ ch->ifname, pos);
+ if (parsemac(p,ch->mac) < 0)
+ complain(_("cannot parse MAC `%s' at %s"), p, pos);
+- if (clist)
+- clist->pprev = &ch->next;
+ ch->next = clist;
+- ch->pprev = &clist;
+ clist = ch;
+ return 0;
+ }
+@@ -177,7 +175,7 @@
+ if (*p == '\0')
+ continue;
+ n = strcspn(p, " \t");
+- if (n > IFNAMSIZ)
++ if (n > IFNAMSIZ-1)
+ complain(_("interface name too long at line %d"), line);
+ memcpy(ch->ifname, p, n);
+ ch->ifname[n] = 0;
+@@ -200,7 +198,7 @@
+
+ void usage(void)
+ {
+- fprintf(stderr, _("usage: nameif [-c configurationfile] [-s] {ifname macaddress}"));
++ fprintf(stderr, _("usage: nameif [-c configurationfile] [-s] {ifname macaddress}\n"));
+ exit(1);
+ }
+
+@@ -277,21 +275,21 @@
+ ch = lookupmac(mac);
+ if (!ch)
+ continue;
+-
+- *ch->pprev = ch->next;
++
++ ch->found = 1;
+ if (strcmp(p, ch->ifname)) {
+ if (setname(p, ch->ifname) < 0)
+ complain(_("cannot change name of %s to %s: %s"),
+ p, ch->ifname, strerror(errno));
+ }
+- free(ch);
+ }
+ fclose(ifh);
+
+ while (clist) {
+ struct change *ch = clist;
+ clist = clist->next;
+- warning(_("interface '%s' not found"), ch->ifname);
++ if (!ch->found)
++ warning(_("interface '%s' not found"), ch->ifname);
+ free(ch);
+ }
+
+--- net-tools-1.60.orig/mii-tool.c
++++ net-tools-1.60/mii-tool.c
+@@ -29,8 +29,7 @@
+ http://www.national.com/pf/DP/DP83840.html
+ */
+
+-static char version[] =
+-"mii-tool.c 1.9 2000/04/28 00:56:08 (David Hinds)\n";
++static char Version[] = "$Id: mii-tool.c,v 1.9 2006/09/27 20:59:18 ecki Exp $\n(Author: David Hinds based on Donald Becker's mii-diag)";
+
+ #include <unistd.h>
+ #include <stdlib.h>
+@@ -46,16 +45,19 @@
+ #include <sys/socket.h>
+ #include <sys/ioctl.h>
+ #include <net/if.h>
++#include <linux/sockios.h>
++
+ #ifndef __GLIBC__
+ #include <linux/if_arp.h>
+ #include <linux/if_ether.h>
+ #endif
+ #include "mii.h"
++#include "version.h"
+
+ #define MAX_ETH 8 /* Maximum # of interfaces */
+
+ /* Table of known MII's */
+-static struct {
++static const struct {
+ u_short id1, id2;
+ char *name;
+ } mii_id[] = {
+@@ -74,6 +76,9 @@
+ { 0x0181, 0x4410, "Quality QS6612" },
+ { 0x0282, 0x1c50, "SMSC 83C180" },
+ { 0x0300, 0xe540, "TDK 78Q2120" },
++ { 0x0141, 0x0c20, "Yukon 88E1011" },
++ { 0x0141, 0x0cc0, "Yukon-EC 88E1111" },
++ { 0x0141, 0x0c90, "Yukon-2 88E1112" },
+ };
+ #define NMII (sizeof(mii_id)/sizeof(mii_id[0]))
+
+@@ -137,40 +142,48 @@
+
+ const struct {
+ char *name;
+- u_short value;
++ u_short value[2];
+ } media[] = {
+ /* The order through 100baseT4 matches bits in the BMSR */
+- { "10baseT-HD", MII_AN_10BASET_HD },
+- { "10baseT-FD", MII_AN_10BASET_FD },
+- { "100baseTx-HD", MII_AN_100BASETX_HD },
+- { "100baseTx-FD", MII_AN_100BASETX_FD },
+- { "100baseT4", MII_AN_100BASET4 },
+- { "100baseTx", MII_AN_100BASETX_FD | MII_AN_100BASETX_HD },
+- { "10baseT", MII_AN_10BASET_FD | MII_AN_10BASET_HD },
++ { "10baseT-HD", {MII_AN_10BASET_HD} },
++ { "10baseT-FD", {MII_AN_10BASET_FD} },
++ { "100baseTx-HD", {MII_AN_100BASETX_HD} },
++ { "100baseTx-FD", {MII_AN_100BASETX_FD} },
++ { "100baseT4", {MII_AN_100BASET4} },
++ { "100baseTx", {MII_AN_100BASETX_FD | MII_AN_100BASETX_HD} },
++ { "10baseT", {MII_AN_10BASET_FD | MII_AN_10BASET_HD} },
++
++ { "1000baseT-HD", {0, MII_BMCR2_1000HALF} },
++ { "1000baseT-FD", {0, MII_BMCR2_1000FULL} },
++ { "1000baseT", {0, MII_BMCR2_1000HALF|MII_BMCR2_1000FULL} },
+ };
+ #define NMEDIA (sizeof(media)/sizeof(media[0]))
+
+ /* Parse an argument list of media types */
+-static int parse_media(char *arg)
++static int parse_media(char *arg, unsigned *bmcr2)
+ {
+ int mask, i;
+ char *s;
+ mask = strtoul(arg, &s, 16);
+ if ((*arg != '\0') && (*s == '\0')) {
+ if ((mask & MII_AN_ABILITY_MASK) &&
+- !(mask & ~MII_AN_ABILITY_MASK))
+- return mask;
++ !(mask & ~MII_AN_ABILITY_MASK)) {
++ *bmcr2 = 0;
++ return mask;
++ }
+ goto failed;
+- } else {
+- mask = 0;
+- s = strtok(arg, ", ");
+- do {
++ }
++ mask = 0;
++ *bmcr2 = 0;
++ s = strtok(arg, ", ");
++ do {
+ for (i = 0; i < NMEDIA; i++)
+- if (strcasecmp(media[i].name, s) == 0) break;
++ if (s && strcasecmp(media[i].name, s) == 0) break;
+ if (i == NMEDIA) goto failed;
+- mask |= media[i].value;
+- } while ((s = strtok(NULL, ", ")) != NULL);
+- }
++ mask |= media[i].value[0];
++ *bmcr2 |= media[i].value[1];
++ } while ((s = strtok(NULL, ", ")) != NULL);
++
+ return mask;
+ failed:
+ fprintf(stderr, "Invalid media specification '%s'.\n", arg);
+@@ -179,11 +192,24 @@
+
+ /*--------------------------------------------------------------------*/
+
+-static char *media_list(int mask, int best)
++static const char *media_list(unsigned mask, unsigned mask2, int best)
+ {
+ static char buf[100];
+ int i;
+ *buf = '\0';
++
++ if (mask & MII_BMCR_SPEED1000) {
++ if (mask2 & MII_BMCR2_1000HALF) {
++ strcat(buf, " ");
++ strcat(buf, "1000baseT-HD");
++ if (best) goto out;
++ }
++ if (mask2 & MII_BMCR2_1000FULL) {
++ strcat(buf, " ");
++ strcat(buf, "1000baseT-FD");
++ if (best) goto out;
++ }
++ }
+ mask >>= 5;
+ for (i = 4; i >= 0; i--) {
+ if (mask & (1<<i)) {
+@@ -192,6 +218,7 @@
+ if (best) break;
+ }
+ }
++ out:
+ if (mask & (1<<5))
+ strcat(buf, " flow-control");
+ return buf;
+@@ -201,15 +228,15 @@
+ {
+ char buf[100];
+ int i, mii_val[32];
+- int bmcr, bmsr, advert, lkpar;
++ unsigned bmcr, bmsr, advert, lkpar, bmcr2, lpa2;
+
+ /* Some bits in the BMSR are latched, but we can't rely on being
+ the only reader, so only the current values are meaningful */
+ mdio_read(sock, MII_BMSR);
+- for (i = 0; i < ((verbose > 1) ? 32 : 8); i++)
++ for (i = 0; i < ((verbose > 1) ? 32 : MII_BASIC_MAX); i++)
+ mii_val[i] = mdio_read(sock, i);
+
+- if (mii_val[MII_BMCR] == 0xffff) {
++ if (mii_val[MII_BMCR] == 0xffff || mii_val[MII_BMSR] == 0x0000) {
+ fprintf(stderr, " No MII transceiver present!.\n");
+ return -1;
+ }
+@@ -217,6 +244,7 @@
+ /* Descriptive rename. */
+ bmcr = mii_val[MII_BMCR]; bmsr = mii_val[MII_BMSR];
+ advert = mii_val[MII_ANAR]; lkpar = mii_val[MII_ANLPAR];
++ bmcr2 = mii_val[MII_CTRL1000]; lpa2 = mii_val[MII_STAT1000];
+
+ sprintf(buf, "%s: ", ifr.ifr_name);
+ if (bmcr & MII_BMCR_AN_ENA) {
+@@ -224,7 +252,7 @@
+ if (advert & lkpar) {
+ strcat(buf, (lkpar & MII_AN_ACK) ?
+ "negotiated" : "no autonegotiation,");
+- strcat(buf, media_list(advert & lkpar, 1));
++ strcat(buf, media_list(advert & lkpar, bmcr2 & lpa2>>2, 1));
+ strcat(buf, ", ");
+ } else {
+ strcat(buf, "autonegotiation failed, ");
+@@ -234,8 +262,10 @@
+ }
+ } else {
+ sprintf(buf+strlen(buf), "%s Mbit, %s duplex, ",
+- (bmcr & MII_BMCR_100MBIT) ? "100" : "10",
+- (bmcr & MII_BMCR_DUPLEX) ? "full" : "half");
++ ((bmcr2 & (MII_BMCR2_1000HALF | MII_BMCR2_1000FULL)) & lpa2 >> 2)
++ ? "1000"
++ : (bmcr & MII_BMCR_100MBIT) ? "100" : "10",
++ (bmcr & MII_BMCR_DUPLEX) ? "full" : "half");
+ }
+ strcat(buf, (bmsr & MII_BMSR_LINK_VALID) ? "link ok" : "no link");
+
+@@ -296,12 +326,13 @@
+ if (bmsr & MII_BMSR_REMOTE_FAULT)
+ printf("remote fault, ");
+ printf((bmsr & MII_BMSR_LINK_VALID) ? "link ok" : "no link");
+- printf("\n capabilities:%s", media_list(bmsr >> 6, 0));
+- printf("\n advertising: %s", media_list(advert, 0));
++ printf("\n capabilities:%s", media_list(bmsr >> 6, bmcr2, 0));
++ printf("\n advertising: %s", media_list(advert, lpa2 >> 2, 0));
+ if (lkpar & MII_AN_ABILITY_MASK)
+- printf("\n link partner:%s", media_list(lkpar, 0));
++ printf("\n link partner:%s", media_list(lkpar, bmcr2, 0));
+ printf("\n");
+ }
++ fflush(stdout);
+ return 0;
+ }
+
+@@ -329,7 +360,7 @@
+ printf("resetting the transceiver...\n");
+ mdio_write(skfd, MII_BMCR, MII_BMCR_RESET);
+ }
+- if (nway_advertise) {
++ if (nway_advertise > 0) {
+ mdio_write(skfd, MII_ANAR, nway_advertise | 1);
+ opt_restart = 1;
+ }
+@@ -379,27 +410,38 @@
+ /*--------------------------------------------------------------------*/
+
+ const char *usage =
+-"usage: %s [-VvRrwl] [-A media,... | -F media] [interface ...]
+- -V, --version display version information
+- -v, --verbose more verbose output
+- -R, --reset reset MII to poweron state
+- -r, --restart restart autonegotiation
+- -w, --watch monitor for link status changes
+- -l, --log with -w, write events to syslog
+- -A, --advertise=media,... advertise only specified media
+- -F, --force=media force specified media technology
+-media: 100baseT4, 100baseTx-FD, 100baseTx-HD, 10baseT-FD, 10baseT-HD,
+- (to advertise both HD and FD) 100baseTx, 10baseT\n";
++"usage: %s [-VvRrwl] [-A media,... | -F media] [interface ...]\n"
++" -V, --version display version information\n"
++" -v, --verbose more verbose output\n"
++" -R, --reset reset MII to poweron state\n"
++" -r, --restart restart autonegotiation\n"
++" -w, --watch monitor for link status changes\n"
++" -l, --log with -w, write events to syslog\n"
++" -A, --advertise=media,... advertise only specified media\n"
++" -F, --force=media force specified media technology\n"
++"media: 1000baseTx-HD, 1000baseTx-FD,\n"
++" 100baseT4, 100baseTx-FD, 100baseTx-HD,\n"
++" 10baseT-FD, 10baseT-HD,\n"
++" (to advertise both HD and FD) 1000baseTx, 100baseTx, 10baseT\n";
++
++
++static void version(void)
++{
++ fprintf(stderr, "%s\n%s\n", Version, RELEASE);
++ exit(5); /* E_VERSION */
++}
++
+
+ int main(int argc, char **argv)
+ {
+ int i, c, ret, errflag = 0;
+ char s[6];
++ unsigned ctrl1000 = 0;
+
+ while ((c = getopt_long(argc, argv, "A:F:p:lrRvVw?", longopts, 0)) != EOF)
+ switch (c) {
+- case 'A': nway_advertise = parse_media(optarg); break;
+- case 'F': fixed_speed = parse_media(optarg); break;
++ case 'A': nway_advertise = parse_media(optarg, &ctrl1000); break;
++ case 'F': fixed_speed = parse_media(optarg, &ctrl1000); break;
+ case 'p': override_phy = atoi(optarg); break;
+ case 'r': opt_restart++; break;
+ case 'R': opt_reset++; break;
+@@ -411,6 +453,10 @@
+ }
+ /* Check for a few inappropriate option combinations */
+ if (opt_watch) verbose = 0;
++
++ if ((nway_advertise < 0) || (fixed_speed < 0))
++ return 2;
++
+ if (errflag || (fixed_speed & (fixed_speed-1)) ||
+ (fixed_speed && (opt_restart || nway_advertise))) {
+ fprintf(stderr, usage, argv[0]);
+@@ -418,7 +464,7 @@
+ }
+
+ if (opt_version)
+- printf(version);
++ version();
+
+ /* Open a basic socket. */
+ if ((skfd = socket(AF_INET, SOCK_DGRAM,0)) < 0) {
+@@ -426,6 +472,9 @@
+ exit(-1);
+ }
+
++ if (verbose > 1)
++ printf("Using SIOCGMIIPHY=0x%x\n", SIOCGMIIPHY);
++
+ /* No remaining args means show all interfaces. */
+ if (optind == argc) {
+ ret = 1;
+--- net-tools-1.60.orig/debian/changelog
++++ net-tools-1.60/debian/changelog
+@@ -0,0 +1,277 @@
++net-tools (1.60-19) unstable; urgency=low
++
++ * fixed netstat(8) (interfaceS) reported by Liu Xing. (Closes Bug #435690)
++ * fixed interface name truncation (Closes Bug #405521)
++ Thank you Csaba Szep.
++ * fixed pt error string (Closes: Bug#403033)
++ * fixed route samples (Closes: Bug#400844, #368697) Thanks Danny Rathjens.
++ * fixed ifconfig(8) see also section (Closes: Bug#365916) Dan Jacobs.
++
++ -- Bernd Eckenfels <ecki@debian.org> Sun, 02 Dec 2007 06:27:41 +0100
++
++net-tools (1.60-18) unstable; urgency=low
++
++ * Thanks for the l10n NMU to Kenshi Muto
++ * fixed hostname compile problems
++ * better error handling and speedup for proc file reading
++ * improved mii-tool (more media types)
++ * fixed string length contraint in ipmaddr
++ * fixed ipx /proc/net (alternate naming)
++ * smaller fixed to netstat(8) (de) 2002-02-20 - still incomplete
++ * expanded arp(8) (en) 2007-12-01
++ * added -4 and -6 to netstat(8) 02 October 2003
++ * formatting fixed rarp(8)+slattach(8) [en]
++ * formatting fixed arp(8), rarp(8), ifconfig(8), hostname(1) [fr]
++ * fixed slattach -L to not require HW handshake anymore
++ * netstat -n: show v4inv6 mapped addressses as v4
++
++ -- Bernd Eckenfels <ecki@debian.org> Sun, 02 Dec 2007 03:28:17 +0100
++
++net-tools (1.60-17.2) unstable; urgency=low
++
++ * l10n NMU
++ * Set conflict against ja-trans which has obsolete Japanese
++ translations only for net-tools. (closes: #447327)
++
++ -- Kenshi Muto <kmuto@debian.org> Sat, 20 Oct 2007 18:00:34 +0900
++
++net-tools (1.60-17.1) unstable; urgency=low
++
++ * l10n NMU
++ * Updated net-tools.pot.
++ * Updated Japanese translation (closes: Bug#432338)
++ * Updated German translation (closes: #313808)
++
++ -- Kenshi Muto <kmuto@debian.org> Thu, 11 Oct 2007 19:44:26 +0900
++
++net-tools (1.60-17) unstable; urgency=medium
++
++ * arp.c: bus error on sparc64 with latest gcc fixed. (Closes: Bug#340384)
++
++ -- Bernd Eckenfels <ecki@debian.org> Sun, 04 Dec 2005 05:47:05 +0100
++
++net-tools (1.60-16) unstable; urgency=low
++
++ * spelling fix to slattach(8) (Closes: Bug#326124 (patch by A.Costa)
++ * inet.c: portability fix for 64bit.
++ * comment cleanups to aliagn with 1.65 cvs
++ * net-support.h, inet_sr.c, nstrcmp.c, arp.c, ether.h
++
++ -- Bernd Eckenfels <ecki@debian.org> Mon, 24 Oct 2005 22:05:38 +0200
++
++net-tools (1.60-15) unstable; urgency=low
++
++ * minor formating fix to ifconfig(8)
++
++ -- Bernd Eckenfels <ecki@debian.org> Thu, 30 Jun 2005 21:49:52 +0200
++
++net-tools (1.60-14) unstable; urgency=low
++
++ * added iptables(8) in ifconfig(8) (thanks Toralf Förster)
++ * more usage updates in ifconfig.8 (used upstream HEAD=1.11)
++
++ -- Bernd Eckenfels <ecki@debian.org> Thu, 30 Jun 2005 20:51:18 +0200
++
++net-tools (1.60-13) unstable; urgency=low Thu, 30 Jun 2005 20:49:57 +0200
++
++ * X25 code compiles with 2.4 and 2.6 kernel headers (Closes: Bug#271678)
++ * IMPORTANT: make ifconfig show alias interfaces in 2.6 again.
++ * resort media type array to match kernel (Closes: Bug#199920)
++
++ -- Bernd Eckenfels <ecki@debian.org> Tue, 17 May 2005 01:28:51 +0200
++
++net-tools (1.60-12) unstable; urgency=low
++
++ * make TR hw address type work for new kernel (Closes: Bug #79462, #203400)
++ * update-po uses msgmerge, new net-tools.pot (Closes: Bug: 271426)
++ * de-support dontpub option in arp -? und arp.8 (Closes: Bug #203396)
++
++ -- Bernd Eckenfels <ecki@debian.org> Mon, 16 May 2005 06:33:48 +0200
++
++net-tools (1.60-11) unstable; urgency=low
++
++ * spelling fixes (Closes: Bug #305640, #305638, 305637)
++ * nameif.c avoid overflow by malicious kernel
++ * avoid overflow of the TX-OK Column (Closes: Bug #308922)
++
++ -- Bernd Eckenfels <ecki@debian.org> Sat, 14 May 2005 01:48:45 +0200
++
++net-tools (1.60-10) unstable; urgency=low
++
++ * typo fix in po/de.po for german arp command output (Closes: Bug #176151)
++ * added diagnostics messages to mii-tool.8 (Closes: Bug #239229)
++ * new version of nstrcmp (Closes: Bug #226503)
++ * enable EUI64 support
++ * stadanrds version 3.6.1 (no changes)
++
++ -- Bernd Eckenfels <ecki@debian.org> Fri, 23 Apr 2004 00:57:20 +0200
++
++net-tools (1.60-9) unstable; urgency=medium
++
++ * debian/changelog: fixed in last entry fixed bug from 197925 to 197924
++ * include linux/sockios.h for SIOCGMIIPHY definition (new style)
++ which will fix MII reporting on 2.4 kernels. (Closes: Bug #133648)
++ NOTE: this will now require root to work, it will also not work on
++ older kernels.
++ * Rene Engelhard's patch to make AF X25 compile with 2.6 headers (Closes: Bug #223091)
++
++ -- Bernd Eckenfels <ecki@debian.org> Mon, 29 Dec 2003 13:42:20 +0100
++
++net-tools (1.60-8) unstable; urgency=medium
++
++ * lib/interface.c: backed off change which skipped reading ioctl
++ interfacelist, if _proc interfacelist was ok, which does not work,
++ because alias interfaces are only in ioctl list available. It is
++ also falling back to the original lib/nstrcml.c because the
++ comparision if : is present does not work.
++ (Closes: bug #197924, #197582, #197269)
++ * bumped standards version (no changes)
++
++ -- Bernd Eckenfels <ecki@debian.org> Sat, 28 Jun 2003 02:56:38 +0200
++
++net-tools (1.60-7) unstable; urgency=low
++
++ * interfaces.c: cvs version fixes Connectiva Bug #5711 (Closes: #149576)
++ from Eduardo Pereira Habkost
++ * netstat.c: cvs version adds support for tcp6,udp6,icmp6 protocols
++ * netstat.c: cvs version adds support for -4 or -6 cmd line shortcut
++ * netstat.c: cvs version adds fix for inode
++ signedness (Closes: #134600, #78932)
++ * ifconfig: removed -i from usage (Closes: #181528)
++ * make gcc 3.3 happy: added ull unsigned long long prefix to constant
++ * lib/ddp_gr.c+pathnames.h: first support for appletalk routing from cvs
++ * lib/eui64.c+hw.c+Makefile: forst support for new hw type from cvs
++ * lib/interface.c: cvs fix for column run-into (Closes: #161080)
++ * lib/irda.c,lib/ipx.c: cvs update
++ * lib/nstrcmp.c: new, faster version, fixes b-lookups for ifconfig
++ * hostanme.c: gcc 3.3 fix from cvs (not compiled in net-tools.deb)
++ * lib/interface: fixed memory globbering
++ (Closes: #135744, #149579, #185187)
++
++ -- Bernd Eckenfels <ecki@debian.org> Thu, 12 Jun 2003 05:44:38 +0200
++
++net-tools (1.60-6) unstable; urgency=low
++
++ * took route.c from upstream cvs: allow -6 and -4 option
++ * took statistics.c from upstream cvs: more complete netstat -S
++ * took README from upstream cvs: fix COPYING file title and removed
++ the line (Closes: #102139)
++ * took arp.c from upstream: fixed name "PUB", better not found handling,
++ implicite proxy arp mac changed from '*' to '<from_interface>',
++ usage line made shorter
++ * added mii-tool in control file (Closes: #172473)
++ * fixed description of binary multiple in man page (Closes: #182487)
++ * fixed interpunctation in netstat(8) (Closes: #191660)
++ * fixed compile warning in inet_sr.c by removing empty default: label in
++ switch
++
++ -- Bernd Eckenfels <ecki@debian.org> Wed, 28 May 2003 22:35:12 +0200
++
++net-tools (1.60-5) unstable; urgency=low
++
++ * thanks Andrew for the 4.1 NMU
++ * NMU: Apply nameif patch from Matt Domsch. (Closes: #178209)
++ * Fix FTB bug (string concatenation in gcc 3.3) (Closes: #194995)
++ * Fix segfault in mii-tool by using cvs version (Closes: #139027)
++ * fixed plural of authors to make lintian happy (I JOIN YOU :)
++
++ -- Bernd Eckenfels <ecki@debian.org> Wed, 28 May 2003 22:04:14 +0200
++
++net-tools (1.60-4.1) unstable; urgency=low
++
++ * NMU
++ * Apply nameif patch from Matt Domsch. (Closes: #178209)
++
++ -- Andrew Suffield <asuffield@debian.org> Wed, 9 Apr 2003 21:44:09 +0100
++
++net-tools (1.60-4) unstable; urgency=medium
++
++ * fixed (upstream) spurious newline in ifconfig
++ Thanks Jonathen, Closes: Bug #109379
++ * fixed SI-Units printout in ifconfig (Closes: Bug #110629, #97029, #100167)
++ * this is done by including lib/interfaces.c from upstream cvs
++ * also added ifconfig man page from upstream cvs
++ * fixed (upstream) man page about netstat's --interface opt. (Closes: Bug#120475)
++
++ -- Bernd Eckenfels <ecki@debian.org> Sat, 24 Nov 2001 06:26:37 +0100
++
++net-tools (1.60-3) unstable; urgency=medium
++
++ * fixed upstream error where counters in ifconfig/netstat -i are 0
++
++ -- Bernd Eckenfels <ecki@debian.org> Sat, 10 Nov 2001 18:12:13 +0100
++
++net-tools (1.60-2) unstable; urgency=low
++
++ * Fixed the following bug: (Closes: #117837)
++ * inserted ifconfig.c from upstream cvs to do this
++ * bumped debian Standard 3.1.1 -> 3.5.6 and removed -g from linking
++
++ -- Bernd Eckenfels <ecki@debian.org> Thu, 1 Nov 2001 02:51:33 +0100
++
++net-tools (1.60-1) unstable; urgency=low
++
++ * New upstream
++ * Phil fixed the following Bugs upstream: (Closes: #91919, #93048, #90282)
++
++ -- Bernd Eckenfels <ecki@debian.org> Mon, 16 Apr 2001 02:28:12 +0200
++
++net-tools (1.59-1) unstable; urgency=low
++
++ * added Build Dependencies (closes bug: #89083)
++ * new upstream version
++ * removed dh_suidregister and a few comments from rules file
++
++ -- Bernd Eckenfels <ecki@debian.org> Sun, 18 Mar 2001 03:00:33 +0100
++
++net-tools (1.58-2) unstable; urgency=low
++
++ * backported ifconfig change from 1.59 to avoid closing socket too early
++ on some systems (depending on the protocols installed).
++ Closes Bug: #85688, #85743
++
++ -- Bernd Eckenfels <ecki@debian.org> Tue, 13 Feb 2001 01:39:59 +0100
++
++net-tools (1.58-1) unstable; urgency=low
++
++ * new upstream version
++ * removed local man pages for now (Closes: bug #83894)
++ * install nameif in /sbin
++
++ -- Bernd Eckenfels <ecki@debian.org> Sat, 10 Feb 2001 21:50:30 +0100
++
++net-tools (1.57-2) unstable; urgency=high
++
++ * rebuild, this is believed to closes: #75825
++
++ -- Bernd Eckenfels <ecki@debian.org> Sat, 30 Dec 2000 22:43:01 +0100
++
++net-tools (1.57-1) unstable; urgency=low
++
++ * new debian maintainer (thanks Anthony for the Work!)
++ * new upstream version
++
++ -- Bernd Eckenfels <ecki@debian.org> Mon, 14 Aug 2000 02:40:13 +0200
++
++net-tools (1.54-3) unstable; urgency=low
++
++ * Argggh. Don't use that horrible dh_installmanpages hack. (Closes:
++ Bug#68925, Bug#68879)
++
++ -- Anthony Towns <ajt@debian.org> Sun, 13 Aug 2000 00:12:05 +1000
++
++net-tools (1.54-2) unstable; urgency=low
++
++ * Reapply slattach patch from netbase 3.16-3.
++
++ -- Anthony Towns <ajt@debian.org> Thu, 10 Aug 2000 11:32:58 +1000
++
++net-tools (1.54-1) unstable; urgency=low
++
++ * Split from netbase.
++
++ -- Anthony Towns <ajt@debian.org> Mon, 17 Jul 2000 07:34:12 +1000
++
++Local variables:
++mode: debian-changelog
++End:
+--- net-tools-1.60.orig/debian/copyright
++++ net-tools-1.60/debian/copyright
+@@ -0,0 +1,18 @@
++This debian package is maintained by Bernd Eckenfels <ecki@debian.org> since
++Mon, 14 Aug 2000 02:42:13 +0200. Debian Informations will be uploaded
++upstream, too.
++
++This package was debianized by Anthony Towns <ajt@debian.org> on
++Mon, 17 Jul 2000 07:34:12 +1000. It was originally part of the netbase
++package.
++
++It was downloaded from http://www.tazenda.demon.co.uk/phil/net-tools/
++
++Upstream Authors: Phil Blundell <philb@gnu.org>,
++ Bernd Eckenfels <net-tools@lina.inka.de>
++
++Copyright:
++
++Distributed under the terms of the GNU General Public License version 2,
++as published by the Free Software Foundation. On Debian systems you can
++find a copy of this license in /usr/share/common-licenses/GPL.
+--- net-tools-1.60.orig/debian/dirs
++++ net-tools-1.60/debian/dirs
+@@ -0,0 +1 @@
++usr/sbin
+--- net-tools-1.60.orig/debian/config.make
++++ net-tools-1.60/debian/config.make
+@@ -0,0 +1,36 @@
++I18N=1
++HAVE_AFUNIX=1
++HAVE_AFINET=1
++HAVE_AFINET6=1
++HAVE_AFIPX=1
++HAVE_AFATALK=1
++HAVE_AFAX25=1
++HAVE_AFNETROM=1
++HAVE_AFROSE=1
++HAVE_AFX25=1
++HAVE_AFECONET=1
++HAVE_AFDECnet=1
++HAVE_AFASH=1
++HAVE_HWETHER=1
++HAVE_HWARC=1
++HAVE_HWSLIP=1
++HAVE_HWPPP=1
++HAVE_HWTUNNEL=1
++HAVE_HWSTRIP=1
++HAVE_HWTR=1
++HAVE_HWAX25=1
++HAVE_HWROSE=1
++HAVE_HWNETROM=1
++HAVE_HWX25=1
++HAVE_HWFR=1
++HAVE_HWSIT=1
++HAVE_HWFDDI=1
++HAVE_HWHIPPI=1
++HAVE_HWASH=1
++HAVE_HWHDLCLAPB=1
++HAVE_HWIRDA=1
++HAVE_HWEC=1
++HAVE_EUI64=1
++HAVE_FW_MASQUERADE=1
++HAVE_IP_TOOLS=1
++HAVE_MII=1
+--- net-tools-1.60.orig/debian/control
++++ net-tools-1.60/debian/control
+@@ -0,0 +1,21 @@
++Source: net-tools
++Section: net
++Priority: important
++Build-Depends: debhelper, gettext
++Maintainer: Bernd Eckenfels <ecki@debian.org>
++Standards-Version: 3.6.1
++
++Package: net-tools
++Architecture: any
++Depends: ${shlibs:Depends}
++Replaces: netbase (<< 4.00), ja-trans (<= 0.8-2)
++Conflicts: ja-trans (<= 0.8-2)
++Description: The NET-3 networking toolkit
++ This package includes the important tools for controlling the network
++ subsystem of the Linux kernel. This includes arp, ifconfig, netstat,
++ rarp, nameif and route. Additionally, this package contains utilities
++ relating to particular network hardware types (plipconfig, slattach,
++ mii-tool) and advanced aspects of IP configuration (iptunnel, ipmaddr).
++ .
++ In the upstream package 'hostname' and friends are included. Those are
++ not installed by this package, since there is a special "hostname*.deb".
+--- net-tools-1.60.orig/debian/rules
++++ net-tools-1.60/debian/rules
+@@ -0,0 +1,74 @@
++#!/usr/bin/make -f
++# Sample debian/rules that uses debhelper.
++# GNU copyright 1997 to 1999 by Joey Hess.
++
++# Uncomment this to turn on verbose mode.
++#export DH_VERBOSE=1
++
++# This is the debhelper compatability version to use.
++export DH_COMPAT=1
++
++configure: configure-stamp
++configure-stamp:
++ dh_testdir
++ touch configure-stamp
++
++build: configure-stamp build-stamp
++build-stamp:
++ dh_testdir
++ cp debian/config.h config.h
++ cp debian/config.make config.make
++ $(MAKE)
++ touch build-stamp
++
++clean:
++ dh_testdir
++ dh_testroot
++ rm -f build-stamp configure-stamp
++ -$(MAKE) clobber
++ dh_clean
++
++install: build
++ dh_testdir
++ dh_testroot
++ dh_clean -k
++ dh_installdirs
++ $(MAKE) update BASEDIR=`pwd`/debian/tmp
++ mv debian/tmp/sbin/arp debian/tmp/usr/sbin/arp
++ # we don't want man pages for domainname and friends... (yet)
++ rm -rf debian/tmp/usr/share/man/*/man1/ debian/tmp/usr/share/man/man1/
++ # we don't install local manpages until policy is clear
++ rm -rf debian/tmp/usr/share/man/*_*/
++
++
++# Build architecture-independent files here.
++binary-indep: build install
++# We have nothing to do by default.
++
++# Build architecture-dependent files here.
++binary-arch: build install
++# dh_testversion
++ dh_testdir
++ dh_testroot
++# dh_installdebconf
++ dh_installdocs
++ dh_installexamples
++ dh_installmenu
++ dh_installcron
++# dh_installmanpages
++ dh_installinfo
++# dh_undocumented
++ dh_installchangelogs
++ dh_link
++ dh_strip
++ dh_compress
++ dh_fixperms
++# dh_makeshlibs
++ dh_installdeb
++ dh_shlibdeps
++ dh_gencontrol -- -isp
++ dh_md5sums
++ dh_builddeb
++
++binary: binary-indep binary-arch
++.PHONY: build clean binary-indep binary-arch binary install
+--- net-tools-1.60.orig/debian/config.h
++++ net-tools-1.60/debian/config.h
+@@ -0,0 +1,75 @@
++/*
++* config.h Automatically generated configuration includefile
++*
++* NET-TOOLS A collection of programs that form the base set of the
++* NET-3 Networking Distribution for the LINUX operating
++* system.
++*
++* DO NOT EDIT DIRECTLY
++*
++*/
++
++/*
++ *
++ * Internationalization
++ *
++ * The net-tools package has currently been translated to French,
++ * German and Brazilian Portugese. Other translations are, of
++ * course, welcome. Answer `n' here if you have no support for
++ * internationalization on your system.
++ *
++ */
++#define I18N 1
++
++/*
++ *
++ * Protocol Families.
++ *
++ */
++#define HAVE_AFUNIX 1
++#define HAVE_AFINET 1
++#define HAVE_AFINET6 1
++#define HAVE_AFIPX 1
++#define HAVE_AFATALK 1
++#define HAVE_AFAX25 1
++#define HAVE_AFNETROM 1
++#define HAVE_AFROSE 1
++#define HAVE_AFX25 1
++#define HAVE_AFECONET 1
++#define HAVE_AFDECnet 1
++#define HAVE_AFASH 1
++
++/*
++ *
++ * Device Hardware types.
++ *
++ */
++#define HAVE_HWETHER 1
++#define HAVE_HWARC 1
++#define HAVE_HWSLIP 1
++#define HAVE_HWPPP 1
++#define HAVE_HWTUNNEL 1
++#define HAVE_HWSTRIP 1
++#define HAVE_HWTR 1
++#define HAVE_HWAX25 1
++#define HAVE_HWROSE 1
++#define HAVE_HWNETROM 1
++#define HAVE_HWX25 1
++#define HAVE_HWFR 1
++#define HAVE_HWSIT 1
++#define HAVE_HWFDDI 1
++#define HAVE_HWHIPPI 1
++#define HAVE_HWASH 1
++#define HAVE_HWHDLCLAPB 1
++#define HAVE_HWIRDA 1
++#define HAVE_HWEC 1
++#define HAVE_HWEUI64 1
++
++/*
++ *
++ * Other Features.
++ *
++ */
++#define HAVE_FW_MASQUERADE 1
++#define HAVE_IP_TOOLS 1
++#define HAVE_MII 1
+--- net-tools-1.60.orig/debian/docs
++++ net-tools-1.60/debian/docs
+@@ -0,0 +1,3 @@
++README
++README.ipv6
++TODO
diff --git a/source/a/util-linux-ng/scsi_ioctl.h b/source/a/util-linux-ng/scsi_ioctl.h
new file mode 100644
index 00000000..edb95253
--- /dev/null
+++ b/source/a/util-linux-ng/scsi_ioctl.h
@@ -0,0 +1,48 @@
+#ifndef _SCSI_IOCTL_H
+#define _SCSI_IOCTL_H
+
+#define SCSI_IOCTL_SEND_COMMAND 1
+#define SCSI_IOCTL_TEST_UNIT_READY 2
+#define SCSI_IOCTL_BENCHMARK_COMMAND 3
+#define SCSI_IOCTL_SYNC 4 /* Request synchronous parameters */
+#define SCSI_IOCTL_START_UNIT 5
+#define SCSI_IOCTL_STOP_UNIT 6
+/* The door lock/unlock constants are compatible with Sun constants for
+ the cdrom */
+#define SCSI_IOCTL_DOORLOCK 0x5380 /* lock the eject mechanism */
+#define SCSI_IOCTL_DOORUNLOCK 0x5381 /* unlock the mechanism */
+
+#define SCSI_REMOVAL_PREVENT 1
+#define SCSI_REMOVAL_ALLOW 0
+
+#ifdef __KERNEL__
+
+struct scsi_device;
+
+/*
+ * Structures used for scsi_ioctl et al.
+ */
+
+typedef struct scsi_ioctl_command {
+ unsigned int inlen;
+ unsigned int outlen;
+ unsigned char data[0];
+} Scsi_Ioctl_Command;
+
+typedef struct scsi_idlun {
+ __u32 dev_id;
+ __u32 host_unique_id;
+} Scsi_Idlun;
+
+/* Fibre Channel WWN, port_id struct */
+typedef struct scsi_fctargaddress {
+ __u32 host_port_id;
+ unsigned char host_wwn[8]; // include NULL term.
+} Scsi_FCTargAddress;
+
+extern int scsi_ioctl(struct scsi_device *, int, void __user *);
+extern int scsi_nonblockable_ioctl(struct scsi_device *sdev, int cmd,
+ void __user *arg, struct file *filp);
+
+#endif /* __KERNEL__ */
+#endif /* _SCSI_IOCTL_H */
diff --git a/source/a/util-linux-ng/setserial-rc.serial.diff b/source/a/util-linux-ng/setserial-rc.serial.diff
new file mode 100644
index 00000000..248d253b
--- /dev/null
+++ b/source/a/util-linux-ng/setserial-rc.serial.diff
@@ -0,0 +1,49 @@
+--- ./rc.serial.orig Thu Jan 27 07:47:30 2000
++++ ./rc.serial Sun May 13 13:27:57 2001
+@@ -14,8 +14,6 @@
+ # XXXX For now, the autosave feature doesn't work if you are
+ # using the multiport feature; it doesn't save the multiport configuration
+ # (for now). Autosave also doesn't work for the hayes devices.
+-# Will fix later...
+-#
+ #
+
+ RCLOCKFILE=/var/lock/subsys/serial
+@@ -87,7 +85,7 @@
+ mv /etc/.serial.conf.new /etc/serial.conf
+ echo "done."
+ fi
+- if test -n $MODULE ; then
++ if test -n "$MODULE" ; then
+ module=`grep $MODULE_REGEXP /proc/modules | awk '{print $1}'`
+ if test -z "$module" ; then
+ echo "The $DRIVER_NAME driver is not loaded."
+@@ -108,22 +106,22 @@
+ # If not stop, it must be a start....
+ #
+
+-if test -n $MODULE -a "$LOADED" != "yes" ; then
+- if insmod -fm $MODULE $DRIVER_ARG \
+- > /tmp/$DRIVER.map 2> /tmp/$DRIVER.$$; then :;
++if test -n "$MODULE" -a "$LOADED" != "yes" ; then
++ if insmod -f $MODULE $DRIVER_ARG ; then
++ true
+ else
+ echo "Couldn't load $DRIVER_NAME driver."
+- echo "See error logs in /tmp/$DRIVER.$$"
+ exit 1
+ fi
+- /bin/rm -f /tmp/$DRIVER.$$
+ fi
+
+ if test -f /etc/serial.conf ; then
+ if test -n ${SETSERIAL} ; then
+ grep -v ^# < /etc/serial.conf | while read device args
+ do
+- ${SETSERIAL} -z $device $args
++ if [ ! "$device" = "" -a ! "$args" = "" ]; then
++ ${SETSERIAL} -z $device $args
++ fi
+ done
+ fi
+ else
diff --git a/source/a/util-linux-ng/slack-desc b/source/a/util-linux-ng/slack-desc
new file mode 100644
index 00000000..e149d7b8
--- /dev/null
+++ b/source/a/util-linux-ng/slack-desc
@@ -0,0 +1,19 @@
+# HOW TO EDIT THIS FILE:
+# The "handy ruler" below makes it easier to edit a package description. Line
+# up the first '|' above the ':' following the base package name, and the '|'
+# on the right side marks the last column you can put a character in. You must
+# make exactly 11 lines for the formatting to be correct. It's also
+# customary to leave one space after the ':'.
+
+ |-----handy-ruler------------------------------------------------|
+util-linux-ng: util-linux-ng (a huge collection of essential utilities)
+util-linux-ng:
+util-linux-ng: The util-linux package is a huge collection of random utilities
+util-linux-ng: that are essential to run a Linux system. This is a fork of
+util-linux-ng: the original util-linux, based on version 2.13-pre7.
+util-linux-ng:
+util-linux-ng: http://kernel.org/~kzak/util-linux-ng/
+util-linux-ng:
+util-linux-ng:
+util-linux-ng:
+util-linux-ng:
diff --git a/source/a/util-linux-ng/util-linux-ng.SlackBuild b/source/a/util-linux-ng/util-linux-ng.SlackBuild
new file mode 100755
index 00000000..2c2ea55e
--- /dev/null
+++ b/source/a/util-linux-ng/util-linux-ng.SlackBuild
@@ -0,0 +1,284 @@
+#!/bin/sh
+
+# Copyright 2008, 2009 Patrick J. Volkerding, Sebeka, MN, USA
+# All rights reserved.
+#
+# Redistribution and use of this script, with or without modification, is
+# permitted provided that the following conditions are met:
+#
+# 1. Redistributions of this script must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# 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.
+
+# Slackware build script for util-linux-ng
+
+VERSION=${VERSION:-2.14.2}
+ARCH=${ARCH:-x86_64}
+BUILD=${BUILD:-2}
+
+ADJTIMEXVERS=1.23
+SETSERIALVERS=2.17
+ZIPTOOLVERS=1.4.0
+
+if [ "$ARCH" = "i486" ]; then
+ SLKCFLAGS="-O2 -march=i486 -mtune=i686"
+ LIBDIRSUFFIX=""
+elif [ "$ARCH" = "s390" ]; then
+ SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
+elif [ "$ARCH" = "x86_64" ]; then
+ SLKCFLAGS="-O2 -fPIC"
+ LIBDIRSUFFIX="64"
+fi
+
+CWD=$(pwd)
+TMP=${TMP:-/tmp}
+PKG=$TMP/package-util-linux-ng
+rm -rf $PKG
+mkdir -p $TMP $PKG
+
+cd $TMP || exit 1
+rm -rf util-linux-ng-$VERSION
+tar xvf $CWD/util-linux-ng-$VERSION.tar.bz2 || exit 1
+cd util-linux-ng-$VERSION || exit 1
+chown -R root.root .
+find . \
+ \( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \
+ -exec chmod 755 {} \; -o \
+ \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
+ -exec chmod 644 {} \;
+
+# Disabled login and init stuff from being built, as this is provided by
+# shadow and sysvinit
+#
+# /sbin/elvtune is not built, as configure says it only works with 2.2 and
+# 2.4 kernels
+
+# This block is handled near the bottom of the script in symlink creation
+# /bin/setterm -- now located in /usr/bin/setterm
+# /bin/getopt -- same as setterm
+# /usr/bin/readprofile -- now in /usr/sbin
+# /usr/bin/tunelp -- same as readprofile
+
+# Changing the fdisk -l output (this was done prior to util-linux-ng) broke
+# our installation scripts, so we have changed the name of partition type
+# 83 back to "Linux swap":
+zcat $CWD/util-linux-ng.fdisk-no-solaris.diff.gz | patch -p1 || exit 1
+
+CFLAGS="$SLKCFLAGS" \
+./configure \
+ --prefix=/usr \
+ --libdir=/usr/lib${LIBDIRSUFFIX} \
+ --sysconfdir=/etc \
+ --localstatedir=/var \
+ --mandir=/usr/man \
+ --infodir=/usr/info \
+ --docdir=/usr/doc/util-linux-ng-$VERSION \
+ --enable-arch \
+ --enable-agetty \
+ --disable-init \
+ --enable-kill \
+ --enable-rdev \
+ --disable-last \
+ --enable-mesg \
+ --enable-raw \
+ --enable-rename \
+ --enable-reset \
+ --disable-login-utils \
+ --enable-schedutils \
+ --enable-wall \
+ --enable-write \
+ --enable-use-tty-group \
+ --build=$ARCH-slackware-linux \
+ --host=$ARCH-slackware-linux \
+ || exit 1
+
+make || exit 1
+make install DESTDIR=$PKG
+
+# Moving things around that have been in the same place
+# for 15 years is, IMHO, not a wise idea AT ALL.
+# If this had to be moved, some place out of /usr might
+# have shown a grain of insight...
+if [ -r $PKG/usr/sbin/fdformat ]; then
+ mkdir -p $PKG/usr/bin
+ mv $PKG/usr/sbin/fdformat $PKG/usr/bin/fdformat
+ # Now since stuff will start looking in this new place,
+ # we have no choice but to link these:
+ ( cd $PKG/usr/sbin
+ ln -sf ../bin/fdformat .
+ )
+fi
+
+# Install (probably obsolete) rdev manually:
+cat ./sys-utils/rdev > $PKG/sbin/rdev
+chown root:root $PKG/sbin/rdev
+chmod 755 $PKG/sbin/rdev
+#cat ./sys-utils/rdev.8 | gzip -9c > $PKG/usr/man/man8/rdev.8.gz
+
+# Build ziptool
+cd $TMP || exit 1
+rm -rf ziptool-$ZIPTOOLVERS
+tar xvf $CWD/ziptool-$ZIPTOOLVERS.tar.bz2 || exit 1
+cd ziptool-$ZIPTOOLVERS || exit 1
+zcat $CWD/ziptool-fix_build.patch.gz | patch -p1 || exit 1
+mkdir scsi
+cat $CWD/scsi_ioctl.h > scsi/scsi_ioctl.h
+chown -R root:root .
+make || exit 1
+strip ziptool
+cat ziptool > $PKG/sbin/ziptool
+chmod 0755 $PKG/sbin/ziptool
+mkdir -p $PKG/usr/doc/ziptool-$ZIPTOOLVERS
+cp -a README $PKG/usr/doc/ziptool-$ZIPTOOLVERS
+chmod 644 $PKG/usr/doc/ziptool-$ZIPTOOLVERS/*
+cat ziptool.1.gz > $PKG/usr/man/man1/ziptool.1.gz
+
+# Build bsdstrings
+cd $TMP || exit 1
+rm -rf bsdstrings
+tar xvf $CWD/bsdstrings.tar.gz || exit 1
+cd bsdstrings || exit 1
+make || exit 1
+strip strings
+cat strings > $PKG/usr/bin/strings
+chmod 0755 $PKG/usr/bin/strings
+cat strings.1 | gzip -9c > $PKG/usr/man/man1/strings.1.gz
+
+# Add just the hostname utilities from net-tools, so that anyone
+# installing just the A series will not have a hostname (null):
+cd $TMP || exit 1
+rm -rf net-tools-1.60
+tar xvf $CWD/net-tools-1.60.tar.bz2
+cd net-tools-1.60
+zcat $CWD/net-tools_1.60-19.diff.gz | patch -p1 || exit
+zcat $CWD/net-tools.diff.gz | patch -p1 || exit
+make
+make hostname
+strip hostname
+cat hostname > $PKG/bin/hostname
+chmod 755 $PKG/bin/hostname
+chown root:root $PKG/bin/hostname
+( cd $PKG/bin
+ ln -sf hostname dnsdomainname
+ ln -sf hostname nisdomainname
+ ln -sf hostname ypdomainname
+ ln -sf hostname domainname
+)
+cd man/en_US
+for page in hostname.1 dnsdomainname.1 nisdomainname.1 ypdomainname.1 \
+domainname.1 ; do
+ cat $page | gzip -9c > $PKG/usr/man/man1/$page.gz
+done
+
+# Build adjtimex
+cd $TMP || exit 1
+rm -rf adjtimex-$ADJTIMEXVERS
+tar xvf $CWD/adjtimex_${ADJTIMEXVERS}.orig.tar.gz || exit 1
+cd adjtimex-$ADJTIMEXVERS || exit 1
+chown -R root:root .
+zcat $CWD/adjtimex_1.23-1.diff.gz | patch -p1 || exit 1
+CFLAGS=-O2 ./configure --prefix=/usr || exit 1
+make || exit 1
+strip adjtimex
+cat adjtimex > $PKG/sbin/adjtimex
+chmod 0755 $PKG/sbin/adjtimex
+cat adjtimex.8 | gzip -9c > $PKG/usr/man/man8/adjtimex.8.gz
+mkdir -p $PKG/usr/doc/adjtimex-$ADJTIMEXVERS
+cp -a COPYING COPYRIGHT README README.ru adjtimex.lsm \
+ $PKG/usr/doc/adjtimex-$ADJTIMEXVERS
+
+# Build setserial
+cd $TMP || exit 1
+rm -rf setserial-$SETSERIALVERS
+tar xvf $CWD/setserial-$SETSERIALVERS.tar.gz || exit 1
+cd setserial-$SETSERIALVERS || exit 1
+chown -R root:root .
+zcat $CWD/setserial-rc.serial.diff.gz | patch -E -p1 --verbose || exit 1
+# The original config.{guess,sub} do not work on x86_64
+cp -p /usr/share/libtool/config.{guess,sub} .
+./configure --prefix=/usr || exit 1
+make || exit 1
+strip setserial
+cat setserial > $PKG/sbin/setserial
+chmod 0755 $PKG/sbin/setserial
+mkdir -p $PKG/etc/rc.d
+cat rc.serial > $PKG/etc/rc.d/rc.serial.new
+cat serial.conf > $PKG/etc/serial.conf.new
+cat setserial.8 | gzip -9c > $PKG/usr/man/man8/setserial.8.gz
+
+# These have always traditionally been available before /usr
+# might be mounted:
+( cd $PKG/usr/bin
+ mv getopt setterm $PKG/bin
+ cd $PKG/usr/bin
+ ln -s ../../bin/getopt .
+ ln -s ../../bin/setterm .
+)
+
+cd $TMP/util-linux-ng-$VERSION # Go back home :)
+
+# Now let's add some important symlinks :)
+( cd $PKG/sbin
+ ln -s ../bin/mount .
+ ln -s ../bin/umount .
+ ln -s ziptool jaztool
+ ln -s hwclock clock
+ cd $PKG/usr/sbin
+ ln -s ../../sbin/cfdisk .
+ ln -s ../../sbin/ctrlaltdel .
+ ln -s ../../sbin/sfdisk .
+ cd $PKG/usr/bin
+ ln -s ../sbin/readprofile .
+ ln -s ../sbin/tunelp .
+ ln -s ../../bin/more .
+ ln -s ../../sbin/raw .
+ cd $PKG/usr/man/man1
+ ln -s ziptool.1 jaztool.1
+ cd $PKG/usr/man/man8
+ ln -s hwclock.8 clock.8
+)
+
+find $PKG | xargs file | grep -e "executable" -e "shared object" \
+ | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
+
+# Compress and if needed symlink the man pages:
+if [ -d $PKG/usr/man ]; then
+ ( cd $PKG/usr/man
+ for manpagedir in $(find . -type d -name "man*") ; do
+ ( cd $manpagedir
+ for eachpage in $( find . -type l -maxdepth 1) ; do
+ ln -s $( readlink $eachpage ).gz $eachpage.gz
+ rm $eachpage
+ done
+ gzip -9 *.?
+ )
+ done
+ )
+fi
+
+# Compress info page and remove dir file
+rm $PKG/usr/info/dir
+gzip -9 $PKG/usr/info/*
+
+mkdir -p $PKG/usr/doc/util-linux-ng-$VERSION
+cp ABOUT-NLS AUTHORS COPYING DEPRECATED NEWS README* TODO docs/* \
+ $PKG/usr/doc/util-linux-ng-$VERSION
+
+mkdir $PKG/install
+cat $CWD/slack-desc > $PKG/install/slack-desc
+zcat $CWD/doinst.sh.gz > $PKG/install/doinst.sh
+
+cd $PKG
+/sbin/makepkg -l y -c n $TMP/util-linux-ng-$VERSION-$ARCH-$BUILD.txz
+
diff --git a/source/a/util-linux-ng/util-linux-ng.fdisk-no-solaris.diff b/source/a/util-linux-ng/util-linux-ng.fdisk-no-solaris.diff
new file mode 100644
index 00000000..a3aa100e
--- /dev/null
+++ b/source/a/util-linux-ng/util-linux-ng.fdisk-no-solaris.diff
@@ -0,0 +1,11 @@
+--- ./fdisk/i386_sys_types.c.orig 2007-04-25 07:43:38.000000000 -0500
++++ ./fdisk/i386_sys_types.c 2008-03-31 14:53:52.000000000 -0500
+@@ -53,7 +53,7 @@
+ {0x75, N_("PC/IX")},
+ {0x80, N_("Old Minix")}, /* Minix 1.4a and earlier */
+ {0x81, N_("Minix / old Linux")},/* Minix 1.4b and later */
+- {0x82, N_("Linux swap / Solaris")},
++ {0x82, N_("Linux swap")},
+ {0x83, N_("Linux")},
+ {0x84, N_("OS/2 hidden C: drive")},
+ {0x85, N_("Linux extended")},
diff --git a/source/a/util-linux-ng/ziptool-fix_build.patch b/source/a/util-linux-ng/ziptool-fix_build.patch
new file mode 100644
index 00000000..a2d3d515
--- /dev/null
+++ b/source/a/util-linux-ng/ziptool-fix_build.patch
@@ -0,0 +1,24 @@
+diff -Nur ziptool-1.4.0.orig/Makefile ziptool-1.4.0/Makefile
+--- ziptool-1.4.0.orig/Makefile 2002-08-23 17:13:48.000000000 -0500
++++ ziptool-1.4.0/Makefile 2009-02-09 16:33:12.913637302 -0600
+@@ -5,10 +5,6 @@
+ #
+ CFLAGS = -O2 -g -Wall
+
+-# Path to linux kernel sources.
+-#
+-LINUX_SRC_DIR = /usr/src/linux
+-
+ # Installation directories
+ #
+ INSTALL_BIN_DIR = /usr/bin
+@@ -30,7 +26,7 @@
+ cd $(INSTALL_MAN_DIR)/man1; ln -sf ziptool.1.gz jaztool.1.gz
+
+ ziptool: ziptool.c
+- cc $(CFLAGS) -I$(LINUX_SRC_DIR)/include -o ziptool ziptool.c
++ cc $(CFLAGS) -I. -o ziptool ziptool.c
+
+ jaztool: ziptool.c
+- cc $(CFLAGS) -I$(LINUX_SRC_DIR)/include -o jaztool ziptool.c
++ cc $(CFLAGS) -I. -o jaztool ziptool.c
diff --git a/source/a/which/slack-desc b/source/a/which/slack-desc
new file mode 100644
index 00000000..75085fe1
--- /dev/null
+++ b/source/a/which/slack-desc
@@ -0,0 +1,19 @@
+# HOW TO EDIT THIS FILE:
+# The "handy ruler" below makes it easier to edit a package description. Line
+# up the first '|' above the ':' following the base package name, and the '|'
+# on the right side marks the last column you can put a character in. You must
+# make exactly 11 lines for the formatting to be correct. It's also
+# customary to leave one space after the ':'.
+
+ |-----handy-ruler------------------------------------------------------|
+which: which (shows the full path to shell commands)
+which:
+which: GNU 'which' takes one or more arguments. For each of its arguments it
+which: prints to stdout the full path of the executables that would have been
+which: executed when this argument had been entered at the shell prompt. It
+which: does this by searching for an executable or script in the directories
+which: listed in the environment variable PATH using the same algorithm as
+which: bash(1). 'Which' is a built-in function in many shells.
+which:
+which: The GNU version of which was written by Carlo Wood.
+which:
diff --git a/source/a/which/which.SlackBuild b/source/a/which/which.SlackBuild
new file mode 100755
index 00000000..f86fd1da
--- /dev/null
+++ b/source/a/which/which.SlackBuild
@@ -0,0 +1,99 @@
+#!/bin/sh
+
+# Copyright 2008, 2009 Patrick J. Volkerding, Sebeka, MN, USA
+# All rights reserved.
+#
+# Redistribution and use of this script, with or without modification, is
+# permitted provided that the following conditions are met:
+#
+# 1. Redistributions of this script must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# 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.
+
+
+VERSION=2.20
+ARCH=${ARCH:-x86_64}
+BUILD=${BUILD:-1}
+
+CWD=$(pwd)
+TMP=${TMP:-/tmp}
+PKG=$TMP/package-which
+
+rm -rf $PKG
+mkdir -p $TMP $PKG
+
+cd $TMP
+rm -rf which-$VERSION
+tar xvf $CWD/which-$VERSION.tar.gz || exit 1
+cd which-$VERSION
+
+chown -R root:root .
+find . \
+ \( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \
+ -exec chmod 755 {} \; -o \
+ \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
+ -exec chmod 644 {} \;
+
+CFLAGS=-O2 \
+./configure \
+ --prefix=/usr \
+ --infodir=/usr/info \
+ --mandir=/usr/man \
+ --build=$ARCH-slackware-linux
+
+make || exit 1
+make install DESTDIR=$PKG || exit 1
+
+mkdir $PKG/bin
+mv $PKG/usr/bin/which $PKG/bin
+( cd $PKG/usr/bin ; ln -sf ../../bin/which which )
+
+# Compress and link manpages, if any:
+if [ -d $PKG/usr/man ]; then
+ ( cd $PKG/usr/man
+ for manpagedir in $(find . -type d -name "man*") ; do
+ ( cd $manpagedir
+ for eachpage in $( find . -type l -maxdepth 1) ; do
+ ln -s $( readlink $eachpage ).gz $eachpage.gz
+ rm $eachpage
+ done
+ gzip -9 *.?
+ )
+ done
+ )
+fi
+
+# Compress info files, if any:
+if [ -d $PKG/usr/info ]; then
+ ( cd $PKG/usr/info
+ rm -f dir
+ gzip -9 *
+ )
+fi
+
+mkdir -p $PKG/usr/doc/which-$VERSION
+cp -a \
+ AUTHORS COPYING EXAMPLES NEWS README README.alias \
+ $PKG/usr/doc/which-$VERSION
+
+# Strip everything for good measure:
+find $PKG | xargs file | grep -e "executable" -e "shared object" \
+ | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
+
+mkdir -p $PKG/install
+cat $CWD/slack-desc > $PKG/install/slack-desc
+
+# Build the package:
+cd $PKG
+/sbin/makepkg -l y -c n $TMP/which-$VERSION-$ARCH-$BUILD.txz
+
diff --git a/source/a/xfsprogs/slack-desc b/source/a/xfsprogs/slack-desc
new file mode 100644
index 00000000..25f37656
--- /dev/null
+++ b/source/a/xfsprogs/slack-desc
@@ -0,0 +1,19 @@
+# HOW TO EDIT THIS FILE:
+# The "handy ruler" below makes it easier to edit a package description. Line
+# up the first '|' above the ':' following the base package name, and the '|' on
+# the right side marks the last column you can put a character in. You must make
+# exactly 11 lines for the formatting to be correct. It's also customary to
+# leave one space after the ':'.
+
+ |-----handy-ruler------------------------------------------------------|
+xfsprogs: xfsprogs (tools to use the XFS filesystem)
+xfsprogs:
+xfsprogs: XFS is a high performance journaling filesystem which originated
+xfsprogs: on the SGI IRIX platform. It is completely multi-threaded, can
+xfsprogs: support large files and large filesystems, extended attributes,
+xfsprogs: variable block sizes, is extent based, and makes extensive use of
+xfsprogs: Btrees (directories, extents, free space) to aid both performance
+xfsprogs: and scalability.
+xfsprogs:
+xfsprogs:
+xfsprogs:
diff --git a/source/a/xfsprogs/xfsprogs.SlackBuild b/source/a/xfsprogs/xfsprogs.SlackBuild
new file mode 100755
index 00000000..7ef1c07c
--- /dev/null
+++ b/source/a/xfsprogs/xfsprogs.SlackBuild
@@ -0,0 +1,114 @@
+#!/bin/sh
+
+# Copyright 2008, 2009 Patrick J. Volkerding, Sebeka, MN, USA
+# All rights reserved.
+#
+# Redistribution and use of this script, with or without modification, is
+# permitted provided that the following conditions are met:
+#
+# 1. Redistributions of this script must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# 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.
+
+
+VERSION=3.0.1
+ARCH=${ARCH:-x86_64}
+BUILD=${BUILD:-1}
+
+NUMJOBS=${NUMJOBS:-" -j7 "}
+
+CWD=$(pwd)
+TMP=${TMP:-/tmp}
+PKG=$TMP/package-xfsprogs
+
+if [ "$ARCH" = "i486" ]; then
+ SLKCFLAGS="-O2 -march=i486 -mtune=i686"
+ LIBDIRSUFFIX=""
+elif [ "$ARCH" = "s390" ]; then
+ SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
+elif [ "$ARCH" = "x86_64" ]; then
+ SLKCFLAGS="-O2 -fPIC"
+ LIBDIRSUFFIX="64"
+fi
+
+rm -rf $PKG
+mkdir -p $TMP $PKG
+
+cd $TMP
+rm -rf xfsprogs-$VERSION
+tar xvf $CWD/xfsprogs-$VERSION.tar.?z* || exit 1
+cd xfsprogs-$VERSION
+
+chown -R root:root .
+find . \
+ \( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \
+ -exec chmod 755 {} \; -o \
+ \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
+ -exec chmod 644 {} \;
+
+# Make sure you have the same version of autoconf as the
+# developers did... ;-)
+autoconf
+
+CFLAGS="$SLKCFLAGS" \
+./configure \
+ --prefix=/usr \
+ --libdir=/lib${LIBDIRSUFFIX} \
+ --libexecdir=/usr/lib${LIBDIRSUFFIX} \
+ --sbindir=/sbin \
+ --bindir=/usr/sbin \
+ --datadir=/usr/share \
+ --mandir=/usr/man \
+ --docdir=/usr/doc/xfsprogs-$VERSION \
+ --enable-shared=yes \
+ --enable-gettext=yes \
+ --build=$ARCH-slackware-linux
+
+make $NUMJOBS || make || exit 1
+make install DIST_ROOT=$PKG
+make install-dev DIST_ROOT=$PKG
+
+mv $PKG/usr/share/doc $PKG/usr
+mv $PKG/usr/doc/xfsprogs $PKG/usr/doc/xfsprogs-$VERSION
+#It would be nice to keep the same timestamps that the files have in the source:
+cp -a README doc/COPYING doc/CREDITS doc/PORTING \
+ $PKG/usr/doc/xfsprogs-$VERSION
+
+# Remove bogus files:
+rm -f $PKG/lib${LIBDIRSUFFIX}/*.a $PKG/lib${LIBDIRSUFFIX}/*.so \
+ $PKG/lib${LIBDIRSUFFIX}/*.la $PKG/usr/lib${LIBDIRSUFFIX}/*.la
+# Make /usr/lib/libhandle.so a symlink to /lib/libhandle.so.1:
+if [ -f $PKG/lib${LIBDIRSUFFIX}/libhandle.so.1 ]; then
+ ( cd $PKG/usr/lib${LIBDIRSUFFIX}
+ rm -f libhandle.so
+ ln -sf /lib${LIBDIRSUFFIX}/libhandle.so.1 libhandle.so
+ )
+else
+ exit 1
+ # and fix your script! ;-)
+fi
+# Fix shared library perms:
+chmod 755 $PKG/lib${LIBDIRSUFFIX}/*
+
+# Strip libraries:
+find $PKG | xargs file | grep -e "executable" -e "shared object" | grep ELF \
+ | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
+strip -g $PKG/usr/lib${LIBDIRSUFFIX}/*.a
+
+mkdir -p $PKG/install
+cat $CWD/slack-desc > $PKG/install/slack-desc
+
+cd $PKG
+/sbin/makepkg -l y -c n $TMP/xfsprogs-$VERSION-$ARCH-$BUILD.txz
+
diff --git a/source/a/xz/slack-desc b/source/a/xz/slack-desc
new file mode 100644
index 00000000..af549b35
--- /dev/null
+++ b/source/a/xz/slack-desc
@@ -0,0 +1,19 @@
+# HOW TO EDIT THIS FILE:
+# The "handy ruler" below makes it easier to edit a package description. Line
+# up the first '|' above the ':' following the base package name, and the '|' on
+# the right side marks the last column you can put a character in. You must make
+# exactly 11 lines for the formatting to be correct. It's also customary to
+# leave one space after the ':'.
+
+ |-----handy-ruler------------------------------------------------------|
+xz: xz (compression utility based on the LZMA algorithm)
+xz:
+xz: LZMA is a general purporse compression algorithm designed by Igor
+xz: Pavlov as part of 7-Zip. It provides high compression ratio while
+xz: keeping the decompression speed fast. XZ Utils are an attempt to make
+xz: LZMA compression easy to use on free (as in freedom) operating
+xz: systems.
+xz:
+xz: The people most responsible for xz are Igor Pavlov, Ville Koskinen,
+xz: and Lasse Collin. For more info: http://tukaani.org/xz/
+xz:
diff --git a/source/a/xz/xz.SlackBuild b/source/a/xz/xz.SlackBuild
new file mode 100755
index 00000000..24033417
--- /dev/null
+++ b/source/a/xz/xz.SlackBuild
@@ -0,0 +1,137 @@
+#!/bin/sh
+
+# Copyright 2009 Patrick J. Volkerding, Sebeka, MN, USA
+# All rights reserved.
+
+# 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.
+#
+# THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED 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 AUTHORS AND COPYRIGHT HOLDERS AND THEIR
+# 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.
+
+PRGNAM=xz
+VERSION=${VERSION:-4.999.8beta}
+ARCH=${ARCH:-x86_64}
+BUILD=${BUILD:-1}
+
+case "$ARCH" in
+ i486) SLKCFLAGS="-O2 -march=i486 -mtune=i686"
+ LIBDIRSUFFIX=""
+ ;;
+ s390) SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
+ ;;
+ powerpc) SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
+ ;;
+ x86_64) SLKCFLAGS="-O2 -fPIC"
+ LIBDIRSUFFIX="64"
+ ;;
+ athlon-xp) SLKCFLAGS="-march=athlon-xp -O3 -pipe -fomit-frame-pointer"
+ LIBDIRSUFFIX=""
+ ;;
+ arm) SLKCFLAGS="-O2 -march=armv4 -mtune=xscale"
+ LIBDIRSUFFIX=""
+ ;;
+ armel) SLKCFLAGS="-O2 -march=armv4t"
+ LIBDIRSUFFIX=""
+ ;;
+
+esac
+
+CWD=$(pwd)
+# Temporary build location. This should *NOT* be a directory
+# path a non-root user could create later...
+TMP=${TMP:-/xz-tmp-$(mcookie)}
+PKG=$TMP/package-$PRGNAM
+rm -rf $PKG
+mkdir -p $TMP $PKG
+
+cd $TMP
+rm -rf $PRGNAM-$VERSION
+tar xvf $CWD/$PRGNAM-$VERSION.tar.bz2 || exit 1
+cd $PRGNAM-$VERSION
+chown -R root:root .
+find . \
+ \( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \
+ -exec chmod 755 {} \; -o \
+ \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
+ -exec chmod 644 {} \;
+
+CFLAGS="$SLKCFLAGS" \
+CXXFLAGS="$SLKCFLAGS" \
+./configure \
+ --prefix=/usr \
+ --libdir=/usr/lib${LIBDIRSUFFIX} \
+ --sysconfdir=/etc \
+ --mandir=/usr/man \
+ --enable-shared \
+ --disable-static \
+ --disable-rpath \
+ --program-prefix= \
+ --program-suffix= \
+ --build=$ARCH-slackware-linux
+
+make || exit 1
+make DESTDIR=$PKG install
+
+# It might be advisable to have the libraries in /lib${LIBDIRSUFFIX}:
+mkdir -p $PKG/lib${LIBDIRSUFFIX}
+mv $PKG/usr/lib${LIBDIRSUFFIX}/liblzma.so.* $PKG/lib${LIBDIRSUFFIX}
+( cd $PKG/usr/lib${LIBDIRSUFFIX}
+ rm -f liblzma.so
+ ln -sf ../../lib${LIBDIRSUFFIX}/liblzma.so.? liblzma.so
+)
+
+# At least the xz binary should also be in /bin:
+mkdir -p $PKG/bin
+mv $PKG/usr/bin/xz $PKG/bin
+( cd $PKG/usr/bin
+ ln -sf ../../bin/xz .
+)
+
+# Strip binaries:
+( cd $PKG
+ find . | xargs file | grep "executable" | grep ELF | cut -f 1 -d : | xargs strip --strip-debug 2> /dev/null
+ find . | xargs file | grep "shared object" | grep ELF | cut -f 1 -d : | xargs strip --strip-debug 2> /dev/null
+)
+
+# Compress and link manpages, if any:
+if [ -d $PKG/usr/man ]; then
+ ( cd $PKG/usr/man
+ for manpagedir in $(find . -type d -name "man*") ; do
+ ( cd $manpagedir
+ for eachpage in $( find . -type l -maxdepth 1) ; do
+ ln -s $( readlink $eachpage ).gz $eachpage.gz
+ rm $eachpage
+ done
+ gzip -9 *.?
+ )
+ done
+ )
+fi
+
+mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
+cp -a \
+ ABOUT-NLS AUTHORS COPYING* ChangeLog INSTALL NEWS README* THANKS doc/* \
+ $PKG/usr/doc/$PRGNAM-$VERSION
+find $PKG/usr/doc -type f -exec chmod 644 {} \;
+
+mkdir -p $PKG/install
+cat $CWD/slack-desc > $PKG/install/slack-desc
+
+cd $PKG
+/sbin/makepkg -l y -c n $TMP/${PRGNAM}-${VERSION}-${ARCH}-${BUILD}.tgz
+
diff --git a/source/a/zoo/slack-desc b/source/a/zoo/slack-desc
new file mode 100644
index 00000000..f517e17a
--- /dev/null
+++ b/source/a/zoo/slack-desc
@@ -0,0 +1,19 @@
+# HOW TO EDIT THIS FILE:
+# The "handy ruler" below makes it easier to edit a package description. Line
+# up the first '|' above the ':' following the base package name, and the '|'
+# on the right side marks the last column you can put a character in. You must
+# make exactly 11 lines for the formatting to be correct. It's also
+# customary to leave one space after the ':'.
+
+ |-----handy-ruler------------------------------------------------------|
+zoo: zoo (archiving and compressing utility)
+zoo:
+zoo: Zoo is used to create and maintain collections of files in compressed
+zoo: form. It uses a Lempel-Ziv compression algorithm that gives space
+zoo: savings in the range of 20% to 80% depending on the type of file data.
+zoo: Zoo can store and selectively extract multiple generations of the same
+zoo: file. Data can be recovered from damaged archives by skipping the
+zoo: damaged portion and locating undamaged data with the help of fiz(1).
+zoo:
+zoo: Zoo was written by Rahul Dhesi.
+zoo:
diff --git a/source/a/zoo/zoo.SlackBuild b/source/a/zoo/zoo.SlackBuild
new file mode 100755
index 00000000..c667b076
--- /dev/null
+++ b/source/a/zoo/zoo.SlackBuild
@@ -0,0 +1,78 @@
+#!/bin/sh
+
+# Copyright 2008, 2009 Patrick J. Volkerding, Sebeka, Minnesota, USA
+# All rights reserved.
+#
+# Redistribution and use of this script, with or without modification, is
+# permitted provided that the following conditions are met:
+#
+# 1. Redistributions of this script must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# 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.
+
+
+VERSION=2.10
+DEBPATCH=18
+ARCH=${ARCH:-x86_64}
+BUILD=${BUILD:-1}
+
+CWD=$(pwd)
+TMP=${TMP:-/tmp}
+PKG=$TMP/package-zoo
+
+rm -rf $PKG
+mkdir -p $TMP $PKG
+
+cd $TMP
+rm -rf zoo-$VERSION
+tar xzvf $CWD/zoo-$VERSION.tar.gz
+cd zoo-$VERSION
+
+chown -R root:root .
+find . \
+ \( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \
+ -exec chmod 755 {} \; -o \
+ \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
+ -exec chmod 644 {} \;
+
+zcat $CWD/zoo_${VERSION}-${DEBPATCH}.diff.gz | patch -p1 -E --verbose --backup --suffix=.orig || exit 1
+for diff in debian/patches/*.dpatch ; do
+ cat $diff | patch -p1 --verbose --backup --suffix=.orig || exit 1
+done
+make linux || exit 1
+mkdir -p $PKG/usr/bin
+cat fiz > $PKG/usr/bin/fiz
+cat zoo > $PKG/usr/bin/zoo
+chmod 755 $PKG/usr/bin/*
+mkdir -p $PKG/usr/man/man1
+for page in fiz.1 zoo.1 ; do
+ cat $page | gzip -9c > $PKG/usr/man/man1/$page.gz
+done
+mkdir -p $PKG/usr/doc/zoo-${VERSION}
+cp -a \
+ Copyright Install \
+ $PKG/usr/doc/zoo-${VERSION}
+
+# Strip everything for good measure:
+( cd $PKG
+ find . | xargs file | grep "executable" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
+ find . | xargs file | grep "shared object" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
+)
+
+mkdir -p $PKG/install
+cat $CWD/slack-desc > $PKG/install/slack-desc
+
+# Build the package:
+cd $PKG
+makepkg -l y -c n $TMP/zoo-$VERSION-$ARCH-$BUILD.txz
+
diff --git a/source/a/zoo/zoo_2.10-18.diff b/source/a/zoo/zoo_2.10-18.diff
new file mode 100644
index 00000000..b0c74134
--- /dev/null
+++ b/source/a/zoo/zoo_2.10-18.diff
@@ -0,0 +1,1285 @@
+--- zoo-2.10.orig/debian/patches/01_old_fixes.dpatch
++++ zoo-2.10/debian/patches/01_old_fixes.dpatch
+@@ -0,0 +1,597 @@
++#! /bin/sh /usr/share/dpatch/dpatch-run
++## 01_old_fixes.dpatch by Jose Carlos Medeiros <debian@psabs.com.br>
++##
++## All lines beginning with `## DP:' are a description of the patch.
++## DP: Old fixes, that were made before this package has changed to use dpatch.
++
++[ -f debian/patches/00patch-opts ] && . debian/patches/00patch-opts
++patch_opts="${patch_opts:--f --no-backup-if-mismatch ${2:+-d $2}}"
++
++if [ $# -lt 1 ]; then
++ echo >&2 "`basename $0`: script expects -patch|-unpatch as argument"
++ exit 1
++fi
++
++case "$1" in
++ -patch) patch $patch_opts -p1 < $0;;
++ -unpatch) patch $patch_opts -p1 -R < $0;;
++ *)
++ echo >&2 "`basename $0`: script expects -patch|-unpatch as argument"
++ exit 1;;
++esac
++
++exit 0
++
++@DPATCH@
++diff -urNad zoo-2.10~/ar.h zoo-2.10/ar.h
++--- zoo-2.10~/ar.h 2005-11-16 17:11:21.000000000 -0200
+++++ zoo-2.10/ar.h 2005-11-16 17:28:23.308950960 -0200
++@@ -7,6 +7,7 @@
++ ***********************************************************/
++
++ #include <stdio.h>
+++#include <sys/types.h>
++
++ #ifdef ANSI_HDRS
++ # include <limits.h>
++@@ -15,9 +16,11 @@
++ /* uchar should be 8 bits or more */
++ /* typedef unsigned char uchar; -- already in zoo.h */
++
+++#ifndef _SYS_TYPES_H
++ typedef unsigned int uint; /* 16 bits or more */
++ typedef unsigned short ushort; /* 16 bits or more */
++ typedef unsigned long ulong; /* 32 bits or more */
+++#endif
++
++ /* T_UINT16 must be #defined in options.h to be
++ a 16-bit unsigned integer type */
++diff -urNad zoo-2.10~/basename.c zoo-2.10/basename.c
++--- zoo-2.10~/basename.c 2005-11-16 17:11:21.000000000 -0200
+++++ zoo-2.10/basename.c 2005-11-16 17:28:23.308950960 -0200
++@@ -18,7 +18,7 @@
++
++ /* This function strips device/directory information from
++ a pathname and returns just the plain filename */
++-void basename (pathname, fname)
+++void zoo_basename (pathname, fname)
++ char *pathname;
++ char fname[];
++ {
++diff -urNad zoo-2.10~/fiz.1 zoo-2.10/fiz.1
++--- zoo-2.10~/fiz.1 2005-11-16 17:11:21.000000000 -0200
+++++ zoo-2.10/fiz.1 2005-11-16 17:28:23.309950808 -0200
++@@ -5,7 +5,7 @@
++ .\"
++ .TH FIZ 1 "Jan 31, 1988"
++ .SH NAME
++-fiz \- analyze damaged zoo archive for data revovery
+++fiz \- analyze damaged zoo archive for data recovery
++ .SH SYNOPSIS
++ .I fiz
++ .RB archive[ .zoo ]
++diff -urNad zoo-2.10~/linux.c zoo-2.10/linux.c
++--- zoo-2.10~/linux.c 1969-12-31 21:00:00.000000000 -0300
+++++ zoo-2.10/linux.c 2005-11-16 17:28:23.310950656 -0200
++@@ -0,0 +1,73 @@
+++/* machine.c for Linux. */
+++
+++/* Basically code stolen from bsd.c, and adjusted for Linux. */
+++
+++#include <sys/stat.h>
+++#include <sys/time.h>
+++#include <unistd.h>
+++
+++/* Function isadir() returns 1 if the supplied handle is a directory,
+++ * else it returns 0. */
+++
+++int isadir (ZOOFILE f)
+++{
+++ struct stat buffer; /* buffer to hold file information */
+++
+++ if (fstat (fileno (f), &buffer) == -1)
+++ return (0); /* inaccessible -- assume not dir */
+++ else
+++ {
+++ if (buffer.st_mode & S_IFDIR)
+++ return (1);
+++ else
+++ return (0);
+++ }
+++}
+++
+++
+++/* Standard UNIX-compatible time routines */
+++#include "nixtime.i"
+++
+++/* Standard UNIX-specific file attribute routines */
+++#include "nixmode.i"
+++
+++/* Function gettz() returns the offset from GMT in seconds */
+++long gettz()
+++{
+++#define SEC_IN_DAY (24L * 60L * 60L)
+++#define INV_VALUE (SEC_IN_DAY + 1L)
+++
+++ static long retval = INV_VALUE; /* cache, init to impossible value */
+++ struct timeval tp;
+++ struct timezone tzp;
+++
+++ if (retval != INV_VALUE) /* if have cached value, return it */
+++ return retval;
+++
+++ gettimeofday (&tp, &tzp);
+++
+++ retval = tzp.tz_minuteswest * 60 - tzp.tz_dsttime * 3600L;
+++ return retval;
+++}
+++
+++/* Function fixfname() converts the supplied filename to a syntax
+++ * legal for the host system. It is used during extraction.
+++ * Undocumented */
+++
+++char *fixfname(char *fname)
+++{
+++ return fname; /* default is no-op */
+++}
+++
+++/* Function zootrunc() truncates the file passed to it.
+++ * Undocumented. */
+++
+++int zootrunc(FILE *f)
+++{
+++ long seekpos;
+++ int fd = fileno(f);
+++
+++ seekpos = lseek(fd, 0L, SEEK_CUR);
+++ if (seekpos >= 0)
+++ return ftruncate(fd, seekpos);
+++}
++diff -urNad zoo-2.10~/machine.c zoo-2.10/machine.c
++--- zoo-2.10~/machine.c 2005-11-16 17:11:21.000000000 -0200
+++++ zoo-2.10/machine.c 2005-11-16 17:28:23.310950656 -0200
++@@ -48,6 +48,10 @@
++ /* PART 2. FOR EACH SPECIFIC SYSTEM, INCLUDE A C FILE HERE. */
++ /***********************************************************************/
++
+++#ifdef LINUX
+++#include "linux.c"
+++#endif
+++
++ #ifdef SYS_V
++ #include "sysv.c"
++ #endif
++diff -urNad zoo-2.10~/makefile zoo-2.10/makefile
++--- zoo-2.10~/makefile 2005-11-16 17:11:21.000000000 -0200
+++++ zoo-2.10/makefile 2005-11-16 17:28:23.311950504 -0200
++@@ -23,7 +23,7 @@
++ MODEL =
++ EXTRA = -DBIG_MEM -DNDEBUG
++ LINTFLAGS = -DLINT
++-OPTIM = -O
+++OPTIM = -O -Wall
++ DESTDIR = /usr/local/bin
++
++ #List of all object files created for Zoo
++@@ -53,6 +53,7 @@
++ @echo "ultrix: ULTRIX 4.1"
++ @echo "convex: Convex C200 series"
++ @echo "sysv: System V Release 2 or 3; or SCO Xenix"
+++ @echo "linux: Linux"
++ @echo "scodos: Cross-compiler under SCO Xenix/UNIX for MS-DOS"
++ @echo "xenix286: Older Xenix/286 (not tested)"
++ @echo "xenix68k: Xenix/68000 (not tested)"
++@@ -94,6 +95,10 @@
++ bsd:
++ $(MAKE) CFLAGS="-c $(OPTIM) -DBSD4_3" $(TARGETS)
++
+++# Linux
+++linux:
+++ $(MAKE) CC="gcc" CFLAGS="-c $(OPTIM) $(LINTFLAGS) -DLINUX -DANSI_HDRS" $(TARGETS)
+++
++ # ULTRIX 4.1
++ ultrix:
++ $(MAKE) CFLAGS="-c $(OPTIM) -DULTRIX" $(TARGETS)
++@@ -235,7 +240,11 @@
++ parse.o: zoofns.h zooio.h
++ portable.o: /usr/include/stdio.h assert.h debug.h machine.h options.h
++ portable.o: portable.h various.h zoo.h zoofns.h zooio.h
++-prterror.o: /usr/include/stdio.h /usr/include/varargs.h options.h various.h
+++
+++# I deleted varags.h dependancy from prterror.o since that is a
+++# dependancy covered by a #ifdef, and in Debian's case #undef'ed
+++
+++prterror.o: /usr/include/stdio.h options.h various.h
++ prterror.o: zoofns.h zooio.h
++ sysv.o: /usr/include/sys/stat.h /usr/include/sys/types.h /usr/include/time.h
++ sysv.o: nixmode.i nixtime.i
++diff -urNad zoo-2.10~/makelist.c zoo-2.10/makelist.c
++--- zoo-2.10~/makelist.c 2005-11-16 17:11:21.000000000 -0200
+++++ zoo-2.10/makelist.c 2005-11-16 17:28:23.311950504 -0200
++@@ -21,6 +21,8 @@
++
++ char *nameptr PARMS((char *));
++ void modpath PARMS((char *));
+++int isadir PARMS((ZOOFILE));
+++int isfdir PARMS((char *));
++
++ /*******************/
++ /*
++diff -urNad zoo-2.10~/misc.c zoo-2.10/misc.c
++--- zoo-2.10~/misc.c 2005-11-16 17:11:21.000000000 -0200
+++++ zoo-2.10/misc.c 2005-11-16 17:28:23.313950200 -0200
++@@ -8,6 +8,7 @@
++ Copyright (C) 1986, 1987 Rahul Dhesi -- All rights reserved
++ (C) Copyright 1988 Rahul Dhesi -- All rights reserved
++ */
+++#include <signal.h>
++ #include "options.h"
++ /* Miscellaneous functions needed by Zoo but not by Ooz */
++
++@@ -201,7 +202,7 @@
++ ZOOFILE zoo_file;
++ {
++ #ifndef NOSIGNAL
++- T_SIGNAL (*oldsignal)();
+++ T_SIGNAL (*oldsignal)(int);
++ oldsignal = signal (SIGINT, SIG_IGN);
++ #endif
++ if (fwr_dir (direntry, zoo_file) == -1)
++diff -urNad zoo-2.10~/misc2.c zoo-2.10/misc2.c
++--- zoo-2.10~/misc2.c 2005-11-16 17:11:21.000000000 -0200
+++++ zoo-2.10/misc2.c 2005-11-16 17:28:23.312950352 -0200
++@@ -7,6 +7,10 @@
++ Copyright (C) 1986, 1987 Rahul Dhesi -- All rights reserved
++ (C) Copyright 1988 Rahul Dhesi -- All rights reserved
++ */
+++#include <sys/stat.h>
+++#include <sys/types.h>
+++#include <fcntl.h>
+++#include <unistd.h>
++ #include "options.h"
++ /* Miscellaneous routines */
++ #include "portable.h"
++diff -urNad zoo-2.10~/nixtime.i zoo-2.10/nixtime.i
++--- zoo-2.10~/nixtime.i 2005-11-16 17:11:21.000000000 -0200
+++++ zoo-2.10/nixtime.i 2005-11-16 17:28:23.313950200 -0200
++@@ -10,6 +10,9 @@
++
++ -- Rahul Dhesi 1986/12/31
++ */
+++#include <sys/types.h>
+++#include <time.h>
+++#include <utime.h>
++
++ struct tm *localtime();
++
++@@ -51,9 +54,10 @@
++ {
++ long mstonix();
++ long gettz();
++- long utimbuf[2];
++- utimbuf[0] = utimbuf[1] = gettz() + mstonix (date, time);
++- return (utime (path, utimbuf));
+++ struct utimbuf utbf;
+++
+++ utbf.actime = utbf.modtime = gettz() + mstonix (date, time);
+++ return (utime (path, &utbf));
++ }
++
++ /****************
++diff -urNad zoo-2.10~/options.h zoo-2.10/options.h
++--- zoo-2.10~/options.h 2005-11-16 17:11:21.000000000 -0200
+++++ zoo-2.10/options.h 2005-11-16 17:28:23.314950048 -0200
++@@ -13,6 +13,32 @@
++
++
++ /***********************************************************************/
+++/* Linux */
+++/***********************************************************************/
+++
+++#ifdef LINUX
+++#define FILTER
+++#define IO_MACROS
+++#define EXISTS(f) (access(f, 00) == 0)
+++#define FNLIMIT 1023
+++#define CHEKDIR
+++#define NIXTIME
+++#define NIXFNAME
+++#define NEEDCTYP
+++#define NOENUM
+++#define REN_STDC
+++#define SETBUF
+++#define GETTZ
+++#define FATTR
+++#define T_SIGNAL void
+++#define STDARG
+++#define HAVE_ISATTY /* undocumented #define option */
+++#define ANSI_PROTO
+++#define VOIDPTR void *
+++#define NO_STDIO_FN /* Do we need this? RUARI QUINN */
+++#endif /* Linux */
+++
+++/***********************************************************************/
++ /* SYSTEM V (should be compatible with most releases) */
++ /***********************************************************************/
++
++diff -urNad zoo-2.10~/portable.h zoo-2.10/portable.h
++--- zoo-2.10~/portable.h 2005-11-16 17:11:21.000000000 -0200
+++++ zoo-2.10/portable.h 2005-11-16 17:28:23.314950048 -0200
++@@ -90,6 +90,12 @@
++ #define MKDIR(x) mkdir(x, 0777)
++ #endif
++
+++/* Linux */
+++#ifdef LINUX
+++#define NIX_IO /* standard **IX I/O */
+++#define MKDIR(x) mkdir(x, 0777)
+++#endif
+++
++ /* Amiga */
++ #ifdef MCH_AMIGA
++ # include "MCH_AMIGA NEEDS REVISION"
++diff -urNad zoo-2.10~/zoo.1 zoo-2.10/zoo.1
++--- zoo-2.10~/zoo.1 2005-11-16 17:11:21.000000000 -0200
+++++ zoo-2.10/zoo.1 2005-11-16 17:33:56.112357152 -0200
++@@ -955,7 +955,7 @@
++ 2526: DIR [changes] ==> 95
++ 2587: DATA
++ ****************
++- 3909: DIR [copyrite] ==> 1478
+++ 3909: DIR [copyright] ==> 1478
++ 3970: DATA
++ 4769: DATA
++ ****************
++@@ -1041,7 +1041,7 @@
++ Matches any sequence of zero or more characters.
++ .PP
++ .TP
++-.B \?
+++.B ?
++ Matches any single character.
++ .sp 1
++ Arbitrary combinations of
++@@ -1466,23 +1466,12 @@
++ .I zoo
++ on all systems. So far as I can tell, this
++ upward compatibility (all manipulations) and downward
++-compatiblity (ability to extract and list)
+++compatibility (ability to extract and list)
++ is maintained by
++ .I zoo
++ versions up to 2.01. Version 2.1 adds the incompatibility
++ that if high-performance compression is used, earlier
++ versions cannot extract files compressed with version 2.1.
++-This is the only incompatibility that is permissible.
++-You are forbidden, with the force of
++-copyright law, to create from the
++-.I zoo
++-source code any derivative work
++-that violates this compatibility goal,
++-whether knowingly or through negligence.
++-If any violation of this
++-compatibility goal is observed,
++-this should be
++-considered a serious problem and reported to me.
++ .SH CHANGES
++ Here is a list of changes occurring from version 1.50 to
++ version 2.01. In parentheses is given the version in which each
++@@ -1581,7 +1570,7 @@
++ .TP
++ \-
++ (2.01) Blanks around equal signs in commands given to "make"
++-were removed from the mk* scripts for better compatiblity
+++were removed from the mk* scripts for better compatibility
++ with more **IX implementations including Sun's.
++ .TP
++ \-
++diff -urNad zoo-2.10~/zoo.c zoo-2.10/zoo.c
++--- zoo-2.10~/zoo.c 2005-11-16 17:11:21.000000000 -0200
+++++ zoo-2.10/zoo.c 2005-11-16 17:28:23.319949288 -0200
++@@ -15,6 +15,7 @@
++ (C) Copyright 1988 Rahul Dhesi -- All rights reserved
++ (C) Copyright 1991 Rahul Dhesi -- All rights reserved
++ */
+++#include <unistd.h>
++ #include "options.h"
++ #include "zooio.h"
++ #include "various.h"
++diff -urNad zoo-2.10~/zoo.h zoo-2.10/zoo.h
++--- zoo-2.10~/zoo.h 2005-11-16 17:11:21.000000000 -0200
+++++ zoo-2.10/zoo.h 2005-11-16 17:28:23.321948984 -0200
++@@ -1,5 +1,6 @@
++ /* derived from: zoo.h 2.16 88/01/27 23:21:36 */
++-
+++#ifndef ZOO_H
+++#define ZOO_H
++ /*
++ The contents of this file are hereby released to the public domain.
++
++@@ -240,3 +241,4 @@
++ #define MAXGEN 0x0f
++ /* version mask to prune down to correct size on large-word machines */
++ #define VER_MASK 0xffff
+++#endif
++diff -urNad zoo-2.10~/zooadd.c zoo-2.10/zooadd.c
++--- zoo-2.10~/zooadd.c 2005-11-16 17:11:21.000000000 -0200
+++++ zoo-2.10/zooadd.c 2005-11-16 17:28:23.318949440 -0200
++@@ -9,11 +9,13 @@
++ (C) Copyright 1988 Rahul Dhesi -- All rights reserved
++ (C) Copyright 1991 Rahul Dhesi -- All rights reserved
++ */
+++#include <unistd.h>
++ #include "options.h"
++ /* Adds files specified in parameter-list to archive zoo_path. */
++
++ #define LONGEST 20 /* assumed length of longest filename */
++ #include "zoomem.h" /* to define MAXADD */
+++#undef PORTABLE
++ #include "zoo.h"
++ #include "zooio.h"
++ #include "various.h"
++@@ -37,6 +39,7 @@
++ void copyfields PARMS ((struct direntry *, struct tiny_header *));
++ void storefname PARMS ((struct direntry *, char *, int));
++ char *choosefname PARMS ((struct direntry *));
+++int isadir PARMS((ZOOFILE));
++
++ extern struct zoo_header zoo_header;
++
++@@ -132,7 +135,7 @@
++
++ if (zoo_file == NOFILE)
++ prterror ('f', could_not_open, zoo_path);
++-basename(zoo_path, zoo_fname); /* get basename of archive */
+++zoo_basename(zoo_path, zoo_fname); /* get basename of archive */
++ rootname (zoo_path, zoo_bak); /* name without extension */
++ strcat (zoo_bak, BACKUP_EXT); /* name of backup of this archive */
++
++@@ -222,7 +225,7 @@
++ break;
++ }
++
++- basename (this_path, this_fname); /* get just filename for later */
+++ zoo_basename (this_path, this_fname); /* get just filename for later */
++
++ this_file = zooopen(this_path, Z_READ);
++ if (this_file == NOFILE) {
++diff -urNad zoo-2.10~/zooadd2.c zoo-2.10/zooadd2.c
++--- zoo-2.10~/zooadd2.c 2005-11-16 17:11:21.000000000 -0200
+++++ zoo-2.10/zooadd2.c 2005-11-16 17:28:23.317949592 -0200
++@@ -7,7 +7,9 @@
++ Copyright (C) 1986, 1987 Rahul Dhesi -- All rights reserved
++ (C) Copyright 1988 Rahul Dhesi -- All rights reserved
++ */
+++#include <unistd.h>
++ #include "options.h"
+++#undef PORTABLE
++ #include "zoo.h"
++ #ifndef OK_STDIO
++ #include <stdio.h>
++@@ -20,7 +22,7 @@
++ #include "assert.h"
++ #include "debug.h"
++ #include "parse.h"
++-
+++int isfdir PARMS((char *));
++ /*
++ Miscellaneous routines to support zooadd().
++ */
++diff -urNad zoo-2.10~/zooext.c zoo-2.10/zooext.c
++--- zoo-2.10~/zooext.c 2005-11-16 17:11:21.000000000 -0200
+++++ zoo-2.10/zooext.c 2005-11-16 17:28:23.320949136 -0200
++@@ -14,7 +14,8 @@
++ /* Extract file from archive. Extracts files specified in parameter-list
++ from archive zoo_path. If none specified, extracts all files from
++ archive. */
++-
+++#include <unistd.h>
+++#include <signal.h>
++ #include "options.h"
++ #include "zoo.h"
++ #include "parse.h" /* defines struct for parse() */
++@@ -62,7 +63,7 @@
++ char *whichname; /* which name to extract */
++ char matchname[PATHSIZE]; /* for pattern matching only */
++ #ifndef NOSIGNAL
++-T_SIGNAL (*oldsignal)(); /* to save previous SIGINT handler */
+++T_SIGNAL (*oldsignal)(int); /* to save previous SIGINT handler */
++ #endif
++ ZOOFILE zoo_file; /* open archive */
++ long next_ptr; /* pointer to within archive */
++@@ -626,7 +627,7 @@
++
++ /* Ctrl_c() is called if ^C is hit while a file is being extracted.
++ It closes the files, deletes it, and exits. */
++-T_SIGNAL ctrl_c()
+++T_SIGNAL ctrl_c(int dummy)
++ {
++ #ifndef NOSIGNAL
++ signal (SIGINT, SIG_IGN); /* ignore any more */
++diff -urNad zoo-2.10~/zoofns.h zoo-2.10/zoofns.h
++--- zoo-2.10~/zoofns.h 2005-11-16 17:11:21.000000000 -0200
+++++ zoo-2.10/zoofns.h 2005-11-16 17:28:23.320949136 -0200
++@@ -42,12 +42,12 @@
++ int cfactor PARMS ((long, long));
++ int chname PARMS ((char *, char *));
++ int cmpnum PARMS ((unsigned int, unsigned int, unsigned int, unsigned int));
++-T_SIGNAL ctrl_c PARMS ((void));
+++T_SIGNAL ctrl_c PARMS ((int));
++ int exists PARMS ((char *));
++ int getfile PARMS ((ZOOFILE, ZOOFILE, long, int));
++ int getutime PARMS ((char *, unsigned *, unsigned *));
++ int gettime PARMS ((ZOOFILE, unsigned *, unsigned *));
++-T_SIGNAL handle_break PARMS ((void));
+++T_SIGNAL handle_break PARMS ((int));
++
++ #ifdef USE_ASCII
++ int isupper PARMS ((int));
++@@ -85,7 +85,7 @@
++ void addfname PARMS ((char *, long, unsigned int, unsigned int,
++ unsigned, unsigned));
++ void add_version PARMS ((char *, struct direntry *));
++-void basename PARMS ((char *, char []));
+++void zoo_basename PARMS ((char *, char []));
++ void break_off PARMS ((void));
++ void close_file PARMS ((ZOOFILE));
++ void comment PARMS ((char *, char *));
++diff -urNad zoo-2.10~/zooio.h zoo-2.10/zooio.h
++--- zoo-2.10~/zooio.h 2005-11-16 17:11:21.000000000 -0200
+++++ zoo-2.10/zooio.h 2005-11-16 17:28:23.321948984 -0200
++@@ -7,6 +7,7 @@
++
++ -- Rahul Dhesi 1988/01/24
++ */
+++#include "zoo.h"
++ #ifndef OK_STDIO
++ #include <stdio.h>
++ #define OK_STDIO
++diff -urNad zoo-2.10~/zoolist.c zoo-2.10/zoolist.c
++--- zoo-2.10~/zoolist.c 2005-11-16 17:11:21.000000000 -0200
+++++ zoo-2.10/zoolist.c 2005-11-16 17:28:23.322948832 -0200
++@@ -47,6 +47,7 @@
++ int ver_too_high PARMS((struct zoo_header *));
++ int needed PARMS((char *, struct direntry *, struct zoo_header *));
++ void printtz PARMS((int));
+++int fputchar PARMS ((int));
++
++ void zoolist (argv, option, argc)
++ char **argv, *option;
++@@ -414,7 +415,7 @@
++ if (direntry.fattr == 0)
++ printf ("--- ");
++ else if ((direntry.fattr >> 22) == 1)
++- printf ("%03o ", direntry.fattr & 0x1ff);
+++ printf ("%03lo ", direntry.fattr & 0x1ff);
++ else
++ printf ("??? ");
++ }
++diff -urNad zoo-2.10~/zoopack.c zoo-2.10/zoopack.c
++--- zoo-2.10~/zoopack.c 2005-11-16 17:11:21.000000000 -0200
+++++ zoo-2.10/zoopack.c 2005-11-16 17:28:23.323948680 -0200
++@@ -10,6 +10,7 @@
++ Copyright (C) 1986, 1987 Rahul Dhesi -- All rights reserved
++ (C) Copyright 1988 Rahul Dhesi -- All rights reserved
++ */
+++#include <unistd.h>
++ #include "options.h"
++ /* Packs an archive. The sequence is:
++ 1. Copy all files from current archive to new one.
++@@ -171,7 +172,7 @@
++ } else {
++ strcpy (temp_file, xes);
++ }
++-mktemp (temp_file); /* ... and make unique */
+++mkstemp (temp_file); /* ... and make unique */
++ new_file = zoocreate (temp_file);
++ if (new_file == NOFILE)
++ prterror ('f', "Could not create temporary file %s.\n", temp_file);
++@@ -388,7 +389,7 @@
++
++ /* handle_break() */
++ /* Sets break_hit to 1 when called */
++-T_SIGNAL handle_break()
+++T_SIGNAL handle_break(int dummy)
++ {
++ #ifndef NOSIGNAL
++ signal (SIGINT, SIG_IGN); /* ignore future control ^Cs for now */
+--- zoo-2.10.orig/debian/patches/00options
++++ zoo-2.10/debian/patches/00options
+@@ -0,0 +1 @@
++DPEP_OPTION_EXEC_TEMPLATE=1
+--- zoo-2.10.orig/debian/patches/00list
++++ zoo-2.10/debian/patches/00list
+@@ -0,0 +1,5 @@
++01_old_fixes
++02_traversal_directory
++03_fix_manage_archive_under_AMD64
++04_fix_fullpath_buffer_overflow
++05_CVE-2006-1269.dpatch
+--- zoo-2.10.orig/debian/patches/00template
++++ zoo-2.10/debian/patches/00template
+@@ -0,0 +1,43 @@
++#!/bin/sh
++# Sample debian/patches/00template script
++# era Thu May 15 23:24:07 2003
++
++# This simply creates the equivalent of the hard-coded template.
++# Adapt and hack to suit your needs.
++
++file="$1"
++shift
++description="$@"
++
++fullnameguess="$(getent passwd $(id -un) | cut -f5 -d: | cut -f1 -d,)"
++domainguess=$([ -f /etc/mailname ] && cat /etc/mailname || hostname -f)
++emailguess="${DEBEMAIL:-${EMAIL:-$(logname)@${domainguess}}}"
++
++cat <<EOF
++#! /bin/sh /usr/share/dpatch/dpatch-run
++## ${file} by ${DEBFULLNAME:-$fullnameguess} <$emailguess>
++##
++## All lines beginning with \`## DP:' are a description of the patch.
++## DP: ${description:-No description}
++
++[ -f debian/patches/00patch-opts ] && . debian/patches/00patch-opts
++patch_opts="\${patch_opts:--f --no-backup-if-mismatch \${2:+-d \$2}}"
++
++if [ \$# -lt 1 ]; then
++ echo >&2 "\`basename \$0\`: script expects -patch|-unpatch as argument"
++ exit 1
++fi
++
++case "\$1" in
++ -patch) patch \$patch_opts -p1 < \$0;;
++ -unpatch) patch \$patch_opts -p1 -R < \$0;;
++ *)
++ echo >&2 "\`basename \$0\`: script expects -patch|-unpatch as argument"
++ exit 1;;
++esac
++
++exit 0
++
++@DPATCH@
++EOF
++
+--- zoo-2.10.orig/debian/patches/02_traversal_directory.dpatch
++++ zoo-2.10/debian/patches/02_traversal_directory.dpatch
+@@ -0,0 +1,70 @@
++#! /bin/sh /usr/share/dpatch/dpatch-run
++## 02_traversal_directory.dpatch by Jose Carlos Medeiros <debian@psabs.com.br>
++##
++## All lines beginning with `## DP:' are a description of the patch.
++## DP: patch to solve problem with "directory traversal bug" CVE id CAN-2005-2349
++
++[ -f debian/patches/00patch-opts ] && . debian/patches/00patch-opts
++patch_opts="${patch_opts:--f --no-backup-if-mismatch ${2:+-d $2}}"
++
++if [ $# -lt 1 ]; then
++ echo >&2 "`basename $0`: script expects -patch|-unpatch as argument"
++ exit 1
++fi
++
++case "$1" in
++ -patch) patch $patch_opts -p1 < $0;;
++ -unpatch) patch $patch_opts -p1 -R < $0;;
++ *)
++ echo >&2 "`basename $0`: script expects -patch|-unpatch as argument"
++ exit 1;;
++esac
++
++exit 0
++
++@DPATCH@
++diff -urNad zoo-2.10/portable.c /tmp/dpep.W7Aoaj/zoo-2.10/portable.c
++--- zoo-2.10/portable.c 2005-07-22 15:34:22.000000000 -0300
+++++ /tmp/dpep.W7Aoaj/zoo-2.10/portable.c 2005-07-25 14:43:57.757855384 -0300
++@@ -364,6 +364,41 @@
++ show_dir(direntry);
++ }
++ #endif
+++ /* #########################################################################
+++ *
+++ * THIS CODE WAS WRITTEN TO SOLVE PROBLEM WITH DIRECTORY TRAVERSAL SECURITY
+++ * BUG (CVE id CAN-2005-2349).
+++ *
+++ * ########################################################################
+++ */
+++ char *p;
+++ /* take off '../' */
+++ while ((p = strstr( direntry->dirname, "../" )) != NULL) {
+++ while (*(p+3) != '\0') {
+++ *p = *(p + 3);
+++ p++;
+++ }
+++ *p = *(p+3); /* move last null */
+++ //printf("zoo: skipped \"../\" path component in '%s'\n", direntry->dirname);
+++ }
+++ /* take off '/' */
+++ if ( direntry->dirname[0] == '/' ) {
+++ p = direntry->dirname;
+++ while (*p != '\0') {
+++ *p = *(p + 1);
+++ p++;
+++ }
+++ *p = *(p+1); /* move last null */
+++ //printf("zoo: skipped \"/\" path component in '%s'\n", direntry->dirname);
+++ }
+++ /* direntry->dirlen = strlen(direntry->dirname); */
+++
+++ /* ##################################################################
+++ *
+++ * END
+++ *
+++ * ###################################################################
+++ */
++ return (0);
++ }
++
+--- zoo-2.10.orig/debian/patches/03_fix_manage_archive_under_AMD64.dpatch
++++ zoo-2.10/debian/patches/03_fix_manage_archive_under_AMD64.dpatch
+@@ -0,0 +1,107 @@
++#! /bin/sh /usr/share/dpatch/dpatch-run
++## 03_fix_manage_archive_under_AMD64.dpatch by Jose Carlos Medeiros <debian@psabs.com.br>
++##
++## All lines beginning with `## DP:' are a description of the patch.
++## DP: patch to solve problems managing files under AMD64 and maybe under others 64 archs.
++
++[ -f debian/patches/00patch-opts ] && . debian/patches/00patch-opts
++patch_opts="${patch_opts:--f --no-backup-if-mismatch ${2:+-d $2}}"
++
++if [ $# -lt 1 ]; then
++ echo >&2 "`basename $0`: script expects -patch|-unpatch as argument"
++ exit 1
++fi
++
++case "$1" in
++ -patch) patch $patch_opts -p1 < $0;;
++ -unpatch) patch $patch_opts -p1 -R < $0;;
++ *)
++ echo >&2 "`basename $0`: script expects -patch|-unpatch as argument"
++ exit 1;;
++esac
++
++exit 0
++
++@DPATCH@
++diff -urNad zoo-2.10~/makefile zoo-2.10/makefile
++--- zoo-2.10~/makefile 2005-11-16 12:10:06.773065688 -0200
+++++ zoo-2.10/makefile 2005-11-16 12:12:50.816127352 -0200
++@@ -54,6 +54,7 @@
++ @echo "convex: Convex C200 series"
++ @echo "sysv: System V Release 2 or 3; or SCO Xenix"
++ @echo "linux: Linux"
+++ @echo "linux64: Linux with 64 bit long"
++ @echo "scodos: Cross-compiler under SCO Xenix/UNIX for MS-DOS"
++ @echo "xenix286: Older Xenix/286 (not tested)"
++ @echo "xenix68k: Xenix/68000 (not tested)"
++@@ -99,6 +100,10 @@
++ linux:
++ $(MAKE) CC="gcc" CFLAGS="-c $(OPTIM) $(LINTFLAGS) -DLINUX -DANSI_HDRS" $(TARGETS)
++
+++# Linux64
+++linux64:
+++ $(MAKE) CC="gcc" CFLAGS="-c $(OPTIM) $(LINTFLAGS) -DLINUX -DLONG64 -DANSI_HDRS" $(TARGETS)
+++
++ # ULTRIX 4.1
++ ultrix:
++ $(MAKE) CFLAGS="-c $(OPTIM) -DULTRIX" $(TARGETS)
++diff -urNad zoo-2.10~/misc.c zoo-2.10/misc.c
++--- zoo-2.10~/misc.c 2005-11-16 12:10:06.775065384 -0200
+++++ zoo-2.10/misc.c 2005-11-16 12:20:48.366528656 -0200
++@@ -173,7 +173,11 @@
++
++ frd_zooh (header, zoo_file);
++
+++#ifdef LONG64
+++ if ((int)(header->zoo_start = header->zoo_minus) != 0)
+++#else
++ if ((header->zoo_start + header->zoo_minus) != 0L)
+++#endif
++ prterror ('f', failed_consistency);
++ if (ver_too_high (header))
++ prterror ('f', wrong_version, header->major_ver, header->minor_ver);
++diff -urNad zoo-2.10~/zoodel.c zoo-2.10/zoodel.c
++--- zoo-2.10~/zoodel.c 1991-07-05 13:00:00.000000000 -0300
+++++ zoo-2.10/zoodel.c 2005-11-16 12:20:19.776874944 -0200
++@@ -138,7 +138,11 @@
++
++ /* read archive header */
++ frd_zooh (&zoo_header, zoo_file);
+++#ifdef LONG64
+++ if ((int)(zoo_header.zoo_start + zoo_header.zoo_minus) != 0)
+++#else
++ if ((zoo_header.zoo_start + zoo_header.zoo_minus) != 0L)
+++#endif
++ prterror ('f', failed_consistency);
++ if (ver_too_high (&zoo_header))
++ prterror ('f', wrong_version, zoo_header.major_ver, zoo_header.minor_ver);
++diff -urNad zoo-2.10~/zooext.c zoo-2.10/zooext.c
++--- zoo-2.10~/zooext.c 2005-11-16 12:10:06.783064168 -0200
+++++ zoo-2.10/zooext.c 2005-11-16 12:22:08.373365768 -0200
++@@ -164,7 +164,11 @@
++ } else {
++ /* read header */
++ frd_zooh (&zoo_header, zoo_file);
+++#ifdef LONG64
+++ if ((int)(zoo_header.zoo_start + zoo_header.zoo_minus) != 0) {
+++#else
++ if ((zoo_header.zoo_start + zoo_header.zoo_minus) != 0L) {
+++#endif
++ prterror ('w', failed_consistency);
++ bad_header++;
++ exit_status = 1;
++diff -urNad zoo-2.10~/zoopack.c zoo-2.10/zoopack.c
++--- zoo-2.10~/zoopack.c 2005-11-16 12:10:06.786063712 -0200
+++++ zoo-2.10/zoopack.c 2005-11-16 12:23:01.145343208 -0200
++@@ -140,7 +140,11 @@
++ /* Read the header of the old archive. */
++ frd_zooh(&old_zoo_header, zoo_file);
++
+++#ifdef LONG64
+++if ((int)(old_zoo_header.zoo_start + old_zoo_header.zoo_minus) != 0) {
+++#else
++ if ((old_zoo_header.zoo_start + old_zoo_header.zoo_minus) != 0L) {
+++#endif
++ prterror ('w', failed_consistency);
++ ++bad_header; /* remember for future error message */
++ }
+--- zoo-2.10.orig/debian/patches/04_fix_fullpath_buffer_overflow.dpatch
++++ zoo-2.10/debian/patches/04_fix_fullpath_buffer_overflow.dpatch
+@@ -0,0 +1,44 @@
++#! /bin/sh /usr/share/dpatch/dpatch-run
++## 04_fix_fullpath_buffer_overflow.dpatch by Jose Carlos Medeiros <debian@psabs.com.br>
++##
++## All lines beginning with `## DP:' are a description of the patch.
++## DP: Fix "fullpath()" File Name Handling Buffer Overflow, CAN-2006-0855
++
++[ -f debian/patches/00patch-opts ] && . debian/patches/00patch-opts
++patch_opts="${patch_opts:--f --no-backup-if-mismatch ${2:+-d $2}}"
++
++if [ $# -lt 1 ]; then
++ echo >&2 "`basename $0`: script expects -patch|-unpatch as argument"
++ exit 1
++fi
++
++case "$1" in
++ -patch) patch $patch_opts -p1 < $0;;
++ -unpatch) patch $patch_opts -p1 -R < $0;;
++ *)
++ echo >&2 "`basename $0`: script expects -patch|-unpatch as argument"
++ exit 1;;
++esac
++
++exit 0
++
++@DPATCH@
++diff -urNad zoo-2.10~/misc.c zoo-2.10/misc.c
++--- zoo-2.10~/misc.c 2006-03-03 18:51:31.000000000 -0300
+++++ zoo-2.10/misc.c 2006-03-03 18:54:29.000000000 -0300
++@@ -136,11 +136,14 @@
++ char *fullpath (direntry)
++ struct direntry *direntry;
++ {
++- static char result[PATHSIZE];
+++ static char result[PATHSIZE+PATHSIZE+12]; // Room for enough space
++ combine (result,
++ direntry->dirlen != 0 ? direntry->dirname : "",
++ (direntry->namlen != 0) ? direntry->lfname : direntry->fname
++ );
+++ if (strlen (result) >= PATHSIZE) {
+++ prterror ('f', "Combined dirname and filename too long\n");
+++ }
++ return (result);
++ }
++
+--- zoo-2.10.orig/debian/patches/05_CVE-2006-1269.dpatch
++++ zoo-2.10/debian/patches/05_CVE-2006-1269.dpatch
+@@ -0,0 +1,37 @@
++#! /bin/sh /usr/share/dpatch/dpatch-run
++## 05_CVE-2006-1269.dpatch by Alec Berryman <alec@thened.net>
++##
++## All lines beginning with `## DP:' are a description of the patch.
++## DP: https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=183426
++
++[ -f debian/patches/00patch-opts ] && . debian/patches/00patch-opts
++patch_opts="${patch_opts:--f --no-backup-if-mismatch ${2:+-d $2}}"
++
++if [ $# -lt 1 ]; then
++ echo >&2 "`basename $0`: script expects -patch|-unpatch as argument"
++ exit 1
++fi
++
++case "$1" in
++ -patch) patch $patch_opts -p1 < $0;;
++ -unpatch) patch $patch_opts -p1 -R < $0;;
++ *)
++ echo >&2 "`basename $0`: script expects -patch|-unpatch as argument"
++ exit 1;;
++esac
++
++exit 0
++
++@DPATCH@
++diff -urNad zoo-2.10~/parse.c zoo-2.10/parse.c
++--- zoo-2.10~/parse.c 1991-07-05 17:00:00.000000000 +0100
+++++ zoo-2.10/parse.c 2006-05-18 14:16:32.000000000 +0100
++@@ -39,7 +39,7 @@
++ char *namep; /* points to relevant part of tempname */
++
++ char *p;
++- strcpy (tempname, fname);
+++ strncpy (tempname, fname, LFNAMESIZE);
++
++ #ifdef DEBUG
++ printf ("parse: supplied name is [%s].\n", tempname);
+--- zoo-2.10.orig/debian/compat
++++ zoo-2.10/debian/compat
+@@ -0,0 +1 @@
++5
+--- zoo-2.10.orig/debian/changelog
++++ zoo-2.10/debian/changelog
+@@ -0,0 +1,139 @@
++zoo (2.10-18) unstable; urgency=low
++
++ * Added patch to solve "CVE-2006-1269: local arbitrary code execution",
++ thanks to Alec Berryman <alec@thened.net> (closes: #367858)
++ * Updated to DH_COMPAT 5
++
++ -- Jose Carlos Medeiros <debian@psabs.com.br> Fri, 19 May 2006 19:23:24 -0300
++
++zoo (2.10-17) unstable; urgency=low
++
++ * Added 04_fix_fullpath_buffer_overflow patch to fix a Buffer Overflow,
++ CAN-2006-0855. Thanks to Jean-SébastienGuay-Leroux
++ <jean-sebastien_at_guay-leroux.com>, (closes: #354461)
++
++ -- Jose Carlos Medeiros <debian@psabs.com.br> Fri, 3 Mar 2006 18:56:02 -0300
++
++zoo (2.10-16) unstable; urgency=low
++
++ * Added 03_fix_manage_archive_under_AMD64 patch, thanks to carlj
++ <Carl.Johnson.carlj@peak.org>. (closes: #335114)
++ * Updated debian/rules to test and compile to AMD64.
++ * Updated to Standards-Version 3.6.2.
++ * Changed 01_old_fixes dpatch to solve problem "missing \?" in zoo.1.
++
++ -- Jose Carlos Medeiros <debian@psabs.com.br> Wed, 16 Nov 2005 16:48:24 -0200
++
++zoo (2.10-15) unstable; urgency=low
++
++ * Added dpatch as Build-Depends in debian/control.
++ * Added debian/watch file. (closes: #322246)
++ * Updated linux.c in 01_old_fixes. (closes: #322194)
++ Thanks to Robert Millan <rmh@aybabtu.com>
++
++ -- Jose Carlos Medeiros <debian@psabs.com.br> Tue, 9 Aug 2005 15:07:48 -0300
++
++zoo (2.10-14) unstable; urgency=low
++
++ * Changed call from "mktemp" to "mkstemp" in zoopack.c file.
++ * Added debian/patches/00options, debian/patches/00list and
++ debian/patches/00template files.
++ * Updated rules and control to use dpatch.
++ * Added 01_old_fixes.dpatch file with old changes.
++ * Added 02_traversal_directory.dpatch to solve problem with "directory
++ traversal security bug - CVE id CAN-2005-2349". Thanks to
++ Jorge Ventura <jorge.ventura@fusemail.com> (closes: #309594)
++ * Changed upstream source link in copyright file.
++
++ -- Jose Carlos Medeiros <debian@psabs.com.br> Fri, 22 Jul 2005 12:59:07 -0300
++
++zoo (2.10-13) unstable; urgency=low
++
++ * Updated zoo.1 file (thanks to A Costa <agcosta@gis.net>). (closes: #302817)
++ * Changed email of Mantainer in control file.
++ * Updated fiz.1 file (thanks to A Costa <agcosta@gis.net>). (closes: #309874)
++
++ -- Jose Carlos Medeiros <debian@psabs.com.br> Tue, 7 Jun 2005 20:47:51 -0300
++
++zoo (2.10-12) unstable; urgency=low
++
++ * New maintainer (closes: #302895)
++ * Created compat file.
++ * Deleted debian/docs unused file.
++ * Changed rules to complain debhelper > 4.0.
++ * Changed README.compilers to README.debian.
++
++ -- Jose Carlos Medeiros <jose@psabs.com.br> Wed, 13 Apr 2005 18:39:14 -0300
++
++zoo (2.10-11) unstable; urgency=low
++
++ * New maintainer (closes: #258470)
++ * Move to main from non-free (zoo is now in public domain).
++ * Updated copyright file
++ * Updated zoo.1 file
++ * Removed unnecessary, compile related files from the binary package.
++ * Standards-Version: 3.6.1.0
++
++ -- Niklas Vainio <nvainio+deb@iki.fi> Sat, 10 Jul 2004 21:29:26 +0300
++
++zoo (2.10-10) unstable; urgency=low
++
++ * Recompile to allow prelinking (closes: #231547).
++
++ -- Petr Cech <cech@debian.org> Mon, 9 Feb 2004 12:02:32 +0100
++
++zoo (2.10-9) unstable; urgency=low
++
++ * Fix build with new glibc-2.2 (closes: #94865)
++
++ -- Petr Cech <cech@debian.org> Sun, 22 Apr 2001 22:17:14 +0200
++
++zoo (2.10-8) unstable; urgency=low
++
++ * Added README.compilers.
++ * Standards-version: 3.2.1.
++ * Glibc-2.2 build.
++ * Fix long utibuf[2] to struct utimbuf.
++
++ -- Petr Cech <cech@debian.org> Tue, 17 Oct 2000 15:07:50 +0200
++
++zoo (2.10-7) unstable; urgency=low
++
++ * Don't know how, but the copyright was gone
++ * Added documentation from source package
++
++ -- Petr Cech <cech@debian.org> Sat, 16 May 1998 11:32:30 +0200
++
++zoo (2.10-6) frozen unstable; urgency=low
++
++ * Use debhelper.
++ * Added some includes and prototypes to have less warnings
++ * New maintainer.
++ * updated to 2.4.1
++
++ -- Petr CECH <Petr.Cech@st.mff.cuni.cz> Fri, 8 May 1998 01:06:39 +0200
++
++zoo (2.10-5) unstable; urgency=low
++
++ * Orphaned the package.
++ * debian/control (Standards-Version): updated to 2.4.0.0 [#16772].
++ * debian/control (Section): changed to non-free/utils [fails #3 of DFSG].
++ * debian/control (Maintainer): set to debian-qa list.
++ * debian/rules: rewritten.
++
++ -- James Troup <jjtroup@comp.brad.ac.uk> Wed, 4 Mar 1998 02:17:57 +0000
++
++zoo (2.10-4) unstable; urgency=low
++
++ * Rebuilt for libc6.
++
++ -- James Troup <jjtroup@comp.brad.ac.uk> Wed, 25 Jun 1997 17:04:23 +0000
++
++zoo (2.10-3) unstable; urgency=low
++
++ * New maintainer.
++ * Updated package to standards version 2.1.1.2.
++ * Removed executables from source package.
++ * Added better linux support, fixes bug #3961 and #4904.
++
++ -- James Troup <jjtroup@comp.brad.ac.uk> Wed, 22 Jan 1997 02:18:51 +0000
+--- zoo-2.10.orig/debian/watch
++++ zoo-2.10/debian/watch
+@@ -0,0 +1,3 @@
++version=3
++opts=dversionmangle=s/\.// \
++ http://www.ibiblio.org/pub/packages/ccic/software/unix/utils/zoo(.*)\.tar\.gz
+--- zoo-2.10.orig/debian/control
++++ zoo-2.10/debian/control
+@@ -0,0 +1,20 @@
++Source: zoo
++Section: utils
++Priority: optional
++Build-Depends: debhelper (>= 5.0.0), dpatch (>= 2.0.10)
++Maintainer: Jose Carlos Medeiros <debian@psabs.com.br>
++Uploaders: Ola Lundqvist <opal@debian.org>
++Standards-Version: 3.6.2
++
++Package: zoo
++Architecture: any
++Depends: ${shlibs:Depends}
++Description: manipulate zoo archives
++ Zoo is used to create and maintain collections of files in compressed
++ form. It uses a Lempel-Ziv compression algorithm that gives space
++ savings in the range of 20% to 80% depending on the type of file data.
++ Zoo can store and selectively extract multiple generations of the same
++ file.
++ .
++ This package exists for its historical value. If you are looking for
++ a compression tool for serious use, check tar and gzip.
+--- zoo-2.10.orig/debian/rules
++++ zoo-2.10/debian/rules
+@@ -0,0 +1,94 @@
++#!/usr/bin/make -f
++# debian/rules file - for zoo (2.1).
++# Based on sample debian.rules file - for GNU Hello (1.3).
++# Copyright 1994,1995 by Ian Jackson.
++# Copyright 1997,1998 by James Troup.
++# Copyright 1998,1999,2000 by Petr ech.
++# Copyright 2005 by Jose Carlos N. Medeiros.
++# I hereby give you perpetual unlimited permission to copy,
++# modify and relicense this file, provided that you do not remove
++# my name from the file itself. (I assert my moral right of
++# paternity under the Copyright, Designs and Patents Act 1988.)
++# Uncomment this to turn on verbose mode.
++#export DH_VERBOSE=1
++
++# This has to be exported to make some magic below work.
++#export DH_OPTIONS
++
++CFLAGS = -Wall
++
++ifneq (,$(findstring noopt,$(DEB_BUILD_OPTIONS)))
++ CFLAGS += -O0
++else
++ CFLAGS += -O2
++endif
++ifneq (,$(findstring debug,$(DEB_BUILD_OPTIONS)))
++ CFLAGS += -g
++endif
++ifeq (,$(findstring nostrip,$(DEB_BUILD_OPTIONS)))
++ INSTALL += -s
++endif
++
++DEB_HOST_ARCH ?= $(shell dpkg-architecture -qDEB_HOST_ARCH)
++PACKAGE = zoo
++
++# Include dpatch stuff.
++include /usr/share/dpatch/dpatch.make
++
++configure: configure-stamp
++configure-stamp:
++ dh_testdir
++ touch configure-stamp
++
++build: build-stamp
++
++build-stamp: configure-stamp patch
++ dh_testdir
++
++ echo $(DEB_HOST_ARCH)
++ifeq ($(DEB_HOST_ARCH),amd64)
++ $(MAKE) OPTIM="$(CFLAGS)" linux64
++else
++ $(MAKE) OPTIM="$(CFLAGS)" linux
++endif
++ touch build-stamp
++
++clean: unpatch
++ dh_testdir
++ dh_testroot
++ -$(MAKE) -i clean
++ dh_clean build-stamp configure-stamp zoo fiz
++
++install: build
++ dh_testdir
++ dh_testroot
++ dh_clean -k
++ dh_installdirs
++
++ # Add here commands to install the package into debian/zoo.
++ install -m 755 -s zoo fiz debian/zoo/usr/bin
++
++# Build architecture-independent files here.
++binary-indep: build install
++# We have nothing to do by default.
++
++# Build architecture-dependent files here.
++binary-arch: build install
++ dh_testdir
++ dh_testroot
++ dh_installchangelogs
++ dh_installdocs
++ dh_installman fiz.1 zoo.1
++ dh_link
++ dh_strip
++ dh_compress
++ dh_fixperms
++ dh_installdeb
++ dh_shlibdeps
++ dh_gencontrol
++ dh_md5sums
++ dh_builddeb
++
++binary: binary-indep binary-arch
++.PHONY: build clean binary-indep binary-arch binary install configure
++
+--- zoo-2.10.orig/debian/copyright
++++ zoo-2.10/debian/copyright
+@@ -0,0 +1,64 @@
++This is Debian GNU/Linux's prepackaged version of the zoo archiver.
++
++This package was put together by James Troup from the original
++source obtained from:
++ http://www.ibiblio.org/pub/packages/ccic/software/unix/utils/zoo210.tar.gz
++
++From May 1998 to July 2004 it was maintained by Petr ech and
++currently it is maintained by Niklas Vainio <nvainio+deb@iki.fi>
++
++Copyright and license:
++
++Zoo was written by Rahul Dhesi. He has now released it into the public
++domain:
++
++
++Return-Path: <dhesi@rahul.net>
++Date: Sat, 19 Jun 2004 13:50:26 -0700 (PDT)
++From: dhesi@rahul.net
++To: Niklas Vainio <nvainio@iki.fi>
++Subject: Re: License of Zoo
++
++Hi, the last release of the zoo archive program was marked entirely
++public domain, with no restrictions. I'm sure this statement will be
++found somewhere in the files in the sources. If not, I hope this email
++will suffice: everything in the zoo package is entirely public domain,
++with no restrictions whatsoever.
++
++Rahul
++
++
++On Sat, 19 Jun 2004, Niklas Vainio wrote:
++
++> Dear Rahul Dhesi,
++>
++> The Zoo archiving program you wrote,is part of the Debian GNU/Linux system,
++> in its unofficial section called "non-free". I'm asking you to relax licence
++> conditions of Zoo a bit to make it free software and allow it to move into
++> the official Debian distribution.
++>
++> Zoo licensing conditions have two clauses that make it non-free software.
++> Those clauses are the following:
++>
++> "(b) do not create, whether deliberately or through negligence, any
++> derivative work that violates the compatibility goals describe in the
++> reference manual for zoo 2.1,"
++>
++> "(d) make the fully commented source code of the derivative work available
++> to me at no cost if I so request, and make no attempt to restrict the
++> distribution or use of this source code."
++>
++> Of course this is more of historical interest than any actual need, but
++> would you please consider licensing Zoo under a free license?
++>
++> Best regards,
++> - Nikke, a Debian volunteer
++>
++> --
++> Niklas Vainio <niklas.vainio@iki.fi>
++>
++
++
++
++
++
+--- zoo-2.10.orig/debian/dirs
++++ zoo-2.10/debian/dirs
+@@ -0,0 +1 @@
++usr/bin
+--- zoo-2.10.orig/debian/README.debian
++++ zoo-2.10/debian/README.debian
+@@ -0,0 +1,11 @@
++The linux target I created was based on the bsd 4.3 target, with the
++following differences :-
++
++ Linux has strchr().
++ Linux signal handler returns void data type.
++ (Debian GNU/)Linux uses stdarg.h in preference to varags.h.
++ Linux has memmove().
++ (Debian GNU/)Linux uses ansi C compilers (required for stdarg.h).
++ Linux malloc() returns a void pointer.
++ Linux has vprintf().
++