From: Kern Sibbald Date: Mon, 11 Apr 2005 07:57:12 +0000 (+0000) Subject: Initial revision X-Git-Tag: Release-1.38.0~567 X-Git-Url: https://git.sur5r.net/?p=bacula%2Frescue;a=commitdiff_plain;h=13061b74dae637f75677afb9708dbd5597065870 Initial revision --- diff --git a/rescue/.cvsignore b/rescue/.cvsignore new file mode 100644 index 0000000..f3c7a7c --- /dev/null +++ b/rescue/.cvsignore @@ -0,0 +1 @@ +Makefile diff --git a/rescue/Makefile.in b/rescue/Makefile.in new file mode 100755 index 0000000..0fc4e81 --- /dev/null +++ b/rescue/Makefile.in @@ -0,0 +1,56 @@ +# +# Bootstrap Makefile.in +# +# Version $Id$ +# +@MCOMMON@ + +working_dir=@working_dir@ + +srcdir = @srcdir@ +VPATH = @srcdir@ +.PATH: @srcdir@ +topdir = .. +thisdir = bootstrap + + +first_rule: all +dummy: + +MKDIR = $(topdir)/autoconf/mkinstalldirs + +#------------------------------------------------------------------------- + +all: Makefile + + +depend: + + +#------------------------------------------------------------------------- + + +install: + +uninstall: + +Makefile: Makefile.in + cd $(topdir) \ + && CONFIG_FILES=$(thisdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status + +Makefiles: + $(SHELL) config.status + +clean: + @$(RMF) *~ 1 2 3 + +# clean for distribution +distclean: clean + @$(RMF) -r CVS + +devclean: clean + @for subdir in freebsd linux solaris; do \ + if [ -f $${subdir}/Makefile ]; then \ + (cd $${subdir}; $(MAKE) devclean) \ + fi; \ +# ------------------------------------------------------------------------ diff --git a/rescue/freebsd/.cvsignore b/rescue/freebsd/.cvsignore new file mode 100644 index 0000000..ee40e78 --- /dev/null +++ b/rescue/freebsd/.cvsignore @@ -0,0 +1,10 @@ +Makefile +diskinfo +format.hda +mount_drives +partition.hda +sfdisk +start_network +1 +bacula-fd +bacula-fd.conf diff --git a/rescue/freebsd/Makefile.in b/rescue/freebsd/Makefile.in new file mode 100755 index 0000000..bbb2368 --- /dev/null +++ b/rescue/freebsd/Makefile.in @@ -0,0 +1,57 @@ +# +# bootstrap/freebsd Makefile.in +# +# Version $Id$ +# +@MCOMMON@ + +working_dir=@working_dir@ + +srcdir = @srcdir@ +VPATH = @srcdir@ +.PATH: @srcdir@ +topdir = ../.. +thisdir = freebsd + + +first_rule: all +dummy: + +MKDIR = $(topdir)/autoconf/mkinstalldirs + +#------------------------------------------------------------------------- + +all: Makefile + +depend: + + +#------------------------------------------------------------------------- + + +install: + +uninstall: + +Makefile: Makefile.in + cd $(topdir) \ + && CONFIG_FILES=$(thisdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status + +Makefiles: + $(SHELL) config.status + +clean: + @$(RMF) *~ 1 2 3 + @$(RMF) format.* partition.* start_network mount_drives + @$(RMF) sfdisk bacula-fd bacula-fd.gz bacula-fd.conf + @$(RMF) -r diskinfo + +# clean for distribution +distclean: clean + @$(RMF) Makefile + @$(RMF) -r CVS + +devclean: clean + @$(RMF) Makefile + +# ------------------------------------------------------------------------ diff --git a/rescue/freebsd/backup.etc.list b/rescue/freebsd/backup.etc.list new file mode 100644 index 0000000..43855e6 --- /dev/null +++ b/rescue/freebsd/backup.etc.list @@ -0,0 +1,13 @@ +/etc/exports +/etc/fstab +/etc/group +/etc/gshadow +/etc/host.conf +/etc/hosts +/etc/hosts.allow +/etc/hosts.deny +/etc/modules.conf +/etc/passwd +/etc/resolv.conf +/etc/shadow +/etc/sysconfig diff --git a/rescue/freebsd/getdiskinfo b/rescue/freebsd/getdiskinfo new file mode 100755 index 0000000..6c813a3 --- /dev/null +++ b/rescue/freebsd/getdiskinfo @@ -0,0 +1,204 @@ +#!/bin/sh +# +# Create bootstrap information files -- prelude to creating a +# Bacula Rescue Disk +# +# Kern Sibbald, December MMII +# This source distributed under the GPL +# +di=diskinfo +cwd=`pwd` +host=`uname -s` +case $host in + Linux) + ;; + FreeBSD | SunOS | IRIX) + echo "" + echo "This code is not yet adapted to this OS" + exit 1 + ;; + *) + echo "" + echo "Unknown operating system type: $host" + exit 1 + ;; +esac +if [ ! `whoami` = "root" ] ; then + echo "" + echo "You need to be root to run this, otherwise" + echo "sfdisk produces no output. Continuing anyway ..." + echo "" +fi + +# +# First collect information +# +echo "Begin collecting system info" +mkdir -p $di +cd $di +mount -l >mount.bsi +mount -l -t ext2 >mount.ext2.bsi +mount -l -t ext3 >mount.ext3.bsi +cp /etc/fstab fstab.bsi +cp /etc/mtab mtab.bsi +df -Tl >df.bsi +sfdisk -s >sfdisk.disks.bsi +grep "^/dev/" sfdisk.disks.bsi | sed -n 's/\(^.*\):.*$/\1/p' >disks.bsi +for i in `cat disks.bsi`; do + j=`echo $i | cut -c6-` + sfdisk -l $i >sfdisk.$j.bsi + sfdisk -d $i >sfdisk.make.$j.bsi +done +route -n >route.bsi +ifconfig >ifconfig.bsi +echo "Done collecting info. Building scripts ..." + +# +# Done collecting information +# + + +# +# First create partitioning script(s) +# +for i in `cat disks.bsi`; do + j=`echo $i | cut -c6-` + cat >$cwd/partition.$j <$cwd/format.$j <>$cwd/format.$j + echo "mkswap $check $disk" >>$cwd/format.$j + echo "echo \"\"" >>$cwd/format.$j + done + # Find ext2 partitions in mount output + k=`grep "^$i" mount.ext2.bsi | cut -d ' ' -f 1` + for disk in $k; do + echo "echo \"Formating $disk -- ext2 partition\"" >>$cwd/format.$j + label=`grep "^$disk" mount.ext2.bsi | cut -d ' ' -f 7 | cut -c2- | cut -d ] -f 1` + if [ x$label = x ] ; then + echo "mke2fs -v \$check $disk" >>$cwd/format.$j + else + echo "mke2fs -v \$check -L $label $disk" >>$cwd/format.$j + fi + echo "echo \"\"" >>$cwd/format.$j + done + # Find ext3 partitions in mount output + k=`grep "^$i" mount.ext3.bsi | cut -d ' ' -f 1` + for disk in $k; do + echo "echo \"Formating $disk -- ext3 partition\"" >>$cwd/format.$j + label=`grep "^$disk" mount.ext3.bsi | cut -d ' ' -f 7 | cut -c2- | cut -d ] -f 1` + if [ x$label = x ] ; then + echo "mke2fs -v -j \$check $disk" >>$cwd/format.$j + else + echo "mke2fs -v -j \$check -L $label $disk" >>$cwd/format.$j + fi + echo "echo \"\"" >>$cwd/format.$j + done + chmod 755 $cwd/format.$j +done + +cd $cwd + +# +# Create network start script +# +host=`hostname` +ip=`host $host | cut -d ' ' -f 4` +cat >start_network <mount_drives <>mount_drives +sed -n 's/\(^.*\)\ on\ \(.*\)\ type.*$/mkdir -p \/mnt\/disk\2/p' $di/mount.ext3.bsi >>mount_drives +echo "#" >>mount_drives +sed -n 's/\(^.*\)\ on\ \(.*\)\ type.*$/mount \1 \/mnt\/disk\2/p' $di/mount.ext2.bsi >/tmp/1$$ +sed -n 's/\(^.*\)\ on\ \(.*\)\ type.*$/mount \1 \/mnt\/disk\2/p' $di/mount.ext3.bsi >>/tmp/1$$ +# sort so that root is mounted first +sort -k 3 >mount_drives +rm -f /tmp/1$$ + +chmod 755 mount_drives + +# copy sfdisk so we will have it +cp -f /sbin/sfdisk . diff --git a/rescue/freebsd/make_rescue_disk b/rescue/freebsd/make_rescue_disk new file mode 100755 index 0000000..db52f73 --- /dev/null +++ b/rescue/freebsd/make_rescue_disk @@ -0,0 +1,99 @@ +#!/bin/sh +# +# Script to make a Bacula "rescue" disk +# +device=/mnt/floppy +dev=/dev/fd0 + +# Print Usage message +usage () { + cat <&1 >/dev/null +if [ $? = 0 ] ; then + mounted=1 +else + mounted=0 +fi +mke2fs $dev +mount $dev $device 2>&1 >/dev/null + +if [ x$make_bacula = "xyes" ] ; then + ./make_static_bacula +fi + +if [ x$copy_bacula = "xyes" -a ! -e bacula-fd ] ; then + echo " " + echo "bacula-fd not found. If you want Bacula on this" + echo "rescue disk please run \"make_static_bacula\" first." + echo "Continuing anyway ..." + echo " " + exit 1 + have_bacula=no +else + echo "Stripping and compressing Bacula" + strip bacula-fd + gzip bacula-fd + have_bacula=yes +fi + +echo "Copying files to $device" +cp -a . $device + +if [ x$copy_etc = "xyes" ] ; then + echo "Tarring /etc files to $device" + tar --create --gzip --file $device/etc.gz --files-from backup.etc.list +fi + +if [ x$have_bacula = "xyes" ] ; then + rm -f bacula-fd.gz bacula-fd.conf +fi +sync +if [ $mounted = 0 ] ; then + umount $device +fi diff --git a/rescue/freebsd/restore_etc b/rescue/freebsd/restore_etc new file mode 100755 index 0000000..0f43410 --- /dev/null +++ b/rescue/freebsd/restore_etc @@ -0,0 +1,9 @@ +#!/bin/sh +# +# Note, this creates the directory etc, so if you want +# the files to go into the real /etc, you must be one +# level up when executing it. Otherwise you end up with +# a /etc/etc directory. +# +device=/mnt/floppy +tar -v -z -f $device/etc.gz diff --git a/rescue/freebsd/run_grub b/rescue/freebsd/run_grub new file mode 100755 index 0000000..b76b48b --- /dev/null +++ b/rescue/freebsd/run_grub @@ -0,0 +1,14 @@ +#!/bin/sh +# +# Script to run grub to recreate the MBR +# +# Find boot partition if any +bootp=`grep "^/dev/.*\ on\ /boot" diskinfo/mount.bsi | cut -d ' ' -f 1` +# find boot device +if [ x$bootp != x ] ; then + bootdev=`echo $bootp | cut -c1-8` +else + bootdev=`grep "^/dev/.*\ on\ /" diskinfo/mount.bsi | cut -c1-8` +fi +chroot /mnt/disk /sbin/grub-install $bootdev +sync diff --git a/rescue/freebsd/run_lilo b/rescue/freebsd/run_lilo new file mode 100755 index 0000000..1f3f040 --- /dev/null +++ b/rescue/freebsd/run_lilo @@ -0,0 +1,6 @@ +#!/bin/sh +# +# Script to run lilo and re-create the MBR +# +chroot /mnt/disk /sbin/lilo -v -C /etc/lilo.conf +sync diff --git a/rescue/freebsd/sfdisk.bz2 b/rescue/freebsd/sfdisk.bz2 new file mode 100644 index 0000000..3e269c3 Binary files /dev/null and b/rescue/freebsd/sfdisk.bz2 differ diff --git a/rescue/linux/.cvsignore b/rescue/linux/.cvsignore new file mode 100644 index 0000000..ee40e78 --- /dev/null +++ b/rescue/linux/.cvsignore @@ -0,0 +1,10 @@ +Makefile +diskinfo +format.hda +mount_drives +partition.hda +sfdisk +start_network +1 +bacula-fd +bacula-fd.conf diff --git a/rescue/linux/Makefile.in b/rescue/linux/Makefile.in new file mode 100644 index 0000000..cca1530 --- /dev/null +++ b/rescue/linux/Makefile.in @@ -0,0 +1,12 @@ + +all: + +install: + +uninstall: + +clean: + +distclean: + +depend: diff --git a/rescue/linux/cdrom/.cvsignore b/rescue/linux/cdrom/.cvsignore new file mode 100644 index 0000000..49303d6 --- /dev/null +++ b/rescue/linux/cdrom/.cvsignore @@ -0,0 +1,3 @@ +bootcd.iso +Makefile +cdtree diff --git a/rescue/linux/cdrom/Makefile.in b/rescue/linux/cdrom/Makefile.in new file mode 100644 index 0000000..977fce9 --- /dev/null +++ b/rescue/linux/cdrom/Makefile.in @@ -0,0 +1,83 @@ + +.PATH: . + + +first_rule: all +dummy: + +#------------------------------------------------------------------------- + +# Make an iso boot image +iso: + rm -f bootcd.iso + mkisofs -A "Bacula Rescue Disk" -V "Bacula Rescue Disk" \ + -J -R -T -o bootcd.iso \ + -b boot/isolinux/isolinux.bin -c boot/isolinux/boot.cat \ + -no-emul-boot -boot-load-size 4 -boot-info-table cdtree + +# try booting it with qemu emulator +boot: + qemu -cdrom bootcd.iso + +initrd: + ./makeinitrd + +kernel: + ./makekernel + +binaries: + ./makebinaries + +static-bacula: dummy + @(cd bacula; make copy-static-fd) + +bacula: dummy + @(cd bacula; make) + +all: kernel binaries bacula initrd iso + +copy-static-fd: kernel binaries static-bacula initrd iso + + +# This needs to be customized for your burner. +burn: + cdrecord dev=@CDSTL@ gracetime=2 fs=4096k driveropts=burnfree -v \ + -useinfo speed=48 -dao -eject -pad -data "bootcd.iso" + +# Blank the CDROM assuming it is +rw +blank: + cdrecord dev=@CDSTL@ gracetime=2 -v blank=fast -useinfo speed=48 + +scan: + cdrecord -scanbus + +distclean: +clean: +# +# Clean out files that are rebuilt +# + @rm -f bootcd.iso + @rm -f 1 2 3 4 + @rm -rf mnt + @rm -rf roottree/bin roottree/proc roottree/boot + @rm -rf roottree/lib roottree/sbin roottree/dev + @rm -rf roottree/dev roottree/sys roottree/sysroot + @rm -rf roottree/sys + @rm -rf roottree/initrd roottree/cdrom roottree/mnt + @rm -rf roottree/tmp roottree/var + @rm -f roottree/etc/services roottree/etc/exports + @rm -f roottree/etc/gshadow roottree/etc/shadow + @rm -f roottree/etc/passwd roottree/etc/group + @rm -f roottree/etc/hosts roottree/etc/bashrc + @rm -f roottree/etc/filesystems roottree/etc/fstab + @rm -f roottree/etc/protocols roottree/etc/localtime + @rm -f roottree/etc/ld.so.cache + @rm -f roottree/etc/modules.conf roottree/etc/syslog.conf + @rm -rf roottree/etc/pam.d roottree/etc/ssh + @rm -rf roottree/etc/security roottree/etc/init.d + @rm -rf roottree/bacula-* + @rm -f cdtree/boot/isolinux/initrd.img + @rm -f cdtree/boot/isolinux/isolinux.cfg + @rm -f cdtree/boot/isolinux/vmlinuz + @rm -f cdtree/boot/isolinux/map + @(cd bacula; make distclean) diff --git a/rescue/linux/cdrom/README b/rescue/linux/cdrom/README new file mode 100644 index 0000000..473765c --- /dev/null +++ b/rescue/linux/cdrom/README @@ -0,0 +1,193 @@ + +This is the Bacula Rescue CD source directory. The some of the +scripts in this directory were dervied from Martin L. Purschke's +"Roll your own Linux Rescue or Setup CD". See: +http://www.phenix.bnl.gov/~purschke/RescueCD/ for more details. +This information was invaluable in creating this rescue disk. +However, not much of the original code (if any) remains. + +The idea is to build a boot CD that contains a copy of your +current system that can be booted in an emergency to either +repair your filesystem, or to load Bacula to restore your +filesystem. Even though this boot CD is built from your system, +it can be booted on almost any system. + +Requirements: +- A Linux system (known to work with RedHat Enterprise 3.0) +- It will boot and run on any hardware that isolinux can boot + from. + +To build an ISO image for burning a CD, you do the following: + + cd + ./configure (your-options) + make + cd /rescue/linux/cdrom + su + make all + +to burn it, do: + + make burn + +to cleanup, do: + + make clean + +When running these scripts, you should have few or no warnings. + +You will probably also have a number of "Could not finds" under +updating binaries. + +As long as the script runs to completion, you can probably ignore +any such warnings. + +The Makefile will copy your kernel and some files it needs, then copy +your binary files as well as the shared libraries they need to run, and +finally, it will copy certain configuration components from your /etc +directory including your passwd file. And finally, it will collect the +information necessary to restore all your harddisks. You can find that +information in /bacula after the disk has booted. /bacula/bin will +contain a statically linked version of the current beta Bacula fd and +a default bacula-fd.conf file. + +The ISO image will be left in: + + /bootcd.iso + +When you boot the CD, always choose the default by hitting return. +When the system finishes booting you will be presented with a login +prompt at which point, you should login as root using the root password +from your system. Boot options other than the default have not be tested +(actually, I am going to remove them), and logging into any user other +than root is not likely to work. + +What do you have when you boot? +- Your kernel will be booted in a simplifed environment. +- Everything is running in a RAM disk file. +- Access to the CDROM in /cdrom and anything you put in cdtree will + be in the /cdrom directory. +- You will start in /root, with nothing unless you put it in + roottree/root before making the ISO. +- You will have a good number of standard Unix programs available. + Do an "ls -l /sbin" to see the list. To add more add them to + rootsbin.list +- A /lib containing all the shared libraries used by the programs in + /sbin. If you add more programs other than to rootsbin.list, you + will need to manually add any required shared libraries. +- A /lib/modules/kernel-name/ with all your kernel modules. +- An /etc directory containing a stripped down and modified version + of your system files. Everything is *vastly* simplified, and probably + not in the usual places, but many things such as your passwd file + will be there. +- A /bacula-hostname directory containing the basic rescue disk contents + mentioned in the manual concerning the floppy rescue. Note, + hostname is the name of the host on which you built the CDROM + (this allows having multiple rescues on a single CDROM). +- A /bacula-hostname/bin directory containing a statically linked Bacula + from the current development stream, and a bacula-fd.conf file. + With this and the contents of the /bacula-hostname directory, you have + all the scripts necessary to reconstruct your hard disks, and to + launch a Bacula File daemon for restoring the system. + +Adding your own files: +- Anything you put in the directory roottree will be + put into the initial ram disk, and loaded into memory. + This is the normal way to add files. However, the size of + the ramdisk file is limited to your machine's total + memory size. Currently, with the contents of a single + machine (you can actually put multiple machines on a + single CD), the size is about 50MB. Most machines today + should handle this. +- Anything you put in the directory cdtree will go on the + CDROM, but will not be loaded in memory. This means that + you must be able to mount the CDROM to read it -- normally + the CDROM should be automatically mounted when the system + boots, but the detection is not yet too good, so you may + need to manually mount it. On the other hand, anything you + add to cdtree can be read without booting it by simply + mounting the CDROM -- it also does not use precious + RAM. + + +Other make targets: +- make kernel --- rebuild the kernel files +- make binaries --- rebuild the binary files +- make bacula --- rebuild a static Bacula File daemon + and make a snapshot of your hard disk + layout. +- make initrd --- make a new ram disk image. +- make iso --- make a new ISO image. +- make scan --- use cdrecord to scan your scsi drivers for + a cd burner. +- make blank --- blank a CD-RW disk (you may need to adjust + the dev= specification using the "make scan" + output. +- make burn --- burn the ISO (you may need to adjust the + dev= specification using the "make scan" output). + + +Work to be done: +- Test with SCSI boot. +- Look at doing some hardware detection in the second half of + the boot process. + +The boot process works as follows: +- isolinux puts up the boot screen. According to what options you + select, it will boot. +- The whole roottree is in the initrd.img and will be loaded in + memory. It may take more time than you are used to to load. +- The script "linuxrc" in /roottree is run. This script is *very* + simple and doesn't do much other than mounting /proc and + remounting the root (/) read/write. + +- When booting is complete, the init process is started and it calls + the script /etc/sysinit (in roottree) as determined by the setting + in /etc/inittab (i.e. the si entry). + +- sysinit mounts the root filesystem as read write, sets up a few system + files, turns on logging, attempts to the cdrom on /cdrom. This is very + likely to fail. It is nothing to worry about, but means that unless + you manually mount the cdrom, you will not be able to access it. + To run the standard Bacula restore, there is no need to access the + cdrom after the boot. Then sysinit calls the + /etc/load_eth0 script, and finally, sysinit sets up the loop back interface. + +- load_eth0 attempts to find and load the ethernet kernel module. + It does not, however, start the network. + +- Then init follows the instructions in inittab for the run level + chosen (default 2), which is to call /etc/rc.d/rc 2 + +- rc tells init to switch to single user mode + +- If the run level is greater than 2, rc calls /etc/start_network.sh, + which attempts to setup the network with dhcp. (some work needed here) + +On a standard Linux system, the boot is almost the same. The root filesystem +and all the other files, including /linuxrc, that go in the initial ram image +(initrd) are made by the script /sbin/mkinitrd. Note, this is not used here, +we do the work ourselves in makeinitrd. + +Reading an ISO image: + + mkdir mnt + su + mount -o loop xxx.iso mnt + ls -l mnt + ... + umount mnt + rm -rf mnt + +Unpacking in initrd.img: + mkdir mnt + su + mount -o loop xxx.iso mnt + cp mnt/isolinux/initrd.img initrd.gz + unmount mnt + gunzip initrd.gz + mount -o loop initrd mnt + +mkbootdisk --device bootcd.iso --iso 2.6.10-1.770_FC3 + +http://www.xs4all.nl/~ekonijn/yaird/ diff --git a/rescue/linux/cdrom/dev.tar.gz b/rescue/linux/cdrom/dev.tar.gz new file mode 100644 index 0000000..6c5c2b2 Binary files /dev/null and b/rescue/linux/cdrom/dev.tar.gz differ diff --git a/rescue/linux/cdrom/makebinaries b/rescue/linux/cdrom/makebinaries new file mode 100755 index 0000000..ea638c6 --- /dev/null +++ b/rescue/linux/cdrom/makebinaries @@ -0,0 +1,131 @@ +#!/bin/sh + +# this script finds all binaries and updates them with the ones +# from your system, in order to maintain them more easily. +# Be careful. If you have specially made binaries (perhaps lean ones), +# they will be overwritten. + +TOPDIR=`pwd` +R=roottree +PATH="/sbin:/bin:/usr/sbin:/usr/bin:$PATH" + + + +rm -rf $R/sbin +mkdir -p $R/etc $R/initrd $R/lib $R/mnt $R/mnt/cdrom +mkdir -p $R/proc $R/root $R/sbin $R/tmp $R/var +mkdir -p $R/dev $R/sys $R/initrd $R/sysroot +mkdir -p $R/etc/terminfo $R/etc/terminfo/l +mkdir -p $R/var/lib $R/var/log $R/var/run $R/var/state +mkdir -p $R/var/lib/nfs +mkdir -p $R/var/log/news +touch $R/var/log/news/news.crit $R/var/log/news/news.err $R/var/log/news.notice + +cd $R +ln -sf sbin bin +cd $TOPDIR + +echo "Building root /sbin. Some Could not find messages are normal ..." +for file in `cat rootsbin.list` ; do + command=`basename $file` + fullfile=`which $command 2> /dev/null` + if [ x$fullfile != x ] ; then +# echo "updating $command in roottree with $fullfile" + cp -fpd $fullfile $file + if [ $? != 0 ] ; then + echo "Update failed." + exit 1 + fi + strip $file 2>/dev/null + else + echo "==== Could not find $command on your system ====" + rm -f $file + fi +done +# Special cases +cd roottree/sbin +ln -sf halt reboot +cd $TOPDIR + +# Copy all needed shared libraries +echo "Building root shared libaries ..." +rm -f `find roottree/lib/ -maxdepth 1 -type f 2>/dev/null` +# +# Statically linked binaries create an error +# message from ldd, so we ignore those +# +for lib in `find roottree/sbin/ -type f -exec ldd {} \; | awk '{print $3}' | sort | uniq` ; do + if [ -e $lib ] ; then + cp -fp $lib roottree/lib/ + if [ $? != 0 ] ; then + echo "Update failed." + exit 1 + fi + fi +done +strip `find roottree/lib/ -maxdepth 1 -type f` 2>/dev/null + + +cp -p /etc/services roottree/etc/ +if [ $? != 0 ] ; then + echo "Update failed." + exit 1 +fi + +# +# Get a bunch of stuff from /etc +# +echo "Building /etc ..." +for file in `cat rootetc.list` ; do + if [ -e $file ] ; then + cp -fp $file roottree/etc/ + else + echo "==== Could not find $file in /etc ====" + fi +done +if [ -e /etc/modules.conf ] ; then + cp -fp /etc/modules.conf roottree/etc/ +fi +if [ -e /etc/modprobe.conf ] ; then + cp -fp /etc/modprobe.conf roottree/etc/ +fi +rm -rf roottree/etc/pam.d +if [ -e /etc/pam.d ] ; then + cp -a /etc/pam.d roottree/etc/ + if [ -e /etc/pam.conf ] ; then + cp -fp /etc/pam.conf roottree/etc/ + fi +fi + +if [ -e /etc/init.d ] ; then + rm -rf roottree/etc/init.d + cp -aL /etc/init.d roottree/etc/ +fi + +if [ -e /etc/udev ] ; then + rm -rf roottree/etc/udev + cp -aL /etc/udev roottree/etc/ +fi + + +if [ -e /etc/ssh ] ; then + cp -a /etc/ssh roottree/etc/ + echo "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" + echo "!!!! !!!!" + echo "!!!! Warning your /etc/ssh directory was copied. !!!!" + echo "!!!! Keep this directory and the CDROM secure. !!!!" + echo "!!!! !!!!" + echo "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" +fi +if [ -e /etc/security ] ; then + cp -a /etc/security roottree/etc/ +fi + +# +# Pull a few files needed by PAM +# +if [ -e /lib/libnss_files.so.1 ] ; then + cp -fp /lib/libnss_files.so.1 roottree/lib/ +fi +cp -fp /lib/libnss_files.so.2 roottree/lib/ +cp -a /lib/security roottree/lib/ diff --git a/rescue/linux/cdrom/makeinitrd b/rescue/linux/cdrom/makeinitrd new file mode 100755 index 0000000..e7ca4c5 --- /dev/null +++ b/rescue/linux/cdrom/makeinitrd @@ -0,0 +1,108 @@ +#!/bin/sh + +TOPDIR=`pwd` + +# mkdir -p /mnt/loop1 /mnt/loop2 + +# we need to set aside a few loop devices. I chose (in reverse order of their appearance) +# -- loop1 for the boot image +# -- loop2 for the RAM disk image +# since the loop1 choice is reflected in the lilo.loopfix file, +# you should not change that (or you need to change the file). +# I had used loop0 first, but I found that this is used by the Samba daemon. +# Also, I assume that the mount points are /mnt/loop{1,2}. +# In principle we could do with one, but it comes in handy to be able to +# leave one mounted, so I took two different ones. + +# Assume that everything to be loaded into memory with the +# RAM disk image (initrd) is is in the roottree directory. + +echo "Creating the Initial RAM disk image.... " + +# first find out how much space we need. +ISIZE=`du -s -k roottree/ | awk '{print $1}'` + +# add 2 Meg for extra +ISIZE=`expr $ISIZE + 2048` +echo "Initial RAM disk contents will be $ISIZE KB" + +# delete the existing RAM disk image, if there is one +rm -f root + +# dd if=/dev/zero of=$TOPDIR/root bs=1k count=$ISIZE + +# umount /mnt/loop2 2>/dev/null >/dev/null +# losetup -d /dev/loop2 2>/dev/null >/dev/null + +# # associate it with /dev/loop2 +# losetup /dev/loop2 $TOPDIR/root + +# # make an ext2 filesystem on it. Set reserve to 0 +# mke2fs -q -m 0 /dev/loop2 $ISIZE +# if [ $? != 0 ] ; then +# echo "Build failed." +# exit 1 +# fi + +# # we mount it... +# mount /dev/loop2 /mnt/loop2 + +# # ... and delete the lost+found directory +# rm -rf /mnt/loop2/lost+found + +# # then we copy the contents of our roottree to this filesystem +# cp -dpR roottree/* /mnt/loop2/ +# if [ $? != 0 ] ; then +# echo "RAM disk build failed." +# exit 1 +# fi + +# # and unmount and divorce /dev/loop2 +# umount /mnt/loop2 +# losetup -d /dev/loop2 + +(cd roottree; find . | cpio --quiet -c -o) >root + +echo "Building initial RAM disk done" + +# Now we have the image of the RAM disk in $TOPDIR/loopfiles/root. We +# compress this one and write the compressed image to the boot tree: + +echo "Compressing the RAM disk image.... " + +# delete any existing one +rm -f cdtree/boot/isolinux/initrd.img + +# and gzip our RAM disk image and put it in the right place. +# gzip -9 -c root >cdtree/boot/isolinux/initrd.img +gzip -9 < root >cdtree/boot/isolinux/initrd.img +if [ $? != 0 ] ; then + echo "Build failed" + exit 1 +fi + +rdsize=`expr $ISIZE \* 1024` +echo "Ramdisk size is $rdsize" + +echo "Making isolinux.cfg" +cat >cdtree/boot/isolinux/isolinux.cfg < + +pause=yes +unset kernel +device=bootcd.iso +unset verbose +unset kernelargs +unset mountopts +unset isoimage +unset realdev +size=1440 +failed=0 +isoimage=1 +verbose=1 + +MOUNTDIR=`mktemp -d /tmp/mkbootdisk.XXXXXX` +PATH=/sbin:$PATH +export PATH + +VERSION=1.5.2 + +usage () { + cat >&2 <] + [--verbose -v] [--iso] [--kernelargs ] [--size ] + (ex: `basename $0` --device /dev/fd1 2.0.31) +EOF + exit $1 +} + +while [ $# -gt 0 ]; do + case $1 in + --device) + shift + device=$1 + ;; + --kernelargs) + shift + kernelargs=$1 + ;; + --help) + usage 0 + ;; + --iso) + isoimage=1 + ;; + --size) + shift + size=$1 + ;; + --noprompt) + unset pause + ;; + -v) + verbose=true + ;; + --verbose) + verbose=true + ;; + --version) + echo "mkbootdisk: version $VERSION" + exit 0 + ;; + *) + if [ -z "$kernel" ]; then + kernel=$1 + else + usage + fi + ;; + esac + + shift +done + +[ -z "$kernel" ] && usage 1 + +[ -d /lib/modules/$kernel ] || { + echo "/lib/modules/$kernel is not a directory." >&2 + exit 1 +} + +[ -f /boot/vmlinuz-$kernel ] || { + echo "/boot/vmlinuz-$kernel does not exist." >&2 + exit 1 +} + + +rootdev=`awk '$1 ~ /^[^#]/ && $2 ~ /^\/$/ { print $1 ; exit }' /etc/fstab` + +if [ $(echo $rootdev | cut -c1-6) = "LABEL=" ]; then + rootlabel=$(echo $rootdev | cut -c7-) + + # whee, now we have to look through every partition looking for + # the thing called $rootlabel, which could be raid. Ick. + + list=$(tail +3 /proc/partitions | awk '{ print $4 '} | grep '^md') + list="$list $(tail +3 /proc/partitions | + awk '{ print $4 '} | grep -v '^md')" + rootdev="" + for dev in $list; do + if tune2fs -l /dev/$dev >/dev/null 2>/dev/null; then + label=$(tune2fs -l /dev/$dev 2>/dev/null | + grep "Filesystem volume name" | awk '{print $4}') + if [ "$label" = $rootlabel ]; then + rootdev=/dev/$dev + break + fi + fi + done +fi + +if [ -z "$kernelargs" -a -x /sbin/grubby -a -f /boot/grub/grub.conf ]; then + # sed gross... this grep's for the args= line and removes the args=" and "$ + defkernel=$(grubby --default-kernel) + if [ -n "$defkernel" ]; then + kernelargs=$(grubby --info "$defkernel" | + sed -n '/^args=/{s/^args="//;s/"$//;p;}') + fi +fi + +[ -z "$rootdev" ] && { + echo 'Cannot find root partition in /etc/fstab.' >&2 + exit 1 +} + +rm -rf $MOUNTDIR +mkdir $MOUNTDIR || { + echo "Failed to create $MOUNTDIR" >&2 + exit 1 +} +[ -d $MOUNTDIR ] || { + echo "$MOUNTDIR is not a directory!" >&2 + exit 1 +} + +cfgfile=$MOUNTDIR/isolinux/isolinux.cfg +bootmsg=$MOUNTDIR/isolinux/boot.msg + +# create an iso image; the directory is all we need +[ -n "$verbose" ] && echo -n "Installing isolinux... " +mkdir $MOUNTDIR/isolinux +cp /usr/lib/syslinux/isolinux.bin $MOUNTDIR/isolinux +[ -n "$verbose" ] && echo done + + +BOOTDESTDIR=$MOUNTDIR/isolinux + +[ -n "$verbose" ] && echo -n "Copying /boot/vmlinuz-$kernel... " +cp -p /boot/vmlinuz-$kernel $BOOTDESTDIR/vmlinuz +[ $? = 0 ] || failed=1 +[ -n "$verbose" ] && echo "done." + +[ -n "$verbose" ] && echo -n "Copying /boot/initrd-$kernel.img... " +if [ -f /boot/initrd-$kernel.img ]; then + cp -p /boot/initrd-$kernel.img $BOOTDESTDIR/initrd.img +fi +[ $? = 0 ] || failed=1 +[ -n "$verbose" ] && echo "done." + +[ -n "$verbose" ] && echo -n "Configuring bootloader... " + +[ -f $BOOTDESTDIR/initrd.img ] && INITRDARG="initrd=initrd.img" + +if [ $(echo $rootdev | cut -b 6-9) = "loop" ]; then + rootdev=$(ls -l $rootdev | sed 's/,//' | awk '{ printf("%02x%02x\n", $5, $6); }') +fi + +cat > $cfgfile <> $bootmsg < (or wait 10 seconds) to boot your $title system from +$rootdev. You may override the default linux kernel parameters by typing +"linux ", followed by if you like. + +EOF + +[ $? = 0 ] || failed=1 + +[ -n "$verbose" ] && echo "done." + +mkisofs \ + -A "Red Hat Linux Boot CD" \ + -V "Red Hat Linux Boot CD" \ + -J -R -T -quiet \ + -o $device \ + -b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot \ + -boot-load-size 4 -boot-info-table $MOUNTDIR +rm -rf $MOUNTDIR/* +rmdir $MOUNTDIR + + +if [ $failed -eq 1 ]; then + exit 1 +else + exit 0 +fi diff --git a/rescue/linux/cdrom/mkinitrd b/rescue/linux/cdrom/mkinitrd new file mode 100755 index 0000000..9bbf268 --- /dev/null +++ b/rescue/linux/cdrom/mkinitrd @@ -0,0 +1,741 @@ +#!/bin/bash + +# mkinitrd +# +# Written by Erik Troan +# +# Contributors: +# Elliot Lee +# Miguel de Icaza +# Christian 'Dr. Disk' Hechelmann +# Michael K. Johnson +# Pierre Habraken +# Jakub Jelinek +# Carlo Arenas Belon (carenas@chasqui.lared.net.pe> +# Keith Owens +# Bernhard Rosenkraenzer +# Matt Wilson +# Trond Eivind Glomsrød +# Jeremy Katz +# Preston Brown +# Bill Nottingham +# Guillaume Cottenceau + + +PATH=/sbin:/usr/sbin:/bin:/usr/bin:$PATH +export PATH + +VERSION=4.1.18 + +compress=1 +allowmissing="" +target="cdtree/boot/isolinux/initrd.img" +kernel=2.6.10-1.770_FC3 +force="" +verbose="" +MODULES="" +img_vers="" +builtins="" +pivot=1 +initramfs="1" +modulefile=/etc/modules.conf +rc=0 + +IMAGESIZE=8000 +PRESCSIMODS="scsi_mod sd_mod unknown" +fstab="/etc/fstab" + +rm -f $target +if [ -f /etc/udev/udev.conf ]; then + USE_UDEV="yes" + UDEV_TMPFS="yes" + UDEV_KEEP_DEV="yes" + . /etc/udev/udev.conf + [ -x /sbin/udev.static ] || USE_UDEV= +fi + +usage () { + echo "usage: `basename $0` [--version] [-v] [-f] [--preload ]" >&2 + echo " [--omit-scsi-modules] [--omit-raid-modules] [--omit-lvm-modules]" >&2 + echo " [--with=] [--image-version] [--fstab=] [--nocompress]" >&2 + echo " [--builtin=] [--nopivot] " >&2 + echo "" >&2 + echo " (ex: `basename $0` /boot/initrd-2.2.5-15.img 2.2.5-15)" >&2 + exit 1 +} + +moduledep() { + if [ ! -f "/lib/modules/$kernel/modules.dep" ]; then + echo "No dep file found for kernel $kernel" >&2 + exit 1 + fi + + [ -n "$verbose" ] && echo -n "Looking for deps of module $1" + deps=$(awk 'BEGIN { searched=ARGV[2]; ARGV[2]=""; rc=1 } \ + function modname(filename) { match(filename, /\/([^\/]+)\.k?o:?$/, ret); return ret[1] } \ + function show() { if (orig == searched) { print dep; orig=""; rc=0; exit } } \ + /^\/lib/ { show(); \ + orig=modname($1); dep=""; \ + if ($2) { for (i = 2; i <= NF; i++) { dep=sprintf("%s %s", dep, modname($i)); } } } \ + /^ / { dep=sprintf("%s %s", dep, modname($1)); } \ + END { show(); exit(rc) }' /lib/modules/$kernel/modules.dep $1) + [ -n "$verbose" ] && echo -e "\t$deps" +} + +findmodule() { + skiperrors="" + + if [ $1 == "--skiperrors" ]; then + skiperrors=--skiperrors + shift + fi + + local modName=$1 + + if [ "$modName" = "off" -o "$modName" = "null" ]; then + return + fi + + if [ $(echo $modName | cut -b1) = "-" ]; then + skiperrors=--skiperrors + modName=$(echo $modName | cut -b2-) + fi + + if echo $builtins | egrep -q '(^| )'$modName'( |$)' ; then + [ -n "$verbose" ] && echo "module $modName assumed to be built in" + set +x + return + fi + + # special cases + if [ "$modName" = "i2o_block" ]; then + findmodule i2o_core + findmodule -i2o_pci + modName="i2o_block" + elif [ "$modName" = "ppa" ]; then + findmodule parport + findmodule parport_pc + modName="ppa" + elif [ "$modName" = "sbp2" ]; then + findmodule ieee1394 + findmodule ohci1394 + modName="sbp2" + else + moduledep $modName + for i in $deps; do + findmodule $i + done + fi + + for modExt in o.gz o ko ; do + if [ -d /lib/modules/$kernel/updates ]; then + fmPath=`(cd /lib/modules/$kernel/updates; echo find . -name $modName.$modExt -type f | /sbin/nash --quiet) | /bin/awk {'print $1; exit;'}` + fi + + if [ -f /lib/modules/$kernel/updates/$fmPath ]; then + fmPath=updates/$fmPath + break + fi + + fmPath=`(cd /lib/modules/$kernel; echo find . -name $modName.$modExt -type f | /sbin/nash --quiet) | /bin/awk {'print $1; exit;'}` + if [ -f /lib/modules/$kernel/$fmPath ]; then + break + fi + done + + if [ ! -f /lib/modules/$kernel/$fmPath ]; then + if [ -n "$skiperrors" ]; then + return + fi + + # ignore the absence of the scsi modules + for n in $PRESCSIMODS; do + if [ "$n" = "$modName" ]; then + return; + fi + done; + + if [ -n "$allowmissing" ]; then + echo "WARNING: No module $modName found for kernel $kernel, continuing anyway" >&2 + return + fi + + echo "No module $modName found for kernel $kernel, aborting." >&2 + exit 1 + fi + + # only need to add each module once + if ! echo $MODULES | grep -q "$fmPath" 2>/dev/null ; then + MODULES="$MODULES $fmPath" + fi +} + +inst() { + if [ "$#" != "2" ];then + echo "usage: inst " + return + fi + [ -n "$verbose" ] && echo "$1 -> $2" + cp $1 $2 +} + +while [ $# -gt 0 ]; do + case $1 in + --fstab*) + if echo $1 | grep -q '=' ; then + fstab=`echo $1 | sed 's/^--fstab=//'` + else + fstab=$2 + shift + fi + ;; + + --with-usb) + withusb=yes + ;; + + --with*) + if echo $1 | grep -q '=' ; then + modname=`echo $1 | sed 's/^--with=//'` + else + modname=$2 + shift + fi + + basicmodules="$basicmodules $modname" + ;; + + --builtin*) + if echo $1 | grep -q '=' ; then + modname=`echo $1 | sed 's/^--builtin=//'` + else + modname=$2 + shift + fi + builtins="$builtins $modname" + ;; + + --version) + echo "mkinitrd: version $VERSION" + exit 0 + ;; + + -v) + verbose=-v + ;; + + --nocompress) + compress="" + ;; + + --nopivot) + pivot="" + ;; + + --ifneeded) + # legacy + ;; + + -f) + force=1 + ;; + --preload*) + if echo $1 | grep -q '=' ; then + modname=`echo $1 | sed 's/^--preload=//'` + else + modname=$2 + shift + fi + PREMODS="$PREMODS $modname" + ;; + --omit-scsi-modules) + PRESCSIMODS="" + noscsi=1; + ;; + --omit-raid-modules) + noraid=1; + ;; + --omit-lvm-modules) + nolvm=1 + ;; + --image-version) + img_vers=yes + ;; + --noudev) + USE_UDEV= + ;; + --allow-missing) + allowmissing=yes + ;; + *) + if [ -z "$target" ]; then + target=$1 + elif [ -z "$kernel" ]; then + kernel=$1 + else + usage + fi + ;; + esac + + shift +done + +if [ -z "$target" -o -z "$kernel" ]; then + usage +fi + +if [ -n "$img_vers" ]; then + target="$target-$kernel" +fi + +if [ -z "$force" -a -f $target ]; then + echo "$target already exists." >&2 + exit 1 +fi + +if [ ! -d /lib/modules/$kernel ]; then + echo "/lib/modules/$kernel is not a directory." >&2 + exit 1 +fi + +if [ $UID != 0 ]; then + echo "mkinitrd must be run as root" + exit 1 +fi + +kernelmajor=`echo $kernel | cut -d . -f 1,2` + +if [ "$kernelmajor" == "2.4" ]; then + if [ -n "$verbose" ]; then echo "Creating old-style initrd"; fi + USE_UDEV= +else + if [ -n "$verbose" ]; then echo "Creating initramfs"; fi + modulefile=/etc/modprobe.conf + initramfs=1 + pivot="" +fi + +# if we're not using udev, don't set any of the other bits +[ -z "$USE_UDEV" ] && UDEV_TMPFS= && UDEV_KEEP_DEV= + +# find a temporary directory which doesn't use tmpfs +TMPDIR="" +for t in /tmp /var/tmp /root ${PWD}; do + if [ ! -d $t ]; then continue; fi + if ! echo access -w $t | /sbin/nash --quiet; then continue; fi + + fs=$(df -T $t 2>/dev/null | awk '{line=$1;} END {printf $2;}') + if [ "$fs" != "tmpfs" ]; then + TMPDIR=$t + break + fi +done + +if [ -z "$TMPDIR" ]; then + echo "no temporary directory could be found" >&2 + exit 1 +fi + +if [ $TMPDIR = "/root" -o $TMPDIR = "${PWD}" ]; then + echo "WARNING: using $TMPDIR for temporary files" >&2 +fi + +for n in $PREMODS; do + findmodule $n +done + +needusb="" +if [ -n "$withusb" ]; then + # If / or /boot is on a USB device include the driver. With root by + # label we could still get some odd behaviors + for fs in / /boot ; do + esc=$(echo $fs | sed 's,/,\\/,g') + dev=$(mount | awk "/ on ${esc} / { print \$1 }" | sed 's/[0-9]*$//' | cut -d/ -f3) + if [ "$(echo $dev | cut -c1-2)" = sd ]; then + if [ `which kudzu 2>/dev/null` ]; then + host=$(kudzu --probe -b scsi | + gawk '/^device: '${dev}'/,/^host:/ { if (/^host/) { print $2; exit; } }') + if [ -d /proc/scsi/usb-storage-${host} -o -f /proc/scsi/usb-storage/${host} ]; then + needusb=1 + fi + fi + fi + done +fi + +if [ -n "$needusb" ]; then + drivers=$(awk '/^alias[[:space:]]+usb-controller[0-9]* / { print $3}' < $modulefile) + if [ -n "$drivers" ]; then + for driver in $drivers; do + findmodule $driver + done + findmodule scsi_mod + findmodule sd_mod + findmodule usb-storage + fi +fi + +if [ -z "$noscsi" ]; then + if [ ! -f $modulefile ]; then + modulefile=/etc/conf.modules + fi + + if [ -f $modulefile ]; then + scsimodules=`grep "alias[[:space:]]\+scsi_hostadapter" $modulefile | grep -v '^[ ]*#' | LC_ALL=C sort -u | awk '{ print $3 }'` + + if [ -n "$scsimodules" ]; then + for n in $PRESCSIMODS; do + findmodule $n + done + + for n in $scsimodules; do + # for now allow scsi modules to come from anywhere. There are some + # RAID controllers with drivers in block/ + findmodule $n + done + fi + fi +fi + +# If we have ide devices and module ide, do the right thing +ide=/proc/ide/ide* +if [ -n "$ide" ]; then + findmodule -ide-disk +fi + +# If we use LVM, include lvm-mod +if [ -z "$nolvm" ]; then + if [ -f /proc/lvm/global ]; then + if grep -q '^VG:' /proc/lvm/global ; then + if [ "$kernelmajor" == "2.4" ]; then + findmodule -lvm-mod + else + findmodule -dm-mod + fi + fi + fi + + if [ -x /sbin/dmsetup -a -e /dev/mapper/control ]; then + dmout=$(/sbin/dmsetup ls 2>/dev/null) + if [ "$dmout" != "No devices found" -a "$dmout" != "" ]; then + findmodule -dm-mod + fi + fi +fi + +# If we have dasd devices, include the necessary modules (S/390) +if [ -d /proc/dasd ]; then + findmodule -dasd_mod + findmodule -dasd_eckd_mod + findmodule -dasd_fba_mod +fi + +if [ -z "$noraid" -a -f /proc/mdstat ]; then + # load appropriate raid devices if necessary -- we'll load whatever + # /proc/mdstat suggests + + # note that the awk below contains a space and a tab + for level in $(awk '/^md[0-9][0-9]*[ ]*:/ { print $4 }' \ + /proc/mdstat | sort -u); do + case $level in + linear) + findmodule linear + startraid=1 + ;; + multipath) + findmodule multipath + startraid=1 + ;; + raid[01456]) + findmodule $level + startraid=1 + ;; + *) + echo "raid level $level (in /proc/mdstat) not recognized" >&2 + ;; + esac + done + + if [ -n "$startraid" ]; then + raiddevices=$(awk '/^md[0-9][0-9]*[ ]*:/ { print $1 }' \ + /proc/mdstat | sort) + fi +fi + +# check to see if we need to set up a loopback filesystem +rootdev=$(awk '/^[ \t]*[^#]/ { if ($2 == "/") { print $1; }}' $fstab) +if echo $rootdev | cut -d/ -f3 | grep -q loop ; then + key="^# $(echo $rootdev | cut -d/ -f3 | tr '[a-z]' '[A-Z]'):" + if ! grep "$key" $fstab > /dev/null; then + echo "The root filesystem is on a $rootdev, but there is no magic entry in $fstab" 1>&2 + echo "for this device. Consult the mkinitrd man page for more information" 2>&2 + exit 1 + fi + + line=$(grep "$key" $fstab) + loopDev=$(echo $line | awk '{print $3}') + loopFs=$(echo $line | awk '{print $4}') + loopFile=$(echo $line | awk '{print $5}') + + basicmodules="$basicmodules -loop" + if [ "$loopFs" = "vfat" -o "$loopFs" = "msdos" ]; then + basicmodules="$basicmodules -fat" + fi + basicmodules="$basicmodules -${loopFs}" +# check if the root fs is on a logical volume +elif ! echo $rootdev | cut -c1-6 |grep -q "LABEL=" ; then + rootdev=$(echo "readlink $rootdev" | /sbin/nash --quiet) + major=`ls -l $rootdev | sed -e "s/.* \\([0-9]\+\\), *[0-9]\+.*/\\1/"` + [ "$major" != "58" ] || root_lvm=1 + if echo $rootdev |grep -q /dev/mapper 2>/dev/null ; then root_lvm=1 ; fi +fi + +rootfs=$(awk '{ if ($1 !~ /^[ \t]*#/ && $2 == "/") { print $3; }}' $fstab) +rootopts=$(awk '{ if ($1 !~ /^[ \t]*#/ && $2 == "/") { print $4; }}' $fstab) + +# in case the root filesystem is modular +findmodule -${rootfs} + +if [ -n "$root_lvm" ]; then + if [ "$kernelmajor" == "2.4" ]; then + findmodule -lvm-mod + else + findmodule -dm-mod + # DM requires all of these to be there in case someone used the + # feature. broken. (#132001) + findmodule -dm-mirror + findmodule -dm-zero + findmodule -dm-snapshot + fi +fi + +for n in $basicmodules; do + findmodule $n +done + +if [ -n "$verbose" ]; then + echo "Using modules: $MODULES" +fi + + +MNTIMAGE=roottree +IMAGE=root +RCFILE=$MNTIMAGE/init + +if [ -z "$MNTIMAGE" -o -z "$IMAGE" ]; then + echo "Error creating temporaries. Try again" >&2 + exit 1 +fi + +mkdir -p $MNTIMAGE +mkdir -p $MNTIMAGE/lib +mkdir -p $MNTIMAGE/bin +mkdir -p $MNTIMAGE/etc +mkdir -p $MNTIMAGE/dev +mkdir -p $MNTIMAGE/loopfs +mkdir -p $MNTIMAGE/proc +mkdir -p $MNTIMAGE/sys +mkdir -p $MNTIMAGE/sysroot +ln -s bin $MNTIMAGE/sbin + +inst /sbin/nash "$MNTIMAGE/bin/nash" +inst /sbin/insmod.static "$MNTIMAGE/bin/insmod" +ln -s /sbin/nash $MNTIMAGE/sbin/modprobe + +if [ -n "$USE_UDEV" ]; then + inst /sbin/udev.static $MNTIMAGE/sbin/udev + ln -s udev $MNTIMAGE/sbin/udevstart + mkdir -p $MNTIMAGE/etc/udev + inst /etc/udev/udev.conf $MNTIMAGE/etc/udev/udev.conf + ln -s /sbin/nash $MNTIMAGE/sbin/hotplug +fi + +for MODULE in $MODULES; do + if [ -x /usr/bin/strip ]; then + /usr/bin/strip -g $verbose /lib/modules/$kernel/$MODULE -o $MNTIMAGE/lib/$(basename $MODULE) + else + cp $verbose -a /lib/modules/$kernel/$MODULE $MNTIMAGE/lib + fi +done + +# mknod'ing the devices instead of copying them works both with and +# without devfs... +mknod $MNTIMAGE/dev/console c 5 1 +mknod $MNTIMAGE/dev/null c 1 3 +mknod $MNTIMAGE/dev/ram b 1 1 +mknod $MNTIMAGE/dev/systty c 4 0 +for i in 1 2 3 4; do + mknod $MNTIMAGE/dev/tty$i c 4 $i +done + +# FIXME -- this won't work if you're using devfs +if [ -n "$root_lvm" -a "$kernelmajor" == "2.4" ]; then + pvs=$(/sbin/pvscan | grep " PV " | /bin/awk {'print $5;'} |sed 's/"//g') + for pv in $pvs; do + cp $verbose --parents -a $pv $MNTIMAGE/ + done + + inst /sbin/vgwrapper "$MNTIMAGE/bin/vgwrapper" + ln "$MNTIMAGE/bin/vgwrapper" "$MNTIMAGE/bin/vgscan" + ln "$MNTIMAGE/bin/vgwrapper" "$MNTIMAGE/bin/vgchange" + + mknod $MNTIMAGE/dev/lvm b 109 0 +fi + +if [ -n "$root_lvm" -a "$kernelmajor" == "2.6" ]; then + inst /sbin/lvm.static "$MNTIMAGE/bin/lvm" + if [ -f /etc/lvm/lvm.conf ]; then + cp $verbose --parents /etc/lvm/lvm.conf $MNTIMAGE/ + fi +fi + +echo "#!/bin/nash" > $RCFILE +echo "" >> $RCFILE + +echo "mount -t proc /proc /proc" >> $RCFILE +echo "setquiet" >> $RCFILE +echo "echo Mounted /proc filesystem" >> $RCFILE + +if [ "$kernelmajor" != "2.4" ]; then + echo "echo Mounting sysfs" >> $RCFILE + echo "mount -t sysfs none /sys" >> $RCFILE +fi + +if [ -n "$USE_UDEV" ]; then + if [ -n "$UDEV_TMPFS" ]; then + cat >> $RCFILE <> $RCFILE < /proc/sys/kernel/hotplug +EOF +fi + +for MODULE in $MODULES; do + text="" + module=`echo $MODULE | sed "s|.*/||" | sed "s/.k\?o$//"` + fullmodule=`echo $MODULE | sed "s|.*/||"` + + options=`sed -n -e "s/^options[ ][ ]*$module[ ][ ]*//p" $modulefile 2>/dev/null` + + if [ -n "$verbose" ]; then + if [ -n "$options" ]; then + text=" with options $options" + fi + echo "Loading module $module$text" + fi + echo "echo \"Loading $fullmodule module\"" >> $RCFILE + echo "insmod /lib/$fullmodule $options" >> $RCFILE + + # Hack - we need a delay after loading usb-storage to give things + # time to settle down before we start looking a block devices + if [ "$module" = "usb-storage" ]; then + echo "sleep 5" >> $RCFILE + fi + if [ "$module" = "zfcp" -a -f /etc/zfcp.conf ]; then + echo "sleep 2" >> $RCFILE + cat /etc/zfcp.conf | grep -v "^#" | tr "A-Z" "a-z" | while read DEVICE SCSIID WWPN SCSILUN FCPLUN; do + echo "echo -n $WWPN > /sys/bus/ccw/drivers/zfcp/${DEVICE/0x/}/port_add" >>$RCFILE + echo "echo -n $FCPLUN > /sys/bus/ccw/drivers/zfcp/${DEVICE/0x/}/$WWPN/unit_add" >>$RCFILE + echo "echo -n 1 > /sys/bus/ccw/drivers/zfcp/${DEVICE/0x/}/online" >>$RCFILE + done + fi +done + +# HACK: module loading + device creation isn't necessarily synchronous... +# this will make sure that we have all of our devices before trying +# things like RAID or LVM +if [ -n "$USE_UDEV" ]; then + echo "/sbin/udevstart" >> $RCFILE +fi + +if [ -n "$startraid" ]; then + for dev in $raiddevices; do + cp -a /dev/${dev} $MNTIMAGE/dev + echo "raidautorun /dev/${dev}" >> $RCFILE + done +fi + +if [ -z "$USE_UDEV" ]; then + echo "echo Creating block devices" >> $RCFILE + echo "mkdevices /dev" >> $RCFILE +fi + +if [ -n "$loopDev" ]; then + mkdir /initrd + cp -a $loopDev $MNTIMAGE/dev + cp -a $rootdev $MNTIMAGE/dev + echo "echo Mounting device containing loopback root filesystem" >> $RCFILE + echo "mount -t $loopFs $loopDev /loopfs" >> $RCFILE + echo "echo Setting up loopback device $rootdev" >> $RCFILE + echo "losetup $rootdev /loopfs$loopFile" >> $RCFILE +elif [ -n "$root_lvm" ]; then + if [ "$kernelmajor" == "2.4" ]; then + echo "echo Scanning logical volumes" >> $RCFILE + echo "vgscan" >> $RCFILE + echo "echo Activating logical volumes" >> $RCFILE + echo "vgchange -ay" >> $RCFILE + else + echo "echo Making device-mapper control node" >> $RCFILE + echo "mkdmnod" >> $RCFILE + echo "echo Scanning logical volumes" >> $RCFILE + echo "lvm vgscan" >> $RCFILE + echo "echo Activating logical volumes" >> $RCFILE + echo "lvm vgchange -ay" >> $RCFILE + echo "echo Making device nodes" >> $RCFILE + echo "lvm vgmknodes" >> $RCFILE + fi +fi + +echo "echo Creating root device" >> $RCFILE +echo "mkrootdev /dev/root" >> $RCFILE +rootdev=/dev/root + +if [ "$kernelmajor" != "2.4" ]; then + echo "umount /sys" >> $RCFILE +fi + +if [ -n "$initramfs" ]; then + echo "echo Mounting root filesystem" >> $RCFILE + echo "mount -o $rootopts --ro -t $rootfs $rootdev /sysroot" >> $RCFILE + + [ -n "$UDEV_KEEP_DEV" ] && echo "mount -t tmpfs --bind /dev /sysroot/dev" >> $RCFILE + + echo "echo Switching to new root" >> $RCFILE + echo "switchroot /sysroot" >> $RCFILE +else + if [ -n "$pivot" ]; then + echo "echo 0x0100 > /proc/sys/kernel/real-root-dev" >> $RCFILE + + echo "echo Mounting root filesystem" >> $RCFILE + echo "mount -o $rootopts --ro -t $rootfs $rootdev /sysroot" >> $RCFILE + + echo "pivot_root /sysroot /sysroot/initrd" >> $RCFILE + echo "umount /initrd/proc" >> $RCFILE + else + echo "umount /proc" >> $RCFILE + fi +fi + +[ -n "$UDEV_TMPFS" ] && echo "umount /initrd/dev" >> $RCFILE +chmod +x $RCFILE + + (cd $MNTIMAGE; find . | cpio --quiet -c -o) > $IMAGE || exit 1 + +if [ -n "$compress" ]; then + gzip -9 < $IMAGE > $target || rc=1 +else + cp -a $IMAGE $target || rc=1 +fi + +exit $rc diff --git a/rescue/linux/cdrom/rootetc.list b/rescue/linux/cdrom/rootetc.list new file mode 100644 index 0000000..18a2844 --- /dev/null +++ b/rescue/linux/cdrom/rootetc.list @@ -0,0 +1,13 @@ +/etc/bashrc +/etc/exports +/etc/gshadow +/etc/shadow +/etc/passwd +/etc/group +/etc/hosts +/etc/filesystems +/etc/fstab +/etc/protocols +/etc/localtime +/etc/ld.so.cache +/etc/syslog.conf diff --git a/rescue/linux/cdrom/rootetc.list.save b/rescue/linux/cdrom/rootetc.list.save new file mode 100644 index 0000000..18a2844 --- /dev/null +++ b/rescue/linux/cdrom/rootetc.list.save @@ -0,0 +1,13 @@ +/etc/bashrc +/etc/exports +/etc/gshadow +/etc/shadow +/etc/passwd +/etc/group +/etc/hosts +/etc/filesystems +/etc/fstab +/etc/protocols +/etc/localtime +/etc/ld.so.cache +/etc/syslog.conf diff --git a/rescue/linux/cdrom/rootsbin.list b/rescue/linux/cdrom/rootsbin.list new file mode 100644 index 0000000..035649e --- /dev/null +++ b/rescue/linux/cdrom/rootsbin.list @@ -0,0 +1,175 @@ +roottree/sbin/arp +roottree/sbin/ash +roottree/sbin/awk +roottree/sbin/badblocks +roottree/sbin/basename +roottree/sbin/bash +roottree/sbin/bunzip2 +roottree/sbin/bzip2 +roottree/sbin/cat +roottree/sbin/cdrecord +roottree/sbin/chattr +roottree/sbin/chgrp +roottree/sbin/chkconfig +roottree/sbin/chmod +roottree/sbin/chown +roottree/sbin/chroot +roottree/sbin/clear +roottree/sbin/consoletype +roottree/sbin/cp +roottree/sbin/cut +roottree/sbin/date +roottree/sbin/dd +roottree/sbin/debugfs +roottree/sbin/df +roottree/sbin/dhclient +roottree/sbin/dhcpd +roottree/sbin/diff +roottree/sbin/dig +roottree/sbin/dmesg +roottree/sbin/dosfsck +roottree/sbin/du +roottree/sbin/dump +roottree/sbin/e2fsck +roottree/sbin/egrep +roottree/sbin/eject +roottree/sbin/false +roottree/sbin/fdisk +roottree/sbin/fgrep +roottree/sbin/file +roottree/sbin/find +roottree/sbin/findfs +roottree/sbin/free +roottree/sbin/fsck +roottree/sbin/fsck.cramfs +roottree/sbin/fsck.ext2 +roottree/sbin/fsck.ext3 +roottree/sbin/fsck.jfs +roottree/sbin/fsck.msdos +roottree/sbin/fsck.vfat +roottree/sbin/ftp +roottree/sbin/gdb +roottree/sbin/getkey +roottree/sbin/grep +roottree/sbin/grub +roottree/sbin/gunzip +roottree/sbin/gzip +roottree/sbin/halt +roottree/sbin/hdparm +roottree/sbin/head +roottree/sbin/hostname +roottree/sbin/hotplug +roottree/sbin/id +roottree/sbin/ifconfig +roottree/sbin/init +roottree/sbin/insmod +roottree/sbin/insmod.static +roottree/sbin/ipcalc +roottree/sbin/kill +roottree/sbin/killall +roottree/sbin/killall5 +roottree/sbin/klogd +roottree/sbin/last +roottree/sbin/ldd +roottree/sbin/less +roottree/sbin/lilo +roottree/sbin/ln +roottree/sbin/loadkeys +roottree/sbin/login +roottree/sbin/losetup +roottree/sbin/ls +roottree/sbin/lsmod +roottree/sbin/lsof +roottree/sbin/lspci +roottree/sbin/lsusb +roottree/sbin/ltrace +roottree/sbin/mail +roottree/sbin/md5sum +roottree/sbin/mgetty +roottree/sbin/mingetty +roottree/sbin/mkbootdisk +roottree/sbin/mkdir +roottree/sbin/mkdosfs +roottree/sbin/mke2fs +roottree/sbin/mkfs +roottree/sbin/mkfs.cramfs +roottree/sbin/mkfs.ext2 +roottree/sbin/mkfs.ext3 +roottree/sbin/mkfs.jfs +roottree/sbin/mkfs.msdos +roottree/sbin/mkfs.vfat +roottree/sbin/mkinitrd +roottree/sbin/mkisofs +roottree/sbin/mknod +roottree/sbin/mkreiserfs +roottree/sbin/mkswap +roottree/sbin/modinfo +roottree/sbin/mktemp +roottree/sbin/modprobe +roottree/sbin/more +roottree/sbin/mount +roottree/sbin/mt +roottree/sbin/mv +roottree/sbin/nash +roottree/sbin/netstat +roottree/sbin/nice +roottree/sbin/nm +roottree/sbin/nmap +roottree/sbin/nologin +roottree/sbin/od +roottree/sbin/passwd +roottree/sbin/ping +roottree/sbin/portmap +roottree/sbin/printenv +roottree/sbin/ps +roottree/sbin/pwd +roottree/sbin/raidstart +roottree/sbin/reboot +roottree/sbin/reiserfsck +roottree/sbin/rm +roottree/sbin/rmt +roottree/sbin/rmdir +roottree/sbin/rmmod +roottree/sbin/route +roottree/sbin/rpc.lockd +roottree/sbin/rpc.statd +roottree/sbin/runlevel +roottree/sbin/scp +roottree/sbin/script +roottree/sbin/scsi_info +roottree/sbin/sfdisk +roottree/sbin/sh +roottree/sbin/shutdown +roottree/sbin/sleep +roottree/sbin/sort +roottree/sbin/ssh +roottree/sbin/ssh-keygen +roottree/sbin/strace +roottree/sbin/strings +roottree/sbin/stty +roottree/sbin/su +roottree/sbin/swapoff +roottree/sbin/swapon +roottree/sbin/sync +roottree/sbin/sysctl +roottree/sbin/syslogd +roottree/sbin/tail +roottree/sbin/tar +roottree/sbin/telinit +roottree/sbin/test +roottree/sbin/top +roottree/sbin/touch +roottree/sbin/tput +roottree/sbin/true +roottree/sbin/tune2fs +roottree/sbin/udev +roottree/sbin/udevstart +roottree/sbin/umount +roottree/sbin/uname +roottree/sbin/usleep +roottree/sbin/vi +roottree/sbin/w +roottree/sbin/which +roottree/sbin/who +roottree/sbin/whoami +roottree/sbin/zcat diff --git a/rescue/linux/cdrom/rootsbin.list.save b/rescue/linux/cdrom/rootsbin.list.save new file mode 100644 index 0000000..035649e --- /dev/null +++ b/rescue/linux/cdrom/rootsbin.list.save @@ -0,0 +1,175 @@ +roottree/sbin/arp +roottree/sbin/ash +roottree/sbin/awk +roottree/sbin/badblocks +roottree/sbin/basename +roottree/sbin/bash +roottree/sbin/bunzip2 +roottree/sbin/bzip2 +roottree/sbin/cat +roottree/sbin/cdrecord +roottree/sbin/chattr +roottree/sbin/chgrp +roottree/sbin/chkconfig +roottree/sbin/chmod +roottree/sbin/chown +roottree/sbin/chroot +roottree/sbin/clear +roottree/sbin/consoletype +roottree/sbin/cp +roottree/sbin/cut +roottree/sbin/date +roottree/sbin/dd +roottree/sbin/debugfs +roottree/sbin/df +roottree/sbin/dhclient +roottree/sbin/dhcpd +roottree/sbin/diff +roottree/sbin/dig +roottree/sbin/dmesg +roottree/sbin/dosfsck +roottree/sbin/du +roottree/sbin/dump +roottree/sbin/e2fsck +roottree/sbin/egrep +roottree/sbin/eject +roottree/sbin/false +roottree/sbin/fdisk +roottree/sbin/fgrep +roottree/sbin/file +roottree/sbin/find +roottree/sbin/findfs +roottree/sbin/free +roottree/sbin/fsck +roottree/sbin/fsck.cramfs +roottree/sbin/fsck.ext2 +roottree/sbin/fsck.ext3 +roottree/sbin/fsck.jfs +roottree/sbin/fsck.msdos +roottree/sbin/fsck.vfat +roottree/sbin/ftp +roottree/sbin/gdb +roottree/sbin/getkey +roottree/sbin/grep +roottree/sbin/grub +roottree/sbin/gunzip +roottree/sbin/gzip +roottree/sbin/halt +roottree/sbin/hdparm +roottree/sbin/head +roottree/sbin/hostname +roottree/sbin/hotplug +roottree/sbin/id +roottree/sbin/ifconfig +roottree/sbin/init +roottree/sbin/insmod +roottree/sbin/insmod.static +roottree/sbin/ipcalc +roottree/sbin/kill +roottree/sbin/killall +roottree/sbin/killall5 +roottree/sbin/klogd +roottree/sbin/last +roottree/sbin/ldd +roottree/sbin/less +roottree/sbin/lilo +roottree/sbin/ln +roottree/sbin/loadkeys +roottree/sbin/login +roottree/sbin/losetup +roottree/sbin/ls +roottree/sbin/lsmod +roottree/sbin/lsof +roottree/sbin/lspci +roottree/sbin/lsusb +roottree/sbin/ltrace +roottree/sbin/mail +roottree/sbin/md5sum +roottree/sbin/mgetty +roottree/sbin/mingetty +roottree/sbin/mkbootdisk +roottree/sbin/mkdir +roottree/sbin/mkdosfs +roottree/sbin/mke2fs +roottree/sbin/mkfs +roottree/sbin/mkfs.cramfs +roottree/sbin/mkfs.ext2 +roottree/sbin/mkfs.ext3 +roottree/sbin/mkfs.jfs +roottree/sbin/mkfs.msdos +roottree/sbin/mkfs.vfat +roottree/sbin/mkinitrd +roottree/sbin/mkisofs +roottree/sbin/mknod +roottree/sbin/mkreiserfs +roottree/sbin/mkswap +roottree/sbin/modinfo +roottree/sbin/mktemp +roottree/sbin/modprobe +roottree/sbin/more +roottree/sbin/mount +roottree/sbin/mt +roottree/sbin/mv +roottree/sbin/nash +roottree/sbin/netstat +roottree/sbin/nice +roottree/sbin/nm +roottree/sbin/nmap +roottree/sbin/nologin +roottree/sbin/od +roottree/sbin/passwd +roottree/sbin/ping +roottree/sbin/portmap +roottree/sbin/printenv +roottree/sbin/ps +roottree/sbin/pwd +roottree/sbin/raidstart +roottree/sbin/reboot +roottree/sbin/reiserfsck +roottree/sbin/rm +roottree/sbin/rmt +roottree/sbin/rmdir +roottree/sbin/rmmod +roottree/sbin/route +roottree/sbin/rpc.lockd +roottree/sbin/rpc.statd +roottree/sbin/runlevel +roottree/sbin/scp +roottree/sbin/script +roottree/sbin/scsi_info +roottree/sbin/sfdisk +roottree/sbin/sh +roottree/sbin/shutdown +roottree/sbin/sleep +roottree/sbin/sort +roottree/sbin/ssh +roottree/sbin/ssh-keygen +roottree/sbin/strace +roottree/sbin/strings +roottree/sbin/stty +roottree/sbin/su +roottree/sbin/swapoff +roottree/sbin/swapon +roottree/sbin/sync +roottree/sbin/sysctl +roottree/sbin/syslogd +roottree/sbin/tail +roottree/sbin/tar +roottree/sbin/telinit +roottree/sbin/test +roottree/sbin/top +roottree/sbin/touch +roottree/sbin/tput +roottree/sbin/true +roottree/sbin/tune2fs +roottree/sbin/udev +roottree/sbin/udevstart +roottree/sbin/umount +roottree/sbin/uname +roottree/sbin/usleep +roottree/sbin/vi +roottree/sbin/w +roottree/sbin/which +roottree/sbin/who +roottree/sbin/whoami +roottree/sbin/zcat diff --git a/rescue/linux/cdrom/roottree/.cvsignore b/rescue/linux/cdrom/roottree/.cvsignore new file mode 100644 index 0000000..018f582 --- /dev/null +++ b/rescue/linux/cdrom/roottree/.cvsignore @@ -0,0 +1,10 @@ +var +tmp +sbin +proc +mnt +lib +initrd +dev +cdrom +bacula-rufus diff --git a/rescue/linux/cdrom/roottree/README b/rescue/linux/cdrom/roottree/README new file mode 100644 index 0000000..222d34a --- /dev/null +++ b/rescue/linux/cdrom/roottree/README @@ -0,0 +1,14 @@ + +This directory contains the root directory structure that will +be loaded once Linux is in memory and the CDROM has been detected. +It is loaded as a RAM disk and replaces the initrd. It is in fact a +quite complete set of commands, and you can quite liberally add to +it. Do so by adding the files you want to either rootsbin.list (note +/bin and /sbin are in the same directory). + +Quite a few files will be added to this directory automatically either +by the makekernel script or by the makebinaries script. Be a bit +careful about what files you add to /etc as it is somewhat tailored to +be a streamlined boot process. In fact, the normal RedHat files in +rc.d, ... are probably not there -- it is rather simplified and reminiscent +of an old Unix system. diff --git a/rescue/linux/cdrom/roottree/etc/.cvsignore b/rescue/linux/cdrom/roottree/etc/.cvsignore new file mode 100644 index 0000000..042cf66 --- /dev/null +++ b/rescue/linux/cdrom/roottree/etc/.cvsignore @@ -0,0 +1,13 @@ +init.d +terminfo +ssh +shadow +security +passwd +pam.d +ld.so.cache +gshadow +group +protocols +services +syslog.conf diff --git a/rescue/linux/cdrom/roottree/etc/fonts.cgz b/rescue/linux/cdrom/roottree/etc/fonts.cgz new file mode 100644 index 0000000..ebe6e36 Binary files /dev/null and b/rescue/linux/cdrom/roottree/etc/fonts.cgz differ diff --git a/rescue/linux/cdrom/roottree/etc/inittab b/rescue/linux/cdrom/roottree/etc/inittab new file mode 100644 index 0000000..73c67cf --- /dev/null +++ b/rescue/linux/cdrom/roottree/etc/inittab @@ -0,0 +1,45 @@ +# +# inittab This file describes how the INIT process should set up +# the system in a certain run-level. +# +# Author: Miquel van Smoorenburg, +# Modified for RHS Linux by Marc Ewing and Donnie Barnes +# + +# Default runlevel. The runlevels used by RHS are: +# 0 - halt (Do NOT set initdefault to this) +# 1 - Single user mode +# 2 - Multiuser, without NFS (The same as 3, if you do not have networking) +# 3 - Full multiuser mode +# 4 - unused +# 5 - X11 +# 6 - reboot (Do NOT set initdefault to this) +# +id:2:initdefault: + +# System initialization. +si::sysinit:/etc/sysinit + +#shutdown +l0:0:wait:/sbin/halt -fd + +# normal run levels +l1:1:wait:/bin/bash -i -l +l2:2:wait:/etc/rc.d/rc 2 +l3:3:wait:/etc/rc.d/rc 3 +l4:4:wait:/etc/rc.d/rc 4 +l5:5:wait:/etc/rc.d/rc 5 + +# reboot +l6:6:wait:/sbin/reboot -fd + +# Trap CTRL-ALT-DELETE +ca::ctrlaltdel:/sbin/halt -d + + +# Run gettys in standard runlevels +1:2345:respawn:/sbin/mingetty tty1 +2:2345:respawn:/sbin/mingetty tty2 +3:2345:respawn:/sbin/mingetty tty3 +4:2345:respawn:/sbin/mingetty tty4 +5:2345:respawn:/sbin/mingetty tty5 diff --git a/rescue/linux/cdrom/roottree/etc/issue b/rescue/linux/cdrom/roottree/etc/issue new file mode 100644 index 0000000..0808fc5 --- /dev/null +++ b/rescue/linux/cdrom/roottree/etc/issue @@ -0,0 +1,6 @@ + +Welcome to the Bacula Rescue CDROM + +\r \v + +Please login using root and your root password ... diff --git a/rescue/linux/cdrom/roottree/etc/keymaps.gz b/rescue/linux/cdrom/roottree/etc/keymaps.gz new file mode 100644 index 0000000..fbf9f6c Binary files /dev/null and b/rescue/linux/cdrom/roottree/etc/keymaps.gz differ diff --git a/rescue/linux/cdrom/roottree/etc/lang-table b/rescue/linux/cdrom/roottree/etc/lang-table new file mode 100644 index 0000000..d274ae3 --- /dev/null +++ b/rescue/linux/cdrom/roottree/etc/lang-table @@ -0,0 +1,18 @@ +Czech cs lat2-sun16 iso02 cs_CZ cz-lat2 Europe/Prague +English en None None en_US us America/New_York +Danish da lat0-sun16 iso15 da_DK us Europe/Copenhagen +French fr None None fr_FR fr-latin1 Europe/Paris +German de None None de_DE de-latin1 Europe/Berlin +Hungarian hu lat2-sun16 iso02 hu_HU hu Europe/Budapest +Icelandic is lat0-sun16 iso15 is_IS is-latin1 Atlantic/Reykjavik +Italian it lat0-sun16 iso15 it_IT it Europe/Rome +Norwegian no lat0-sun16 iso15 no_NO no-latin1 Europe/Oslo +Romanian ro lat2-sun16 iso02 ro_RO ro Europe/Bucharest +Russian ru cyr-sun16 koi8-r ru_RU.KOI8-R ru Europe/Moscow +Serbian sr cyr-sun16 iso05 sr_YU us Europe/Belgrade +Slovak sk lat2-sun16 iso02 sk_SK sk-qwerty Europe/Bratislava +Slovenian sl lat2-sun16 iso02 sl_SI slovene Europe/Ljubljana +Spanish es None None es_ES es Europe/Madrid +Swedish sv lat0-sun16 iso15 sv_SE se-latin1 Europe/Stockholm +Turkish tr lat5-sun16 iso09 tr_TR trq Europe/Istanbul +Ukrainian uk cyr-sun16 koi8-u uk_UA.KOI8-U uk Europe/Kiev diff --git a/rescue/linux/cdrom/roottree/etc/lilo.conf b/rescue/linux/cdrom/roottree/etc/lilo.conf new file mode 100644 index 0000000..07a77f3 --- /dev/null +++ b/rescue/linux/cdrom/roottree/etc/lilo.conf @@ -0,0 +1,13 @@ +boot=/dev/hda +map=/bdisk/boot/map +install=/bdisk/boot/boot.b +backup=/dev/null +prompt +timeout=300 +default=linux + +image=/boot/vmlinuz + label=linux + read-only + root=/dev/hda1 + diff --git a/rescue/linux/cdrom/roottree/etc/load_eth0 b/rescue/linux/cdrom/roottree/etc/load_eth0 new file mode 100755 index 0000000..c21c74b --- /dev/null +++ b/rescue/linux/cdrom/roottree/etc/load_eth0 @@ -0,0 +1,27 @@ +#! /bin/sh +# +# Attempt to load the ethernet card module +# + +XPWD=`pwd` +cd /lib/modules/*/kernel/drivers/net + +echo "Finding network module" + +modprobe mii 2>/dev/null >/dev/null +modprobe 8390 2>/dev/null >/dev/null + +for card in *.o */*.o; do + if insmod ${card} >/dev/null 2>&1 ; then + if ifconfig eth0 >/dev/null 2>&1 ; then + cat >>/etc/modules.conf </dev/null >/dev/null +modprobe cdrom 2>/dev/null >/dev/null +modprobe scsi_mod 2>/dev/null >/dev/null + +DISKS="/dev/hd?" +if [ -f /proc/scsi/scsi ] ; then + HAVE_SCSI="yes" + DISKS="$DISKS /dev/scd? /dev/scd?? /dev/sd?[1-9] /dev/sd?[1-9][1-9]" +else + HAVE_SCSI="no" +fi +DISKS="$DISKS /dev/hd?[1-9] /dev/hd?[1-9][1-9]" + +echo "Trying to find CDROM on ..." +for disk in $DISKS; do + if [ x$DEBUG = xyes ] ; then + echo "Trying to mount device $disk" + fi + if test -b $disk && mount -t iso9660 -o ro -n $disk /mnt/cdrom 2>/dev/null >/dev/null ; then +# if test -b $disk && mount -t iso9660 -o ro -n $disk /mnt/cdrom ; then + if [ -e /mnt/cdrom/BaculaRescueCD ] ; then + echo "Found the Bacula Rescue CDROM on $disk" + sleep 3 + exit + else + umount /mnt/cdrom + fi + else + if [ x$DEBUG = xyes ] ; then + cat /proc/modules + sleep 2 + fi + fi +done + +echo "Sorry could not find the CDROM" +sleep 5 diff --git a/rescue/linux/cdrom/roottree/etc/mtab b/rescue/linux/cdrom/roottree/etc/mtab new file mode 100644 index 0000000..c21560b --- /dev/null +++ b/rescue/linux/cdrom/roottree/etc/mtab @@ -0,0 +1,2 @@ +/dev/root / ext2 rw 0 0 +/dev/cdrom /mnt/cdrom iso9660 ro 0 0 diff --git a/rescue/linux/cdrom/roottree/etc/nsswitch.conf b/rescue/linux/cdrom/roottree/etc/nsswitch.conf new file mode 100644 index 0000000..2b77a18 --- /dev/null +++ b/rescue/linux/cdrom/roottree/etc/nsswitch.conf @@ -0,0 +1,44 @@ +# +# /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 +# db Use the local database (.db) files +# compat Use NIS on compat mode +# hesiod Use Hesiod for user lookups +# [NOTFOUND=return] Stop searching if not found so far +# + +# To use db, put the "db" in front of "files" for entries you want to be +# looked up first in the databases +# +# Example: + +passwd: files +shadow: files +group: files +hosts: files +bootparams: files +ethers: files +netmasks: files +networks: files +protocols: files +rpc: files +services: files +netgroup: files +publickey: files +automount: files +aliases: files diff --git a/rescue/linux/cdrom/roottree/etc/profile b/rescue/linux/cdrom/roottree/etc/profile new file mode 100644 index 0000000..92c3742 --- /dev/null +++ b/rescue/linux/cdrom/roottree/etc/profile @@ -0,0 +1,49 @@ +# /etc/profile + +# System wide environment and startup programs, for login setup +# Functions and aliases go in /etc/bashrc + +pathmunge () { + if ! echo $PATH | /bin/egrep -q "(^|:)$1($|:)" ; then + if [ "$2" = "after" ] ; then + PATH=$PATH:$1 + else + PATH=$1:$PATH + fi + fi +} + +# Path manipulation +if [ `id -u` = 0 ]; then + pathmunge /sbin + pathmunge /usr/sbin + pathmunge /usr/local/sbin +fi + +pathmunge /usr/X11R6/bin after + +unset pathmunge + +# No core files by default +ulimit -S -c 0 > /dev/null 2>&1 + +USER="`id -un`" +LOGNAME=$USER +MAIL="/var/spool/mail/$USER" + +HOSTNAME=`/bin/hostname` +HISTSIZE=1000 + +if [ -z "$INPUTRC" -a ! -f "$HOME/.inputrc" ]; then + INPUTRC=/etc/inputrc +fi + +export PATH USER LOGNAME MAIL HOSTNAME HISTSIZE INPUTRC + +for i in /etc/profile.d/*.sh ; do + if [ -r "$i" ]; then + . $i + fi +done + +unset i diff --git a/rescue/linux/cdrom/roottree/etc/rc.d/rc b/rescue/linux/cdrom/roottree/etc/rc.d/rc new file mode 100755 index 0000000..c10de84 --- /dev/null +++ b/rescue/linux/cdrom/roottree/etc/rc.d/rc @@ -0,0 +1,8 @@ +#! /bin/sh -v +# + +argv1="$1" + +if [ $argv1 -eq 1 ] ; then + exec init -t1 S +fi diff --git a/rescue/linux/cdrom/roottree/etc/securetty b/rescue/linux/cdrom/roottree/etc/securetty new file mode 100644 index 0000000..525f4de --- /dev/null +++ b/rescue/linux/cdrom/roottree/etc/securetty @@ -0,0 +1,23 @@ +console +vc/1 +vc/2 +vc/3 +vc/4 +vc/5 +vc/6 +vc/7 +vc/8 +vc/9 +vc/10 +vc/11 +tty1 +tty2 +tty3 +tty4 +tty5 +tty6 +tty7 +tty8 +tty9 +tty10 +tty11 diff --git a/rescue/linux/cdrom/roottree/etc/start_network.sh b/rescue/linux/cdrom/roottree/etc/start_network.sh new file mode 100755 index 0000000..65a22fe --- /dev/null +++ b/rescue/linux/cdrom/roottree/etc/start_network.sh @@ -0,0 +1,23 @@ +#! /bin/sh +# +# This script is not used by Bacula. You should try the script +# in bacula-hostname/start_network. +# We leave this here because it could be useful if you are +# getting an IP address with DHCP. You might need to change +# dhcpcd below to dhclient if you are running RedHat +# + +if ifconfig eth0 >/dev/null 2>&1 ; then + + echo "Setting up network..." + /bin/dhcpcd $eth0 + + echo "done" + + ifconfig + exit + +fi + +echo "No network card present, cannot configure network" +sleep 3 diff --git a/rescue/linux/cdrom/roottree/etc/sysinit b/rescue/linux/cdrom/roottree/etc/sysinit new file mode 100755 index 0000000..da71eca --- /dev/null +++ b/rescue/linux/cdrom/roottree/etc/sysinit @@ -0,0 +1,48 @@ +#!/bin/sh + +echo "Start sysinit ..." + +PATH="/sbin:/usr/sbin:/bin:/usr/bin:/usr/X11R6/bin" +export PATH + +echo "Remounting root filesystem read-write" +mount -o remount,rw /dev/root / + +mount -t proc none /proc +mount -t devpts none /dev/pts +[ -d /proc/bus/usb ] && mount -n -t usbfs /proc/bus/usb /proc/bus/usb +mount -n -t sysfs /sys /sys >/dev/null 2>&1 + +[ -x /sbin/start_udev ] && /sbin/start_udev + +# Clear mtab +(> /etc/mtab) &> /dev/null + +# Enter root, /proc and (potentially) /proc/bus/usb and devfs into mtab. +mount -f / +mount -f /proc +mount -f /sys >/dev/null 2>&1 +mount -f /dev/pts +[ -f /proc/bus/usb/devices ] && mount -f -t usbfs usbfs /proc/bus/usb +[ -e /dev/.devfsd ] && mount -f -t devfs devfs /dev + + +touch /var/run/utmp /var/run/wtmp /var/log/wtmp +chgrp utmp /var/run/utmp /var/log/wtmp +chmod 0664 /var/run/utmp /var/log/wtmp + +syslogd -m 0 +klogd -x + +echo "Attempting to mount CDDOM..." +/etc/mount_cdrom + +echo "Loading the ethernet driver module" +/etc/load_eth0 + +ifconfig lo 127.0.0.1 netmask 255.0.0.0 up + +/bin/hostname RescueCD + +echo "Boot complete." +sleep 3 # give time to read messages diff --git a/rescue/linux/cdrom/roottree/etc/termcap b/rescue/linux/cdrom/roottree/etc/termcap new file mode 100644 index 0000000..b765d99 --- /dev/null +++ b/rescue/linux/cdrom/roottree/etc/termcap @@ -0,0 +1,5522 @@ + + + +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:\ + :hc:os:\ + :co#132:li#66:\ + :bl=^G:cr=^M:do=^J:ff=^L:le=^H:sf=^J: + + +klone+acs|alternate character set for ansi.sys displays:\ + :ac=`\004a\261f\370g\361h\260j\331k\277l\332m\300n\305o~q\304r\362s_t\303u\264v\301w\302x\263y\371z\372{\373|\374}\375~\376.\031-\030\054\021+^P0\333p\304r\304y\363z\362{\343|\330}\234:\ + :ae=\E[10m:as=\E[11m: + +klone+sgr|attribute control for ansi.sys displays:\ + :S2=\E[11m:S3=\E[10m:ae=\E[11m:as=\E11m: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: + +klone+sgr-dumb|attribute control for ansi.sys displays (no ESC [ 11 m):\ + :ae=\E[12m:as=\E12m: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: + +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:Sb=\E[%+(m:Sf=\E[%+^^m:\ + :op=\E[37;40m: + +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=\E8:sc=\E7:st=\EH: + + +ansi-mini|any ansi terminal with pessimistic assumptions:\ + :am:bs:\ + :co#80:it#8:li#24:\ + :ce=\E[K:cl=\E[H\E[2J:cm=\E[%i%d;%dH:do=\E[B:ho=\E[H:\ + :le=\E[D:nd=\E[C:ta=^I:up=\E[A: + +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: +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|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|ansi/pc-term compatible with color:\ + :u6=\E[%i%d;%dR:u7=\E[6n:..u8=\E[?%[;0123456789]c:\ + :u9=\E[c:tc=klone+color:tc=klone+acs:tc=klone+sgr:tc=ansi-m: + +ansi.sys-old|ANSI.SYS under PC-DOS 2.1:\ + :am: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+acs:tc=klone+sgr: +ansi.sys|ANSI.SYS 3.1 and later versions:\ + :ce=\E[K:tc=ansi.sys-old: + +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: +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: +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: + + +linux|linux-lat|linux console:\ + :am:eo:mi:ms:ut:xn:xo:\ + :co#80:it#8:li#25:\ + :&7=^Z:@7=\E[4~: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~:\ + :IC=\E[%d@:K2=\E[G: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:ct=\E[3g: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[[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~:kB=\E[Z:\ + :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:mr=\E[7m:\ + :nd=\E[C:nw=^M^J:r1=\Ec:rc=\E8:sc=\E7:sf=^J:sr=\EM:\ + :st=\EH:ta=^I:u6=\E[%i%d;%dR:u7=\E[6n:u8=\E[?6c:\ + :u9=\E[c:up=\E[A:vb=200\E[?5h\E[?5l:ve=\E[?25h:\ + :vi=\E[?25l:tc=klone+sgr:tc=klone+color:tc=klone+acs: +linux-m|Linux console no color:\ + :Co@:pa@:\ + :AB@:AF@:Sb@:Sf@:tc=linux: + +linux-nic|linux with ich/ich1 suppressed for non-curses programs:\ + :IC@:ei=:ic@:im=:tc=linux: + +scoansi|SCO Extended ANSI standard crt:\ + :am:bs:eo:xo:\ + :co#80:it#8:li#25:\ + :@7=\E[F: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: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[m:nd=\E[C:se=\E[m:sf=\E[S:so=\E[7m:\ + :sr=\E[T:ta=^I:ue=\E[m:up=\E[A:us=\E[4m: + +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|AT&T 6300 plus:\ + :am: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: + +att7300|unixpc|pc7300|3b1|s4|AT&T UNIX PC Model 7300:\ + :am:xn: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:ae=\E[10m:al=\E[L:as=\E[11m: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=^O:ic=\E[@:\ + :im=:k1=\EOP:k2=\EOQ:k3=\EOR:k4=\EOS:k5=\E5:k6=\E6:\ + :k7=\E7:k8=\E8:kD=\Edc:kI=\Eim:kN=\Epg:kP=\EPG:kb=^H:\ + :kd=\E[B:kh=\Ehm:kl=\E[D:kr=\E[C:ku=\E[A:md=\E[7m:\ + :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[=1C:vi=\E[=C: + +iris-ansi|iris-ansi-net|IRIS emulating ANSI terminal:\ + :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=\EOR:F2=\EOS: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=\EOP:k;=\EOQ:\ + :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: + +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:nd=\E[C:se=\E[m:so=\E[7m:ue=\E[m:\ + :up=\E[A:us=\E[4m: + +ibmpcx|xenix|ibmx|IBM PC xenix console display:\ + :am: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: + + +qnx|qnx4|qnx console:\ + :am: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=\ER:ue=\E]:up=\EA:\ + :us=\E[:ve=\Ey1:vi=\Ey0:vs=\Ey2: + + +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=llmmkkjjuuttvvwwqqxxnnoosspprr``aaffgg~~..--++\054\054hhII00yyzz:\ + :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: + +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: + +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: + + +origpc3|origibmpc3|IBM PC 386BSD Console:\ + :am:bw:eo:xo:\ + :co#80:li#25:\ + :ac=l\332q\304k\277x\263j\331m\300w\302u\264v\301t\303n\305:\ + :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: + +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: + +bsdos|BSD/OS console:\ + :am:bw: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:mb=\E[5m:md=\E[1m:\ + :me=\E[0m:mh=\E[=8F:mr=\E[7m:nd=\E[C:nw=^M^J:rc=\E8:\ + :sc=\E7:se=\E[0m:sf=^J:so=\E[7m:ta=^I:up=\E[A: +bsdos-bold|IBM PC BSD/386 Console with bold instead of underline:\ + :ue=\E[0m:us=\E[1m:tc=bsdos: + +pc3|IBM PC BSD/386 Console:\ + :tc=bsdos: +ibmpc3|pc3-bold|IBM PC BSD/386 Console with bold instead of underline:\ + :us=\E[1m:tc=bsdos-bold: + + +vt52|dec vt52:\ + :co#80:it#8:li#24:\ + :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: + +vt100|vt100-am|dec vt100 (w/advanced video):\ + :am: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-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-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-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: + +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: + +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:\ + :li#132:\ + :r3=\E[?3h:tc=vt102: + +vt102-nsgr|vt102 no sgr (use if you see snowflakes after highlight changes):\ + :me=\E[m:sa@:tc=vt102: + +vt125|vt125 graphics terminal:\ + :cl=\E[H\E[2J\EPpS(E)\E\\:tc=vt100: + +vt131|dec vt131:\ + :am:xn:\ + :co#80:it#8:li#24:vt#3:\ + :RA=\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|DEC vt132:\ + :xn:\ + :al=\E[L:dc=\E[P:dl=\E[M:ei=\E[4h:im=\E[4l:ip=:sf=\n:tc=vt100: + +vt220|vt200|DEC VT220 in vt100 emulation mode:\ + :am:mi:xn:xo:\ + :co#80:li#24:vt#3:\ + :@7=\E[4~:RA=\E[?7l:SA=\E[?7h:\ + :ac=kkllmmjjnnwwqquuttvvxx: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/lib/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:\ + :r2=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h:rc=\E8:\ + :rf=/usr/lib/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: +vt220-w|vt200-w|DEC vt220 in wide mode:\ + :co#132:\ + :r3=\E[?3h:tc=vt220: + +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: + +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-8|dec vt220 8 bit terminal:\ + :am: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: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/lib/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: + + +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: + +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: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: +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: + +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:\ + :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/lib/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=200\E[?5h\E[?5l:ve=\E[?25h:vi=\E[?25l:vs=\E[?25h: + +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:RA=\E[?7l:RI=\E[%dC:SA=\E[?7h: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: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<\E[?3l\E[!p\E[?7h:\ + :rc=\E8:rf=/usr/lib/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=200\E[?5h\E[?5l:ve=\E[?25h:vi=\E[?25l:vs=\E[?25h: + +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/lib/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: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/lib/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%;:\ + :se=\E[m:sf=\ED:so=\E[7m:sr=\EM:ta=^I:ue=\E[m:\ + :up=\E[A:us=\E[4m: + +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|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/lib/tabset/vt100:\ + :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:\ + :..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\\:\ + :r3=\E[?67h\E[64;1"p:rc=\E8:rf=/usr/lib/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%;:\ + :se=\E[m:sf=\ED:so=\E[7m:sr=\EM:ta=^I:ue=\E[m:\ + :up=\E[A:us=\E[4m: + +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/lib/tabset/vt100:\ + :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:\ + :..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\\:\ + :r3=\E[?67h\E[64;1"p:rc=\E8:rf=/usr/lib/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%;:\ + :se=\E[m:sf=\ED:so=\E[7m:sr=\EM:ta=^I:ue=\E[m:\ + :up=\E[A:us=\E[4m: + + +dec-vt100|EWAN telnet's vt100 emulation:\ + :tc=vt102-nsgr: + +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:\ + :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: + + +x10term|vs100-x10|xterm terminal emulator (X10 window system):\ + :am: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:\ + :rs=\E[r\E<\E[m\E[H\E[2J\E[?7h\E[?1;3;4;6l:se=\E[m:\ + :sf=^J:so=\E[7m:sr=\EM:ta=^I:ue=\E[m:up=\E[A:\ + :us=\E[4m: +xterm|vs100|xterm terminal emulator (X11R6 Window System):\ + :am:km:mi:ms:xn:xo:\ + :co#80:it#8:li#65:\ + :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[3k:dc=\E[P:dl=\E[M:do=^J:\ + :ei=\E[4l:ho=\E[H:ic=\E[@:im=\E[4h:\ + :is=\E[r\E[m\E[2J\E[H\E[?7h\E[?1;3;4;6l\E[4l:\ + :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:ke=\E[?1l\E>:\ + :kh=\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: +xterm-bold|xterm terminal emulator (X11R6 Window System) standout w/bold:\ + :so=\E[1m:tc=xterm: +xterms|vs100s|xterm terminal emulator (small screen 24x80):\ + :co#80:li#24:tc=xterm: +kterm|kterm kanji terminal emulator (X window system):\ + :es:hs:\ + :cs=\E[%i%d;%dr:ds=\E[?H:fs=\E[?F:rc=\E8:sc=\E7:\ + :ts=\E[?E\E[?%i%dT:tc=xterm: + +xterm-nic|xterm with ich/ich1 suppressed for non-curses programs:\ + :IC@:ei=:ic@:im=:tc=xterm: + +xterm-color|xterm with color support:\ + :tc=xterm:tc=klone+color: + +xterm-pcolor|xterm with color used for highlights and status line:\ + :hs:\ + :ws#40:\ + :ds=\E]0;\007:fs=^G:md=\E[1m\E[43m:mr=\E[7m\E[34m:\ + :so=\E[7m\E[31m:ts=\E]0;:us=\E[4m\E[42m:tc=xterm: + +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: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%'s'%c%;%p1%p3%|%p6%|%{2}%*%p2%{4}%*%+%p4%+%p5%{8}%*%+%'@'%+%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: + +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; setaf=\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=a\202f\260g261j\213k\214l\215m\216n\217o\220q\222s\224t\225u\226v\227w\230x\231~\244:\ + :ae=\200:al=\EQ1;:as=\200:bl=^G:cb=\EL: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=\200:\ + :ec=\Ej%d;\ned=\EN:ei=\EX:ho=\EE0;0;:if=\200: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: + + +cbunix|cb unix virtual terminal:\ + :am: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|virtual remote terminal:\ + :am@:\ + :co#79:tc=cbunix: +pty|4bsd pseudo teletype:\ + :cm=\EG%+ %+ :se=\Eb$:so=\Ea$:ue=\Eb!:us=\Ea!:tc=cbunix: + + +screen|VT 100/ANSI X3.64 virtual terminal:\ + :am:km:mi:ms:xn:\ + :co#80:it#8:li#24:\ + :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=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~..--++\054\054hhII00:\ + :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: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: +screen-w|VT 100/ANSI X3.64 virtual terminal with 132 cols:\ + :co#132:tc=screen: + +screen2|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: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|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: + + + +oldsun|Sun Microsystems Workstation console:\ + :am: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:nd=\E[C:se=\E[m:sf=^J:\ + :so=\E[7m:ta=^I:up=\E[A: +sun|sun1|sun2|Sun Microsystems Inc. workstation console:\ + :am:km:ms:\ + :co#80:li#35:\ + :%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=\E[1m: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:ue=\E[m:up=\E[A:\ + :us=\E[4m: +sun-s|Sun Microsystems Workstation window with status line:\ + :hs:\ + :li#34:\ + :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:\ + :te=\E[>4h:ti=\E[>4l:tc=sun: + + +wsiris|iris40|iris emulating a 40 line visual 50 (approximately):\ + :am:\ + :co#80:it#8:li#40:\ + :al=\EL:cd=\EJ:ce=\EK:cl=\Ev:cm=\EY%+ %+ :dl=\EM:\ + :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:nd=\EC:se=\E0@:\ + :so=\E9P:sr=\EI:ta=^I:ue=\E7R3\E0@:up=\EA:\ + :us=\E7R2\E9P:ve=\E>:vs=\E;: + + +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: +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: + + +apollo|apollo console:\ + :am: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: + +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: + + +fos|fortune|Fortune system:\ + :am:bw:\ + :co#80:li#25:\ + :@7=^Ak\r:@8=^Aq:ac=l m"k(j*v%w#q&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: + + + +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/lib/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:\ + :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|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|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=l2m1k3j5t4u9v=w0q\072x6n8\nblink=\EG2: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:\ + :md=\EGt:me=\EG0:mh=\EGp:mk=\EG1:mr=\EG4:nd=^L:\ + :nw=^M^J:pf=\EJ:po=\Ed#:se=\EG0:sf=^J:so=\EG4:sr=\Ej:\ + :ta=^I:ue=\EG0:up=^K:us=\EG8: +altos7pc|alt7pc|altos PC VII:\ + :@7=\ET:tc=altos7: + + +hpgeneric|hp|hewlett-packard generic terminal:\ + :am:da:db:mi: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:\ + :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: + +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: + +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%'@'%?%p1%t%'B'%|%;%?%p2%t%'D'%|%;%?%p3%t%'B'%|%;%?%p4%t%'A'%|%;%c:\ + :se=\E&d@:sf=\ES:so=\E&dB:ta=\011:ue=\E&d@:us=\E&dD: + +hp2621-ba|2621-ba|2621 w/new rom and strap A set:\ + :ke@:ks@:tc=hp+arrows:tc=hp2621: + +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|2621-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: + +hp2621p|2621p|2621P|hp 2621 with printer:\ + :pf=\E&p13C:po=\E&p11C:tc=hp2621: + +hp2621p-a|2621p-a|hp2621p with fn as arrows:\ + :tc=hp+pfk+arrows:tc=hp2621p: + +hp2621-k45|hp2621k45|2621k45|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: + +hp2621-48|48 line 2621:\ + :li#48:\ + :cm=\E&a%r%dc%dR:cv=\E&a%dR:ho=\EH:tc=hp2621: + +hp2621-nl|hp 2621 with no labels:\ + :kd@:ke@:kh@:kl@:kr@:ks@:ku@:tc=hp2621-fl: + +hp2621-nt|hp 2621 w/no tabs:\ + :ta@:tc=hp2621: + +hp2624|hp2624a|hp2624b|hp2624b-4p|2624-4p|2624|2624a|2624b|Hewlett Packard 2624 B:\ + :da:db:\ + :lm#96:\ + :vb=\E&w13F\E&w12F\E&w13F\E&w12F:tc=hp+labels:tc=scrhp: + +hp2626|hp2626a|hp2626p|2626|2626a|2626p|2626A|2626P|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: + +hp2626-s|2626-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\n\E&w2f1i0d0u22l0S \E&w2f2i0d23u23l0S \E&w7f2p1I \r:\ + :ts=\E&w7f2p2I\E&w4f2I\r\EK\E&a%p1%dC:tc=hp2626: +hp2626-ns|2626-ns|hp 2626 using all 24 lines:\ + :i1=\E&q3t0{0H \E&w0f118n1I \E&w0f1n2I\n\E&w2f1i0d0u23l0S \E&w3f2I \E&w7f2p1I \r:tc=hp2626: +hp2626-12|2626-12|hewlett-packard 2626 12 lines:\ + :li#12:tc=hp2626: +hp2626-12x40|2626-12x40|hewlett-packard 2626 12 lines 40 columns:\ + :co#40:li#12:tc=hp2626: +hp2626-x40|2626-x40|hewlett-packard 2626 40 columns:\ + :co#40:tc=hp2626: +hp2626-12-s|2626-12-s|hewlett-packard 2626 11 lines plus status:\ + :li#11:tc=hp2626-s: + +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|2627|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|2640a|hp 2640a:\ + :cm@:ke@:ks@:tc=hp2645: + +hp2640b|hp2644a|hp 264x series:\ + :ke@:ks@:tc=hp2645: + +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%'@'%?%p1%t%'B'%|%;%?%p2%t%'D'%|%;%?%p3%t%'B'%|%;%?%p4%t%'A'%|%;%?%p5%t%'H'%|%;%?%p6%t%'B'%|%;%c:\ + :us=\E&dD:tc=hpgeneric: +hp2648|hp2648a|2648a|2648A|2648|HP 2648a graphics terminal:\ + :cl=\EH\EJ:cm=\E&a%r%dc%dY:dc=\EP:ip=:tc=hp2645: + +hp150|hewlett packard Model 150:\ + :tc=hp2622: + +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%'@'%+%e%'S'%;%e%?%ga%t%ga%'@'%+%e%'@'%;%;%c:tc=hp+labels:tc=scrhp: + +hp2621-a|hp2621a-a|2621-a|hp2621 with fn as arrows:\ + :tc=hp+pfk+arrows:tc=hp2621-fl: + + +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=T1R!U2S"W3O#V4P$t5u6w7v8\072'9(LQKWlRkT5I3@2[MAJSmFjGdHQ;Y+Z*X\0724>q\\\054x.n/:\ + :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%'@'%+%e%'S'%;%e%?%ga%t%ga%'@'%+%e%'@'%;%;%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|"standard" label info for new HP ttys:\ + :Nl#8:lh#2:lw#8:\ + :LO=\E&jB:\ + :..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: + + +hp2621b|2621b|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%'o'%p1%+%c\r:tc=hp2621: + +hp2621b-p|2621b-p|hp 2621b with printer:\ + :tc=hp+printer:tc=hp2621b: + +hp2621b-kx|2621b-kx|hp 2621b with extended keyboard:\ + :tc=newhpkeyboard:tc=hp2621b: + +hp2621b-kx-p|2621b-kx-p|hp 2621b with new keyboard & printer:\ + :tc=hp+printer:tc=hp2621b-kx: + +hp2622|hp2622a|2622|2622a|hp 2622:\ + :da:db:\ + :lm#0:pb#19200:\ + :is=\E&dj@\r:tc=hp+pfk+cr:tc=hp+labels:tc=scrhp: + +hp2623|hp2623a|2623|2623a|hp 2623:\ + :tc=hp2622: + +hp2624b-p|hp2624b-4p-p|hewlett packard 2624 B with printer:\ + :tc=hp+printer:tc=hp2624: + +hp2624-10p|hp2624a-10p|hp2624b-10p|2624-10p|2624a-10p|2624b-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: + +hp+color|hp with colors:\ + :cc:\ + :Co#16:NC#17:pa#7:\ + :..Ip=\E&v%?%p2%{1000}%=%t1%e.%p2%d%;a\n%?%p3%{1000}%=%t1%e.%p3%d%;b\n%?%p4%{1000}%=%t1%e.%p4%d%;c\n%?%p5%{1000}%=%t1%e.%p5%d%;x\n%?%p6%{1000}%=%t1%e.%p6%d%;y\n%?%p7%{1000}%=%t1%e.%p7%d%;z\n%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: + +hp2397a|2397a|hp2397|2397|hewlett packard 2397A color terminal:\ + :is=\E&w6f80X:tc=memhp:tc=hp+labels:tc=hp+color: + +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=k\277l\332m\300j\331n\305w\302q\304u\264t\303v\301x\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: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: +hp2392|2392|2393|239x series:\ + :co#80:\ + :bt=\Ei:cm=\E&a%dy%dC:cv=\E&a%dY: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:ei=\ER:\ + :if=/usr/lib/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:nd=\EC:se=\E&d@:sf=^J:so=\E&dB:ta=^I:\ + :up=\EA: + +hpex|hp extended capabilites:\ + :cm=\E&a%dy%dC:cr=^M:cv=\E&a%dY:do=^J:im=\EQ:kb=^H:\ + :kd=^J:kl=^H:nw=^M^J:sf=^J:ta=^I:ue=\E&d@:us=\E&dD:tc=hpsub: + +hp236|hp236 internal terminal emulator:\ + :am:\ + :co#80:li#24:\ + :al=\EG:ce=\EK:cl=\EF:cm=\EE%+ %+ :dc=\EJ:dl=\EH:ei=:\ + :ic=\EI:im=:le=^H:se=\ECI:so=\EBI:up=^K:ve=\EDE:\ + :vs=\EDB: + +hp300h|HP Catseye console:\ + :am: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: +hp9837|hp98720|hp98721|HP 9000/300 workstations:\ + :am: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: +hp98550|hp98550a|HP 9000 Series 300 color console:\ + :am:da:db:mi:xs:\ + :co#128:it#8:li#49:lm#0:\ + :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/9837: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: +hp700-wy|HP700/41 emulating wyse30:\ + :am:bw:mi:ms:\ + :co#80:it#8:li#24:sg#1:ug#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/hp700-wy: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:nd=^L:\ + :se=10\EG0:so=10\EG4:sr=\Ej:ta=\011\nhts=\E1:\ + :ue=10\EG0:up=^K:us=10\EG8: +hp70092|70092a|70092A|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: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: + +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: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: + + +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:ug#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: + + +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:\ + :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|lsi adm3:\ + :am:\ + :co#80:li#24:\ + :bl=^G:cl=^Z:cr=^M:do=^J:le=^H:sf=^J: +adm3a|lsi adm3a:\ + :am:\ + :co#80:li#24:\ + :bl=^G:cl=\032:cm=\E=%+ %+ :cr=^M:do=^J:ho=^^:le=^H:\ + :nd=^L:sf=^J:up=^K: +adm3a+|adm3a plus:\ + :kd=^J:kl=^H:kr=^L:ku=^K:tc=adm3a: +adm5|lsi adm5:\ + :sg#1:\ + :bl=^G:cd=\EY:ce=\ET:cr=^M:do=^J:kb=^H:kh=^^:se=\EG:\ + :so=\EG:tc=adm3a+: +adm11|lsi adm11:\ + :am:hs:\ + :co#80:li#24:\ + :bl=^G:cd=\EY:ce=\ET:cl=^Z:cm=\E=%+ %+ :cr=^M:do=^J:\ + :ds=\Eh:fs=\E(\r:kb=^H:kd=^J:kh=^^:kl=^H:kr=^L:ku=^K:\ + :le=^H:nd=^L:se=\E(:so=\E):ts=\EF\E):up=^K: +adm12|lsi adm12:\ + :am:mi:\ + :co#80:li#24:\ + :al=\EE:bl=^G:cd=\EY:ce=\ET:cl=^Z:cm=\E=%+ %+ :cr=^M:\ + :dc=\EW:dl=\ER:do=^J:ei=\Er:ho=^^:im=\Eq:is=\Eq:\ + :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:mk=\EG1:nd=^L:se=\EG0:\ + :so=\EG4:ue=\EG0:up=^K:us=\EG8: +adm20|lear siegler adm20:\ + :am:\ + :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:nd=^L:se=\E(:so=\E):ta=^I:up=^K: +adm21|lear siegler adm21:\ + :sg#1:ug#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:se=\EG0:sf=^J:so=\EG4:ue=\EG0:\ + :us=\EG8:tc=adm3a: +adm22|lsi adm22:\ + :am:\ + :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\200\003\002\003\002\200\200\200\200\200\200\200\200\200\200\200:\ + :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:nd=^L:se=\E(:so=\E):ta=\Ei:up=^K: +adm31|lsi adm31:\ + :am: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: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: +adm36|lsi adm36:\ + :am:mi:\ + :co#80:li#24:\ + :RA=\E[?7l:SA=\E[?7h:al=\E[1L:cd=\E[0J:ce=\E[0K:\ + :cl=\E[H\E[2J:cm=\E[%i%d;%dH:dl=\E[1M:ei=\E[4l:\ + :im=\E[4h:is=\E[6;?7h\E[4;20;?1;?3;?6;?4l\E(B\E)B\E>:\ + :kd=\EB:kl=\ED:kr=\EC:ku=\E[A:le=^H:nd=\E[D:up=\E[A: +adm42|lsi adm42:\ + :am:\ + :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:\ + :nd=^L:pc=\177:se=\EG0:sf=^J:so=\EG4:ta=^I:up=^K:\ + :vs=\EC\E3 \E3(: +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: + + +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:nd=\E[C:nw=^M^J:se=\E[m:sf=^J:\ + :so=\E[2;7m:ta=^I:\ + :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:\ + :so@:tc=pt100: +pt250w|Prime PT250 in 132-column mode:\ + :so@:tc=pt100w: + + +qvt101|qvt108|qume qvt 101 and QVT 108:\ + :sg#1:\ + :se=\EG0:so=\EG4:tc=qvt101+: + +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:mr=\EG4:nd=^L:pf=\EA:po=\E@:\ + :se=\E(:sf=^J:so=\E0P\E):st=\E1:ta=^I:ts=\Eg\Ef:\ + :ue=\EG0:up=^K:us=\EG8:vb=\Eb\Ed:ve=\E.4: +qvt102|qume qvt 102:\ + :ve=\E.:tc=qvt101: +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@:se=\EG0:sf=^J:\ + :so=\EG4:sr=\EJ:st=\E1:ta=^I:ts=\Eg\Ef:ue=\EG0:up=^K:\ + :us=\EG8:vb=\En0\En1:ve=\E.4:vs=\E.2: +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: +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: + + +tvi803|televideo 803:\ + :cl=\E*:tc=tvi950: + +tvi910|televideo model 910:\ + :am:ms:\ + :co#80:it#8:li#24:sg#1:ug#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:nd=^L:se=\EG0:sf=^J:so=\EG4:ta=^I:\ + :ue=\EG0:up=^K:us=\EG8: +tvi910+|910+|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|tvi914|tvi920|old televideo 912/914/920:\ + :am:\ + :co#80:it#8:li#24:sg#1:ug#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: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: +tvi912c|tvi912b|912c|912b|tvi|new televideo 912:\ + :al=\EE:dl=\ER:tc=tvi912: +tvi912-2p|tvi920-2p|912-2p|920-2p|tvi-2p|televideo w/2 pages:\ + :te=\E-07 :ti=\E-17 :tc=tvi912: +tvi912cc|tvi912 at cowell college:\ + :cm@:tc=tvi912c: + +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: + +tvi921|televideo model 921 with sysline same as page & real vi function:\ + :am:hs:xn:xs:\ + :co#80:li#24:sg#0:\ + :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/lib/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:nd=^L:nw=^M^J:se=\EG0:sf=^J:\ + :so=\EG4:ta=^I:ts=\Ef\EG0:ue=\EG0:up=^K:us=\EG8:\ + :ve=\E.3:vs=\E.2: +tvi92B|televideo model 921 with sysline same as page & real vi function:\ + :am:hs:xn:xs:\ + :co#80:li#24:sg#0:\ + :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/lib/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:nd=^L:nw=^M^J:se=\EG0:sf=^J:\ + :so=\EG4:ta=^I:ts=\Ef\EG0:ue=\EG0:up=^K:us=\EG8:\ + :vb=\Eb\Ed:ve=\E.3:vs=\E.2: +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|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/lib/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:me=\EG0:mk=\EG1:nd=^L:pk=\E|%+1%s\031:\ + :se=\EG0:sf=^J:so=\EG4:sr=\Ej:st=\E1:ta=^I:ts=\Ef:\ + :ue=\EG0:up=^K:us=\EG8:vb=\Eb\Ed:ve=\E.3:vi=\E.0:\ + :vs=\E.1: + +tvi925|925|televideo 925:\ + :am:bw:hs:ul:\ + :co#80:li#24:sg#1:ug#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"\nkclr=\032: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:kD=\EW:kE=\ET:kI=\EQ:\ + :kL=\ER:kS=\EY:kb=^H:kd=^V:kh=^^:kl=^H:kr=^L:ku=^K:\ + :le=^H:nd=^L:se=\EG0:sf=^J:so=\EG4:sr=\Ej:st=\E1:\ + :ta=^I:ts=\Eh\Ef:ue=\EG0:up=^K:us=\EG8:vb=\Eb\Ed:\ + :ve=\E.4:vs=\E.2: + +tvi950|950|televideo 950:\ + :am:hs:mi:ms:xn:xo:\ + :co#80:it#8:li#24:sg#1:ug#1:\ + :ac=d\rc\014e\nb\011i\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\200\200\Ex1\200\200\Ex2\200\200\011\Ex3\200\200\Ex4\r\200\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:nd=^L:\ + :pf=\Ea:po=\E`:se=\EG0:sf=^J:so=\EG4:sr=\Ej:st=\E1:\ + :ta=^I:ts=\Eg\Ef:ue=\EG0:up=^K:us=\EG8:vb=\Eb\Ed: +tvi950-2p|950-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\200\200\Ex1\200\200\Ex2\200\200\011\Ex3\200\200\Ex4\r\200\E\\2\E-07 \011:\ + :ke=\Ek:ks=\El:te=\E\\2\E-07 :ti=\E\\1\E-07 :tc=tvi950: +tvi950-4p|950-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\200\200\Ex1\200\200\Ex2\200\200\011\Ex3\200\200\Ex4\r\200\E\\3\E-07 \011:\ + :ke=\Ek:ks=\El:te=\E\\3\E-07 :ti=\E\\1\E-07 :tc=tvi950: +tvi950-rv|950-rv|televideo950 rev video:\ + :is=\EDF\EC\Eb\EG0\Eg\Er\EO\E'\E(\E%\Ew\EX\Ee \017\011\El\E016\E004\Ex0\200\200\Ex1\200\200\Ex2\200\200\011\Ex3\200\200\Ex4\r\200:\ + :vb=\Ed\Eb:tc=tvi950: + +tvi950-rv-2p|950-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\200\200\Ex1\200\200\Ex2\200\200\011\Ex3\200\200\Ex4\r\200\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-4p|950-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\200\200\Ex1\200\200\Ex2\200\200\011\Ex3\200\200\Ex4\r\200\E\\3\E-07 :\ + :ke=\Ek:ks=\El:te=\E\\3\E-07 :ti=\E\\1\E-07 :\ + :vb=\Ed\Eb:tc=tvi950: +tvi955|televideo 955:\ + :5i: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:mr=\EG4:ps=\EP:\ + :r1=\EDF\EC\Eg\Er\EO\E'\E(\Ew\EX\Ee \017\E0P\E6\200\E0p\E4\200\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: +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: +tvi970|televideo 970:\ + :da:db:mi:ms:\ + :co#80:it#8:li#24:\ + :ae=\E(B:al=\E[L:as=\E(B:bt=\E[Z:cd=\E[0J:ce=\E[0K:\ + :cl=\E[H\E[2J:cm=\E[%i%d;%df:dc=\E[P:dl=\E[M:do=\ED:\ + :ds=\Eg\Ef\r:ei=\E[4l: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:nd=\E[C:se=\E[m:\ + :so=\E[7m:sr=\EM:ta=^I:ue=\E[m:up=\EM:us=\E[4m:\ + :vb=\E[5;m\E[0;m:vs=\E[1Q: +tvipt|televideo personal terminal:\ + :am:\ + :co#80:li#24:\ + :SA=\Ev:al=\EE:bt=\EI:ce=\ET:cl=^Z:cm=\E=%+ %+ :\ + :dl=\ER:ho=^^:if=/usr/share/tabset/stdcrt:\ + :is=\Ev\Eu\EK:kb=^H:kd=^J:kl=^H:kr=^L:ku=^K:le=^H:\ + :nd=^L:se=\EF:so=\EG1@A\EH:ue=\EF:up=^K:us=\EG1B@\EH: + + +vi50|visual 50:\ + :am:ms:\ + :co#80:it#8:li#24:\ + :al=\EL:bt=4\Ez:cd=\Ek:ce=16\EK:cl=\Ev: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:\ + :nw=^M^J:sf=^J:ta=^I:up=\EA: +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: +vi55|Visual 55:\ + :am: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: + +vi200|vis200|visual 200 with function keys:\ + :am:\ + :co#80:it#8:li#24:\ + :al=\EL:bl=^G:cd=\Ey:ce=\Ex:cl=\Ev:cm=\EY%+ %+ :\ + :cr=^M:dc=\EO:dl=\EM:do=^J:ei=\Ej:ho=\EH:im=\Ei:\ + :is=\E3\Eb\Ej\E\\\El\EG\Ec\Ek:k0=\EP:k1=\EQ:k2=\ER:\ + :k3=\E :k4=\E!:k5=\E":k6=\E#:k7=\E$:k8=\E%:k9=\E&:\ + :kd=\EB:kh=\EH:kl=\ED:kr=\EC:ku=\EA:le=^H:nd=\EC:\ + :se=\E3:sf=^J:so=\E4:sr=\EI:ta=^I:up=\EA:ve=\Ec:\ + :vs=\Ed: +vi200-f|visual|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: + +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:nd=\E[C:se=\E[m:sf=^J:so=\E[1m:sr=\EM:ta=^I:\ + :ue=\E[m:up=\E[A:us=\E[4m: +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: + +vi500|visual 500:\ + :am:mi:ms:\ + :co#80:it#8:li#33:\ + :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: + +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: + + +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^3\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: +wy30-mc|wyse30-mc|wyse 30 with magic cookies:\ + :ms@:\ + :ma@:sg#1:ug#1:\ + :ae=\EG0\EH\003:as=\EG0\EH\002:mb=\EG2:\ + :me=\EG0\E(\EH\003:mh=\EGp:mk=\EG1:mp=\EG0\E):\ + :mr=\EG4:\ + :..sa=\EG%'0'%?%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:ue=\EG0:us=\EG8:tc=wy30: +wy30-vb|wyse30-vb|wyse 30 visible bell:\ + :bl@:tc=wy30: +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)\n%e%p5%p8%|%t\E`7\E)%e\E(%;\n%?%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: +wy50-mc|wyse50-mc|wyse 50 with magic cookies:\ + :ms@:\ + :ma@:sg#1:ug#1:\ + :ae=\EG0\EH\003:as=\EG0\EH\002:mb=\EG2:\ + :me=\EG0\E(\EH\003:mh=\EGp:mk=\EG1:mp=\EG0\E):\ + :mr=\EG4:\ + :..sa=\EG%'0'%?%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:ue=\EG0:us=\EG8:tc=wy50: +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: +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:\ + :ug#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:mk=\EG1:mp=\EG0\E):mr=\EG4:nd=^L:nw=^M^J:\ + :oc=\E%?:op=\EG0:pf=^T:pn=\Ez%+/%s\r:po=^X:ps=\EP:\ + :px=\Ez%+?%s\177:se=\EG0:sf=\n:so=\EG4:sr=\Ej:st=\E1:\ + :ta=^I:ts=\EF:ue=\EG0:up=^K:us=\EG8:vb=\E`8\E`9:\ + :ve=\E`1:vi=\E`0: +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: +wy100|wyse 100:\ + :hs:mi:\ + :co#80:li#24:sg#1:ug#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:nd=^L:se=\EG0:\ + :sf=^J:so=\EG4:ts=\EF:ue=\EG0:up=^K:us=\EG8: +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: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:\ + :mr=\EG4:nd=^L:nw=\r\n:se=\EG0:sf=\n:so=\EGt:sr=\Ej:\ + :st=\E1:ta=\011:te=\Ew1:ti=\Ew0:ts=\EF:ue=\EG0:up=^K:\ + :us=\EG8:vb=\E`8\E`9:ve=\E`1:vi=\E`0: +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: +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:mr=\EG4:nd=^L:nw=\r\n:se=\EG0:sf=\n:so=\EGt:\ + :sr=\Ej:st=\E1:ta=\011:te=\Ew1:ti=\Ew0:ts=\EF:\ + :ue=\EG0:up=^K:us=\EG8:vb=\E`8\E`9:ve=\E`1:vi=\E`0: +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: + +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: +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:mr=\EG4:nd=^L:nw=\r\n:se=\EG0:sf=\n:so=\EGt:\ + :sr=\Ej:st=\E1:ta=^I:te=\Ew0:ti=\Ew1:ts=\EF:ue=\EG0:\ + :up=^K:us=\EG8:vb=\E`8\E`9:ve=\E`1:vi=\E`0: +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: +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: +wy75-mc|wyse75-mc|wyse 75 with magic cookies:\ + :ms@:\ + :ma@:sg#1:ug#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: +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: +wy85-vb|wyse85-vb|wyse 85 with visible bell:\ + :bl@:vb=\E[30h\E\\\054\E[30l:tc=wy85: +wy85-w|wyse85-w|wyse 85 in 132-column mode:\ + :co#132:ws#132:\ + :r2=\E[35h\E[?3h:tc=wy85: +wy85-wvb|wyse85-wvb|wyse 85 with visible bell 132-columns:\ + :bl@:tc=wy85-w: +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: +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: +wy185-vb|wyse185-vb|wyse 185+flash:\ + :bl@:tc=wy185: +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: +wy185-wvb|wyse185-wvb|wyse 185+flash+132 cols:\ + :bl@:tc=wy185-w: + + +wy325|wyse325|Wyse epc:\ + :am:bw:hs:mi:\ + :co#80: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=\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: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:\ + :mr=\EG4:nd=^L:se=\EG0:sf=\n:so=\EGt:sr=\Ej:st=\E1:\ + :ta=^I:te=\Ew0:ti=\Ew1:ts=\EF:ue=\EG0:up=^K:us=\EG8:\ + :vb=\E`8\E`9:ve=\E`1:vi=\E`0: + +wy325-vb|wyse325-vb|wyse-325 with visual bell:\ + :bl@:tc=wy325: + +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: +wy325-25|wyse325-25|wy325-80|wyse-325|wyse-325 25 lines:\ + :Nl@:lh@:li#25:lw@:\ + :pn@:r3=\EwG\Ee):tc=wy325: +wy325-25w|wyse325-25w|wy325 132 columns:\ + :Nl@:lh@:li#25:lw@:\ + :pn@:r3=\EwG\Ee):tc=wy325-w: +wy325-w-vb|wy325-wvb|wyse325-wvb|wyse-325 wide mode reverse video:\ + :bl@:tc=wy325-w: + +wy325-42|wyse325-42|wyse-325 42 lines:\ + :Nl@:lh@:li#42:lw@:\ + :pn@:r3=\EwG\Ee):tc=wy325: +wy325-42w|wyse325-42w|wyse-325 42 lines wide mode:\ + :Nl@:lh@:li#42:lw@:\ + :pn@:r3=\EwG\Ee):tc=wy325-w: +wy325-42w-vb|wy325-42wvb|wyse-325 42 lines wide mode visual bell:\ + :bl@:tc=wy325-w: +wy325-43|wyse325-43|wyse-325 43 lines:\ + :Nl@:lh@:li#43:lw@:\ + :pn@:tc=wy325: +wy325-43w|wyse325-43w|wyse-325 43 lines wide mode:\ + :Nl@:lh@:li#43:lw@:\ + :pn@:r3=\EwG\Ee):tc=wy325-w: +wy325-43w-vb|wy325-43wvb|wyse-325 43 lines wide mode visual bell:\ + :bl@:tc=wy325-w: + +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: +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: +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: +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: +wy370-vb|Wyse 370 with visible bell:\ + :bl@:tc=wy370: +wy370-w|Wyse 370 in 132-column mode:\ + :co#132:ws#132:\ + :r2=\E[35h\E[?3h:tc=wy370: +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: +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\n%p2%{55}%*%Px\n%gy%{128}%/%{31}%&%{32}%+%c\n%gy%{3}%&%{4}%*%gx%{3}%&%+%{96}%+%c\n%gy%{004}%/%{31}%&%{96}%+%c\n%gx%{128}%/%{31}%&%{32}%+%c\n%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: +wy160-tek|Wyse 160 Tektronix 4010/4014 emulator:\ + :..cm=\035%{3103}%{91}%p1%*%-%Py\n%p2%{55}%*%Px\n%gy%{128}%/%{31}%&%{32}%+%c\n%gy%{3}%&%{4}%*%gx%{3}%&%+%{96}%+%c\n%gy%{004}%/%{31}%&%{96}%+%c\n%gx%{128}%/%{31}%&%{32}%+%c\n%gx%{004}%/%{31}%&%{64}%+%c\037:\ + :ho=^]8`g @\037:tc=wy99gt-tek: +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\n%p2%{64}%*%{4}%+%{5}%/%Px\n%gy%{32}%/%{31}%&%{32}%+%c\n%gy%{31}%&%{96}%+%c\n%gx%{32}%/%{31}%&%{32}%+%c\n%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: + + +wyse-vp|wyse|Wyse 50 in ADDS Viewpoint emulation mode with "enhance" on:\ + :am:\ + :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:\ + :if=/usr/share/tabset/wyse-adds: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: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: + +wy100q|Wyse 100 for Quotron:\ + :co#80:li#24:sg#1:ug#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\200\EC\EDF\E0\E'\E(\EA21:kd=^J:kl=^H:\ + :kr=^L:ku=^K:le=^H:nd=^L:se=\EG0:so=\EG4:sr=\Ej:\ + :ue=\EG0:up=^K:us=\EG8: + + +kermit|standard kermit:\ + :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: +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: +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: +msk227|mskermit227|MS-DOS Kermit 2.27 for the IBMPC:\ + :am@:\ + :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: +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: +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: +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: +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:\ + :al=3\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: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/lib/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: + + +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\200:\ + :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: +avatar0+|avatar terminal emulator level 0+:\ + :dc=^V^N:ei=\026\n\200\200\200\200:im=^V^I:tc=avatar0: +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+: + + +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: + +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=``aaffhhggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~00++--\\\054\\\054..:\ + :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:\ + :..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: + +v5410|5410 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: + +att4415|tty5420|att5420|AT&T 4415/5420 80 cols:\ + :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: + +att4415+nl|4415+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%\072-16.16s:\ + :..px=\E[%p1%d;%p2%l%02d;0;1q F%p1%d %p2%s: + +att4415-nl|4415-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: + +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: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:\ + :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^:\ + :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\\: + +att4424|tty4424|teletype 4424:\ + :am: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: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^: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:ti=\E[1m:\ + :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: + +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^: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: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: + +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|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: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^: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: + +att510a|510a|bct510a|510A|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=hrisjjkkllmmnnqqttuuvvwwxx{{||}}~~-f\\\054h.e+g`b:\ + :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|: + +att510d|510d|bct510d|510D|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|att513|500bct|513bct|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|: + +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: + +att5620|dmd|tty5620|ttydmd|5620|5620 terminal 88 columns:\ + :NL:NP:am: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[m: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[m:sf=\E[S:so=\E[7m:sr=\E[T:ta=^I:ue=\E[m:\ + :up=\E[A:us=\E[4m: +att5620-24|dmd-24|teletype dmd 5620 in a 24x80 layer:\ + :li#24:tc=att5620: +att5620-34|dmd-34|teletype dmd 5620 in a 34x80 layer:\ + :li#34:tc=att5620: + +att605|605bct|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|605bct-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=k\277l\332m\300j\331n\305w\302q\304u\264t\303v\301x\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|605bct-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|610bct|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|610bct-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|610-103k|610bct-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|610-103k-w|610bct-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|615mt|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|615-w|615mt-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|615-103k|615mt-103k|AT&T 615; 80 column; 103key keyboard:\ + :#4=\E[ A:%i=\E[ @:tc=att610-103k: +att615-103k-w|615-103k-w|615mt-103k-w|AT&T 615; 132 column; 103key keyboard:\ + :#4=\E[ A:%i=\E[ @:tc=att610-103k-w: +att620|620mtg|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|620-w|620mtg-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|620-103k|620mtg-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|620-103k-w|620mtg-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: + +att630|5630|5630DMD|630MTG|AT&T 630 windowing terminal:\ + :NP:am: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: + +att730|730MTG|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: + + +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!: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:\ + :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[=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: + +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: + + +ampex80|a80|d80|dialogue|dialogue80|ampex dialogue 80:\ + :am: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: +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: +ampex175-b|ampex d175 using left arrow for erase:\ + :kb=^_:tc=ampex175: +ampex210|a210|ampex a210:\ + :am:hs:xn:\ + :co#80:it#8:li#24:sg#1:ug#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:nd=^L:se=\EG0:so=\EG4:ta=^I:\ + :ts=\E.0\Eg\E}\Ef:ue=\EG0:up=^K:us=\EG8:\ + :vb=\EU\EX\EU\EX\EU\EX\EU\EX: +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: +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:\ + :vs=\E[?3h:tc=ampex219: +ampex232|ampex-232|Ampex Model 232:\ + :am:\ + :co#80:li#24:sg#1:ug#1:\ + :al=5*\EE:bt=\EI:cd=\EY:ce=\ET:cl=\E+:cm=\E=%+ %+ :\ + :dc=\EW:dl=5*\ER:do=^V:ei=:ic=\EQ:\ + :if=/usr/lib/tabset/ampex: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:nd=^L:se=\EG0:so=\EG4:\ + :ta=^I:ue=\EG0:up=^K:us=\EG8:vb=\Eb\Ed:ve=\E.4:\ + :vi=\E.0: +ampex232w|Ampex Model 232 / 132 columns:\ + :co#132:li#24:\ + :if=/usr/lib/tabset/amp-132:is=\E\034Eg\El:tc=ampex232: + + + +annarbor4080|aa4080|ann arbor 4080:\ + :am:\ + :co#80:li#40:\ + :bl=^G:cl=\014:\ + :..cm=\017%p2%{10}%/%{16}%*%p2%{10}%m%+%c%p1%?%p1%{19}%>%t%{12}%+%;%'@'%+%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: + +aaa+unk|aaa-unk|ann arbor ambassador (internal - don't use this directly):\ + :am: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: +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:\ + :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:\ + :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:\ + :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: + + +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: +regent100|Adds Regent 100:\ + :sg#1:ug#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: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:ug#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: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+: +viewpoint|addsviewpoint|adds viewpoint:\ + :am:\ + :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!:k4=^B":\ + :k5=^B#:kd=^J:kh=^A:kl=^U:kr=^F:ku=^Z:le=^H:ll=^A:\ + :nd=^F:se=^O:sf=^J:so=^N:ue=^O:up=^Z:us=^N:\ + :ve=\017\E0`:vs=\017\E0P: +screwpoint|adds viewpoint with ^O bug:\ + :se@:so@:ue@:us@:vs@:tc=viewpoint: + +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%'@'%?%p1%tQ%|%;%?%p2%t%'`'%|%;%?%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: +vp90|viewpoint90|adds viewpoint 90:\ + :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:nd=^F:se=\ER\E0@\EV:sf=^J:\ + :so=\ER\E0Q\EV:ta=^I:ue=\ER\E0@\EV:up=^Z:\ + :us=\ER\E0`\EV: +adds980|a980|adds consul 980:\ + :am:\ + :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:\ + :nd=\E^E01:se=^O:sf=^J:so=^Y^^^N: + + +cit80|cit-80|citoh 80:\ + :am:\ + :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: +cit101|citc|C.itoh fast vt100:\ + :am: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: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: +cit500|cit-500|cit 500:\ + :am:xn:\ + :co#80:it#8:li#64:\ + :RA=\E[?7l:SA=\E[?7h:al=\E[L:cd=50\E[J:ce=3\E[K:\ + :cl=50\E[H\E[2J:cm=5\E[%i%2;%2H:dc=\E[P:dl=\E[M:\ + :do=\ED:is=\E(B\E)0\E>\E[?3l\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:\ + :nd=2\E[C: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: + +citoh|ci8510|8510|c.itoh 8510a:\ + :co#80:it#8:\ + :is=\E(009\054017\054025\054033\054041\054049\054057\054065\054073.:\ + :le@:md=\E!: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-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: + + +cdc456|cdc 456 terminal:\ + :am:\ + :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: + + +c108|concept108|c108-8p|concept108-8p|concept 108 w/8 pages:\ + :i2=\EU\E z"\Ev\001\177 !p\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:\ + :es:hs:xo:\ + :pb@:\ + :ac=l\\qLkTxUmMjE:ae=\Ej :as=\Ej!:\ + :..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!\E F:\ + :i2=\EU\E z"\Ev\177 !p\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: + +c100|concept100|concept|c104|c100-4p|hds concept 100:\ + :am: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\200\Eo&\200\Eo'\E\Eo!\200\E\007!\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\200: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!\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: + +avt-ns|concept avt no status line:\ + :am: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:ch=\E[%+^AG:cl=\E[H\E[J:\ + :cm=\E[%i%d;%dH:cr=^M:cs=\E[%i%d;%dr:ct=\E[2g:\ + :cv=\E[%+^Ad: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!t\E[7!t\E[=4;101;119;122l\E[=107;118;207h\E)1\E[1Q\EW\E[!y\E[!z\E>\E[0\0720\07232!r\E[0*w\E[w\E2\r\n\E[2;27!t:\ + :k1=\EOP:k2=\EOQ:k3=\EOR:k4=\EOS:kA=\E^C\r:kD=\E^B\r:\ + :kI=\E^A\r:kS=\E^D\r:kb=^H:kd=\E[B:ke=\E[!z\E[0;2u:\ + :kh=\E[H:kl=\E[D:kr=\E[C:ks=\E[1!z\E[0;3u:ku=\E[A:\ + :le=^H:ll=\E[24H:mb=\E[5m:md=\E[1m:me=\E[m:mh=\E[1!{:\ + :mk=\E8m:mp=\E[99m:mr=\E[7m:nd=\E[C:pf=\E[4i:\ + :pl=\E[%d;0u#%s#:po=\E[5i:ps=\E[0i:px=\E[%d;1u#%s#:\ + :rc=\E8:sc=\E7:se=\E[7!{: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!{: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: + +avt+s|concept avt status line changes:\ + :es:hs:\ + :lm#191:\ + :ds=\E[0*w:fs=\E[1;1!w:\ + :i2=\E[2w\E[2!w\E[1;1;1;80w\E[H\E[2*w\E[1!w\E2\r\n:\ + :te=\E[2w\E2\r\n:ti=\E[2;25w\E2\r:\ + :ts=\E[2;1!w\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: + + +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:nd=\EC:se=\E!\200:sf=^J:so=\E!\r:st=\E1:\ + :up=\EA:vb=\020\002\020\003: +contel301|contel321|c301|c321|Contel Business Systems C-301 or C-321:\ + :ei=:ic@:im=:ip@:se=\E!\200:so=\E!\r:vb@:tc=contel300: + + +dg200|data general dasher 200:\ + :NL:am: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: +dg211|Data General d211:\ + :k0@:k1@:k2@:k3@:k4@:k5@:k6@:k7@:k8@:k9@:kb=^Y:l0@:\ + :nw=^M^Z:se=00\036E\200/>:sf@:\ + :so=00\036D\200\200\200\200\200/>:ta=^I:te=^L:\ + :ti=^L^R:ve=^L:vs=^L^R:tc=dg200: + +dg450|dg6134|data general 6134:\ + :le@:nd=^X:tc=dg200: + +dg460-ansi|Data General Dasher 460 in ANSI-mode:\ + :am: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: +dg6053|data general 6053:\ + :am:bs:bw:ul:\ + :co#80:li#24:\ + :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:kb=^Y:kd=^Z:kh=^H:kl=^Y:kr=^X:\ + :ku=^W:le=^Y:nd=^X:nw=^M^Z:se=\200^^E:\ + :so=\200\200\200\200\200\036D:ta=^I:te=^L:ti=^L^R:\ + :ue=^U:up=^W:us=^T:ve=^L:vs=^L^R: + + +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: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|dm1521|datamedia 1520:\ + :am: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|datamedia2500|datamedia 2500:\ + :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|dmchat version of datamedia 2500:\ + :km:\ + :al=1*\020\n\030\035\030\035:dl=2\020\032\030\035:tc=dm2500: +dm3025|datamedia 3025a:\ + :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: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: +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: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: +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: +dtx-sas|dt80-sas|Datamedia DT803/DTX for SAS usage:\ + :am:bw:\ + :co#80:li#24:\ + :ae=\EG:al=\EL:as=\EF:bl=^G:cd=^K:ce=^]:cl=^L:\ + :cm=\E=%r%+ %+ :cr=^M:\ + :..cs=\E=%p1%' '%+%c%' '%c\E#1\E=%p2%' '%+%c%' '%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=^_: + + +falco|ts1|ts-1|falco ts-1:\ + :am:\ + :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: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: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: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|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: + + + +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:\ + :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: + + +f1720|f1720a|fluke 1720A:\ + :xt:\ + :co#80:li#16:sg#1:ug#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:nd=\E[C:se=\E[m:sf=\ED:so=\E[7m:sr=\EM:\ + :ue=\E[m:up=\E[A:us=\E[4m: + + +f100|freedom|freedom100|freedom model 100:\ + :am:bw:hs:mi:ms:xo:\ + :co#80:li#24:\ + :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:se=\EG0:sf=^J:so=\EG4:\ + :sr=\Ej:st=\E1:ta=^I:ts=\Eg\Ef:ue=\EG0:up=^K:us=\EG8:\ + :vb=\Eb\Ed: +f100-rv|freedom-rv|freedom 100 in reverse video:\ + :is=\Eg\Ef\r\Eb:vb=\Ed\Eb:tc=f100: +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:me=\EG0:mh=\EG@:mk=\EG1:mr=\EG4: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|freedom200|Liberty Freedom 200:\ + :am:es:hs:mi:ms:xo:\ + :co#80:it#8:li#24:ws#80:\ + :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:me=\EG0:mh=\EG@:mk=\EG1:\ + :mr=\EG4:nd=^L:pf=\Ea:po=\E`:se=\EG0:sf=^J:so=\EG<:\ + :sr=\EJ:st=\E1:ts=\Ef:ue=\EG0:up=^K:us=\EG8:\ + :vb=\Eo\En:ve=\E.1:vi=\E.0:vs=\E.1: +f200-w|Liberty Freedom 200 - 132 cols:\ + :co#132:tc=f200: +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: + +go140|graphon go-140:\ + :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: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: +go225|go-225|Graphon 225:\ + :am: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[!p\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[!p\E[?7h\E[2;1;1#w:\ + :ti=\E[2;0#w\E[1;25r:ue=\E[24m:up=\E[A:us=\E[4m: + + +sb1|beehive superbee:\ + :am:bw:da:db:mi:ul:xb:\ + :co#80:li#25:sg#1:ug#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:nd=\EC:se=\E_3:sf=^J:so=\E_1:\ + :st=\E1:ta=^I: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: +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:nd=\EC:se=\E_3:\ + :sf=\n\200\200\200\n\200\200\200\EA\EK\200\200\200\ET\ET:\ + :so=\E_1:st=\E1:ta=^I:up=\EA:ve=^J: +superbeeic|super bee with insert char:\ + :ei=\ER:ic=:im=\EQ:tc=superbee-xsb: +sb2|sb3|fixed superbee:\ + :xb@:tc=superbee: + + +beehive|bee|harris beehive:\ + :am: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:\ + :nd=\EC:se=\Ed@:so=\EdP:ue=\Ed@:up=\EA:us=\Ed`: +beehive3|bh3m|beehiveIIIm|harris beehive 3m:\ + :am:\ + :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:if=/usr/share/tabset/beehive:le=^H:\ + :ll=^E^K:nd=^L:se= ^_:sf=^J:so=^] :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: +microb|microbee|micro bee series:\ + :am:\ + :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:nd=\EC:se=\Ed@ :sf=^J:so= \EdP:ta=^I:ue=\Ed@:\ + :up=\EA:us=\Ed`: + +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: +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: + + +hz1000|hazeltine 1000:\ + :co#80:li#12:\ + :bl=^G:cl=^L:cr=^M:do=^J:ho=^K:le=^H:nd= :sf=^J: +hz1420|hazeltine 1420:\ + :am:\ + :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: +hz1500|hazeltine 1500:\ + :am: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: +hz1510|hazeltine 1510:\ + :am:\ + :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: +hz1520|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: +hz1552|hazeltine 1552:\ + :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: +hz2000|hazeltine 2000:\ + :am: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: +esprit|Hazeltine Esprit I:\ + :am: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: + + +ibm327x|line mode IBM 3270 style:\ + :gn:\ + :ce=^M:cl=^M^J:ho=^M: + +ibm3101|i3101|IBM 3101-10:\ + :am:xo:\ + :co#80:li#24:\ + :bl=^G:cd=\EJ:ce=\EI:cl=\EK:cm=\EY%+ %+ :cr=^M:\ + :ct=\E1:do=^J:ho=\EH:if=/usr/share/tabset/ibm3101:\ + :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|i3151|IBM 3151:\ + :me=\E4@:\ + :..sa=\E4%{64}%?%p1%{0}%>%p1%{4}%<%&%t%{8}%|%;%?%p1%{7}%=%t%{16}%|%;%?%p2%t%{1}%|%;%?%p3%t%{4}%|%;%?%p4%t%{2}%|%;%c:\ + :se=\E4@:so=\E4A:ue=\E4@:us=\E4B:tc=ibm3163: +ibm3161|ibm3163|wy60-316X|wyse60-316X|IBM 3161/3163 display:\ + :am:mi:ms:\ + :co#80:it#8:li#24:\ + :F1=\Ek\r:F2=\El\r:F3=\E!a\r:F4=\E!b\r:F5=\E!c\r:\ + :F6=\E!d\r:F7=\E!e\r:F8=\E!f\r:F9=\E!g\r:FA=\E!h\r:\ + :FB=\E!i\r:FC=\E!j\r:FD=\E!k\r:FE=\E!l\r:\ + :ac=l\354q\361k\353x\370j\352m\355w\367u\365v\366t\364n\356:\ + :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: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:\ + :..sa=\E4%'@'%?%p1%t%'A'%|%;\n%?%p2%t%'B'%|%;\n%?%p3%t%'A'%|%;\n%?%p4%t%'D'%|%;\n%?%p5%t%'@'%|%;\n%?%p6%t%'H'%|%;\n%?%p7%t%'P'%|%;%c\n%?%p9%t\E>A%e\E<@%;:\ + :se=\E4@:sf=^J:so=\E4A:te=\E>A:ti=\E>A:ue=\E4@:\ + :up=\EA:us=\E4B: + +ibm3164|i3164|IBM 3164:\ + :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: + +ibmaed|IBM Experimental display:\ + :am: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:nd=\EC:se=\E0:so=\E0:\ + :ta=^I:up=\EA:vb=\EG: +ibm-apl|apl|IBM apl terminal simulator:\ + :li#25:tc=dm1520: +ibmmono|ibm5151|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=\200: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|ibm5154|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:\ + :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: +rtpc|ibmapa16|ibm6155|IBM 6155 Extended Monochrome Graphics Display:\ + :li#32:\ + :ds=\Ej\EY@ \EI\Ek:ts=\Ej\EY@%+ \Eo:tc=ibmmono: +ibmapa8c|ibmapa8|ibm6154|ibm6153|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: +ibm8512|ibm8513|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: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=^^: + +ibm5081|ibmmpel|IBM 5081 1024x1024 256/4096 color display:\ + :es:hs:\ + :li#33:\ + :ds=\Ej\EYA \EI\Ek:fs=\Ek:ts=\Ej\EYA%+ \Eo:tc=ibmmono: +ibm5081-c|ibmmpel-c|IBM 5081 1024x1024 256/4096 enhanced color display:\ + :es:hs:\ + :li#33:\ + :ds=\Ej\EYA \EI\Ek:fs=\Ek:ts=\Ej\EYA%+ \Eo:tc=ibmega-c: +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:\ + :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: + +aixterm-m|IBM AIXterm Monochrome Terminal Emulator:\ + :es:hs:\ + :ac=llqqkkxxjjmmwwuuvvttnn: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|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-m|IBM Kanji AIXterm Monochrome Terminal Emulator:\ + :ac@:tc=aixterm-m: + + +i100|gt100|gt100a|General Terminal 100A (formerly Infoton 100):\ + :am:\ + :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:\ + :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:\ + :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:\ + :am:\ + :co#80:li#24:\ + :bl=^G:cd=^K:cl=^L:cr=^M:do=^J:le=^Z:ll=^H^\:nd=^Y:\ + :sf=^J:up=^\: + + +intext|Interactive Systems Corporation modified owl 1200:\ + :am:\ + :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: + + +abm85|Kimtron ABM 85:\ + :am:bw:ms:\ + :co#80:it#8:li#24:sg#1:ug#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: +abm85h|Kimtron ABM 85H native mode:\ + :hs:\ + :sg@:ug@:\ + :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):mr=\EG4:se=\EG0:so=\EG4:\ + :ts=\Eg\Ef:ue=\EG0:us=\EG8:vb@:ve=\E.4:vs=\E.2: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: +kt7|kimtron model kt-7:\ + :am:\ + :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:nd=^L:se=\EG0:\ + :so=\EG4:ta=^I:ts=\Ef:ue=\EG0:up=^K:us=\EG8: + + +act4|microterm|microterm act iv:\ + :am:\ + :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: +act5|microterm5|microterm act v:\ + :kd=^K:kl=^H:kr=^X:ku=^Z:sr=\EH:uc=^H\EA:tc=act4: +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|mime1|mime2|mimei|mimeii|microterm mime1:\ + :am:\ + :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: +mime2a-s|microterm mime2a (emulating an enhanced soroc iq120):\ + :am:\ + :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: +mime2a|mime2a-v|microterm mime2a (emulating an enhanced vt52):\ + :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|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: +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: +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: +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:\ + :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/lib/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: + +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:nd=\E[C:se=\E[m:sf=\ED:so=\E[7m:sr=\EM:ta=^I:\ + :up=\E[A: + + +ncr7900i|7900i|ncr7900|7900|ncr 7900 model 1:\ + :am:bw:ul:\ + :co#80:li#24:sg#1:ug#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%'@'%+%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: +ncr7901|7901|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%'@'%+%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: + + +bantam|pe550|pe6100|perkin elmer 550:\ + :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:\ + :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: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:nd=\EC:se=\E!\200:\ + :sf=^J:so=\E!^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|perkin elmer 7000 series monochrome monitor:\ + :am:\ + :co#80:li#24:\ + :bl=^G:bt=\E!Y:cd=\EJ:ce=\EI:cl=\EK:cm=\ES%+ %+ :\ + :cr=^M:do=\EB:ho=\EH:i1=\E!\200\EW 7o\Egf\ES7 :\ + :k0=\E!\200: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:\ + :k;=\E!^J:kb=^H:kd=\E!U:kh=\E!S:kl=\E!V:kr=\E!W:\ + :ku=\E!T:le=\ED:ll=\ES7 :nd=\EC:sf=^J:sr=\ER:up=\EA: +pe7000c|perkin elmer 7000 series colour monitor:\ + :i1=\E!\200\EW 7o\Egf\Eb0\Ec7\ES7 :se=\Eb0:so=\Eb2:\ + :ue=\E!\200:us=\E! :tc=pe7000m: + + +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: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/lib/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: + + +tandem6510|adm3a repackaged by Tandem:\ + :tc=adm3a: + +tandem653|t653x|Tandem 653x multipage terminal:\ + :am:da:db:hs:\ + :co#80:li#24:sg#1:ug#1:ws#64:\ + :cd=\EJ:ce=\EK:cl=\EI:cm=\023%+ %+ :do=^J:ds=\Eo\r:\ + :fs=^M:ho=\EH:if=/usr/share/tabset/tandem653:le=^H:\ + :nd=\EC:se=\E6 :sf=\ES:so=\E6$:sr=\ET:ts=\Eo:ue=\E6 :\ + :up=\EA:us=\E60: + + +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:nd=\EC:se=\EG0:\ + :sf=\EX:so=\EG4:ta=^I:up=\EA:ve=\EG6:vi=\EG5: +dt100|dt-100|Tandy DT-100 terminal:\ + :xo:\ + :co#80:li#24:sg#1:ug#1:\ + :ac=kkllmmjjnnwwvvttuuqqxx: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: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=kkllmmjjnnwwvvuuttqqxx: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: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: + + +tek|tek4012|4012|tektronix 4012:\ + :os:\ + :co#75:li#35:\ + :bl=^G:cl=\E\014:cr=^M:do=^J:ff=\014:is=\E^O:le=^H: +tek4013|4013|tektronix 4013:\ + :ae=\E^O:as=\E^N:tc=tek4012: +tek4014|4014|tektronix 4014:\ + :co#81:li#38:\ + :is=\E\017\E9:tc=tek4012: +tek4015|4015|tektronix 4015:\ + :ae=\E^O:as=\E^N:tc=tek4014: +tek4014-sm|4014-sm|tektronix 4014 in small font:\ + :co#121:li#58:\ + :is=\E\017\E\072:tc=tek4014: +tek4015-sm|4015-sm|tektronix 4015 in small font:\ + :ae=\E^O:as=\E^N:tc=tek4014-sm: +tek4023|4023|tex|tektronix 4023:\ + :am:\ + :co#80:li#24:vt#4:\ + :bl=^G:cl=\E\014:cm=\034%r%+ %+ :cr=^M:do=^J:le=^H:\ + :nd=^I:se=^_@:sf=^J:so=^_P: +tek4024|tek4025|tek4027|tektronix 4024/4025/4027:\ + :am: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=!com 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|4025-17|4027-17|tek 4025 17 line window:\ + :li#17:tc=tek4025: +tek4025-17-ws|4025-17-ws|4025-17ws|4027-17ws|4027-17-ws|tek 4025 17 line window in workspace:\ + :is=!com 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!sto 9 17 25 33 41 49 57 65 73\r:\ + :te=\037com 33\r:ti=!com 31\r:tc=tek4025: +tek4025a|4025a|Tektronix 4025A:\ + :am:bw:da:db: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=!com 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: +tek4025-cr|4025-cr|tek 4025 for curses and rogue:\ + :am:\ + :co#80:it#8:li#33:\ + :cl=\037era;:cm=\037jum%i%d\054%d;:do=^F^J:\ + :is=!com 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: +tek4025ex|4025ex|4027ex|tek 4025 w/!:\ + :is=\037com 33\r\n!sto 9\05417\05425\05433\05441\05449\05457\05465\05473\r:\ + :te=\037com 33\r:ti=!com 31\r:tc=tek4025: +tek4105|4105|tektronix 4105:\ + :am:mi:ms:ul:xn:xt:\ + :co#79:it#8:li#29:\ + :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:ti=\E%!1\E[?6l\E[2J:\ + :ue=\E[=0;<1m:up=\E[1A:us=\E[=5;<2m: + +tek4105-30|4105-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: + +tek4107|tek4109|4107|4109|tektronix terminals 4107 4109:\ + :am: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%%!1\E[%?%p1%t;7%;%?%p2%t;4%;%?%p3%t;7%;%?%p4%t;5%;%?%p6%t;1%;m\E%%!0:\ + :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: +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: + +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: +tek4112|tek4114|tektronix 4110 series:\ + :am: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!1:le=^H: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-nd|4112 not in dialog area:\ + :ns:\ + :up=^K:tc=tek4112: +tek4112-5|4112-5|4112 in 5 line dialog area:\ + :li#5:tc=tek4112: +tek4113|tektronix 4113 color graphics with 5 line dialog area:\ + :am: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|4113-34|tektronix 4113 color graphics with 34 line dialog area:\ + :li#34:\ + :is=\EKA1\ELLB2\ELV0\ELV1:tc=tek4113: +tek4113-nd|4113-nd|tektronix 4113 color graphics with no dialog area:\ + :am: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: +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: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: +tek4125|tektronix 4125:\ + :li#34:\ + :al=\E[1L:cs@:dl=\E[1M:im=\E1:\ + :is=\E%\E!0\EQD1\EUX03\EKA\ELBB2\ELCE0\ELI100\ELJ2\ELLB2\ELM0\ELS1\ELX00\ELV1\E%\E!1\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h:\ + :ks=\E=:rc@:sc@:tc=vt100: + +tek4207|Tektronix 4207 graphics terminal with memory:\ + :am:bw:mi: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: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:mr=\E[7m:nd=\E[C:se=\E[m:\ + :so=\E[7m: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: + +tek4404|tektronix 4404:\ + :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!1\E[1;32r\E[?6l\E>:ue=\E[m:up=\E[A:\ + :us=\E[4m: +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!: + +tek4205|4205|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\n\ETFB0\n0000\n1F4F4F4\n2F400\n30F40\n4A4C:rc=^C:sc=^B:sf=^J:up=^K: + + +vc303|vc103|vc203|volker-craig 303:\ + :am: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|volker-craig 404:\ + :am:\ + :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: +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: + + + +pcplot|pc-plot terminal emulation program:\ + :xn@:\ + :AL@:DL@:al@:cs@:dl@:rc@:sc@:tc=vt100: +kaypro|kaypro2|kaypro II:\ + :am:\ + :co#80:li#24:\ + :cl=1\032:cm=\E=%+ %+ :ho=^^:kd=^J:kl=^H:kr=^L:ku=^K:\ + :le=^H:nd=^L:up=^K: + +ibmpc|ibm-pc|ibm5051|5051|IBM Personal Computer (no ANSI.SYS):\ + :am:\ + :co#80:li#24:\ + :bl=^G:cl=^L^K:cr=^M^^:do=^J:ho=^K:im=\200R:kd=^_:\ + :le=^]:nd=^\:sf=\n:up=^^: + + +appleII|apple ii plus:\ + :am:\ + :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:nd=^\:se=^N:so=^O:\ + :ta=^I:up=^_:vb=\024G1\024T1:ve=^TC2:vs=^TC6: +apple-80|apple II with smarterm 80 col:\ + :am: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: +apple-videx|Apple with videx videoterm 80 column board with inverse video:\ + :am: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:nd=^\:se=^Z2:so=^Z3:\ + :ta=^I:up=^_: +lisa|apple lisa console display (black on white):\ + :am:eo:ms:\ + :co#88:it#8:li#32:\ + :ac=lfmekcjdttuvvuwsqax`nb: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:nd=\E[C:se=\E[m:so=\E[7m:ta=^I:\ + :ue=\E[m:up=\E[A:us=\E[4m:vi=\E[5h:vs=\E[5l: +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: +mac|macintosh|Macintosh with MacTerminal:\ + :xn:\ + :dN#30:\ + :al=20\E[L:dc=7\E[P:dl=20\E[M:ei=:ic=9\E[@:im=:ip=7:tc=vt100: + + +coco3|os9LII|Tandy CoCo3 24*80 OS9 Level II:\ + :am:\ + :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!\E\072\200:mr=^_ :nd=^F:\ + :se=^_!:so=^_ :ue=^_#:up=^I:us=^_":ve=^E!:vi=^E : +trs2|trsII|trs80II|Radio Shack Model II using P&T CP/M:\ + :am: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:nd=^]:se=^O:sf=^J:so=^N:ta=^I:up=^^: +trs16|trs-80 model 16 console:\ + :am:\ + :co#80:it#8:li#24:\ + :ac=l_mbk`javewcquxs: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:nd=\EC:pf=\E]+:\ + :po=\E]=:se=\ER@:sf=^J:so=\ERD:ta=^I:up=\EA:ve=\ERC:\ + :vi=\ERc: + + +atari|atari st:\ + :am:\ + :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:nd=\EC:\ + :se=\Eq:so=\Ep:sr=\EI:ta=^I:up=\EA: +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: + + +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:\ + :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=\E9~:k1=\E0~:\ + :k2=\E1~:k3=\E2~:k4=\E3~:k5=\E4~:k6=\E5~:k7=\E6~:\ + :k8=\E7~:k9=\E8~:kb=^H:kd=\EB:kl=\ED:kr=\EC:ku=\EA:\ + :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: + +ozzie|osborne|osborne1|osborne 1:\ + :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: + + +minix|minix console:\ + :co#80:it#8:li#25:\ + :AL=\E[%dLce=\E[K:DC=\E[%dP:DL=\E[%dM:DO=\E[%dB:\ + :IC=\E[%d@:LE=\E[%dD:RI=\E[%dC:UP=\E[%dA:al=\E[L:\ + :cd=\E[0J: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: + +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:nd=\EC:se=\Eq:\ + :sf=^J:so=\Ep:sr=\EI:ta=^I:up=\EA: + +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: + + +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:se=\E):so=\E(:tc=adm3a: +luna|luna68k|LUNA68K Bitmap console:\ + :co#88:li#46:tc=ansi-mini: +megatek|pegasus workstation terminal emulator:\ + :am:os:\ + :co#83:li#60: +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: + + +m2-nam|minitel|minitel-2|minitel-2-nam|France Telecom Minitel:\ + :xn:\ + :co#80:it#8:li#24:\ + :ae=\E(B:al=\E[L:as=\E(0: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:ho=\E[H:\ + :im=\E[4h:ip=7:is=\E[1;24r\E[24;1H: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:nd=\E[C:se=\E[m:sf=^J:so=\E[7m:sr=\EM:\ + :ta=^I:ue=\E[m:up=\E[A:us=\E[4m: + + + +abm80|amtek business machines 80:\ + :am: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: + + +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!:\ + :bl=^G:ce=\EK:cl=^L:cm=\EY%r%+ %+ :cr=^M:dc=\Ee!:\ + :dl=\EE!:do=^J:ei=:ic=\Ef!: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|fixterm|blit running columbus code:\ + :co#88:\ + :cd=\EJ:ei=\ER:ic@:im=\EQ:pO=\EP%03:pf=^T:po=^R:\ + :se=\EV!:so=\EU!: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: + + + +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):\ + :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: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|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:nd=\E[C:se=\E[m:sf=\n:so=\E[7m:\ + :ta=^I:up=\E[A: + + +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\200:up=^K: + + +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: + + +cyb83|xl83|cybernex xl-83:\ + :am:\ + :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: +cyb110|mdl110|cybernex mdl-110:\ + :am:\ + :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: + + +dp3360|datapoint|datapoint 3360:\ + :am:\ + :co#82:li#25:\ + :bl=^G:cd=^_:ce=^^:cl=^]^_:cr=^M:do=^J:ho=^]:le=^H:\ + :nd=^X:sf=^J:up=^Z: + + +gt40|dec gt40:\ + :os:\ + :co#72:li#30:\ + :bl=^G:cr=^M:do=^J:le=^H: +gt42|dec gt42:\ + :os:\ + :co#72:li#40:\ + :bl=^G:cr=^M:do=^J:le=^H: +vt50|dec vt50:\ + :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:\ + :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: +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: + +gigi|vk100|dec gigi graphics terminal:\ + :am: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:\ + :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: + +pro350|decpro|dec pro console:\ + :co#80:it#8:li#24:\ + :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:\ + :hc:os:\ + :co#72:\ + :bl=^G:cr=^M:do=^J:le=^H:sf=^J: +dw2|decwriter|dw|decwriter II:\ + :hc:os:\ + :co#132:\ + :bl=^G:cr=^M:do=^J:kb=^H:le=^H:sf=^J: + +dw3|la120|decwriter III:\ + :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:se=\E[w:sf=^J:so=\E[6w:ta=^I: +dw4|decwriter IV:\ + :am: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: + +ln03|dec ln03 laser printer:\ + :hc:\ + :co#80:li#66:\ + :bl=^G:cr=^M:do=^J:hd=\EK:hu=\EL: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|dd5000|delta data 5000:\ + :am:\ + :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: + + +ddr|rebus3180|ddr3180|Rebus/DDR 3180 vt100 emulator:\ + :am: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/lib/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: + + +terminet1200|terminet300|tn1200|tn300|terminet|GE terminet 1200:\ + :hc:os:\ + :co#120:\ + :bl=^G:cr=^M:do=^J:sf=^J: + + +h19-a|heath-ansi|heathkit-a|heathkit h19 ansi mode:\ + :am:mi:ms:\ + :co#80:it#8:li#24:\ + :RA=\E[?7l:SA=\E[?7h: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-smul|heathkit w/keypad shifted/underscore cursor:\ + :ke=\Eu:ks=\Et:tc=h19-u: +h19|heath|h19-b|heathkit|heath-19|z19|zenith|heathkit h19:\ + :am:es:hs:mi:ms:\ + :co#80:it#8:li#24:\ + :ae=\EG:al=\EL:as=\EF:bl=^G:cd=\EJ:ce=\EK:cl=\EE:\ + :cm=\EY%+ %+ :cr=^M:dc=\EN:dl=\EM: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-us|h19us|heathkit w/keypad shifted/underscore cursor:\ + :ke=\Eu:ks=\Et:tc=h19-u: +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: + +z29|zenith29|z29b|zenith z29b:\ + :am:ms:\ + :co#80:li#24:\ + :ae=\EF:al=\EL:as=\EG:bl=^G:bt=\E-:cd=\EJ:ce=\EK:\ + :cl=\EE:cm=\EY%+ %+ :cr=^M:dc=\EN:dl=\EM:do=\EB:ei=:\ + :ho=\EH:ic=\E<\E[1@\E[?2h:im=: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=\EI:ta=^I:ue=\Es0:up=\EA:us=\Es8:ve=\Ey4:vs=\Ex4: +z29a|z29a-kc-bc|h29a-kc-bc|heath/zenith 29 in ansi mode:\ + :es:hs:\ + :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: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/zenith29: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: +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=``aaffggjjkkllmmnnooqqssttuuvvwwxx~~0a: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\200: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: + +z100|h100|z110|z-100|h-100|heath/zenith z-100 pc with color monitor:\ + :ve=\Ey4\Em70:vs=\Ex4\Em71:tc=z100bw: +z100bw|h100bw|z110bw|z-100bw|h-100bw|heath/zenith z-100 pc:\ + :mi:ms:\ + :co#80:it#8:li#24:\ + :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: +ztx|ztx11|zt-1|htx11|ztx-1-a|ztx-10 or 11:\ + :am: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: + + +ims950-b|bare ims950 no init string:\ + :is@:tc=ims950: +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|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:\ + :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:se=\E[m\E[1m:\ + :so=\E[7m:sr=\EM:ta=^I:ue=\E[m\E[1m:up=\EM:us=\E[4m: + + +superbrain|intertec superbrain:\ + :am:bw:\ + :co#80:li#24:\ + :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|intertec|Intertec InterTube:\ + :am:\ + :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: +intertube2|intertec data systems intertube 2:\ + :ce=\EK:ch=\020%+^J:cm=\016%.\020%+^J:cv=\013%.:\ + :ll=^K^X\r:tc=intertube: + + + +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:\ + :if=/usr/lib/tabset/init.graphos: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:nd=\E[C:nw=^M\ED:\ + :rc=\E8:rf=/usr/lib/tabset/init.graphos: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|mod|modgraph terminal emulating vt100:\ + :xn@:\ + :co#80:li#24:\ + :is=\E^9;0s\E^7;1s\E[3g\E^11;9s\E^11;17s\E^11;25s\E^11;33s\E^11;41s\E^11;49s\E^11;57s\E^11;65s\E^11;73s\E^11;81s\E^11;89s:\ + :rf@:sr=5\EM\E[K:vs=\E^9;0s\E^7;1s:tc=vt100: +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^5;2s\E^7;1s\E[3g\E^11;9s\E^11;17s\E^11;25s\E^11;33s\E^11;41s\E^11;49s\E^11;57s\E^11;65s\E^11;73s\E^11;81s\E^11;89s\E^12;0s\E^14;2s\E^15;9s\E^25;1s\E^9;1s\E^27;1:\ + :le=^H:nd=2\EC:sr=5\EI:ta=^I:up=2\EA: + + +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{.yOi-x`|jGkFlEmDnHtLuKvNwMxIqJ:\ + :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:me=\EG0:mh=\EG2:mr=\EG4:\ + :nd=^L:nw=^_:se=\EG0:sf=^J:so=\EG4:ta=^I:\ + :ti=\E"2\EG0\E]:up=^K:us=\EG1:vb=\EK1\EK0:ve=\E"2:\ + :vi=\E"0: + + +omron|Omron 8025AG:\ + :am: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: + + +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=^_!:mr=^_ :\ + :nd=\E[C:nw=^M^J:se=^_!:sf=^J:so=^_ :ta=^I:ue=^_#:\ + :up=\E[A:us=^_": + + +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: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: + + +swtp|ct82|southwest technical products ct82:\ + :am:\ + :co#82:li#20:\ + :al=^^Y:bl=^G:cd=^V:ce=^F:cl=^L:cm=\013%r%.%.:cr=^M:\ + :dc=^^H:dl=^Z:do=^J:ei=:ho=^P:ic=^^X:im=:\ + :is=\034\022\036\023\036\004\035\027\011\023\036\035\036\017\035\027\022\011:\ + :le=^D:ll=^C:nd=^S:se=^^^F:sf=^N:so=^^^V:sr=^O:up=^A: + + +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: + + +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: + + + +t3700|dumb teleray 3700:\ + :co#80:li#24:\ + :bl=^G:cl=^L:cr=^M:do=^J:le=^H:sf=^J: +t3800|teleray 3800 series:\ + :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:km:xs:xt:\ + :co#80:it#8:li#24:sg#1:ug#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: +t10|teleray 10 special:\ + :km:xs:xt:\ + :co#80:it#8:li#24:sg#2:ug#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=\200:\ + :se=\ER@:sf=\Eq:so=\ERD:sr=\Ep:ta=^I:ue=\ER@:up=\EA:\ + :us=\ERH: +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: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: + + +ti700|ti733|ti735|ti745|ti800|ti silent 700/733/735/745 or omni 800:\ + :hc:os:\ + :co#80:\ + :bl=^G:cr=\r:do=^J:le=^H:sf=^J: + +ti924|Texas Instruments 924 VDT 8859/1 7 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=\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: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|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:Sb=\E[4%dm:Sf=\E[3%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: +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: +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: + + +zen30|z30|zentec 30:\ + :am: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:\ + :nd=^L:se=\EG0:sf=^J:so=\EG6:up=^K: +zen50|z50|zentec zephyr:\ + :am:\ + :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:se=\EGO:so=\EG4:up=^K: + + + +masscomp|masscomp workstation console:\ + :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: + + +qdss|qdcons|qdss glass tty:\ + :am:\ + :co#128:li#57:\ + :cl=1\032:cm=\E=%.%.:do=^J:le=^H:nd=^L:up=^K: + + + +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\n%{0}%PX%{0}%PY%{0}%PZ\n%{1}%PW%{1}%PV%{1}%PU:\ + :sf=^J:so=\E&dD:st=\E1:ta=\011:up=\EA:us=\E&dD: + +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:LF=\E|:RI=\E[%dC:Sb=\E[?;%dm:\ + :..Sf=\E[?%?%p1%{0}%=%t0\n%e%p1%{1}%=%t2\n%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: + +h19k|h19kermit|heathkit emulation provided by Kermit (no auto margin):\ + :am@:da:db:xt:\ + :it@:\ + :ta@:tc=h19-u: + +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/lib/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: + +vs100t|tsim|vs100-tsim|tsim vs100 emulator:\ + :am:\ + :co#80:it#8:li#24:\ + :AL=\E+%+ :DL=\E-%+ :al=\EI:cd=\EQ:ce=\EL:cl=\EE:\ + :cm=\EM%+ %+ :cs=\ES%+ %+ :dc=\Ed:dl=\ED:do=^J:ei=:\ + :ho=\EH:i1=\ER:ic=\Ei:im=:le=^H:nd=\En:se=\Er:so=\Eh:\ + :ta=^I:ue=\Ev:up=^K:us=\Eu: + +xtalk|IBM PC with xtalk communication program (versions up to 3.4):\ + :am:mi:ms: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[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: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: + +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:im=\EQ:le=^H:\ + :nd=\EC:sf=^J:so=\E&dB:te=\EVE:ti=\EVS:up=\EA: + + +diablo1620|diablo1720|diablo450|ipsi|diablo 1620:\ + :hc:os:\ + :co#132:it#8:\ + :ch=\E\011%i%.:ct=\E2:do=^J:hd=\ED:hu=\EU:\ + :if=/usr/share/tabset/xerox1720:kb=^H:le=^H:st=\E1:\ + :ta=^I:up=\E^J: +diablo1620-m8|diablo1640-m8|diablo 1620 w/8 column left margin:\ + :co#124:\ + :is=\r \E9:tc=diablo1620: +diablo1640|diablo1730|diablo1740|diablo630|x1700|diablo|xerox|diablo 1640:\ + :bl=^G:if=/usr/share/tabset/xerox1730:se=\E&:so=\EW:\ + :ue=\ER:us=\EE:tc=diablo1620: +diablo1640-lm|diablo-lm|xerox-lm|diablo 1640 with indented left margin:\ + :co#124:\ + :if=/usr/share/tabset/xerox1730-lm:se=\E&:so=\EW:\ + :ue=\ER:us=\EE:tc=diablo1620: +diablo1740-lm|630-lm|1730-lm|x1700-lm|diablo 1740 printer:\ + :tc=diablo1640-lm: +dtc382|DTC 382:\ + :am:da:db:xs:\ + :co#80:li#24:lm#96:\ + :al=^P^Z:bl=^G:cd=\020\025\020\023\020\023:ce=^P^U:\ + :cl=\020\035:cm=\020\021%r%.%.:cr=^P^M:dc=^X:dl=^P^S:\ + :ei=^Pi:ho=^P^R:im=^PI:le=^H:nd=^PR:pc=\177:sf=^J:\ + :te=\020\035:ue=^P \200:up=^P^L:us=^P ^P:ve=^Pb:\ + :vs=^PB: +dtc300s|DTC 300s:\ + :hc:os:\ + :co#132:\ + :bl=^G:cr=^M:ct=\E3:do=^J:ff=^L:hd=\Eh:hu=\EH:kb=^H:\ + :le=^H:sf=^J:st=\E1:ta=^I:up=^Z: +gsi|mystery gsi terminal:\ + :hc:os:\ + :co#132:\ + :bl=^G:cr=^M:do=^J:hd=\Eh:hu=\EH:le=^H:sf=^J:ta=^I:\ + :up=^Z: +aj830|aj832|aj|anderson jacobson:\ + :hc:os:\ + :bl=^G:cr=^M:do=^J:hd=\E9:hu=\E8:le=^H:sf=^J:up=\E7: +aj510|Anderson-Jacobson model 510:\ + :am:mi:\ + :co#80:li#24:\ + :al=2*\E&I:cd=\E'P:ce=\E'L:cl=^L:cm=\E#%+ %+ :\ + :dc=.1*\E'D:dl=2*\E&D:ei=\E'J:ic=:im=\E'I:ip=.1*:\ + :kd=\EZ:kl=\EW:kr=\EX:ku=\EY:le=^H:nd=\EX:pc=\177:\ + :se=\E"I:so=\E"I:te=\E"N:ti=\E"N:ue=\E"U:up=\EY:\ + :us=\E"U: +nec5520|nec|spinwriter|nec 5520:\ + :hc:os:\ + :co#132:it#8:\ + :bl=^G:cr=^M:ct=\E3:do=^J:ff=^L:hd=\E]s\n\E]W:\ + :hu=\E]s\E9\E]W:kb=^H:le=^H:sf=^J:st=\E1:ta=^I:\ + :up=\E9: +qume5|qume|Qume Sprint 5:\ + :hc:os:\ + :co#80:it#8:\ + :bl=^G:cr=^M:ct=\E3:do=^J:ff=^L:hd=\Eh:hu=\EH:kb=^H:\ + :le=^H:sf=^J:st=\E1:ta=^I:up=^Z: +xerox1720|x1720|x1750|xerox 1720:\ + :hc:os:\ + :co#132:it#8:\ + :bl=^G:cr=^M:ct=\E2:do=^J:ff=^L:le=^H:sf=^J:st=\E1:\ + :ta=^I: + + +cad68-3|cgc3|cad68 basic monitor transparent mode size 3 chars:\ + :am:\ + :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:\ + :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|datagraphix|datagraphix 132a:\ + :da:db:in:\ + :co#80:li#30:\ + :al=\E3:bl=^G:cl=^L:cr=^M:dc=\E6:do=^J:ei=:ho=\Et:\ + :ic=\E5:im=:nd=\El:sf=\Ev:sr=\Ew:up=\Ek:ve=\Em\En:\ + :vs=\Ex: +d800|Direct 800/A:\ + :am:da:db:ms:xs:\ + :co#80:it#8:li#24:\ + :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:\ + :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:\ + :co#80:li#16:\ + :bl=^G:ce=^X:cr=^M:do=^J:ho=^N:le=^H:nd=^I:sf=^J:\ + :up=^O: +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: +ep48|ep4080|execuport 4080:\ + :am:os:\ + :co#80:\ + :bl=^G:cr=^M:do=^J:hd=^\:hu=^^:le=^H:sf=^J: +ep40|ep4000|execuport 4000:\ + :co#136:tc=ep4080: +ifmr|Informer D304:\ + :am:\ + :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:nd=\EC:se=\EK:so=\EJ:\ + :sr=\En:up=\EA: +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/lib/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:\ + :mr=\EG4:nd=^L:nw=\r\n:se=\EG0:sf=^J:so=\EG4:sr=\Ej:\ + :st=\E1:ta=\011:\ + :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:ue=\EG0:up=^K:us=\EG8:\ + :ve=\E`1:vi=\E`0: +ps300|Picture System 300:\ + :xt:\ + :it@:\ + :se@:so@:ue@:us@:tc=vt100: +teletec|Teletec Datascreen:\ + :am:\ + :co#80:li#24:\ + :bl=^G:cl=^L:cr=^M:do=^J:ho=^^:le=^H:nd=^_:sf=^J:\ + :up=^K: +terak|Terak emulating Datamedia 1520:\ + :tc=dm1520: +v3220|LANPAR Vision II model 3220/3221/3222:\ + :am: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:\ + :nd=\E[C:se=\E[m:so=\E[7m:sr=\EM:ta=^I:ue=\E[m:\ + :up=\E[A:us=\E[4m: + + + diff --git a/rescue/linux/cdrom/roottree/init b/rescue/linux/cdrom/roottree/init new file mode 100755 index 0000000..e29be74 --- /dev/null +++ b/rescue/linux/cdrom/roottree/init @@ -0,0 +1,48 @@ +#!/bin/ash +# +# First script called by Linux when booting +# + +echo "======== init called ========" +sbin/sleep 3 +sbin/chroot . +#trap "" 1 2 3 15 +# exec >/dev/console &1 +PATH=sbin +sbin/mount -t proc none /proc +sbin/mount -t sysfs none /sys +echo Creating /dev +sbin/mount -o mode=0755 -t tmpfs none /dev +sbin/mknod /dev/console c 5 1 +sbin/mknod /dev/null c 1 3 +sbin/mknod /dev/zero c 1 5 +sbin/mkdir /dev/pts +sbin/mkdir /dev/shm +echo Starting udev +sbin/udevstart +echo -n "/sbin/hotplug" > /proc/sys/kernel/hotplug +echo "Loading scsi_mod.ko module" +sbin/insmod /lib/scsi_mod.ko +echo "Loading sd_mod.ko module" +sbin/insmod /lib/sd_mod.ko +echo "Loading aic7xxx.ko module" +sbin/insmod /lib/aic7xxx.ko +echo "Loading libata.ko module" +sbin/insmod /lib/libata.ko +echo "Loading ata_piix.ko module" +sbin/insmod /lib/ata_piix.ko +sbin/udevstart + +# CMDLINE=`cat /proc/cmdline` +# DEBUG="" +# case "$CMDLINE" in *debug*) DEBUG="yes"; ;; esac +# export DEBUG + +# Magic incantation for root to remain in ram +echo 0x0100 > /proc/sys/kernel/real-root-dev + +sbin/mount -o remount,rw /dev/root / + +# sh + +exec /sbin/init diff --git a/rescue/linux/cdrom/roottree/init.new b/rescue/linux/cdrom/roottree/init.new new file mode 100755 index 0000000..e29be74 --- /dev/null +++ b/rescue/linux/cdrom/roottree/init.new @@ -0,0 +1,48 @@ +#!/bin/ash +# +# First script called by Linux when booting +# + +echo "======== init called ========" +sbin/sleep 3 +sbin/chroot . +#trap "" 1 2 3 15 +# exec >/dev/console &1 +PATH=sbin +sbin/mount -t proc none /proc +sbin/mount -t sysfs none /sys +echo Creating /dev +sbin/mount -o mode=0755 -t tmpfs none /dev +sbin/mknod /dev/console c 5 1 +sbin/mknod /dev/null c 1 3 +sbin/mknod /dev/zero c 1 5 +sbin/mkdir /dev/pts +sbin/mkdir /dev/shm +echo Starting udev +sbin/udevstart +echo -n "/sbin/hotplug" > /proc/sys/kernel/hotplug +echo "Loading scsi_mod.ko module" +sbin/insmod /lib/scsi_mod.ko +echo "Loading sd_mod.ko module" +sbin/insmod /lib/sd_mod.ko +echo "Loading aic7xxx.ko module" +sbin/insmod /lib/aic7xxx.ko +echo "Loading libata.ko module" +sbin/insmod /lib/libata.ko +echo "Loading ata_piix.ko module" +sbin/insmod /lib/ata_piix.ko +sbin/udevstart + +# CMDLINE=`cat /proc/cmdline` +# DEBUG="" +# case "$CMDLINE" in *debug*) DEBUG="yes"; ;; esac +# export DEBUG + +# Magic incantation for root to remain in ram +echo 0x0100 > /proc/sys/kernel/real-root-dev + +sbin/mount -o remount,rw /dev/root / + +# sh + +exec /sbin/init diff --git a/rescue/linux/cdrom/roottree/linuxrc b/rescue/linux/cdrom/roottree/linuxrc new file mode 100755 index 0000000..08733be --- /dev/null +++ b/rescue/linux/cdrom/roottree/linuxrc @@ -0,0 +1,22 @@ +#!/bin/sh +# +# First script called by Linux when booting +# + +trap "" 1 2 3 15 +exec >/dev/console &1 +mount -t proc none /proc + +CMDLINE=`cat /proc/cmdline` +DEBUG="" +case "$CMDLINE" in *debug*) DEBUG="yes"; ;; esac +export DEBUG + +# Magic incantation for root to remain in ram +echo 0x0100 > /proc/sys/kernel/real-root-dev + +mount -o remount,rw /dev/root / + +# sh + +exit 0 diff --git a/rescue/linux/cdrom/roottree/root/.bash_history b/rescue/linux/cdrom/roottree/root/.bash_history new file mode 100644 index 0000000..e69de29 diff --git a/rescue/linux/cdrom/roottree/root/.bash_logout b/rescue/linux/cdrom/roottree/root/.bash_logout new file mode 100644 index 0000000..926eddc --- /dev/null +++ b/rescue/linux/cdrom/roottree/root/.bash_logout @@ -0,0 +1,3 @@ +# ~/.bash_logout + +clear diff --git a/rescue/linux/cdrom/roottree/root/.bash_profile b/rescue/linux/cdrom/roottree/root/.bash_profile new file mode 100644 index 0000000..dcd29af --- /dev/null +++ b/rescue/linux/cdrom/roottree/root/.bash_profile @@ -0,0 +1,17 @@ +# .bash_profile + +# Get the aliases and functions +if [ -f ~/.bashrc ]; then + . ~/.bashrc +fi + +# User specific environment and startup programs + +PATH=$PATH:$HOME/bin +BASH_ENV=$HOME/.bashrc +USERNAME="root" + +export USERNAME BASH_ENV PATH + + + diff --git a/rescue/linux/cdrom/roottree/root/.bashrc b/rescue/linux/cdrom/roottree/root/.bashrc new file mode 100644 index 0000000..646a32f --- /dev/null +++ b/rescue/linux/cdrom/roottree/root/.bashrc @@ -0,0 +1,17 @@ +# .bashrc + +# User specific aliases and functions + +alias rm='rm -i' +alias cp='cp -i' +alias mv='mv -i' +alias dir='ls -l' + +PS1='[\u@\h \W]\$ ' +LESSCHARSET=latin1 +export LESSCHARSET + +# Source global definitions +if [ -f /etc/bashrc ]; then + . /etc/bashrc +fi diff --git a/rescue/linux/cdrom/roottree/root/ntfsresize b/rescue/linux/cdrom/roottree/root/ntfsresize new file mode 100755 index 0000000..23db94d Binary files /dev/null and b/rescue/linux/cdrom/roottree/root/ntfsresize differ diff --git a/rescue/linux/cdrom/yaird-0.0.5.tar.gz b/rescue/linux/cdrom/yaird-0.0.5.tar.gz new file mode 100644 index 0000000..dd3bb06 Binary files /dev/null and b/rescue/linux/cdrom/yaird-0.0.5.tar.gz differ diff --git a/rescue/linux/cdrom/yaird-0.0.5/AUTHORS b/rescue/linux/cdrom/yaird-0.0.5/AUTHORS new file mode 100644 index 0000000..c6f361c --- /dev/null +++ b/rescue/linux/cdrom/yaird-0.0.5/AUTHORS @@ -0,0 +1,2 @@ +Sun Feb 13 21:41:02 CET 2005 + GNU Autoconf wants this. diff --git a/rescue/linux/cdrom/yaird-0.0.5/COPYING b/rescue/linux/cdrom/yaird-0.0.5/COPYING new file mode 100644 index 0000000..caa0a06 --- /dev/null +++ b/rescue/linux/cdrom/yaird-0.0.5/COPYING @@ -0,0 +1,341 @@ + GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1989, 1991 Free Software Foundation, Inc. + 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. This +General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to +using it. (Some other Free Software Foundation software is covered by +the GNU Library General Public License instead.) You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +this service if you wish), that you receive source code or can get it +if you want it, that you can change the software or use pieces of it +in new free programs; and that you know you can do these things. + + To protect your rights, we need to make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. You must make sure that they, too, receive or can get the +source code. And you must show them these terms so they know their +rights. + + We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. + + Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. + + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that redistributors of a free +program will individually obtain patent licenses, in effect making the +program proprietary. To prevent this, we have made it clear that any +patent must be licensed for everyone's free use or not licensed at all. + + The precise terms and conditions for copying, distribution and +modification follow. + + GNU GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License applies to any program or other work which contains +a notice placed by the copyright holder saying it may be distributed +under the terms of this General Public License. The "Program", below, +refers to any such program or work, and a "work based on the Program" +means either the Program or any derivative work under copyright law: +that is to say, a work containing the Program or a portion of it, +either verbatim or with modifications and/or translated into another +language. (Hereinafter, translation is included without limitation in +the term "modification".) Each licensee is addressed as "you". + +Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program +is covered only if its contents constitute a work based on the +Program (independent of having been made by running the Program). +Whether that is true depends on what the Program does. + + 1. You may copy and distribute verbatim copies of the Program's +source code as you receive it, in any medium, provided that you +conspicuously and appropriately publish on each copy an appropriate +copyright notice and disclaimer of warranty; keep intact all the +notices that refer to this License and to the absence of any warranty; +and give any other recipients of the Program a copy of this License +along with the Program. + +You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a fee. + + 2. You may modify your copy or copies of the Program or any portion +of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. + + b) You must cause any work that you distribute or publish, that in + whole or in part contains or is derived from the Program or any + part thereof, to be licensed as a whole at no charge to all third + parties under the terms of this License. + + c) If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display an + announcement including an appropriate copyright notice and a + notice that there is no warranty (or else, saying that you provide + a warranty) and that users may redistribute the program under + these conditions, and telling the user how to view a copy of this + License. (Exception: if the Program itself is interactive but + does not normally print such an announcement, your work based on + the Program is not required to print an announcement.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Program, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. + +In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following: + + a) Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections + 1 and 2 above on a medium customarily used for software interchange; or, + + b) Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your + cost of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a medium + customarily used for software interchange; or, + + c) Accompany it with the information you received as to the offer + to distribute corresponding source code. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form with such + an offer, in accord with Subsection b above.) + +The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source +code means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to +control compilation and installation of the executable. However, as a +special exception, the source code distributed need not include +anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component +itself accompanies the executable. + +If distribution of executable or object code is made by offering +access to copy from a designated place, then offering equivalent +access to copy the source code from the same place counts as +distribution of the source code, even though third parties are not +compelled to copy the source along with the object code. + + 4. You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense or distribute the Program is +void, and will automatically terminate your rights under this License. +However, parties who have received copies, or rights, from you under +this License will not have their licenses terminated so long as such +parties remain in full compliance. + + 5. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Program or works based on it. + + 6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + + 7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Program at all. For example, if a patent +license would not permit royalty-free redistribution of the Program by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 8. If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License +may add an explicit geographical distribution limitation excluding +those countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. + + 9. The Free Software Foundation may publish revised and/or new versions +of the General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + +Each version is given a distinguishing version number. If the Program +specifies a version number of this License which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +this License, you may choose any version ever published by the Free Software +Foundation. + + 10. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. + + NO WARRANTY + + 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY +FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN +OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES +PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED +OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS +TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE +PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, +REPAIR OR CORRECTION. + + 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, +INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING +OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED +TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY +YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER +PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE +POSSIBILITY OF SUCH DAMAGES. + + END OF TERMS AND CONDITIONS + + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) 19yy + + 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 + + +Also add information on how to contact you by electronic and paper mail. + +If the program is interactive, make it output a short notice like this +when it starts in an interactive mode: + + Gnomovision version 69, Copyright (C) 19yy name of author + Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, the commands you use may +be called something other than `show w' and `show c'; they could even be +mouse-clicks or menu items--whatever suits your program. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the program + `Gnomovision' (which makes passes at compilers) written by James Hacker. + + , 1 April 1989 + Ty Coon, President of Vice + +This General Public License does not permit incorporating your program into +proprietary programs. If your program is a subroutine library, you may +consider it more useful to permit linking proprietary applications with the +library. If this is what you want to do, use the GNU Library General +Public License instead of this License. diff --git a/rescue/linux/cdrom/yaird-0.0.5/ChangeLog b/rescue/linux/cdrom/yaird-0.0.5/ChangeLog new file mode 100644 index 0000000..9114020 --- /dev/null +++ b/rescue/linux/cdrom/yaird-0.0.5/ChangeLog @@ -0,0 +1,833 @@ +# do not edit -- automatically generated by arch changelog +# arch-tag: automatic-ChangeLog--ekonijn@xs4all.nl--debian/yaird--devo--0.1 +# + +2005-03-20 22:08:17 GMT Erik van Konijnenburg patch-33 + + Summary: + 0.0.5 - finalise + Revision: + yaird--devo--0.1--patch-33 + + * clean up NEWS, README, docs + + modified files: + ChangeLog NEWS README TODO configure.in doc/concepts.xml + doc/shlibs.xml doc/tools.xml + + +2005-03-19 23:44:53 GMT Erik van Konijnenburg patch-32 + + Summary: + pre-0.0.5 add klibc shared libraries + Revision: + yaird--devo--0.1--patch-32 + + * Add executable findlibs, to determine dynamic loader and + basename of shared libraries, independent of which C library + is used. Since we don't know what path the loader will use + we cannot resolve shared libraries given as relative paths. + * factor out the finding of shared libraries from building + the image. + * Writeup on shared libraries and klibc. + + new files: + doc/.arch-ids/shlibs.xml.id doc/shlibs.xml + exec/.arch-ids/findlibs.c.id exec/findlibs.c + perl/.arch-ids/SharedLibraries.pm.id perl/SharedLibraries.pm + + modified files: + ChangeLog NEWS README TODO doc/Makefile.am doc/concepts.xml + doc/raid.xml doc/spec.xml doc/tools.xml doc/yaird.xml.in + exec/Makefile.am perl/Image.pm perl/Makefile.am perl/Plan.pm + perl/TestSet.pm + + +2005-03-06 17:50:32 GMT Erik van Konijnenburg patch-31 + + Summary: + pre-0.0.5 debian to initramfs + Revision: + yaird--devo--0.1--patch-31 + + * Document building with klibc in the README file. + * Adapt the Debian template to use initramfs instead of initrd. + The old template is available as Debian-initrd. + * Adapt Fedora template to use run_init. + * correct dependencies in doc makefile. + * doc: writup on initramfs and run_init; de-emphasize initrd. + + new files: + templates/.arch-ids/Debian-initrd.pm.id + templates/Debian-initrd.pm + + modified files: + ChangeLog NEWS README TODO doc/Makefile.am doc/concepts.xml + doc/input.xml doc/intro.xml doc/kernel.xml doc/raid.xml + doc/security.xml doc/spec.xml doc/yaird.xml.in + templates/Debian.pm templates/Fedora.pm + + +2005-03-01 22:29:08 GMT Erik van Konijnenburg patch-30 + + Summary: + post-0.0.4 - add run_init + Revision: + yaird--devo--0.1--patch-30 + + * rename directory src to perl + * add directory exec for stuff intended to go onto the image + * add exec/run_init, based on klibc; + not compiled with klibc in standard configuration. + * wrap the nuking of rootfs in ifdefs; these may go away once tested. + add --enable-nuke config flag to set the ifdef. + * automake mods to support C compilation + * let all templates know about location of exec, about yaird version. + * generate Conf.pm based on exec dir, yaird version. + * change install directory: lib not share since there's object code now. + * note the klibc licence in documentation. + + new files: + .arch-ids/LICENCE.KLIBC.id .arch-ids/Makefile.incl.id + LICENCE.KLIBC Makefile.incl exec/.arch-ids/=id + exec/.arch-ids/Makefile.am.id exec/.arch-ids/run_init.c.id + exec/Makefile.am exec/run_init.c include/.arch-ids/=id + include/.arch-ids/config.h.in.id include/config.h.in + + modified files: + ChangeLog Makefile.am NEWS TODO bootstrap.sh configure.in + doc/license.xml perl/ActionList.pm perl/Conf.pm.in + perl/Makefile.am perl/main.pl templates/Debian.pm + templates/Fedora.pm templates/Makefile.am + + renamed files: + src/.arch-ids/=id + ==> perl/.arch-ids/=id + src/.arch-ids/ActionList.pm.id + ==> perl/.arch-ids/ActionList.pm.id + src/.arch-ids/ActiveBlockDev.pm.id + ==> perl/.arch-ids/ActiveBlockDev.pm.id + src/.arch-ids/ActiveBlockDevTab.pm.id + ==> perl/.arch-ids/ActiveBlockDevTab.pm.id + src/.arch-ids/Base.pm.id + ==> perl/.arch-ids/Base.pm.id + src/.arch-ids/Blacklist.pm.id + ==> perl/.arch-ids/Blacklist.pm.id + src/.arch-ids/BlockSpecialFile.pm.id + ==> perl/.arch-ids/BlockSpecialFile.pm.id + src/.arch-ids/BlockSpecialFileTab.pm.id + ==> perl/.arch-ids/BlockSpecialFileTab.pm.id + src/.arch-ids/Conf.pm.id + ==> perl/.arch-ids/Conf.pm.in.id + src/.arch-ids/FsEntry.pm.id + ==> perl/.arch-ids/FsEntry.pm.id + src/.arch-ids/FsOpts.pm.id + ==> perl/.arch-ids/FsOpts.pm.id + src/.arch-ids/FsTab.pm.id + ==> perl/.arch-ids/FsTab.pm.id + src/.arch-ids/Hardware.pm.id + ==> perl/.arch-ids/Hardware.pm.id + src/.arch-ids/IdeDev.pm.id + ==> perl/.arch-ids/IdeDev.pm.id + src/.arch-ids/Image.pm.id + ==> perl/.arch-ids/Image.pm.id + src/.arch-ids/Input.pm.id + ==> perl/.arch-ids/Input.pm.id + src/.arch-ids/InputTab.pm.id + ==> perl/.arch-ids/InputTab.pm.id + src/.arch-ids/KConfig.pm.id + ==> perl/.arch-ids/KConfig.pm.id + src/.arch-ids/LabeledPartition.pm.id + ==> perl/.arch-ids/LabeledPartition.pm.id + src/.arch-ids/LabeledPartitionTab.pm.id + ==> perl/.arch-ids/LabeledPartitionTab.pm.id + src/.arch-ids/LogicalVolume.pm.id + ==> perl/.arch-ids/LogicalVolume.pm.id + src/.arch-ids/LvmTab.pm.id + ==> perl/.arch-ids/LvmTab.pm.id + src/.arch-ids/Makefile.am.id + ==> perl/.arch-ids/Makefile.am.id + src/.arch-ids/ModDep.pm.id + ==> perl/.arch-ids/ModDep.pm.id + src/.arch-ids/ModDepTab.pm.id + ==> perl/.arch-ids/ModDepTab.pm.id + src/.arch-ids/Obj.pm.id + ==> perl/.arch-ids/Obj.pm.id + src/.arch-ids/Pack.pm.id + ==> perl/.arch-ids/Pack.pm.id + src/.arch-ids/PciDev.pm.id + ==> perl/.arch-ids/PciDev.pm.id + src/.arch-ids/PciMapEntry.pm.id + ==> perl/.arch-ids/PciMapEntry.pm.id + src/.arch-ids/PciTab.pm.id + ==> perl/.arch-ids/PciTab.pm.id + src/.arch-ids/PhysicalVolume.pm.id + ==> perl/.arch-ids/PhysicalVolume.pm.id + src/.arch-ids/Plan.pm.id + ==> perl/.arch-ids/Plan.pm.id + src/.arch-ids/RaidDev.pm.id + ==> perl/.arch-ids/RaidDev.pm.id + src/.arch-ids/RaidTab.pm.id + ==> perl/.arch-ids/RaidTab.pm.id + src/.arch-ids/ScsiDev.pm.id + ==> perl/.arch-ids/ScsiDev.pm.id + src/.arch-ids/TestSet.pm.id + ==> perl/.arch-ids/TestSet.pm.id + src/.arch-ids/UsbDev.pm.id + ==> perl/.arch-ids/UsbDev.pm.id + src/.arch-ids/UsbMapEntry.pm.id + ==> perl/.arch-ids/UsbMapEntry.pm.id + src/.arch-ids/UsbTab.pm.id + ==> perl/.arch-ids/UsbTab.pm.id + src/.arch-ids/VolumeGroup.pm.id + ==> perl/.arch-ids/VolumeGroup.pm.id + src/.arch-ids/main.pl.id + ==> perl/.arch-ids/main.pl.id + src/Conf.pm + ==> perl/Conf.pm.in + + new directories: + exec exec/.arch-ids include include/.arch-ids perl/.arch-ids + + removed directories: + src/.arch-ids + + renamed directories: + src + ==> perl + + +2005-02-24 23:13:31 GMT Erik van Konijnenburg patch-29 + + Summary: + post-0.0.4 add tree copying + Revision: + yaird--devo--0.1--patch-29 + + * Add tree copy code to templates, to actionlist + processing, to image generation. + * Canonise filenames in templates to avoid + problems with eg /lib/modules/2.6.10-smp/kernel//./. + * In ActionList, add kernel version to every hash; + this allows template to refer to /lib/modules/version/kernel. + + modified files: + ChangeLog NEWS TODO doc/concepts.xml src/ActionList.pm + src/Image.pm templates/Debian.pm templates/Fedora.pm + + +2005-02-23 22:17:56 GMT Erik van Konijnenburg patch-28 + + Summary: + post-0.0.4 + Revision: + yaird--devo--0.1--patch-28 + + * Add --root=/dev/hdb option. + Since this needs to be in fstab, it's odd to + use a device name rather than a mount point, + but it's the conventional thing to do, so should + give rise to less confusion than changing it. + + modified files: + ChangeLog NEWS README TODO src/FsTab.pm src/Plan.pm + src/main.pl + + +2005-02-23 14:26:44 GMT Erik van Konijnenburg patch-27 + + Summary: + 0.0.4 + Revision: + yaird--devo--0.1--patch-27 + + * doc corrections: kernel command line no longer unsupported. + * bring fedora and debian templates to same level. + + modified files: + ChangeLog NEWS doc/spec.xml templates/Debian.pm + templates/Fedora.pm + + +2005-02-23 11:42:32 GMT Erik van Konijnenburg patch-26 + + Summary: + pre-0.0.4 - kernel args + Revision: + yaird--devo--0.1--patch-26 + + * enough features for this week, time for some testing. + bump version number to 0.0.4 + * Process kernel args, for now only init, ro, rw. + * as a consequence, single user mode boot now works. + * Ro/rw requires a new action attribute for mount: isRoot. + * options now only is fstab options, not the extra -n -t + stuff you may want to provide. + * new action attribute for mount: fsType. + * Document kernel args that may need support. + + + modified files: + ChangeLog TODO configure.in doc/kernel.xml src/Plan.pm + templates/Debian.pm + + +2005-02-20 15:57:02 GMT Erik van Konijnenburg patch-25 + + Summary: + post 0.0.3 - oops + Revision: + yaird--devo--0.1--patch-25 + + * oops, add src/ModDep.pm to version control + + new files: + src/.arch-ids/ModDep.pm.id src/ModDep.pm + + modified files: + ChangeLog + + +2005-02-20 15:55:10 GMT Erik van Konijnenburg patch-24 + + Summary: + post 0.0.3 + Revision: + yaird--devo--0.1--patch-24 + + * Find module files based on listing in modules.dep, + not on scanning /lib/modules. + * Like modprobe, accept *any* suffix for a module + * But warn if the suffix is not .ko or .ko.gz, + and thus not likely to be generated by depmod. + * Remove ModDir; this is now redundant. + * Add ModDep.pm to encapsulate filename and + dependencies in a modules.dep line. + * Check against duplicate module names + * Add line numbers to module.dep parsing. + * Bugfix: ModDepTab::all returned hash not array. + * Stay closer to modprobe syntax regarding comment conventions + * In Debian template, verify existence of device + before making a node for it. + + removed files: + src/.arch-ids/ModDir.pm.id src/ModDir.pm + + modified files: + ChangeLog TODO src/Conf.pm src/Makefile.am src/ModDepTab.pm + src/Plan.pm src/TestSet.pm templates/Debian.pm + + +2005-02-19 12:41:23 GMT Erik van Konijnenburg patch-23 + + Summary: + post 0.0.3 + Revision: + yaird--devo--0.1--patch-23 + + * In Hardware, recognise target\d+:\d+:\d+ + as a new SCSI grouping, introduced in 2.6.10. + * In Hardware, warn about any unrecognised path component + * In TestSet, clean up harmless typo uncovered by warning. + + modified files: + ChangeLog TODO src/Hardware.pm src/TestSet.pm + + +2005-02-19 00:45:15 GMT Erik van Konijnenburg patch-22 + + Summary: + post-0.0.3 patches + Revision: + yaird--devo--0.1--patch-22 + + * Empty lines in /etc/fstab are valid. + (Patch Goffredo Baroncelli) + + modified files: + ChangeLog TODO src/FsTab.pm + + +2005-02-16 15:51:52 GMT Erik van Konijnenburg patch-21 + + Summary: + implement formats + Revision: + yaird--devo--0.1--patch-21 + + * implement --format options: directory, cramfs, cpio + * use 3rd open arg to avoid filename interpretation. + * adapt readme, concepts and security doc accordingly. + + modified files: + ChangeLog README doc/concepts.xml doc/security.xml src/Base.pm + src/Blacklist.pm src/FsTab.pm src/Image.pm src/InputTab.pm + src/KConfig.pm src/LabeledPartition.pm src/LvmTab.pm + src/ModDepTab.pm src/Pack.pm src/PciTab.pm src/RaidTab.pm + src/UsbTab.pm + + +2005-02-16 12:30:41 GMT Erik van Konijnenburg patch-20 + + Summary: + recognise amd64 linux-gate + Revision: + yaird--devo--0.1--patch-20 + + * New ldd output pattern, cf debian Bug#295412. + Untested, I don't have 64bit. + * add framework for output formats. + + new files: + src/.arch-ids/Pack.pm.id src/Pack.pm + + modified files: + ChangeLog src/Image.pm src/Makefile.am src/main.pl + + +2005-02-16 09:54:08 GMT Erik van Konijnenburg patch-19 + + Summary: + gnu automake + Revision: + yaird--devo--0.1--patch-19 + + * factor out template/Makefile + * note automake in doc. + * add command line processing in main. + * add support for -v, -q, -d in Base.pm. + * correpsonding change in doc/spec, doc/security + * rewritten the README + * TODO now included + + new files: + .arch-ids/TODO.id TODO templates/.arch-ids/Makefile.am.id + templates/Makefile.am + + modified files: + ChangeLog Makefile.am README configure.in doc/security.xml + doc/spec.xml doc/tools.xml src/Base.pm src/main.pl + + +2005-02-13 23:38:48 GMT Erik van Konijnenburg patch-18 + + Summary: + oops in src/Makefile + Revision: + yaird--devo--0.1--patch-18 + + * Add to configure.in, or Makefile.in is not built from Makefile.am + + modified files: + ChangeLog configure.in + + +2005-02-13 23:36:27 GMT Erik van Konijnenburg patch-17 + + Summary: + changelog misery, factoring makefile + Revision: + yaird--devo--0.1--patch-17 + + * remove, re-add changelog. Now it should get the log for this branch. + Is this what we want? + * Factor out src/Makefile.am + + new files: + .arch-ids/ChangeLog.id ChangeLog src/.arch-ids/Makefile.am.id + src/Makefile.am + + removed files: + .arch-ids/ChangeLog.id ChangeLog + + modified files: + Makefile.am + + +2005-02-13 23:27:22 GMT Erik van Konijnenburg patch-16 + + Summary: + oops, wrong changelog. + Revision: + yaird--devo--0.1--patch-16 + + * Sigh, changelog from branch is copied unchanged. + It may be necessary to get rid of automatic tag. + + modified files: + ChangeLog + + +2005-02-13 23:23:33 GMT Erik van Konijnenburg patch-15 + + Summary: + convert to automake + Revision: + yaird--devo--0.1--patch-15 + + * Bump to 0.0.3, use GNU automake + + Patches applied: + + * ekonijn@xs4all.nl--debian/yaird--gnu--0.1--base-0 + tag of ekonijn@xs4all.nl--debian/yaird--devo--0.1--patch-14 + + * ekonijn@xs4all.nl--debian/yaird--gnu--0.1--patch-1 + add GNU autoconf support + + * ekonijn@xs4all.nl--debian/yaird--gnu--0.1--patch-2 + add required files + + * ekonijn@xs4all.nl--debian/yaird--gnu--0.1--patch-3 + debug gnu automake + + * ekonijn@xs4all.nl--debian/yaird--gnu--0.1--patch-4 + tuning automake + + + new files: + .arch-ids/AUTHORS.id .arch-ids/ChangeLog.id + .arch-ids/Makefile.am.id .arch-ids/NEWS.id + .arch-ids/bootstrap.sh.id .arch-ids/configure.in.id AUTHORS + ChangeLog Makefile.am NEWS bootstrap.sh configure.in + doc/.arch-ids/Makefile.am.id doc/Makefile.am + templates/.arch-ids/=id + + removed files: + doc/.arch-ids/Makefile.id doc/Makefile + + modified files: + doc/yaird.xml.in src/main.pl + + renamed files: + doc/.arch-ids/yaird.xml.id + ==> doc/.arch-ids/yaird.xml.in.id + doc/yaird.xml + ==> doc/yaird.xml.in + src/.arch-ids/Template.pm-Fedora.id + ==> templates/.arch-ids/Fedora.pm.id + src/.arch-ids/Template.pm.id + ==> templates/.arch-ids/Debian.pm.id + src/Template.pm + ==> templates/Debian.pm + src/Template.pm-Fedora + ==> templates/Fedora.pm + + new directories: + templates templates/.arch-ids + + new patches: + ekonijn@xs4all.nl--debian/yaird--gnu--0.1--base-0 + ekonijn@xs4all.nl--debian/yaird--gnu--0.1--patch-1 + ekonijn@xs4all.nl--debian/yaird--gnu--0.1--patch-2 + ekonijn@xs4all.nl--debian/yaird--gnu--0.1--patch-3 + ekonijn@xs4all.nl--debian/yaird--gnu--0.1--patch-4 + + +2005-02-12 01:48:49 GMT Erik van Konijnenburg patch-14 + + Summary: + beware of last minute cleanup + Revision: + yaird--devo--0.1--patch-14 + + * Fedora template: removing ls caused a shared library + for /mnt/bin/cp to go missing. Fix. + + modified files: + src/Template.pm-Fedora + + +2005-02-09 23:40:12 GMT Erik van Konijnenburg patch-13 + + Summary: + finalise before shipping. + Revision: + yaird--devo--0.1--patch-13 + + * Warning against ill advised use in README. + * Sample output in README. + * more detailed planner output. + * String method for actionList. + * typo prolog -> prologue. + * adapt TestSet to templating introduced in previous version. + * doc/intro: remove ref to non-existent manual page. + + modified files: + README doc/intro.xml src/ActionList.pm src/Plan.pm + src/Template.pm src/Template.pm-Fedora src/TestSet.pm + + +2005-02-09 22:04:21 GMT Erik van Konijnenburg patch-12 + + Summary: + docs and finishing fedora + Revision: + yaird--devo--0.1--patch-12 + + * More info on initramfs found in Fedora port; + * Drop ls and more from the templates. + * Include Fedora sample template. + * Confess odd scripting for initramfs. + * Rename LICENSE to COPYING + * TestPlan has bugs, introduced while adding templating. + + new files: + src/.arch-ids/Template.pm-Fedora.id src/Template.pm-Fedora + + modified files: + README doc/kernel.xml doc/spec.xml src/Template.pm + + renamed files: + .arch-ids/LICENSE.id + ==> .arch-ids/COPYING.id + LICENSE + ==> COPYING + + +2005-02-09 16:16:35 GMT Erik van Konijnenburg patch-11 + + Summary: + avoid error message on non-shared executable ldd + Revision: + yaird--devo--0.1--patch-11 + + * avoid error message on non-shared executable ldd, + needed because of strange file modes in FC3. + + modified files: + src/Image.pm + + +2005-02-09 16:05:04 GMT Erik van Konijnenburg patch-10 + + Summary: + oops + Revision: + yaird--devo--0.1--patch-10 + + * Inverted pattern in previous fix to ldd. + + modified files: + src/Image.pm + + +2005-02-09 16:00:50 GMT Erik van Konijnenburg patch-9 + + Summary: + other ldd output format + Revision: + yaird--devo--0.1--patch-9 + + * In FC3 ldd (v2.3.3), the => is omitted + if names on both sides are identical. + + + modified files: + src/Image.pm + + +2005-02-09 13:14:52 GMT Erik van Konijnenburg patch-8 + + Summary: + document templating + Revision: + yaird--devo--0.1--patch-8 + + * Discusse templating infrastructure under toolchain + * More logical ordering in concepts chapter, + discuss use of templates. + * Minor cleanup in security and licence chapters. + + removed files: + doc/.arch-ids/templating.xml.id doc/templating.xml + + modified files: + doc/concepts.xml doc/license.xml doc/security.xml doc/spec.xml + doc/tools.xml doc/yaird.xml + + +2005-02-09 10:37:39 GMT Erik van Konijnenburg patch-7 + + Summary: + implement template system + Revision: + yaird--devo--0.1--patch-7 + + Patches applied: + + * ekonijn@xs4all.nl--debian/yaird--templ--0.1--base-0 + tag of ekonijn@xs4all.nl--debian/yaird--devo--0.1--patch-6 + + * ekonijn@xs4all.nl--debian/yaird--templ--0.1--patch-1 + implement template system: + * Note initramfs in FC3. + * Add chapter on templating to doc; unsatisfactory. + Specs chapter unchanged. + * Add debug, assert functions to Base. + * Add debug calls to Image. + * Fix bug in addDevicePlan for loop and duplicate detection: eq vs ==. + * Add templating infrastructure, based on HTML::Template. + * Ad Debian specific template. + * Adapt Plan to use templating infrastructure. + * Drop ad hoc plan expansion code. + + new files: + doc/.arch-ids/templating.xml.id doc/templating.xml + src/.arch-ids/ActionList.pm.id src/.arch-ids/Template.pm.id + src/ActionList.pm src/Template.pm + + modified files: + doc/kernel.xml doc/yaird.xml src/Base.pm src/Conf.pm + src/Image.pm src/Obj.pm src/Plan.pm src/main.pl + + new patches: + ekonijn@xs4all.nl--debian/yaird--templ--0.1--base-0 + ekonijn@xs4all.nl--debian/yaird--templ--0.1--patch-1 + + +2005-02-06 11:47:03 GMT Erik van Konijnenburg patch-6 + + Summary: + oops, add KConfig.pm + Revision: + yaird--devo--0.1--patch-6 + + * oops, KConfig.pm needs to be added to tla archive. + previous version non-functional for this reason. + + new files: + src/.arch-ids/KConfig.pm.id src/KConfig.pm + + +2005-02-05 22:46:13 GMT Erik van Konijnenburg patch-5 + + Summary: + preparations for Fedora port + Revision: + yaird--devo--0.1--patch-5 + + * divide concept.xml into simplesect's. + * correct USB_HID remark in input.xml + * add kernel config file reader + * add mapping module name to kernel config var. + * document kernel config interpretation. + * added test case for kernel config interpretation + * when resolving module names, drop the modules + that are built into the kernel. + * /etc/hotplug/blacklist.d does not have to exist. + * swap in /etc/fstab can have mount point 'swap' + as well as 'none'. + * No absolute path when using LVM tools: Debian + has them in /sbin, Fedora in /usr/sbin; + Including /sbin,/usr/sbin in $PATH solves this. + * Don't load modules for swap partitions, + since we don't do software suspend yet. + * Known issue: Fedora does not have dash, does + not have /etc/lvm-200. We'll need templating + to configure that away. + + modified files: + doc/concepts.xml doc/input.xml doc/security.xml doc/spec.xml + src/Blacklist.pm src/Conf.pm src/FsTab.pm src/LvmTab.pm + src/ModDepTab.pm src/Plan.pm src/TestSet.pm src/main.pl + + +2005-02-05 11:12:27 GMT Erik van Konijnenburg patch-4 + + Summary: + reiser tested, limit PCI sibling awakening + Revision: + yaird--devo--0.1--patch-4 + + * Drop the todo item "test reiser"; completed succesfully. + * Drop 'redundant action' messages. + * Reduce PCI sibling awakening to USB functions only; + Note in doc. + + modified files: + doc/concepts.xml doc/spec.xml src/Hardware.pm src/Plan.pm + + +2005-02-05 00:11:33 GMT Erik van Konijnenburg patch-3 + + Summary: + document UHCI/EHCI, fix LVM mknod + Revision: + yaird--devo--0.1--patch-3 + + * add a paragraph on EHCI/UHCI and load a module for + every function of a PCI slot to the concepts chapter. + * fix bug in generated mknod calls. Devices cannot always + be called /dev/hda, with hda the kernel name: the counter + example is /dev/vg0/root, device nodes generated by LVM. + Add function yspecial to activeBlockDev, to generate + a name appropriate for the block device. + * known bug: the PCI alternate function code is too generous. + Consider a chipset that has sound, ide and USB all as one + PCI slot. to be done. + + modified files: + doc/concepts.xml src/ActiveBlockDev.pm src/LvmTab.pm + src/Plan.pm src/TestSet.pm + + +2005-02-03 23:50:39 GMT Erik van Konijnenburg patch-2 + + Summary: + fix EHCI/UHCI interference + Revision: + yaird--devo--0.1--patch-2 + + * It turns out some PCI EHCI drivers work best if the UHCI + driver is also loaded. Generalise to: always load modules + for every function of a PCI slot you need. + + modified files: + src/Hardware.pm + + +2005-02-03 21:26:53 GMT Erik van Konijnenburg patch-1 + + Summary: + get rid of debug code + Revision: + yaird--devo--0.1--patch-1 + + * Drop hacked in 'sleep' action, leave sleep + on the image. + + modified files: + src/Plan.pm + + +2005-02-03 21:10:19 GMT Erik van Konijnenburg base-0 + + Summary: + initial import + Revision: + yaird--devo--0.1--base-0 + + * first edition under version control. + seems to work in some simple cases, + still need to remove some debugging code. + + new files: + LICENSE README doc/Makefile doc/authors.xml doc/concepts.xml + doc/figures/console.dia doc/figures/console.png doc/input.xml + doc/intro.xml doc/kernel.xml doc/license.xml doc/raid.xml + doc/security.xml doc/spec.xml doc/tools.xml doc/yaird.xml + src/ActiveBlockDev.pm src/ActiveBlockDevTab.pm src/Base.pm + src/Blacklist.pm src/BlockSpecialFile.pm + src/BlockSpecialFileTab.pm src/Conf.pm src/FsEntry.pm + src/FsOpts.pm src/FsTab.pm src/Hardware.pm src/IdeDev.pm + src/Image.pm src/Input.pm src/InputTab.pm + src/LabeledPartition.pm src/LabeledPartitionTab.pm + src/LogicalVolume.pm src/LvmTab.pm src/ModDepTab.pm + src/ModDir.pm src/Obj.pm src/PciDev.pm src/PciMapEntry.pm + src/PciTab.pm src/PhysicalVolume.pm src/Plan.pm src/RaidDev.pm + src/RaidTab.pm src/ScsiDev.pm src/TestSet.pm src/UsbDev.pm + src/UsbMapEntry.pm src/UsbTab.pm src/VolumeGroup.pm + src/main.pl + + diff --git a/rescue/linux/cdrom/yaird-0.0.5/INSTALL b/rescue/linux/cdrom/yaird-0.0.5/INSTALL new file mode 100644 index 0000000..56b077d --- /dev/null +++ b/rescue/linux/cdrom/yaird-0.0.5/INSTALL @@ -0,0 +1,236 @@ +Installation Instructions +************************* + +Copyright (C) 1994, 1995, 1996, 1999, 2000, 2001, 2002, 2004, 2005 Free +Software Foundation, Inc. + +This file is free documentation; the Free Software Foundation gives +unlimited permission to copy, distribute and modify it. + +Basic Installation +================== + +These are generic installation instructions. + + The `configure' shell script attempts to guess correct values for +various system-dependent variables used during compilation. It uses +those values to create a `Makefile' in each directory of the package. +It may also create one or more `.h' files containing system-dependent +definitions. Finally, it creates a shell script `config.status' that +you can run in the future to recreate the current configuration, and a +file `config.log' containing compiler output (useful mainly for +debugging `configure'). + + It can also use an optional file (typically called `config.cache' +and enabled with `--cache-file=config.cache' or simply `-C') that saves +the results of its tests to speed up reconfiguring. (Caching is +disabled by default to prevent problems with accidental use of stale +cache files.) + + If you need to do unusual things to compile the package, please try +to figure out how `configure' could check whether to do them, and mail +diffs or instructions to the address given in the `README' so they can +be considered for the next release. If you are using the cache, and at +some point `config.cache' contains results you don't want to keep, you +may remove or edit it. + + The file `configure.ac' (or `configure.in') is used to create +`configure' by a program called `autoconf'. You only need +`configure.ac' if you want to change it or regenerate `configure' using +a newer version of `autoconf'. + +The simplest way to compile this package is: + + 1. `cd' to the directory containing the package's source code and type + `./configure' to configure the package for your system. If you're + using `csh' on an old version of System V, you might need to type + `sh ./configure' instead to prevent `csh' from trying to execute + `configure' itself. + + Running `configure' takes awhile. While running, it prints some + messages telling which features it is checking for. + + 2. Type `make' to compile the package. + + 3. Optionally, type `make check' to run any self-tests that come with + the package. + + 4. Type `make install' to install the programs and any data files and + documentation. + + 5. You can remove the program binaries and object files from the + source code directory by typing `make clean'. To also remove the + files that `configure' created (so you can compile the package for + a different kind of computer), type `make distclean'. There is + also a `make maintainer-clean' target, but that is intended mainly + for the package's developers. If you use it, you may have to get + all sorts of other programs in order to regenerate files that came + with the distribution. + +Compilers and Options +===================== + +Some systems require unusual options for compilation or linking that the +`configure' script does not know about. Run `./configure --help' for +details on some of the pertinent environment variables. + + You can give `configure' initial values for configuration parameters +by setting variables in the command line or in the environment. Here +is an example: + + ./configure CC=c89 CFLAGS=-O2 LIBS=-lposix + + *Note Defining Variables::, for more details. + +Compiling For Multiple Architectures +==================================== + +You can compile the package for more than one kind of computer at the +same time, by placing the object files for each architecture in their +own directory. To do this, you must use a version of `make' that +supports the `VPATH' variable, such as GNU `make'. `cd' to the +directory where you want the object files and executables to go and run +the `configure' script. `configure' automatically checks for the +source code in the directory that `configure' is in and in `..'. + + If you have to use a `make' that does not support the `VPATH' +variable, you have to compile the package for one architecture at a +time in the source code directory. After you have installed the +package for one architecture, use `make distclean' before reconfiguring +for another architecture. + +Installation Names +================== + +By default, `make install' will install the package's files in +`/usr/local/bin', `/usr/local/man', etc. You can specify an +installation prefix other than `/usr/local' by giving `configure' the +option `--prefix=PREFIX'. + + You can specify separate installation prefixes for +architecture-specific files and architecture-independent files. If you +give `configure' the option `--exec-prefix=PREFIX', the package will +use PREFIX as the prefix for installing programs and libraries. +Documentation and other data files will still use the regular prefix. + + In addition, if you use an unusual directory layout you can give +options like `--bindir=DIR' to specify different values for particular +kinds of files. Run `configure --help' for a list of the directories +you can set and what kinds of files go in them. + + If the package supports it, you can cause programs to be installed +with an extra prefix or suffix on their names by giving `configure' the +option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'. + +Optional Features +================= + +Some packages pay attention to `--enable-FEATURE' options to +`configure', where FEATURE indicates an optional part of the package. +They may also pay attention to `--with-PACKAGE' options, where PACKAGE +is something like `gnu-as' or `x' (for the X Window System). The +`README' should mention any `--enable-' and `--with-' options that the +package recognizes. + + For packages that use the X Window System, `configure' can usually +find the X include and library files automatically, but if it doesn't, +you can use the `configure' options `--x-includes=DIR' and +`--x-libraries=DIR' to specify their locations. + +Specifying the System Type +========================== + +There may be some features `configure' cannot figure out automatically, +but needs to determine by the type of machine the package will run on. +Usually, assuming the package is built to be run on the _same_ +architectures, `configure' can figure that out, but if it prints a +message saying it cannot guess the machine type, give it the +`--build=TYPE' option. TYPE can either be a short name for the system +type, such as `sun4', or a canonical name which has the form: + + CPU-COMPANY-SYSTEM + +where SYSTEM can have one of these forms: + + OS KERNEL-OS + + See the file `config.sub' for the possible values of each field. If +`config.sub' isn't included in this package, then this package doesn't +need to know the machine type. + + If you are _building_ compiler tools for cross-compiling, you should +use the `--target=TYPE' option to select the type of system they will +produce code for. + + If you want to _use_ a cross compiler, that generates code for a +platform different from the build platform, you should specify the +"host" platform (i.e., that on which the generated programs will +eventually be run) with `--host=TYPE'. + +Sharing Defaults +================ + +If you want to set default values for `configure' scripts to share, you +can create a site shell script called `config.site' that gives default +values for variables like `CC', `cache_file', and `prefix'. +`configure' looks for `PREFIX/share/config.site' if it exists, then +`PREFIX/etc/config.site' if it exists. Or, you can set the +`CONFIG_SITE' environment variable to the location of the site script. +A warning: not all `configure' scripts look for a site script. + +Defining Variables +================== + +Variables not defined in a site shell script can be set in the +environment passed to `configure'. However, some packages may run +configure again during the build, and the customized values of these +variables may be lost. In order to avoid this problem, you should set +them in the `configure' command line, using `VAR=value'. For example: + + ./configure CC=/usr/local2/bin/gcc + +causes the specified `gcc' to be used as the C compiler (unless it is +overridden in the site shell script). Here is a another example: + + /bin/bash ./configure CONFIG_SHELL=/bin/bash + +Here the `CONFIG_SHELL=/bin/bash' operand causes subsequent +configuration-related scripts to be executed by `/bin/bash'. + +`configure' Invocation +====================== + +`configure' recognizes the following options to control how it operates. + +`--help' +`-h' + Print a summary of the options to `configure', and exit. + +`--version' +`-V' + Print the version of Autoconf used to generate the `configure' + script, and exit. + +`--cache-file=FILE' + Enable the cache: use and save the results of the tests in FILE, + traditionally `config.cache'. FILE defaults to `/dev/null' to + disable caching. + +`--config-cache' +`-C' + Alias for `--cache-file=config.cache'. + +`--quiet' +`--silent' +`-q' + Do not print messages saying which checks are being made. To + suppress all normal output, redirect it to `/dev/null' (any error + messages will still be shown). + +`--srcdir=DIR' + Look for the package's source code in directory DIR. Usually + `configure' can determine that directory automatically. + +`configure' also accepts some other, not widely useful, options. Run +`configure --help' for more details. + diff --git a/rescue/linux/cdrom/yaird-0.0.5/Makefile b/rescue/linux/cdrom/yaird-0.0.5/Makefile new file mode 100644 index 0000000..c4423af --- /dev/null +++ b/rescue/linux/cdrom/yaird-0.0.5/Makefile @@ -0,0 +1,601 @@ +# Makefile.in generated by automake 1.9.5 from Makefile.am. +# Makefile. Generated from Makefile.in by configure. + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005 Free Software Foundation, Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + + + +# +# Makefile.am -- installation and packaging instructions +# Copyright (C) 2005 Erik van Konijnenburg +# +# 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 +# +# - auxdir contains executables that may be included in the generated +# image +# - perldir contains perl modules to be included by the main program +# +srcdir = . +top_srcdir = . + +pkgdatadir = $(datadir)/yaird +pkglibdir = $(libdir)/yaird +pkgincludedir = $(includedir)/yaird +top_builddir = . +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +INSTALL = /usr/bin/install -c +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +subdir = . +DIST_COMMON = README $(am__configure_deps) $(srcdir)/Makefile.am \ + $(srcdir)/Makefile.in $(top_srcdir)/configure \ + $(top_srcdir)/include/config.h.in AUTHORS COPYING ChangeLog \ + INSTALL NEWS TODO depcomp install-sh missing +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/configure.in +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \ + configure.lineno configure.status.lineno +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/include/config.h +CONFIG_CLEAN_FILES = +SOURCES = +DIST_SOURCES = +RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ + html-recursive info-recursive install-data-recursive \ + install-exec-recursive install-info-recursive \ + install-recursive installcheck-recursive installdirs-recursive \ + pdf-recursive ps-recursive uninstall-info-recursive \ + uninstall-recursive +ETAGS = etags +CTAGS = ctags +DIST_SUBDIRS = $(SUBDIRS) +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +distdir = $(PACKAGE)-$(VERSION) +top_distdir = $(distdir) +am__remove_distdir = \ + { test ! -d $(distdir) \ + || { find $(distdir) -type d ! -perm -200 -exec chmod u+w {} ';' \ + && rm -fr $(distdir); }; } +DIST_ARCHIVES = $(distdir).tar.gz +GZIP_ENV = --best +distuninstallcheck_listfiles = find . -type f -print +distcleancheck_listfiles = find . -type f -print +ACLOCAL = ${SHELL} /home/kern/bacula/k/rescue/linux/cdrom/yaird-0.0.5/missing --run aclocal-1.9 +AMDEP_FALSE = # +AMDEP_TRUE = +AMTAR = ${SHELL} /home/kern/bacula/k/rescue/linux/cdrom/yaird-0.0.5/missing --run tar +AUTOCONF = ${SHELL} /home/kern/bacula/k/rescue/linux/cdrom/yaird-0.0.5/missing --run autoconf +AUTOHEADER = ${SHELL} /home/kern/bacula/k/rescue/linux/cdrom/yaird-0.0.5/missing --run autoheader +AUTOMAKE = ${SHELL} /home/kern/bacula/k/rescue/linux/cdrom/yaird-0.0.5/missing --run automake-1.9 +AWK = gawk +CC = gcc +CCDEPMODE = depmode=gcc3 +CFLAGS = -g -O2 +CPPFLAGS = +CYGPATH_W = echo +DEFS = -DHAVE_CONFIG_H +DEPDIR = .deps +ECHO_C = +ECHO_N = -n +ECHO_T = +EXEEXT = +INITRD_TEMPLATE = Fedora +INSTALL_DATA = ${INSTALL} -m 644 +INSTALL_PROGRAM = ${INSTALL} +INSTALL_SCRIPT = ${INSTALL} +INSTALL_STRIP_PROGRAM = ${SHELL} $(install_sh) -c -s +LDFLAGS = +LIBOBJS = +LIBS = +LTLIBOBJS = +MAKEINFO = ${SHELL} /home/kern/bacula/k/rescue/linux/cdrom/yaird-0.0.5/missing --run makeinfo +OBJEXT = o +PACKAGE = yaird +PACKAGE_BUGREPORT = +PACKAGE_NAME = +PACKAGE_STRING = +PACKAGE_TARNAME = +PACKAGE_VERSION = +PATH_SEPARATOR = : +PERL = /usr/bin/perl +SET_MAKE = +SHELL = /bin/sh +STRIP = +VERSION = 0.0.5 +XMLTO = /usr/bin/xmlto +ac_ct_CC = gcc +ac_ct_STRIP = +am__fastdepCC_FALSE = # +am__fastdepCC_TRUE = +am__include = include +am__leading_dot = . +am__quote = +am__tar = ${AMTAR} chof - "$$tardir" +am__untar = ${AMTAR} xf - +bindir = ${exec_prefix}/bin +build_alias = +datadir = ${prefix}/share +exec_prefix = ${prefix} +host_alias = +includedir = ${prefix}/include +infodir = ${prefix}/info +install_sh = /home/kern/bacula/k/rescue/linux/cdrom/yaird-0.0.5/install-sh +libdir = ${exec_prefix}/lib +libexecdir = ${exec_prefix}/libexec +localstatedir = ${prefix}/var +mandir = ${prefix}/man +mkdir_p = mkdir -p -- +oldincludedir = /usr/include +prefix = /usr/local +program_transform_name = s,x,x, +sbindir = ${exec_prefix}/sbin +sharedstatedir = ${prefix}/com +sysconfdir = ${prefix}/etc +target_alias = +auxdir = $(pkglibdir)/exec +perldir = $(pkglibdir)/perl +SUBDIRS = perl templates doc exec + +# not compiled, but must go in the tarball. +EXTRA_DIST = \ + bootstrap.sh + +all: all-recursive + +.SUFFIXES: +am--refresh: + @: +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + echo ' cd $(srcdir) && $(AUTOMAKE) --gnu '; \ + cd $(srcdir) && $(AUTOMAKE) --gnu \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnu Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + echo ' $(SHELL) ./config.status'; \ + $(SHELL) ./config.status;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + $(SHELL) ./config.status --recheck + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(srcdir) && $(AUTOCONF) +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS) + +include/config.h: include/stamp-h1 + @if test ! -f $@; then \ + rm -f include/stamp-h1; \ + $(MAKE) include/stamp-h1; \ + else :; fi + +include/stamp-h1: $(top_srcdir)/include/config.h.in $(top_builddir)/config.status + @rm -f include/stamp-h1 + cd $(top_builddir) && $(SHELL) ./config.status include/config.h +$(top_srcdir)/include/config.h.in: $(am__configure_deps) + cd $(top_srcdir) && $(AUTOHEADER) + rm -f include/stamp-h1 + touch $@ + +distclean-hdr: + -rm -f include/config.h include/stamp-h1 +uninstall-info-am: + +# This directory's subdirectories are mostly independent; you can cd +# into them and run `make' without going through this Makefile. +# To change the values of `make' variables: instead of editing Makefiles, +# (1) if the variable is set in `config.status', edit `config.status' +# (which will cause the Makefiles to be regenerated when you run `make'); +# (2) otherwise, pass the desired values on the `make' command line. +$(RECURSIVE_TARGETS): + @failcom='exit 1'; \ + for f in x $$MAKEFLAGS; do \ + case $$f in \ + *=* | --[!k]*);; \ + *k*) failcom='fail=yes';; \ + esac; \ + done; \ + dot_seen=no; \ + target=`echo $@ | sed s/-recursive//`; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + dot_seen=yes; \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || eval $$failcom; \ + done; \ + if test "$$dot_seen" = "no"; then \ + $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ + fi; test -z "$$fail" + +mostlyclean-recursive clean-recursive distclean-recursive \ +maintainer-clean-recursive: + @failcom='exit 1'; \ + for f in x $$MAKEFLAGS; do \ + case $$f in \ + *=* | --[!k]*);; \ + *k*) failcom='fail=yes';; \ + esac; \ + done; \ + dot_seen=no; \ + case "$@" in \ + distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ + *) list='$(SUBDIRS)' ;; \ + esac; \ + rev=''; for subdir in $$list; do \ + if test "$$subdir" = "."; then :; else \ + rev="$$subdir $$rev"; \ + fi; \ + done; \ + rev="$$rev ."; \ + target=`echo $@ | sed s/-recursive//`; \ + for subdir in $$rev; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || eval $$failcom; \ + done && test -z "$$fail" +tags-recursive: + list='$(SUBDIRS)'; for subdir in $$list; do \ + test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ + done +ctags-recursive: + list='$(SUBDIRS)'; for subdir in $$list; do \ + test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ + done + +ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + mkid -fID $$unique +tags: TAGS + +TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + here=`pwd`; \ + if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ + include_option=--etags-include; \ + empty_fix=.; \ + else \ + include_option=--include; \ + empty_fix=; \ + fi; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test ! -f $$subdir/TAGS || \ + tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \ + fi; \ + done; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$tags $$unique; \ + fi +ctags: CTAGS +CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + here=`pwd`; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + test -z "$(CTAGS_ARGS)$$tags$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$tags $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && cd $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) $$here + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +distdir: $(DISTFILES) + $(am__remove_distdir) + mkdir $(distdir) + $(mkdir_p) $(distdir)/doc $(distdir)/include + @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ + list='$(DISTFILES)'; for file in $$list; do \ + case $$file in \ + $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ + $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ + esac; \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test "$$dir" != "$$file" && test "$$dir" != "."; then \ + dir="/$$dir"; \ + $(mkdir_p) "$(distdir)$$dir"; \ + else \ + dir=''; \ + fi; \ + if test -d $$d/$$file; then \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + else \ + test -f $(distdir)/$$file \ + || cp -p $$d/$$file $(distdir)/$$file \ + || exit 1; \ + fi; \ + done + list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test -d "$(distdir)/$$subdir" \ + || $(mkdir_p) "$(distdir)/$$subdir" \ + || exit 1; \ + distdir=`$(am__cd) $(distdir) && pwd`; \ + top_distdir=`$(am__cd) $(top_distdir) && pwd`; \ + (cd $$subdir && \ + $(MAKE) $(AM_MAKEFLAGS) \ + top_distdir="$$top_distdir" \ + distdir="$$distdir/$$subdir" \ + distdir) \ + || exit 1; \ + fi; \ + done + -find $(distdir) -type d ! -perm -777 -exec chmod a+rwx {} \; -o \ + ! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \ + ! -type d ! -perm -400 -exec chmod a+r {} \; -o \ + ! -type d ! -perm -444 -exec $(SHELL) $(install_sh) -c -m a+r {} {} \; \ + || chmod -R a+r $(distdir) +dist-gzip: distdir + tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz + $(am__remove_distdir) + +dist-bzip2: distdir + tardir=$(distdir) && $(am__tar) | bzip2 -9 -c >$(distdir).tar.bz2 + $(am__remove_distdir) + +dist-tarZ: distdir + tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z + $(am__remove_distdir) + +dist-shar: distdir + shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz + $(am__remove_distdir) + +dist-zip: distdir + -rm -f $(distdir).zip + zip -rq $(distdir).zip $(distdir) + $(am__remove_distdir) + +dist dist-all: distdir + tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz + $(am__remove_distdir) + +# This target untars the dist file and tries a VPATH configuration. Then +# it guarantees that the distribution is self-contained by making another +# tarfile. +distcheck: dist + case '$(DIST_ARCHIVES)' in \ + *.tar.gz*) \ + GZIP=$(GZIP_ENV) gunzip -c $(distdir).tar.gz | $(am__untar) ;;\ + *.tar.bz2*) \ + bunzip2 -c $(distdir).tar.bz2 | $(am__untar) ;;\ + *.tar.Z*) \ + uncompress -c $(distdir).tar.Z | $(am__untar) ;;\ + *.shar.gz*) \ + GZIP=$(GZIP_ENV) gunzip -c $(distdir).shar.gz | unshar ;;\ + *.zip*) \ + unzip $(distdir).zip ;;\ + esac + chmod -R a-w $(distdir); chmod a+w $(distdir) + mkdir $(distdir)/_build + mkdir $(distdir)/_inst + chmod a-w $(distdir) + dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \ + && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \ + && cd $(distdir)/_build \ + && ../configure --srcdir=.. --prefix="$$dc_install_base" \ + $(DISTCHECK_CONFIGURE_FLAGS) \ + && $(MAKE) $(AM_MAKEFLAGS) \ + && $(MAKE) $(AM_MAKEFLAGS) dvi \ + && $(MAKE) $(AM_MAKEFLAGS) check \ + && $(MAKE) $(AM_MAKEFLAGS) install \ + && $(MAKE) $(AM_MAKEFLAGS) installcheck \ + && $(MAKE) $(AM_MAKEFLAGS) uninstall \ + && $(MAKE) $(AM_MAKEFLAGS) distuninstallcheck_dir="$$dc_install_base" \ + distuninstallcheck \ + && chmod -R a-w "$$dc_install_base" \ + && ({ \ + (cd ../.. && umask 077 && mkdir "$$dc_destdir") \ + && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \ + && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \ + && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \ + distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \ + } || { rm -rf "$$dc_destdir"; exit 1; }) \ + && rm -rf "$$dc_destdir" \ + && $(MAKE) $(AM_MAKEFLAGS) dist \ + && rm -rf $(DIST_ARCHIVES) \ + && $(MAKE) $(AM_MAKEFLAGS) distcleancheck + $(am__remove_distdir) + @(echo "$(distdir) archives ready for distribution: "; \ + list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \ + sed -e '1{h;s/./=/g;p;x;}' -e '$${p;x;}' +distuninstallcheck: + @cd $(distuninstallcheck_dir) \ + && test `$(distuninstallcheck_listfiles) | wc -l` -le 1 \ + || { echo "ERROR: files left after uninstall:" ; \ + if test -n "$(DESTDIR)"; then \ + echo " (check DESTDIR support)"; \ + fi ; \ + $(distuninstallcheck_listfiles) ; \ + exit 1; } >&2 +distcleancheck: distclean + @if test '$(srcdir)' = . ; then \ + echo "ERROR: distcleancheck can only run from a VPATH build" ; \ + exit 1 ; \ + fi + @test `$(distcleancheck_listfiles) | wc -l` -eq 0 \ + || { echo "ERROR: files left in build directory after distclean:" ; \ + $(distcleancheck_listfiles) ; \ + exit 1; } >&2 +check-am: all-am +check: check-recursive +all-am: Makefile +installdirs: installdirs-recursive +installdirs-am: +install: install-recursive +install-exec: install-exec-recursive +install-data: install-data-recursive +uninstall: uninstall-recursive + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-recursive +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-recursive + +clean-am: clean-generic mostlyclean-am + +distclean: distclean-recursive + -rm -f $(am__CONFIG_DISTCLEAN_FILES) + -rm -f Makefile +distclean-am: clean-am distclean-generic distclean-hdr distclean-tags + +dvi: dvi-recursive + +dvi-am: + +html: html-recursive + +info: info-recursive + +info-am: + +install-data-am: + +install-exec-am: + +install-info: install-info-recursive + +install-man: + +installcheck-am: + +maintainer-clean: maintainer-clean-recursive + -rm -f $(am__CONFIG_DISTCLEAN_FILES) + -rm -rf $(top_srcdir)/autom4te.cache + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-recursive + +mostlyclean-am: mostlyclean-generic + +pdf: pdf-recursive + +pdf-am: + +ps: ps-recursive + +ps-am: + +uninstall-am: uninstall-info-am + +uninstall-info: uninstall-info-recursive + +.PHONY: $(RECURSIVE_TARGETS) CTAGS GTAGS all all-am am--refresh check \ + check-am clean clean-generic clean-recursive ctags \ + ctags-recursive dist dist-all dist-bzip2 dist-gzip dist-shar \ + dist-tarZ dist-zip distcheck distclean distclean-generic \ + distclean-hdr distclean-recursive distclean-tags \ + distcleancheck distdir distuninstallcheck dvi dvi-am html \ + html-am info info-am install install-am install-data \ + install-data-am install-exec install-exec-am install-info \ + install-info-am install-man install-strip installcheck \ + installcheck-am installdirs installdirs-am maintainer-clean \ + maintainer-clean-generic maintainer-clean-recursive \ + mostlyclean mostlyclean-generic mostlyclean-recursive pdf \ + pdf-am ps ps-am tags tags-recursive uninstall uninstall-am \ + uninstall-info-am + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/rescue/linux/cdrom/yaird-0.0.5/Makefile.am b/rescue/linux/cdrom/yaird-0.0.5/Makefile.am new file mode 100644 index 0000000..8a63a4c --- /dev/null +++ b/rescue/linux/cdrom/yaird-0.0.5/Makefile.am @@ -0,0 +1,31 @@ +# +# Makefile.am -- installation and packaging instructions +# Copyright (C) 2005 Erik van Konijnenburg +# +# 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 +# +# - auxdir contains executables that may be included in the generated +# image +# - perldir contains perl modules to be included by the main program +# + +auxdir = $(pkglibdir)/exec +perldir = $(pkglibdir)/perl + +SUBDIRS = perl templates doc exec + +# not compiled, but must go in the tarball. +EXTRA_DIST = \ + bootstrap.sh diff --git a/rescue/linux/cdrom/yaird-0.0.5/Makefile.in b/rescue/linux/cdrom/yaird-0.0.5/Makefile.in new file mode 100644 index 0000000..71363b1 --- /dev/null +++ b/rescue/linux/cdrom/yaird-0.0.5/Makefile.in @@ -0,0 +1,601 @@ +# Makefile.in generated by automake 1.9.5 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005 Free Software Foundation, Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +# +# Makefile.am -- installation and packaging instructions +# Copyright (C) 2005 Erik van Konijnenburg +# +# 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 +# +# - auxdir contains executables that may be included in the generated +# image +# - perldir contains perl modules to be included by the main program +# +srcdir = @srcdir@ +top_srcdir = @top_srcdir@ +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +top_builddir = . +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +INSTALL = @INSTALL@ +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +subdir = . +DIST_COMMON = README $(am__configure_deps) $(srcdir)/Makefile.am \ + $(srcdir)/Makefile.in $(top_srcdir)/configure \ + $(top_srcdir)/include/config.h.in AUTHORS COPYING ChangeLog \ + INSTALL NEWS TODO depcomp install-sh missing +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/configure.in +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \ + configure.lineno configure.status.lineno +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/include/config.h +CONFIG_CLEAN_FILES = +SOURCES = +DIST_SOURCES = +RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ + html-recursive info-recursive install-data-recursive \ + install-exec-recursive install-info-recursive \ + install-recursive installcheck-recursive installdirs-recursive \ + pdf-recursive ps-recursive uninstall-info-recursive \ + uninstall-recursive +ETAGS = etags +CTAGS = ctags +DIST_SUBDIRS = $(SUBDIRS) +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +distdir = $(PACKAGE)-$(VERSION) +top_distdir = $(distdir) +am__remove_distdir = \ + { test ! -d $(distdir) \ + || { find $(distdir) -type d ! -perm -200 -exec chmod u+w {} ';' \ + && rm -fr $(distdir); }; } +DIST_ARCHIVES = $(distdir).tar.gz +GZIP_ENV = --best +distuninstallcheck_listfiles = find . -type f -print +distcleancheck_listfiles = find . -type f -print +ACLOCAL = @ACLOCAL@ +AMDEP_FALSE = @AMDEP_FALSE@ +AMDEP_TRUE = @AMDEP_TRUE@ +AMTAR = @AMTAR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPPFLAGS = @CPPFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EXEEXT = @EXEEXT@ +INITRD_TEMPLATE = @INITRD_TEMPLATE@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +LDFLAGS = @LDFLAGS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LTLIBOBJS = @LTLIBOBJS@ +MAKEINFO = @MAKEINFO@ +OBJEXT = @OBJEXT@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +PERL = @PERL@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +VERSION = @VERSION@ +XMLTO = @XMLTO@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_STRIP = @ac_ct_STRIP@ +am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ +am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build_alias = @build_alias@ +datadir = @datadir@ +exec_prefix = @exec_prefix@ +host_alias = @host_alias@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +auxdir = $(pkglibdir)/exec +perldir = $(pkglibdir)/perl +SUBDIRS = perl templates doc exec + +# not compiled, but must go in the tarball. +EXTRA_DIST = \ + bootstrap.sh + +all: all-recursive + +.SUFFIXES: +am--refresh: + @: +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + echo ' cd $(srcdir) && $(AUTOMAKE) --gnu '; \ + cd $(srcdir) && $(AUTOMAKE) --gnu \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnu Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + echo ' $(SHELL) ./config.status'; \ + $(SHELL) ./config.status;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + $(SHELL) ./config.status --recheck + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(srcdir) && $(AUTOCONF) +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS) + +include/config.h: include/stamp-h1 + @if test ! -f $@; then \ + rm -f include/stamp-h1; \ + $(MAKE) include/stamp-h1; \ + else :; fi + +include/stamp-h1: $(top_srcdir)/include/config.h.in $(top_builddir)/config.status + @rm -f include/stamp-h1 + cd $(top_builddir) && $(SHELL) ./config.status include/config.h +$(top_srcdir)/include/config.h.in: $(am__configure_deps) + cd $(top_srcdir) && $(AUTOHEADER) + rm -f include/stamp-h1 + touch $@ + +distclean-hdr: + -rm -f include/config.h include/stamp-h1 +uninstall-info-am: + +# This directory's subdirectories are mostly independent; you can cd +# into them and run `make' without going through this Makefile. +# To change the values of `make' variables: instead of editing Makefiles, +# (1) if the variable is set in `config.status', edit `config.status' +# (which will cause the Makefiles to be regenerated when you run `make'); +# (2) otherwise, pass the desired values on the `make' command line. +$(RECURSIVE_TARGETS): + @failcom='exit 1'; \ + for f in x $$MAKEFLAGS; do \ + case $$f in \ + *=* | --[!k]*);; \ + *k*) failcom='fail=yes';; \ + esac; \ + done; \ + dot_seen=no; \ + target=`echo $@ | sed s/-recursive//`; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + dot_seen=yes; \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || eval $$failcom; \ + done; \ + if test "$$dot_seen" = "no"; then \ + $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ + fi; test -z "$$fail" + +mostlyclean-recursive clean-recursive distclean-recursive \ +maintainer-clean-recursive: + @failcom='exit 1'; \ + for f in x $$MAKEFLAGS; do \ + case $$f in \ + *=* | --[!k]*);; \ + *k*) failcom='fail=yes';; \ + esac; \ + done; \ + dot_seen=no; \ + case "$@" in \ + distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ + *) list='$(SUBDIRS)' ;; \ + esac; \ + rev=''; for subdir in $$list; do \ + if test "$$subdir" = "."; then :; else \ + rev="$$subdir $$rev"; \ + fi; \ + done; \ + rev="$$rev ."; \ + target=`echo $@ | sed s/-recursive//`; \ + for subdir in $$rev; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || eval $$failcom; \ + done && test -z "$$fail" +tags-recursive: + list='$(SUBDIRS)'; for subdir in $$list; do \ + test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ + done +ctags-recursive: + list='$(SUBDIRS)'; for subdir in $$list; do \ + test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ + done + +ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + mkid -fID $$unique +tags: TAGS + +TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + here=`pwd`; \ + if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ + include_option=--etags-include; \ + empty_fix=.; \ + else \ + include_option=--include; \ + empty_fix=; \ + fi; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test ! -f $$subdir/TAGS || \ + tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \ + fi; \ + done; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$tags $$unique; \ + fi +ctags: CTAGS +CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + here=`pwd`; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + test -z "$(CTAGS_ARGS)$$tags$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$tags $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && cd $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) $$here + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +distdir: $(DISTFILES) + $(am__remove_distdir) + mkdir $(distdir) + $(mkdir_p) $(distdir)/doc $(distdir)/include + @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ + list='$(DISTFILES)'; for file in $$list; do \ + case $$file in \ + $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ + $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ + esac; \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test "$$dir" != "$$file" && test "$$dir" != "."; then \ + dir="/$$dir"; \ + $(mkdir_p) "$(distdir)$$dir"; \ + else \ + dir=''; \ + fi; \ + if test -d $$d/$$file; then \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + else \ + test -f $(distdir)/$$file \ + || cp -p $$d/$$file $(distdir)/$$file \ + || exit 1; \ + fi; \ + done + list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test -d "$(distdir)/$$subdir" \ + || $(mkdir_p) "$(distdir)/$$subdir" \ + || exit 1; \ + distdir=`$(am__cd) $(distdir) && pwd`; \ + top_distdir=`$(am__cd) $(top_distdir) && pwd`; \ + (cd $$subdir && \ + $(MAKE) $(AM_MAKEFLAGS) \ + top_distdir="$$top_distdir" \ + distdir="$$distdir/$$subdir" \ + distdir) \ + || exit 1; \ + fi; \ + done + -find $(distdir) -type d ! -perm -777 -exec chmod a+rwx {} \; -o \ + ! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \ + ! -type d ! -perm -400 -exec chmod a+r {} \; -o \ + ! -type d ! -perm -444 -exec $(SHELL) $(install_sh) -c -m a+r {} {} \; \ + || chmod -R a+r $(distdir) +dist-gzip: distdir + tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz + $(am__remove_distdir) + +dist-bzip2: distdir + tardir=$(distdir) && $(am__tar) | bzip2 -9 -c >$(distdir).tar.bz2 + $(am__remove_distdir) + +dist-tarZ: distdir + tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z + $(am__remove_distdir) + +dist-shar: distdir + shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz + $(am__remove_distdir) + +dist-zip: distdir + -rm -f $(distdir).zip + zip -rq $(distdir).zip $(distdir) + $(am__remove_distdir) + +dist dist-all: distdir + tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz + $(am__remove_distdir) + +# This target untars the dist file and tries a VPATH configuration. Then +# it guarantees that the distribution is self-contained by making another +# tarfile. +distcheck: dist + case '$(DIST_ARCHIVES)' in \ + *.tar.gz*) \ + GZIP=$(GZIP_ENV) gunzip -c $(distdir).tar.gz | $(am__untar) ;;\ + *.tar.bz2*) \ + bunzip2 -c $(distdir).tar.bz2 | $(am__untar) ;;\ + *.tar.Z*) \ + uncompress -c $(distdir).tar.Z | $(am__untar) ;;\ + *.shar.gz*) \ + GZIP=$(GZIP_ENV) gunzip -c $(distdir).shar.gz | unshar ;;\ + *.zip*) \ + unzip $(distdir).zip ;;\ + esac + chmod -R a-w $(distdir); chmod a+w $(distdir) + mkdir $(distdir)/_build + mkdir $(distdir)/_inst + chmod a-w $(distdir) + dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \ + && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \ + && cd $(distdir)/_build \ + && ../configure --srcdir=.. --prefix="$$dc_install_base" \ + $(DISTCHECK_CONFIGURE_FLAGS) \ + && $(MAKE) $(AM_MAKEFLAGS) \ + && $(MAKE) $(AM_MAKEFLAGS) dvi \ + && $(MAKE) $(AM_MAKEFLAGS) check \ + && $(MAKE) $(AM_MAKEFLAGS) install \ + && $(MAKE) $(AM_MAKEFLAGS) installcheck \ + && $(MAKE) $(AM_MAKEFLAGS) uninstall \ + && $(MAKE) $(AM_MAKEFLAGS) distuninstallcheck_dir="$$dc_install_base" \ + distuninstallcheck \ + && chmod -R a-w "$$dc_install_base" \ + && ({ \ + (cd ../.. && umask 077 && mkdir "$$dc_destdir") \ + && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \ + && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \ + && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \ + distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \ + } || { rm -rf "$$dc_destdir"; exit 1; }) \ + && rm -rf "$$dc_destdir" \ + && $(MAKE) $(AM_MAKEFLAGS) dist \ + && rm -rf $(DIST_ARCHIVES) \ + && $(MAKE) $(AM_MAKEFLAGS) distcleancheck + $(am__remove_distdir) + @(echo "$(distdir) archives ready for distribution: "; \ + list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \ + sed -e '1{h;s/./=/g;p;x;}' -e '$${p;x;}' +distuninstallcheck: + @cd $(distuninstallcheck_dir) \ + && test `$(distuninstallcheck_listfiles) | wc -l` -le 1 \ + || { echo "ERROR: files left after uninstall:" ; \ + if test -n "$(DESTDIR)"; then \ + echo " (check DESTDIR support)"; \ + fi ; \ + $(distuninstallcheck_listfiles) ; \ + exit 1; } >&2 +distcleancheck: distclean + @if test '$(srcdir)' = . ; then \ + echo "ERROR: distcleancheck can only run from a VPATH build" ; \ + exit 1 ; \ + fi + @test `$(distcleancheck_listfiles) | wc -l` -eq 0 \ + || { echo "ERROR: files left in build directory after distclean:" ; \ + $(distcleancheck_listfiles) ; \ + exit 1; } >&2 +check-am: all-am +check: check-recursive +all-am: Makefile +installdirs: installdirs-recursive +installdirs-am: +install: install-recursive +install-exec: install-exec-recursive +install-data: install-data-recursive +uninstall: uninstall-recursive + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-recursive +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-recursive + +clean-am: clean-generic mostlyclean-am + +distclean: distclean-recursive + -rm -f $(am__CONFIG_DISTCLEAN_FILES) + -rm -f Makefile +distclean-am: clean-am distclean-generic distclean-hdr distclean-tags + +dvi: dvi-recursive + +dvi-am: + +html: html-recursive + +info: info-recursive + +info-am: + +install-data-am: + +install-exec-am: + +install-info: install-info-recursive + +install-man: + +installcheck-am: + +maintainer-clean: maintainer-clean-recursive + -rm -f $(am__CONFIG_DISTCLEAN_FILES) + -rm -rf $(top_srcdir)/autom4te.cache + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-recursive + +mostlyclean-am: mostlyclean-generic + +pdf: pdf-recursive + +pdf-am: + +ps: ps-recursive + +ps-am: + +uninstall-am: uninstall-info-am + +uninstall-info: uninstall-info-recursive + +.PHONY: $(RECURSIVE_TARGETS) CTAGS GTAGS all all-am am--refresh check \ + check-am clean clean-generic clean-recursive ctags \ + ctags-recursive dist dist-all dist-bzip2 dist-gzip dist-shar \ + dist-tarZ dist-zip distcheck distclean distclean-generic \ + distclean-hdr distclean-recursive distclean-tags \ + distcleancheck distdir distuninstallcheck dvi dvi-am html \ + html-am info info-am install install-am install-data \ + install-data-am install-exec install-exec-am install-info \ + install-info-am install-man install-strip installcheck \ + installcheck-am installdirs installdirs-am maintainer-clean \ + maintainer-clean-generic maintainer-clean-recursive \ + mostlyclean mostlyclean-generic mostlyclean-recursive pdf \ + pdf-am ps ps-am tags tags-recursive uninstall uninstall-am \ + uninstall-info-am + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/rescue/linux/cdrom/yaird-0.0.5/Makefile.incl b/rescue/linux/cdrom/yaird-0.0.5/Makefile.incl new file mode 100644 index 0000000..f9fed0a --- /dev/null +++ b/rescue/linux/cdrom/yaird-0.0.5/Makefile.incl @@ -0,0 +1,28 @@ +# +# Makefile.incl -- shared defines between makefiles +# Copyright (C) 2005 Erik van Konijnenburg +# +# 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 +# +# - auxdir contains package specific executables that may be included +# in the generated image +# - perldir contains perl modules to be included by the main program +# +# This cannot be simply passed from the master makefile; that would +# be invisible to automake. + +auxdir = $(pkglibdir)/exec +perldir = $(pkglibdir)/perl + diff --git a/rescue/linux/cdrom/yaird-0.0.5/NEWS b/rescue/linux/cdrom/yaird-0.0.5/NEWS new file mode 100644 index 0000000..1184a22 --- /dev/null +++ b/rescue/linux/cdrom/yaird-0.0.5/NEWS @@ -0,0 +1,35 @@ +Version 0.0.5, 2005-03-21 + * change installation directory from /usr/local/share/yaird/ + to /usr/local/lib/yaird/, since there are executables included now. + * add run_init: executable to make the move to the real root + device in initramfs context. + * README: new section on (optional) use of klibc, + new section on replacing mkinitrd during kernel install. + * more reliable shared library detection: works with glibc and + klibc; if other C libraries use shared libraries, an error + message results. + * adapt Debian template to use initramfs rather than initrd. + The old initrd template is available as Debian-initrd. + * add command line option --root=/dev/hdb, to simplify testing. + * allow template to see requested kernel version, + and to copy a complete tree to the image. This makes it + possible to put /lib/modules/2.6.10-smp on the image and do hotplug. + * Documentation: writeup on initramfs, notes on shared libraries. + +Version 0.0.4, 2005-02-23 + * Process kernel command line options: init=, ro, rw. + * Boot into single user mode supported + * Support modules outside /lib/modules + * Support modules with extension other than .ko + * Warn about duplicates in modules.dep + * Generated image now waits for device to become visible in /sys, + and gives error message if it doesn't + * Support 2.6.10 sysfs layout: SCSI now has a + new subdirectory 'target'. + * Warn about unrecognised paths in /sys + * Allow empty lines in /etc/fstab. + * Empty lines in /etc/fstab are valid. + (Patch Goffredo Baroncelli) + +Version 0.0.3, 2005-02-16 + * First public release. diff --git a/rescue/linux/cdrom/yaird-0.0.5/README b/rescue/linux/cdrom/yaird-0.0.5/README new file mode 100644 index 0000000..33512cb --- /dev/null +++ b/rescue/linux/cdrom/yaird-0.0.5/README @@ -0,0 +1,218 @@ + +YAIRD -- Yet Another MkInitRd +============================= + +This is a proof of concept rewrite of mkinitrd, intended to test the +idea that we can get a more accurate picture of the modules needed +to boot a linux system by fully utilizing the information in sysfs. +It comes with templates that make it possible to generate different +initrd images for different distributions. + +Proof of concept means this software is barely tested: it may +produce a working initrd image, or it may eat your disk. This +is a good moment to re-read the "NO WARRANTY" part of the licence, +and decide whether you want to test this software. + + +Installation +============ + +You'll need HTML::Template to run the application; a standard package +under Debian, in Fedora FC3 available via extras. + +Unpack, then configure and install: + + $ ./configure --prefix=$HOME/local --enable-template=Debian + $ make install + +The --enable-template option is required; it picks one of the templates +from the template directory to install. + +If you want to regenerate the html documentation, you need the xmlto +package. + +If you're installing from version control rather than a tarball, +you'll also need to have autmake and autoconf available, and +need to run bootstrap.sh before doing 'configure; make'. + + +Installing with klibc +===================== + +Yaird comes with a small C program to manage the transfer from the initial +root file system to the real root. To avoid the overhead of the GNU +C library, you may want to compile this with klibc. Note however that +this is only effective if every other program that is copied to the +initial root filesystem (such as mount, mknod and a shell) is compiled +in the same manner. + +Recent versions of klibc provide klcc, a wrapper around gcc that makes +it easier to port programs to klibc. Installation is faily simple; +the most important point is to make a symlink to a configured linux +source tree. The SHLIBDIR determines where the shared library version +ends up. If you want to use klibc for programs used early in the +boot process it makes sense to put it on the root file system. + + $ cd klibc-0.207 + $ ln -s /usr/src/linux... linux + $ make bindir=$HOME/local/bin \ + mandir=$HOME/local/man \ + INSTALLDIR=$HOME/local \ + SHLIBDIR=$HOME/local/shlib \ + install + $ + +Once you have klibc, you can configure yaird to make use of it +as follows: + + $ ./configure CFLAGS=-static CC=$HOME/local/bin/klcc \ + --prefix=$HOME/local --enable-template=Debian + ... + $ make install + +The use of CFLAGS=-shared is optional. + + +Using the application +===================== + +To make a new initrd image for the current kernel: + + # yaird --format directory --output initrd.d + +This creates a directory initrd.d to look at or to package +manually to a form suitable for booting. + +To get an image suitable for use under debian: + + # yaird --format cramfs --output /boot/initrd.img + +For Fedora, a cpio file is needed: + + # yaird --format cpio --output /boot/initrd.img + +Note that there is no strong relation between distribution +and image format: nothing stops you from building a template +that uses initramfs and cpio under Debian. However, the template +and the image format do have to match. + +To produce a boot image for another kernel: + + # yaird --format directory --output initrd.d 2.6.10-1-686-smp + +There is also a '--test' option that will produce an overview +of block special files, devices, modules etc that may be helpful +in debugging boot problems. + +If you want the generated image to boot into something other than +the current root, use the --root option. The block device specified +must occur in /etc/fstab to allow yaird to find the required file system +type. + + # yaird --format cramfs --output /boot/tst.img --root /dev/hdb7 + +Use '--help' for an overview of other command line options. + + +Using yaird as a replacement for mkinitrd +========================================= + +If you install a new kernel from your distribution, that means +making a new initial boot image. The postinstall script that +comes with the kernel will normally do this using mkinitrd; +if you want yaird to be used instead, some tweaking is necessary. + +In Debian, there are a lot of configuration options for the kernel +installation, but replacing mkinitrd is not among them, so you'll +have to replace /usr/sbin/mkinitrd with a wrapper around yaird. +The following worked with debian 2.6.10-1-686: + + #!/bin/sh + # + # mkinitrd - emulate mkinitrd with yaird for kernel-image installs. + # + # Copyright (C) 2001-2003 Herbert Xu + # + # 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 + # + # $Id$ + + PROG=mkinitrd-shimmy + outfile='' + + while getopts "d:km:o:r:" flag; do + case $flag in + d) + echo "$PROG: -d unsupported" + exit 1 + ;; + k) + echo "$PROG: -k unsupported" + exit 1 + ;; + m) + # ignore + ;; + o) + outfile="$OPTARG" + ;; + r) + echo "$PROG: -d unsupported" + exit 1 + ;; + *) + echo "$PROG: unknown option $flag" + exit 1 + ;; + esac + done + shift $(($OPTIND - 1)) + + if [ "$outfile" = "" ]; then + echo "$PROG: no output file specified" + exit 1 + fi + if [ $# -gt 1 ]; then + echo "$PROG: extra arguments found" + exit 1 + fi + + # Note that version may be a pathname; + # this is used by the installer for Debian kernel image packages. + VERSION=$1 + [ $# -gt 0 ] || unset VERSION + case $VERSION in + /lib/modules/*/[!/]*) + ;; + /lib/modules/[!/]*) + VERSION=${VERSION#/lib/modules/} + VERSION=${VERSION%%/*} + ;; + esac + + case $VERSION in + */*) + echo $PROG: $VERSION is not a valid kernel version >&2 + exit 1 + ;; + esac + + VERSION="${VERSION-$(uname -r)}" + + exec $HOME/local/sbin/yaird \ + --verbose --format cpio --output "$outfile" "$VERSION" + +For Fedora, you'll have to modify /sbin/new-kernel-package; +not tested yet. diff --git a/rescue/linux/cdrom/yaird-0.0.5/TODO b/rescue/linux/cdrom/yaird-0.0.5/TODO new file mode 100644 index 0000000..9e79b90 --- /dev/null +++ b/rescue/linux/cdrom/yaird-0.0.5/TODO @@ -0,0 +1,12 @@ +Todo: + - support modprobe.conf + - support dm_crypt + - support loopback devices as root + - add manual page + - kernel command line processing: root=, + - support multipath + - define option to load extra modules? + - read config file + - ext2 migration, still necessary? + - software suspend support + - add debian packaging, spec file? diff --git a/rescue/linux/cdrom/yaird-0.0.5/aclocal.m4 b/rescue/linux/cdrom/yaird-0.0.5/aclocal.m4 new file mode 100644 index 0000000..74de4a1 --- /dev/null +++ b/rescue/linux/cdrom/yaird-0.0.5/aclocal.m4 @@ -0,0 +1,862 @@ +# generated automatically by aclocal 1.9.5 -*- Autoconf -*- + +# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, +# 2005 Free Software Foundation, Inc. +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +# Copyright (C) 2002, 2003, 2005 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# AM_AUTOMAKE_VERSION(VERSION) +# ---------------------------- +# Automake X.Y traces this macro to ensure aclocal.m4 has been +# generated from the m4 files accompanying Automake X.Y. +AC_DEFUN([AM_AUTOMAKE_VERSION], [am__api_version="1.9"]) + +# AM_SET_CURRENT_AUTOMAKE_VERSION +# ------------------------------- +# Call AM_AUTOMAKE_VERSION so it can be traced. +# This function is AC_REQUIREd by AC_INIT_AUTOMAKE. +AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION], + [AM_AUTOMAKE_VERSION([1.9.5])]) + +# AM_AUX_DIR_EXPAND -*- Autoconf -*- + +# Copyright (C) 2001, 2003, 2005 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets +# $ac_aux_dir to `$srcdir/foo'. In other projects, it is set to +# `$srcdir', `$srcdir/..', or `$srcdir/../..'. +# +# Of course, Automake must honor this variable whenever it calls a +# tool from the auxiliary directory. The problem is that $srcdir (and +# therefore $ac_aux_dir as well) can be either absolute or relative, +# depending on how configure is run. This is pretty annoying, since +# it makes $ac_aux_dir quite unusable in subdirectories: in the top +# source directory, any form will work fine, but in subdirectories a +# relative path needs to be adjusted first. +# +# $ac_aux_dir/missing +# fails when called from a subdirectory if $ac_aux_dir is relative +# $top_srcdir/$ac_aux_dir/missing +# fails if $ac_aux_dir is absolute, +# fails when called from a subdirectory in a VPATH build with +# a relative $ac_aux_dir +# +# The reason of the latter failure is that $top_srcdir and $ac_aux_dir +# are both prefixed by $srcdir. In an in-source build this is usually +# harmless because $srcdir is `.', but things will broke when you +# start a VPATH build or use an absolute $srcdir. +# +# So we could use something similar to $top_srcdir/$ac_aux_dir/missing, +# iff we strip the leading $srcdir from $ac_aux_dir. That would be: +# am_aux_dir='\$(top_srcdir)/'`expr "$ac_aux_dir" : "$srcdir//*\(.*\)"` +# and then we would define $MISSING as +# MISSING="\${SHELL} $am_aux_dir/missing" +# This will work as long as MISSING is not called from configure, because +# unfortunately $(top_srcdir) has no meaning in configure. +# However there are other variables, like CC, which are often used in +# configure, and could therefore not use this "fixed" $ac_aux_dir. +# +# Another solution, used here, is to always expand $ac_aux_dir to an +# absolute PATH. The drawback is that using absolute paths prevent a +# configured tree to be moved without reconfiguration. + +AC_DEFUN([AM_AUX_DIR_EXPAND], +[dnl Rely on autoconf to set up CDPATH properly. +AC_PREREQ([2.50])dnl +# expand $ac_aux_dir to an absolute path +am_aux_dir=`cd $ac_aux_dir && pwd` +]) + +# AM_CONDITIONAL -*- Autoconf -*- + +# Copyright (C) 1997, 2000, 2001, 2003, 2004, 2005 +# Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# serial 7 + +# AM_CONDITIONAL(NAME, SHELL-CONDITION) +# ------------------------------------- +# Define a conditional. +AC_DEFUN([AM_CONDITIONAL], +[AC_PREREQ(2.52)dnl + ifelse([$1], [TRUE], [AC_FATAL([$0: invalid condition: $1])], + [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl +AC_SUBST([$1_TRUE]) +AC_SUBST([$1_FALSE]) +if $2; then + $1_TRUE= + $1_FALSE='#' +else + $1_TRUE='#' + $1_FALSE= +fi +AC_CONFIG_COMMANDS_PRE( +[if test -z "${$1_TRUE}" && test -z "${$1_FALSE}"; then + AC_MSG_ERROR([[conditional "$1" was never defined. +Usually this means the macro was only invoked conditionally.]]) +fi])]) + + +# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005 +# Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# serial 8 + +# There are a few dirty hacks below to avoid letting `AC_PROG_CC' be +# written in clear, in which case automake, when reading aclocal.m4, +# will think it sees a *use*, and therefore will trigger all it's +# C support machinery. Also note that it means that autoscan, seeing +# CC etc. in the Makefile, will ask for an AC_PROG_CC use... + + +# _AM_DEPENDENCIES(NAME) +# ---------------------- +# See how the compiler implements dependency checking. +# NAME is "CC", "CXX", "GCJ", or "OBJC". +# We try a few techniques and use that to set a single cache variable. +# +# We don't AC_REQUIRE the corresponding AC_PROG_CC since the latter was +# modified to invoke _AM_DEPENDENCIES(CC); we would have a circular +# dependency, and given that the user is not expected to run this macro, +# just rely on AC_PROG_CC. +AC_DEFUN([_AM_DEPENDENCIES], +[AC_REQUIRE([AM_SET_DEPDIR])dnl +AC_REQUIRE([AM_OUTPUT_DEPENDENCY_COMMANDS])dnl +AC_REQUIRE([AM_MAKE_INCLUDE])dnl +AC_REQUIRE([AM_DEP_TRACK])dnl + +ifelse([$1], CC, [depcc="$CC" am_compiler_list=], + [$1], CXX, [depcc="$CXX" am_compiler_list=], + [$1], OBJC, [depcc="$OBJC" am_compiler_list='gcc3 gcc'], + [$1], GCJ, [depcc="$GCJ" am_compiler_list='gcc3 gcc'], + [depcc="$$1" am_compiler_list=]) + +AC_CACHE_CHECK([dependency style of $depcc], + [am_cv_$1_dependencies_compiler_type], +[if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then + # We make a subdir and do the tests there. Otherwise we can end up + # making bogus files that we don't know about and never remove. For + # instance it was reported that on HP-UX the gcc test will end up + # making a dummy file named `D' -- because `-MD' means `put the output + # in D'. + mkdir conftest.dir + # Copy depcomp to subdir because otherwise we won't find it if we're + # using a relative directory. + cp "$am_depcomp" conftest.dir + cd conftest.dir + # We will build objects and dependencies in a subdirectory because + # it helps to detect inapplicable dependency modes. For instance + # both Tru64's cc and ICC support -MD to output dependencies as a + # side effect of compilation, but ICC will put the dependencies in + # the current directory while Tru64 will put them in the object + # directory. + mkdir sub + + am_cv_$1_dependencies_compiler_type=none + if test "$am_compiler_list" = ""; then + am_compiler_list=`sed -n ['s/^#*\([a-zA-Z0-9]*\))$/\1/p'] < ./depcomp` + fi + for depmode in $am_compiler_list; do + # Setup a source with many dependencies, because some compilers + # like to wrap large dependency lists on column 80 (with \), and + # we should not choose a depcomp mode which is confused by this. + # + # We need to recreate these files for each test, as the compiler may + # overwrite some of them when testing with obscure command lines. + # This happens at least with the AIX C compiler. + : > sub/conftest.c + for i in 1 2 3 4 5 6; do + echo '#include "conftst'$i'.h"' >> sub/conftest.c + # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with + # Solaris 8's {/usr,}/bin/sh. + touch sub/conftst$i.h + done + echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf + + case $depmode in + nosideeffect) + # after this tag, mechanisms are not by side-effect, so they'll + # only be used when explicitly requested + if test "x$enable_dependency_tracking" = xyes; then + continue + else + break + fi + ;; + none) break ;; + esac + # We check with `-c' and `-o' for the sake of the "dashmstdout" + # mode. It turns out that the SunPro C++ compiler does not properly + # handle `-M -o', and we need to detect this. + if depmode=$depmode \ + source=sub/conftest.c object=sub/conftest.${OBJEXT-o} \ + depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ + $SHELL ./depcomp $depcc -c -o sub/conftest.${OBJEXT-o} sub/conftest.c \ + >/dev/null 2>conftest.err && + grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && + grep sub/conftest.${OBJEXT-o} sub/conftest.Po > /dev/null 2>&1 && + ${MAKE-make} -s -f confmf > /dev/null 2>&1; then + # icc doesn't choke on unknown options, it will just issue warnings + # or remarks (even with -Werror). So we grep stderr for any message + # that says an option was ignored or not supported. + # When given -MP, icc 7.0 and 7.1 complain thusly: + # icc: Command line warning: ignoring option '-M'; no argument required + # The diagnosis changed in icc 8.0: + # icc: Command line remark: option '-MP' not supported + if (grep 'ignoring option' conftest.err || + grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else + am_cv_$1_dependencies_compiler_type=$depmode + break + fi + fi + done + + cd .. + rm -rf conftest.dir +else + am_cv_$1_dependencies_compiler_type=none +fi +]) +AC_SUBST([$1DEPMODE], [depmode=$am_cv_$1_dependencies_compiler_type]) +AM_CONDITIONAL([am__fastdep$1], [ + test "x$enable_dependency_tracking" != xno \ + && test "$am_cv_$1_dependencies_compiler_type" = gcc3]) +]) + + +# AM_SET_DEPDIR +# ------------- +# Choose a directory name for dependency files. +# This macro is AC_REQUIREd in _AM_DEPENDENCIES +AC_DEFUN([AM_SET_DEPDIR], +[AC_REQUIRE([AM_SET_LEADING_DOT])dnl +AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])dnl +]) + + +# AM_DEP_TRACK +# ------------ +AC_DEFUN([AM_DEP_TRACK], +[AC_ARG_ENABLE(dependency-tracking, +[ --disable-dependency-tracking speeds up one-time build + --enable-dependency-tracking do not reject slow dependency extractors]) +if test "x$enable_dependency_tracking" != xno; then + am_depcomp="$ac_aux_dir/depcomp" + AMDEPBACKSLASH='\' +fi +AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno]) +AC_SUBST([AMDEPBACKSLASH]) +]) + +# Generate code to set up dependency tracking. -*- Autoconf -*- + +# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005 +# Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +#serial 3 + +# _AM_OUTPUT_DEPENDENCY_COMMANDS +# ------------------------------ +AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS], +[for mf in $CONFIG_FILES; do + # Strip MF so we end up with the name of the file. + mf=`echo "$mf" | sed -e 's/:.*$//'` + # Check whether this is an Automake generated Makefile or not. + # We used to match only the files named `Makefile.in', but + # some people rename them; so instead we look at the file content. + # Grep'ing the first line is not enough: some people post-process + # each Makefile.in and add a new line on top of each file to say so. + # So let's grep whole file. + if grep '^#.*generated by automake' $mf > /dev/null 2>&1; then + dirpart=`AS_DIRNAME("$mf")` + else + continue + fi + # Extract the definition of DEPDIR, am__include, and am__quote + # from the Makefile without running `make'. + DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` + test -z "$DEPDIR" && continue + am__include=`sed -n 's/^am__include = //p' < "$mf"` + test -z "am__include" && continue + am__quote=`sed -n 's/^am__quote = //p' < "$mf"` + # When using ansi2knr, U may be empty or an underscore; expand it + U=`sed -n 's/^U = //p' < "$mf"` + # Find all dependency output files, they are included files with + # $(DEPDIR) in their names. We invoke sed twice because it is the + # simplest approach to changing $(DEPDIR) to its actual value in the + # expansion. + for file in `sed -n " + s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ + sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do + # Make sure the directory exists. + test -f "$dirpart/$file" && continue + fdir=`AS_DIRNAME(["$file"])` + AS_MKDIR_P([$dirpart/$fdir]) + # echo "creating $dirpart/$file" + echo '# dummy' > "$dirpart/$file" + done +done +])# _AM_OUTPUT_DEPENDENCY_COMMANDS + + +# AM_OUTPUT_DEPENDENCY_COMMANDS +# ----------------------------- +# This macro should only be invoked once -- use via AC_REQUIRE. +# +# This code is only required when automatic dependency tracking +# is enabled. FIXME. This creates each `.P' file that we will +# need in order to bootstrap the dependency handling code. +AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS], +[AC_CONFIG_COMMANDS([depfiles], + [test x"$AMDEP_TRUE" != x"" || _AM_OUTPUT_DEPENDENCY_COMMANDS], + [AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"]) +]) + +# Copyright (C) 1996, 1997, 2000, 2001, 2003, 2005 +# Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# serial 8 + +# AM_CONFIG_HEADER is obsolete. It has been replaced by AC_CONFIG_HEADERS. +AU_DEFUN([AM_CONFIG_HEADER], [AC_CONFIG_HEADERS($@)]) + +# Do all the work for Automake. -*- Autoconf -*- + +# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005 +# Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# serial 12 + +# This macro actually does too much. Some checks are only needed if +# your package does certain things. But this isn't really a big deal. + +# AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE]) +# AM_INIT_AUTOMAKE([OPTIONS]) +# ----------------------------------------------- +# The call with PACKAGE and VERSION arguments is the old style +# call (pre autoconf-2.50), which is being phased out. PACKAGE +# and VERSION should now be passed to AC_INIT and removed from +# the call to AM_INIT_AUTOMAKE. +# We support both call styles for the transition. After +# the next Automake release, Autoconf can make the AC_INIT +# arguments mandatory, and then we can depend on a new Autoconf +# release and drop the old call support. +AC_DEFUN([AM_INIT_AUTOMAKE], +[AC_PREREQ([2.58])dnl +dnl Autoconf wants to disallow AM_ names. We explicitly allow +dnl the ones we care about. +m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl +AC_REQUIRE([AM_SET_CURRENT_AUTOMAKE_VERSION])dnl +AC_REQUIRE([AC_PROG_INSTALL])dnl +# test to see if srcdir already configured +if test "`cd $srcdir && pwd`" != "`pwd`" && + test -f $srcdir/config.status; then + AC_MSG_ERROR([source directory already configured; run "make distclean" there first]) +fi + +# test whether we have cygpath +if test -z "$CYGPATH_W"; then + if (cygpath --version) >/dev/null 2>/dev/null; then + CYGPATH_W='cygpath -w' + else + CYGPATH_W=echo + fi +fi +AC_SUBST([CYGPATH_W]) + +# Define the identity of the package. +dnl Distinguish between old-style and new-style calls. +m4_ifval([$2], +[m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl + AC_SUBST([PACKAGE], [$1])dnl + AC_SUBST([VERSION], [$2])], +[_AM_SET_OPTIONS([$1])dnl + AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])dnl + AC_SUBST([VERSION], ['AC_PACKAGE_VERSION'])])dnl + +_AM_IF_OPTION([no-define],, +[AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE", [Name of package]) + AC_DEFINE_UNQUOTED(VERSION, "$VERSION", [Version number of package])])dnl + +# Some tools Automake needs. +AC_REQUIRE([AM_SANITY_CHECK])dnl +AC_REQUIRE([AC_ARG_PROGRAM])dnl +AM_MISSING_PROG(ACLOCAL, aclocal-${am__api_version}) +AM_MISSING_PROG(AUTOCONF, autoconf) +AM_MISSING_PROG(AUTOMAKE, automake-${am__api_version}) +AM_MISSING_PROG(AUTOHEADER, autoheader) +AM_MISSING_PROG(MAKEINFO, makeinfo) +AM_PROG_INSTALL_SH +AM_PROG_INSTALL_STRIP +AC_REQUIRE([AM_PROG_MKDIR_P])dnl +# We need awk for the "check" target. The system "awk" is bad on +# some platforms. +AC_REQUIRE([AC_PROG_AWK])dnl +AC_REQUIRE([AC_PROG_MAKE_SET])dnl +AC_REQUIRE([AM_SET_LEADING_DOT])dnl +_AM_IF_OPTION([tar-ustar], [_AM_PROG_TAR([ustar])], + [_AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])], + [_AM_PROG_TAR([v7])])]) +_AM_IF_OPTION([no-dependencies],, +[AC_PROVIDE_IFELSE([AC_PROG_CC], + [_AM_DEPENDENCIES(CC)], + [define([AC_PROG_CC], + defn([AC_PROG_CC])[_AM_DEPENDENCIES(CC)])])dnl +AC_PROVIDE_IFELSE([AC_PROG_CXX], + [_AM_DEPENDENCIES(CXX)], + [define([AC_PROG_CXX], + defn([AC_PROG_CXX])[_AM_DEPENDENCIES(CXX)])])dnl +]) +]) + + +# When config.status generates a header, we must update the stamp-h file. +# This file resides in the same directory as the config header +# that is generated. The stamp files are numbered to have different names. + +# Autoconf calls _AC_AM_CONFIG_HEADER_HOOK (when defined) in the +# loop where config.status creates the headers, so we can generate +# our stamp files there. +AC_DEFUN([_AC_AM_CONFIG_HEADER_HOOK], +[# Compute $1's index in $config_headers. +_am_stamp_count=1 +for _am_header in $config_headers :; do + case $_am_header in + $1 | $1:* ) + break ;; + * ) + _am_stamp_count=`expr $_am_stamp_count + 1` ;; + esac +done +echo "timestamp for $1" >`AS_DIRNAME([$1])`/stamp-h[]$_am_stamp_count]) + +# Copyright (C) 2001, 2003, 2005 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# AM_PROG_INSTALL_SH +# ------------------ +# Define $install_sh. +AC_DEFUN([AM_PROG_INSTALL_SH], +[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl +install_sh=${install_sh-"$am_aux_dir/install-sh"} +AC_SUBST(install_sh)]) + +# Copyright (C) 2003, 2005 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# serial 2 + +# Check whether the underlying file-system supports filenames +# with a leading dot. For instance MS-DOS doesn't. +AC_DEFUN([AM_SET_LEADING_DOT], +[rm -rf .tst 2>/dev/null +mkdir .tst 2>/dev/null +if test -d .tst; then + am__leading_dot=. +else + am__leading_dot=_ +fi +rmdir .tst 2>/dev/null +AC_SUBST([am__leading_dot])]) + +# Check to see how 'make' treats includes. -*- Autoconf -*- + +# Copyright (C) 2001, 2002, 2003, 2005 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# serial 3 + +# AM_MAKE_INCLUDE() +# ----------------- +# Check to see how make treats includes. +AC_DEFUN([AM_MAKE_INCLUDE], +[am_make=${MAKE-make} +cat > confinc << 'END' +am__doit: + @echo done +.PHONY: am__doit +END +# If we don't find an include directive, just comment out the code. +AC_MSG_CHECKING([for style of include used by $am_make]) +am__include="#" +am__quote= +_am_result=none +# First try GNU make style include. +echo "include confinc" > confmf +# We grep out `Entering directory' and `Leaving directory' +# messages which can occur if `w' ends up in MAKEFLAGS. +# In particular we don't look at `^make:' because GNU make might +# be invoked under some other name (usually "gmake"), in which +# case it prints its new name instead of `make'. +if test "`$am_make -s -f confmf 2> /dev/null | grep -v 'ing directory'`" = "done"; then + am__include=include + am__quote= + _am_result=GNU +fi +# Now try BSD make style include. +if test "$am__include" = "#"; then + echo '.include "confinc"' > confmf + if test "`$am_make -s -f confmf 2> /dev/null`" = "done"; then + am__include=.include + am__quote="\"" + _am_result=BSD + fi +fi +AC_SUBST([am__include]) +AC_SUBST([am__quote]) +AC_MSG_RESULT([$_am_result]) +rm -f confinc confmf +]) + +# Fake the existence of programs that GNU maintainers use. -*- Autoconf -*- + +# Copyright (C) 1997, 1999, 2000, 2001, 2003, 2005 +# Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# serial 4 + +# AM_MISSING_PROG(NAME, PROGRAM) +# ------------------------------ +AC_DEFUN([AM_MISSING_PROG], +[AC_REQUIRE([AM_MISSING_HAS_RUN]) +$1=${$1-"${am_missing_run}$2"} +AC_SUBST($1)]) + + +# AM_MISSING_HAS_RUN +# ------------------ +# Define MISSING if not defined so far and test if it supports --run. +# If it does, set am_missing_run to use it, otherwise, to nothing. +AC_DEFUN([AM_MISSING_HAS_RUN], +[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl +test x"${MISSING+set}" = xset || MISSING="\${SHELL} $am_aux_dir/missing" +# Use eval to expand $SHELL +if eval "$MISSING --run true"; then + am_missing_run="$MISSING --run " +else + am_missing_run= + AC_MSG_WARN([`missing' script is too old or missing]) +fi +]) + +# Copyright (C) 2003, 2004, 2005 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# AM_PROG_MKDIR_P +# --------------- +# Check whether `mkdir -p' is supported, fallback to mkinstalldirs otherwise. +# +# Automake 1.8 used `mkdir -m 0755 -p --' to ensure that directories +# created by `make install' are always world readable, even if the +# installer happens to have an overly restrictive umask (e.g. 077). +# This was a mistake. There are at least two reasons why we must not +# use `-m 0755': +# - it causes special bits like SGID to be ignored, +# - it may be too restrictive (some setups expect 775 directories). +# +# Do not use -m 0755 and let people choose whatever they expect by +# setting umask. +# +# We cannot accept any implementation of `mkdir' that recognizes `-p'. +# Some implementations (such as Solaris 8's) are not thread-safe: if a +# parallel make tries to run `mkdir -p a/b' and `mkdir -p a/c' +# concurrently, both version can detect that a/ is missing, but only +# one can create it and the other will error out. Consequently we +# restrict ourselves to GNU make (using the --version option ensures +# this.) +AC_DEFUN([AM_PROG_MKDIR_P], +[if mkdir -p --version . >/dev/null 2>&1 && test ! -d ./--version; then + # We used to keeping the `.' as first argument, in order to + # allow $(mkdir_p) to be used without argument. As in + # $(mkdir_p) $(somedir) + # where $(somedir) is conditionally defined. However this is wrong + # for two reasons: + # 1. if the package is installed by a user who cannot write `.' + # make install will fail, + # 2. the above comment should most certainly read + # $(mkdir_p) $(DESTDIR)$(somedir) + # so it does not work when $(somedir) is undefined and + # $(DESTDIR) is not. + # To support the latter case, we have to write + # test -z "$(somedir)" || $(mkdir_p) $(DESTDIR)$(somedir), + # so the `.' trick is pointless. + mkdir_p='mkdir -p --' +else + # On NextStep and OpenStep, the `mkdir' command does not + # recognize any option. It will interpret all options as + # directories to create, and then abort because `.' already + # exists. + for d in ./-p ./--version; + do + test -d $d && rmdir $d + done + # $(mkinstalldirs) is defined by Automake if mkinstalldirs exists. + if test -f "$ac_aux_dir/mkinstalldirs"; then + mkdir_p='$(mkinstalldirs)' + else + mkdir_p='$(install_sh) -d' + fi +fi +AC_SUBST([mkdir_p])]) + +# Helper functions for option handling. -*- Autoconf -*- + +# Copyright (C) 2001, 2002, 2003, 2005 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# serial 3 + +# _AM_MANGLE_OPTION(NAME) +# ----------------------- +AC_DEFUN([_AM_MANGLE_OPTION], +[[_AM_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])]) + +# _AM_SET_OPTION(NAME) +# ------------------------------ +# Set option NAME. Presently that only means defining a flag for this option. +AC_DEFUN([_AM_SET_OPTION], +[m4_define(_AM_MANGLE_OPTION([$1]), 1)]) + +# _AM_SET_OPTIONS(OPTIONS) +# ---------------------------------- +# OPTIONS is a space-separated list of Automake options. +AC_DEFUN([_AM_SET_OPTIONS], +[AC_FOREACH([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])]) + +# _AM_IF_OPTION(OPTION, IF-SET, [IF-NOT-SET]) +# ------------------------------------------- +# Execute IF-SET if OPTION is set, IF-NOT-SET otherwise. +AC_DEFUN([_AM_IF_OPTION], +[m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])]) + +# Check to make sure that the build environment is sane. -*- Autoconf -*- + +# Copyright (C) 1996, 1997, 2000, 2001, 2003, 2005 +# Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# serial 4 + +# AM_SANITY_CHECK +# --------------- +AC_DEFUN([AM_SANITY_CHECK], +[AC_MSG_CHECKING([whether build environment is sane]) +# Just in case +sleep 1 +echo timestamp > conftest.file +# Do `set' in a subshell so we don't clobber the current shell's +# arguments. Must try -L first in case configure is actually a +# symlink; some systems play weird games with the mod time of symlinks +# (eg FreeBSD returns the mod time of the symlink's containing +# directory). +if ( + set X `ls -Lt $srcdir/configure conftest.file 2> /dev/null` + if test "$[*]" = "X"; then + # -L didn't work. + set X `ls -t $srcdir/configure conftest.file` + fi + rm -f conftest.file + if test "$[*]" != "X $srcdir/configure conftest.file" \ + && test "$[*]" != "X conftest.file $srcdir/configure"; then + + # If neither matched, then we have a broken ls. This can happen + # if, for instance, CONFIG_SHELL is bash and it inherits a + # broken ls alias from the environment. This has actually + # happened. Such a system could not be considered "sane". + AC_MSG_ERROR([ls -t appears to fail. Make sure there is not a broken +alias in your environment]) + fi + + test "$[2]" = conftest.file + ) +then + # Ok. + : +else + AC_MSG_ERROR([newly created file is older than distributed files! +Check your system clock]) +fi +AC_MSG_RESULT(yes)]) + +# Copyright (C) 2001, 2003, 2005 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# AM_PROG_INSTALL_STRIP +# --------------------- +# One issue with vendor `install' (even GNU) is that you can't +# specify the program used to strip binaries. This is especially +# annoying in cross-compiling environments, where the build's strip +# is unlikely to handle the host's binaries. +# Fortunately install-sh will honor a STRIPPROG variable, so we +# always use install-sh in `make install-strip', and initialize +# STRIPPROG with the value of the STRIP variable (set by the user). +AC_DEFUN([AM_PROG_INSTALL_STRIP], +[AC_REQUIRE([AM_PROG_INSTALL_SH])dnl +# Installed binaries are usually stripped using `strip' when the user +# run `make install-strip'. However `strip' might not be the right +# tool to use in cross-compilation environments, therefore Automake +# will honor the `STRIP' environment variable to overrule this program. +dnl Don't test for $cross_compiling = yes, because it might be `maybe'. +if test "$cross_compiling" != no; then + AC_CHECK_TOOL([STRIP], [strip], :) +fi +INSTALL_STRIP_PROGRAM="\${SHELL} \$(install_sh) -c -s" +AC_SUBST([INSTALL_STRIP_PROGRAM])]) + +# Check how to create a tarball. -*- Autoconf -*- + +# Copyright (C) 2004, 2005 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# serial 2 + +# _AM_PROG_TAR(FORMAT) +# -------------------- +# Check how to create a tarball in format FORMAT. +# FORMAT should be one of `v7', `ustar', or `pax'. +# +# Substitute a variable $(am__tar) that is a command +# writing to stdout a FORMAT-tarball containing the directory +# $tardir. +# tardir=directory && $(am__tar) > result.tar +# +# Substitute a variable $(am__untar) that extract such +# a tarball read from stdin. +# $(am__untar) < result.tar +AC_DEFUN([_AM_PROG_TAR], +[# Always define AMTAR for backward compatibility. +AM_MISSING_PROG([AMTAR], [tar]) +m4_if([$1], [v7], + [am__tar='${AMTAR} chof - "$$tardir"'; am__untar='${AMTAR} xf -'], + [m4_case([$1], [ustar],, [pax],, + [m4_fatal([Unknown tar format])]) +AC_MSG_CHECKING([how to create a $1 tar archive]) +# Loop over all known methods to create a tar archive until one works. +_am_tools='gnutar m4_if([$1], [ustar], [plaintar]) pax cpio none' +_am_tools=${am_cv_prog_tar_$1-$_am_tools} +# Do not fold the above two line into one, because Tru64 sh and +# Solaris sh will not grok spaces in the rhs of `-'. +for _am_tool in $_am_tools +do + case $_am_tool in + gnutar) + for _am_tar in tar gnutar gtar; + do + AM_RUN_LOG([$_am_tar --version]) && break + done + am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"' + am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"' + am__untar="$_am_tar -xf -" + ;; + plaintar) + # Must skip GNU tar: if it does not support --format= it doesn't create + # ustar tarball either. + (tar --version) >/dev/null 2>&1 && continue + am__tar='tar chf - "$$tardir"' + am__tar_='tar chf - "$tardir"' + am__untar='tar xf -' + ;; + pax) + am__tar='pax -L -x $1 -w "$$tardir"' + am__tar_='pax -L -x $1 -w "$tardir"' + am__untar='pax -r' + ;; + cpio) + am__tar='find "$$tardir" -print | cpio -o -H $1 -L' + am__tar_='find "$tardir" -print | cpio -o -H $1 -L' + am__untar='cpio -i -H $1 -d' + ;; + none) + am__tar=false + am__tar_=false + am__untar=false + ;; + esac + + # If the value was cached, stop now. We just wanted to have am__tar + # and am__untar set. + test -n "${am_cv_prog_tar_$1}" && break + + # tar/untar a dummy directory, and stop if the command works + rm -rf conftest.dir + mkdir conftest.dir + echo GrepMe > conftest.dir/file + AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar]) + rm -rf conftest.dir + if test -s conftest.tar; then + AM_RUN_LOG([$am__untar /dev/null 2>&1 && break + fi +done +rm -rf conftest.dir + +AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool]) +AC_MSG_RESULT([$am_cv_prog_tar_$1])]) +AC_SUBST([am__tar]) +AC_SUBST([am__untar]) +]) # _AM_PROG_TAR + diff --git a/rescue/linux/cdrom/yaird-0.0.5/bootstrap.sh b/rescue/linux/cdrom/yaird-0.0.5/bootstrap.sh new file mode 100644 index 0000000..f250918 --- /dev/null +++ b/rescue/linux/cdrom/yaird-0.0.5/bootstrap.sh @@ -0,0 +1,34 @@ +# +# Bootstrap.sh +# +# Use this if you got yaird from version control and need +# to generate the configure scripts that come with the tarball. +# +# See http://sources.redhat.com/autobook/. +# See http://www.gnu.org/software/autoconf/manual/autoconf-2.57/ +# +# V=--verbose +# Q=--quiet +# set -x + +# to build makefiles for shared libraries +# libtoolize --force || exit 1 + +# copy definitions from /usr/share to ./aclocal.m4 +# for macros that are used in configure.in +aclocal $V || exit 1 + +# use aclocal.m4 to create a configure file from configure.in +autoconf $V || exit 1 + +# Build config.h.in, needed if you have C code. +autoheader || exit 1 + +# transform makefile.am to makefile.in; +# copy helpful scripts such as install-sh from /usr/share to here. +automake $V --add-missing || exit 1 + +# At this point, the tree can be tarred, transplanted to the target +# system and installed with: +# configure --prefix=/home/santaclaus/testing --enable-template=Debian +# make install diff --git a/rescue/linux/cdrom/yaird-0.0.5/config.log b/rescue/linux/cdrom/yaird-0.0.5/config.log new file mode 100644 index 0000000..d065009 --- /dev/null +++ b/rescue/linux/cdrom/yaird-0.0.5/config.log @@ -0,0 +1,281 @@ +This file contains any messages produced by compilers while +running configure, to aid debugging if configure makes a mistake. + +It was created by configure, which was +generated by GNU Autoconf 2.59. Invocation command line was + + $ ./configure --enable-template=Fedora + +## --------- ## +## Platform. ## +## --------- ## + +hostname = rufus.sibbald.com +uname -m = i686 +uname -r = 2.6.10-1.770_FC3smp +uname -s = Linux +uname -v = #1 SMP Thu Feb 24 14:20:06 EST 2005 + +/usr/bin/uname -p = unknown +/bin/uname -X = unknown + +/bin/arch = i686 +/usr/bin/arch -k = unknown +/usr/convex/getsysinfo = unknown +hostinfo = unknown +/bin/machine = unknown +/usr/bin/oslevel = unknown +/bin/universe = unknown + +PATH: /usr/kerberos/bin +PATH: /usr/local/bin +PATH: /usr/bin +PATH: /bin +PATH: /usr/X11R6/bin +PATH: /usr/sbin +PATH: /sbin +PATH: /home/kern/bin +PATH: /usr/sbin +PATH: /sbin + + +## ----------- ## +## Core tests. ## +## ----------- ## + +configure:1300: checking for a BSD-compatible install +configure:1355: result: /usr/bin/install -c +configure:1366: checking whether build environment is sane +configure:1409: result: yes +configure:1474: checking for gawk +configure:1490: found /usr/bin/gawk +configure:1500: result: gawk +configure:1510: checking whether make sets $(MAKE) +configure:1530: result: yes +configure:1753: checking for perl +configure:1771: found /usr/bin/perl +configure:1783: result: /usr/bin/perl +configure:1836: checking for gcc +configure:1852: found /usr/bin/gcc +configure:1862: result: gcc +configure:2106: checking for C compiler version +configure:2109: gcc --version &5 +gcc (GCC) 3.4.2 20041017 (Red Hat 3.4.2-6.fc3) +Copyright (C) 2004 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. + +configure:2112: $? = 0 +configure:2114: gcc -v &5 +Reading specs from /usr/lib/gcc/i386-redhat-linux/3.4.2/specs +Configured with: ../configure --prefix=/usr --mandir=/usr/share/man --infodir=/usr/share/info --enable-shared --enable-threads=posix --disable-checking --with-system-zlib --enable-__cxa_atexit --disable-libunwind-exceptions --enable-java-awt=gtk --host=i386-redhat-linux +Thread model: posix +gcc version 3.4.2 20041017 (Red Hat 3.4.2-6.fc3) +configure:2117: $? = 0 +configure:2119: gcc -V &5 +gcc: `-V' option must have argument +configure:2122: $? = 1 +configure:2145: checking for C compiler default output file name +configure:2148: gcc conftest.c >&5 +configure:2151: $? = 0 +configure:2197: result: a.out +configure:2202: checking whether the C compiler works +configure:2208: ./a.out +configure:2211: $? = 0 +configure:2228: result: yes +configure:2235: checking whether we are cross compiling +configure:2237: result: no +configure:2240: checking for suffix of executables +configure:2242: gcc -o conftest conftest.c >&5 +configure:2245: $? = 0 +configure:2270: result: +configure:2276: checking for suffix of object files +configure:2297: gcc -c conftest.c >&5 +configure:2300: $? = 0 +configure:2322: result: o +configure:2326: checking whether we are using the GNU C compiler +configure:2350: gcc -c conftest.c >&5 +configure:2356: $? = 0 +configure:2359: test -z || test ! -s conftest.err +configure:2362: $? = 0 +configure:2365: test -s conftest.o +configure:2368: $? = 0 +configure:2381: result: yes +configure:2387: checking whether gcc accepts -g +configure:2408: gcc -c -g conftest.c >&5 +configure:2414: $? = 0 +configure:2417: test -z || test ! -s conftest.err +configure:2420: $? = 0 +configure:2423: test -s conftest.o +configure:2426: $? = 0 +configure:2437: result: yes +configure:2454: checking for gcc option to accept ANSI C +configure:2524: gcc -c -g -O2 conftest.c >&5 +configure:2530: $? = 0 +configure:2533: test -z || test ! -s conftest.err +configure:2536: $? = 0 +configure:2539: test -s conftest.o +configure:2542: $? = 0 +configure:2560: result: none needed +configure:2578: gcc -c -g -O2 conftest.c >&5 +conftest.c:2: error: syntax error before "me" +configure:2584: $? = 1 +configure: failed program was: +| #ifndef __cplusplus +| choke me +| #endif +configure:2725: checking for style of include used by make +configure:2753: result: GNU +configure:2781: checking dependency style of gcc +configure:2871: result: gcc3 +configure:2894: checking for xmlto +configure:2912: found /usr/bin/xmlto +configure:2925: result: /usr/bin/xmlto +configure:3053: creating ./config.status + +## ---------------------- ## +## Running config.status. ## +## ---------------------- ## + +This file was extended by config.status, which was +generated by GNU Autoconf 2.59. Invocation command line was + + CONFIG_FILES = + CONFIG_HEADERS = + CONFIG_LINKS = + CONFIG_COMMANDS = + $ ./config.status + +on rufus.sibbald.com + +config.status:734: creating Makefile +config.status:734: creating templates/Makefile +config.status:734: creating perl/Makefile +config.status:734: creating doc/Makefile +config.status:734: creating exec/Makefile +config.status:734: creating doc/yaird.xml +config.status:800: creating include/config.h +config.status:1066: executing depfiles commands + +## ---------------- ## +## Cache variables. ## +## ---------------- ## + +ac_cv_c_compiler_gnu=yes +ac_cv_env_CC_set= +ac_cv_env_CC_value= +ac_cv_env_CFLAGS_set= +ac_cv_env_CFLAGS_value= +ac_cv_env_CPPFLAGS_set= +ac_cv_env_CPPFLAGS_value= +ac_cv_env_LDFLAGS_set= +ac_cv_env_LDFLAGS_value= +ac_cv_env_build_alias_set= +ac_cv_env_build_alias_value= +ac_cv_env_host_alias_set= +ac_cv_env_host_alias_value= +ac_cv_env_target_alias_set= +ac_cv_env_target_alias_value= +ac_cv_exeext= +ac_cv_objext=o +ac_cv_path_PERL=/usr/bin/perl +ac_cv_path_XMLTO=/usr/bin/xmlto +ac_cv_path_install='/usr/bin/install -c' +ac_cv_prog_AWK=gawk +ac_cv_prog_ac_ct_CC=gcc +ac_cv_prog_cc_g=yes +ac_cv_prog_cc_stdc= +ac_cv_prog_make_make_set=yes +am_cv_CC_dependencies_compiler_type=gcc3 + +## ----------------- ## +## Output variables. ## +## ----------------- ## + +ACLOCAL='${SHELL} /home/kern/bacula/k/rescue/linux/cdrom/yaird-0.0.5/missing --run aclocal-1.9' +AMDEPBACKSLASH='\' +AMDEP_FALSE='#' +AMDEP_TRUE='' +AMTAR='${SHELL} /home/kern/bacula/k/rescue/linux/cdrom/yaird-0.0.5/missing --run tar' +AUTOCONF='${SHELL} /home/kern/bacula/k/rescue/linux/cdrom/yaird-0.0.5/missing --run autoconf' +AUTOHEADER='${SHELL} /home/kern/bacula/k/rescue/linux/cdrom/yaird-0.0.5/missing --run autoheader' +AUTOMAKE='${SHELL} /home/kern/bacula/k/rescue/linux/cdrom/yaird-0.0.5/missing --run automake-1.9' +AWK='gawk' +CC='gcc' +CCDEPMODE='depmode=gcc3' +CFLAGS='-g -O2' +CPPFLAGS='' +CYGPATH_W='echo' +DEFS='-DHAVE_CONFIG_H' +DEPDIR='.deps' +ECHO_C='' +ECHO_N='-n' +ECHO_T='' +EXEEXT='' +INITRD_TEMPLATE='Fedora' +INSTALL_DATA='${INSTALL} -m 644' +INSTALL_PROGRAM='${INSTALL}' +INSTALL_SCRIPT='${INSTALL}' +INSTALL_STRIP_PROGRAM='${SHELL} $(install_sh) -c -s' +LDFLAGS='' +LIBOBJS='' +LIBS='' +LTLIBOBJS='' +MAKEINFO='${SHELL} /home/kern/bacula/k/rescue/linux/cdrom/yaird-0.0.5/missing --run makeinfo' +OBJEXT='o' +PACKAGE='yaird' +PACKAGE_BUGREPORT='' +PACKAGE_NAME='' +PACKAGE_STRING='' +PACKAGE_TARNAME='' +PACKAGE_VERSION='' +PATH_SEPARATOR=':' +PERL='/usr/bin/perl' +SET_MAKE='' +SHELL='/bin/sh' +STRIP='' +VERSION='0.0.5' +XMLTO='/usr/bin/xmlto' +ac_ct_CC='gcc' +ac_ct_STRIP='' +am__fastdepCC_FALSE='#' +am__fastdepCC_TRUE='' +am__include='include' +am__leading_dot='.' +am__quote='' +am__tar='${AMTAR} chof - "$$tardir"' +am__untar='${AMTAR} xf -' +bindir='${exec_prefix}/bin' +build_alias='' +datadir='${prefix}/share' +exec_prefix='${prefix}' +host_alias='' +includedir='${prefix}/include' +infodir='${prefix}/info' +install_sh='/home/kern/bacula/k/rescue/linux/cdrom/yaird-0.0.5/install-sh' +libdir='${exec_prefix}/lib' +libexecdir='${exec_prefix}/libexec' +localstatedir='${prefix}/var' +mandir='${prefix}/man' +mkdir_p='mkdir -p --' +oldincludedir='/usr/include' +prefix='/usr/local' +program_transform_name='s,x,x,' +sbindir='${exec_prefix}/sbin' +sharedstatedir='${prefix}/com' +sysconfdir='${prefix}/etc' +target_alias='' + +## ----------- ## +## confdefs.h. ## +## ----------- ## + +#define PACKAGE "yaird" +#define PACKAGE_BUGREPORT "" +#define PACKAGE_NAME "" +#define PACKAGE_STRING "" +#define PACKAGE_TARNAME "" +#define PACKAGE_VERSION "" +#define VERSION "0.0.5" + +configure: exit 0 diff --git a/rescue/linux/cdrom/yaird-0.0.5/config.status b/rescue/linux/cdrom/yaird-0.0.5/config.status new file mode 100755 index 0000000..afa833b --- /dev/null +++ b/rescue/linux/cdrom/yaird-0.0.5/config.status @@ -0,0 +1,1157 @@ +#! /bin/sh +# Generated by configure. +# Run this file to recreate the current configuration. +# Compiler output produced by configure, useful for debugging +# configure, is in config.log if it exists. + +debug=false +ac_cs_recheck=false +ac_cs_silent=false +SHELL=${CONFIG_SHELL-/bin/sh} +## --------------------- ## +## M4sh Initialization. ## +## --------------------- ## + +# Be Bourne compatible +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then + emulate sh + NULLCMD=: + # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' +elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then + set -o posix +fi +DUALCASE=1; export DUALCASE # for MKS sh + +# Support unset when possible. +if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then + as_unset=unset +else + as_unset=false +fi + + +# Work around bugs in pre-3.0 UWIN ksh. +$as_unset ENV MAIL MAILPATH +PS1='$ ' +PS2='> ' +PS4='+ ' + +# NLS nuisances. +for as_var in \ + LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \ + LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \ + LC_TELEPHONE LC_TIME +do + if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then + eval $as_var=C; export $as_var + else + $as_unset $as_var + fi +done + +# Required to use basename. +if expr a : '\(a\)' >/dev/null 2>&1; then + as_expr=expr +else + as_expr=false +fi + +if (basename /) >/dev/null 2>&1 && test "X`basename / 2>&1`" = "X/"; then + as_basename=basename +else + as_basename=false +fi + + +# Name of the executable. +as_me=`$as_basename "$0" || +$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ + X"$0" : 'X\(//\)$' \| \ + X"$0" : 'X\(/\)$' \| \ + . : '\(.\)' 2>/dev/null || +echo X/"$0" | + sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/; q; } + /^X\/\(\/\/\)$/{ s//\1/; q; } + /^X\/\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + + +# PATH needs CR, and LINENO needs CR and PATH. +# Avoid depending upon Character Ranges. +as_cr_letters='abcdefghijklmnopqrstuvwxyz' +as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' +as_cr_Letters=$as_cr_letters$as_cr_LETTERS +as_cr_digits='0123456789' +as_cr_alnum=$as_cr_Letters$as_cr_digits + +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + echo "#! /bin/sh" >conf$$.sh + echo "exit 0" >>conf$$.sh + chmod +x conf$$.sh + if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then + PATH_SEPARATOR=';' + else + PATH_SEPARATOR=: + fi + rm -f conf$$.sh +fi + + + as_lineno_1=$LINENO + as_lineno_2=$LINENO + as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` + test "x$as_lineno_1" != "x$as_lineno_2" && + test "x$as_lineno_3" = "x$as_lineno_2" || { + # Find who we are. Look in the path if we contain no path at all + # relative or not. + case $0 in + *[\\/]* ) as_myself=$0 ;; + *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break +done + + ;; + esac + # We did not find ourselves, most probably we were run as `sh COMMAND' + # in which case we are not to be found in the path. + if test "x$as_myself" = x; then + as_myself=$0 + fi + if test ! -f "$as_myself"; then + { { echo "$as_me:$LINENO: error: cannot find myself; rerun with an absolute path" >&5 +echo "$as_me: error: cannot find myself; rerun with an absolute path" >&2;} + { (exit 1); exit 1; }; } + fi + case $CONFIG_SHELL in + '') + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for as_base in sh bash ksh sh5; do + case $as_dir in + /*) + if ("$as_dir/$as_base" -c ' + as_lineno_1=$LINENO + as_lineno_2=$LINENO + as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` + test "x$as_lineno_1" != "x$as_lineno_2" && + test "x$as_lineno_3" = "x$as_lineno_2" ') 2>/dev/null; then + $as_unset BASH_ENV || test "${BASH_ENV+set}" != set || { BASH_ENV=; export BASH_ENV; } + $as_unset ENV || test "${ENV+set}" != set || { ENV=; export ENV; } + CONFIG_SHELL=$as_dir/$as_base + export CONFIG_SHELL + exec "$CONFIG_SHELL" "$0" ${1+"$@"} + fi;; + esac + done +done +;; + esac + + # Create $as_me.lineno as a copy of $as_myself, but with $LINENO + # uniformly replaced by the line number. The first 'sed' inserts a + # line-number line before each line; the second 'sed' does the real + # work. The second script uses 'N' to pair each line-number line + # with the numbered line, and appends trailing '-' during + # substitution so that $LINENO is not a special case at line end. + # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the + # second 'sed' script. Blame Lee E. McMahon for sed's syntax. :-) + sed '=' <$as_myself | + sed ' + N + s,$,-, + : loop + s,^\(['$as_cr_digits']*\)\(.*\)[$]LINENO\([^'$as_cr_alnum'_]\),\1\2\1\3, + t loop + s,-$,, + s,^['$as_cr_digits']*\n,, + ' >$as_me.lineno && + chmod +x $as_me.lineno || + { { echo "$as_me:$LINENO: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&5 +echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2;} + { (exit 1); exit 1; }; } + + # Don't try to exec as it changes $[0], causing all sort of problems + # (the dirname of $[0] is not the place where we might find the + # original and so on. Autoconf is especially sensible to this). + . ./$as_me.lineno + # Exit status is that of the last command. + exit +} + + +case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in + *c*,-n*) ECHO_N= ECHO_C=' +' ECHO_T=' ' ;; + *c*,* ) ECHO_N=-n ECHO_C= ECHO_T= ;; + *) ECHO_N= ECHO_C='\c' ECHO_T= ;; +esac + +if expr a : '\(a\)' >/dev/null 2>&1; then + as_expr=expr +else + as_expr=false +fi + +rm -f conf$$ conf$$.exe conf$$.file +echo >conf$$.file +if ln -s conf$$.file conf$$ 2>/dev/null; then + # We could just check for DJGPP; but this test a) works b) is more generic + # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04). + if test -f conf$$.exe; then + # Don't use ln at all; we don't have any links + as_ln_s='cp -p' + else + as_ln_s='ln -s' + fi +elif ln conf$$.file conf$$ 2>/dev/null; then + as_ln_s=ln +else + as_ln_s='cp -p' +fi +rm -f conf$$ conf$$.exe conf$$.file + +if mkdir -p . 2>/dev/null; then + as_mkdir_p=: +else + test -d ./-p && rmdir ./-p + as_mkdir_p=false +fi + +as_executable_p="test -f" + +# Sed expression to map a string onto a valid CPP name. +as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" + +# Sed expression to map a string onto a valid variable name. +as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" + + +# IFS +# We need space, tab and new line, in precisely that order. +as_nl=' +' +IFS=" $as_nl" + +# CDPATH. +$as_unset CDPATH + +exec 6>&1 + +# Open the log real soon, to keep \$[0] and so on meaningful, and to +# report actual input values of CONFIG_FILES etc. instead of their +# values after options handling. Logging --version etc. is OK. +exec 5>>config.log +{ + echo + sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX +## Running $as_me. ## +_ASBOX +} >&5 +cat >&5 <<_CSEOF + +This file was extended by $as_me, which was +generated by GNU Autoconf 2.59. Invocation command line was + + CONFIG_FILES = $CONFIG_FILES + CONFIG_HEADERS = $CONFIG_HEADERS + CONFIG_LINKS = $CONFIG_LINKS + CONFIG_COMMANDS = $CONFIG_COMMANDS + $ $0 $@ + +_CSEOF +echo "on `(hostname || uname -n) 2>/dev/null | sed 1q`" >&5 +echo >&5 +config_files=" Makefile templates/Makefile perl/Makefile doc/Makefile exec/Makefile doc/yaird.xml" +config_headers=" include/config.h" +config_commands=" depfiles" + +ac_cs_usage="\ +\`$as_me' instantiates files from templates according to the +current configuration. + +Usage: $0 [OPTIONS] [FILE]... + + -h, --help print this help, then exit + -V, --version print version number, then exit + -q, --quiet do not print progress messages + -d, --debug don't remove temporary files + --recheck update $as_me by reconfiguring in the same conditions + --file=FILE[:TEMPLATE] + instantiate the configuration file FILE + --header=FILE[:TEMPLATE] + instantiate the configuration header FILE + +Configuration files: +$config_files + +Configuration headers: +$config_headers + +Configuration commands: +$config_commands + +Report bugs to ." +ac_cs_version="\ +config.status +configured by ./configure, generated by GNU Autoconf 2.59, + with options \"'--enable-template=Fedora'\" + +Copyright (C) 2003 Free Software Foundation, Inc. +This config.status script is free software; the Free Software Foundation +gives unlimited permission to copy, distribute and modify it." +srcdir=. +INSTALL="/usr/bin/install -c" +# If no file are specified by the user, then we need to provide default +# value. By we need to know if files were specified by the user. +ac_need_defaults=: +while test $# != 0 +do + case $1 in + --*=*) + ac_option=`expr "x$1" : 'x\([^=]*\)='` + ac_optarg=`expr "x$1" : 'x[^=]*=\(.*\)'` + ac_shift=: + ;; + -*) + ac_option=$1 + ac_optarg=$2 + ac_shift=shift + ;; + *) # This is not an option, so the user has probably given explicit + # arguments. + ac_option=$1 + ac_need_defaults=false;; + esac + + case $ac_option in + # Handling of the options. + -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) + ac_cs_recheck=: ;; + --version | --vers* | -V ) + echo "$ac_cs_version"; exit 0 ;; + --he | --h) + # Conflict between --help and --header + { { echo "$as_me:$LINENO: error: ambiguous option: $1 +Try \`$0 --help' for more information." >&5 +echo "$as_me: error: ambiguous option: $1 +Try \`$0 --help' for more information." >&2;} + { (exit 1); exit 1; }; };; + --help | --hel | -h ) + echo "$ac_cs_usage"; exit 0 ;; + --debug | --d* | -d ) + debug=: ;; + --file | --fil | --fi | --f ) + $ac_shift + CONFIG_FILES="$CONFIG_FILES $ac_optarg" + ac_need_defaults=false;; + --header | --heade | --head | --hea ) + $ac_shift + CONFIG_HEADERS="$CONFIG_HEADERS $ac_optarg" + ac_need_defaults=false;; + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil | --si | --s) + ac_cs_silent=: ;; + + # This is an error. + -*) { { echo "$as_me:$LINENO: error: unrecognized option: $1 +Try \`$0 --help' for more information." >&5 +echo "$as_me: error: unrecognized option: $1 +Try \`$0 --help' for more information." >&2;} + { (exit 1); exit 1; }; } ;; + + *) ac_config_targets="$ac_config_targets $1" ;; + + esac + shift +done + +ac_configure_extra_args= + +if $ac_cs_silent; then + exec 6>/dev/null + ac_configure_extra_args="$ac_configure_extra_args --silent" +fi + +if $ac_cs_recheck; then + echo "running /bin/sh ./configure " '--enable-template=Fedora' $ac_configure_extra_args " --no-create --no-recursion" >&6 + exec /bin/sh ./configure '--enable-template=Fedora' $ac_configure_extra_args --no-create --no-recursion +fi + +# +# INIT-COMMANDS section. +# + +AMDEP_TRUE="" ac_aux_dir="." + +for ac_config_target in $ac_config_targets +do + case "$ac_config_target" in + # Handling of arguments. + "Makefile" ) CONFIG_FILES="$CONFIG_FILES Makefile" ;; + "templates/Makefile" ) CONFIG_FILES="$CONFIG_FILES templates/Makefile" ;; + "perl/Makefile" ) CONFIG_FILES="$CONFIG_FILES perl/Makefile" ;; + "doc/Makefile" ) CONFIG_FILES="$CONFIG_FILES doc/Makefile" ;; + "exec/Makefile" ) CONFIG_FILES="$CONFIG_FILES exec/Makefile" ;; + "doc/yaird.xml" ) CONFIG_FILES="$CONFIG_FILES doc/yaird.xml" ;; + "depfiles" ) CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;; + "include/config.h" ) CONFIG_HEADERS="$CONFIG_HEADERS include/config.h" ;; + *) { { echo "$as_me:$LINENO: error: invalid argument: $ac_config_target" >&5 +echo "$as_me: error: invalid argument: $ac_config_target" >&2;} + { (exit 1); exit 1; }; };; + esac +done + +# If the user did not use the arguments to specify the items to instantiate, +# then the envvar interface is used. Set only those that are not. +# We use the long form for the default assignment because of an extremely +# bizarre bug on SunOS 4.1.3. +if $ac_need_defaults; then + test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files + test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers + test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands +fi + +# Have a temporary directory for convenience. Make it in the build tree +# simply because there is no reason to put it here, and in addition, +# creating and moving files from /tmp can sometimes cause problems. +# Create a temporary directory, and hook for its removal unless debugging. +$debug || +{ + trap 'exit_status=$?; rm -rf $tmp && exit $exit_status' 0 + trap '{ (exit 1); exit 1; }' 1 2 13 15 +} + +# Create a (secure) tmp directory for tmp files. + +{ + tmp=`(umask 077 && mktemp -d -q "./confstatXXXXXX") 2>/dev/null` && + test -n "$tmp" && test -d "$tmp" +} || +{ + tmp=./confstat$$-$RANDOM + (umask 077 && mkdir $tmp) +} || +{ + echo "$me: cannot create a temporary directory in ." >&2 + { (exit 1); exit 1; } +} + + +# +# CONFIG_FILES section. +# + +# No need to generate the scripts if there are no CONFIG_FILES. +# This happens for instance when ./config.status config.h +if test -n "$CONFIG_FILES"; then + # Protect against being on the right side of a sed subst in config.status. + sed 's/,@/@@/; s/@,/@@/; s/,;t t$/@;t t/; /@;t t$/s/[\\&,]/\\&/g; + s/@@/,@/; s/@@/@,/; s/@;t t$/,;t t/' >$tmp/subs.sed <<\CEOF +s,@SHELL@,/bin/sh,;t t +s,@PATH_SEPARATOR@,:,;t t +s,@PACKAGE_NAME@,,;t t +s,@PACKAGE_TARNAME@,,;t t +s,@PACKAGE_VERSION@,,;t t +s,@PACKAGE_STRING@,,;t t +s,@PACKAGE_BUGREPORT@,,;t t +s,@exec_prefix@,${prefix},;t t +s,@prefix@,/usr/local,;t t +s,@program_transform_name@,s,x,x,,;t t +s,@bindir@,${exec_prefix}/bin,;t t +s,@sbindir@,${exec_prefix}/sbin,;t t +s,@libexecdir@,${exec_prefix}/libexec,;t t +s,@datadir@,${prefix}/share,;t t +s,@sysconfdir@,${prefix}/etc,;t t +s,@sharedstatedir@,${prefix}/com,;t t +s,@localstatedir@,${prefix}/var,;t t +s,@libdir@,${exec_prefix}/lib,;t t +s,@includedir@,${prefix}/include,;t t +s,@oldincludedir@,/usr/include,;t t +s,@infodir@,${prefix}/info,;t t +s,@mandir@,${prefix}/man,;t t +s,@build_alias@,,;t t +s,@host_alias@,,;t t +s,@target_alias@,,;t t +s,@DEFS@,-DHAVE_CONFIG_H,;t t +s,@ECHO_C@,,;t t +s,@ECHO_N@,-n,;t t +s,@ECHO_T@,,;t t +s,@LIBS@,,;t t +s,@INSTALL_PROGRAM@,${INSTALL},;t t +s,@INSTALL_SCRIPT@,${INSTALL},;t t +s,@INSTALL_DATA@,${INSTALL} -m 644,;t t +s,@CYGPATH_W@,echo,;t t +s,@PACKAGE@,yaird,;t t +s,@VERSION@,0.0.5,;t t +s,@ACLOCAL@,${SHELL} /home/kern/bacula/k/rescue/linux/cdrom/yaird-0.0.5/missing --run aclocal-1.9,;t t +s,@AUTOCONF@,${SHELL} /home/kern/bacula/k/rescue/linux/cdrom/yaird-0.0.5/missing --run autoconf,;t t +s,@AUTOMAKE@,${SHELL} /home/kern/bacula/k/rescue/linux/cdrom/yaird-0.0.5/missing --run automake-1.9,;t t +s,@AUTOHEADER@,${SHELL} /home/kern/bacula/k/rescue/linux/cdrom/yaird-0.0.5/missing --run autoheader,;t t +s,@MAKEINFO@,${SHELL} /home/kern/bacula/k/rescue/linux/cdrom/yaird-0.0.5/missing --run makeinfo,;t t +s,@install_sh@,/home/kern/bacula/k/rescue/linux/cdrom/yaird-0.0.5/install-sh,;t t +s,@STRIP@,,;t t +s,@ac_ct_STRIP@,,;t t +s,@INSTALL_STRIP_PROGRAM@,${SHELL} $(install_sh) -c -s,;t t +s,@mkdir_p@,mkdir -p --,;t t +s,@AWK@,gawk,;t t +s,@SET_MAKE@,,;t t +s,@am__leading_dot@,.,;t t +s,@AMTAR@,${SHELL} /home/kern/bacula/k/rescue/linux/cdrom/yaird-0.0.5/missing --run tar,;t t +s,@am__tar@,${AMTAR} chof - "$$tardir",;t t +s,@am__untar@,${AMTAR} xf -,;t t +s,@INITRD_TEMPLATE@,Fedora,;t t +s,@PERL@,/usr/bin/perl,;t t +s,@CC@,gcc,;t t +s,@CFLAGS@,-g -O2,;t t +s,@LDFLAGS@,,;t t +s,@CPPFLAGS@,,;t t +s,@ac_ct_CC@,gcc,;t t +s,@EXEEXT@,,;t t +s,@OBJEXT@,o,;t t +s,@DEPDIR@,.deps,;t t +s,@am__include@,include,;t t +s,@am__quote@,,;t t +s,@AMDEP_TRUE@,,;t t +s,@AMDEP_FALSE@,#,;t t +s,@AMDEPBACKSLASH@,\,;t t +s,@CCDEPMODE@,depmode=gcc3,;t t +s,@am__fastdepCC_TRUE@,,;t t +s,@am__fastdepCC_FALSE@,#,;t t +s,@XMLTO@,/usr/bin/xmlto,;t t +s,@LIBOBJS@,,;t t +s,@LTLIBOBJS@,,;t t +CEOF + + # Split the substitutions into bite-sized pieces for seds with + # small command number limits, like on Digital OSF/1 and HP-UX. + ac_max_sed_lines=48 + ac_sed_frag=1 # Number of current file. + ac_beg=1 # First line for current file. + ac_end=$ac_max_sed_lines # Line after last line for current file. + ac_more_lines=: + ac_sed_cmds= + while $ac_more_lines; do + if test $ac_beg -gt 1; then + sed "1,${ac_beg}d; ${ac_end}q" $tmp/subs.sed >$tmp/subs.frag + else + sed "${ac_end}q" $tmp/subs.sed >$tmp/subs.frag + fi + if test ! -s $tmp/subs.frag; then + ac_more_lines=false + else + # The purpose of the label and of the branching condition is to + # speed up the sed processing (if there are no `@' at all, there + # is no need to browse any of the substitutions). + # These are the two extra sed commands mentioned above. + (echo ':t + /@[a-zA-Z_][a-zA-Z_0-9]*@/!b' && cat $tmp/subs.frag) >$tmp/subs-$ac_sed_frag.sed + if test -z "$ac_sed_cmds"; then + ac_sed_cmds="sed -f $tmp/subs-$ac_sed_frag.sed" + else + ac_sed_cmds="$ac_sed_cmds | sed -f $tmp/subs-$ac_sed_frag.sed" + fi + ac_sed_frag=`expr $ac_sed_frag + 1` + ac_beg=$ac_end + ac_end=`expr $ac_end + $ac_max_sed_lines` + fi + done + if test -z "$ac_sed_cmds"; then + ac_sed_cmds=cat + fi +fi # test -n "$CONFIG_FILES" + +for ac_file in : $CONFIG_FILES; do test "x$ac_file" = x: && continue + # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in". + case $ac_file in + - | *:- | *:-:* ) # input from stdin + cat >$tmp/stdin + ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` + ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; + *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` + ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; + * ) ac_file_in=$ac_file.in ;; + esac + + # Compute @srcdir@, @top_srcdir@, and @INSTALL@ for subdirectories. + ac_dir=`(dirname "$ac_file") 2>/dev/null || +$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$ac_file" : 'X\(//\)[^/]' \| \ + X"$ac_file" : 'X\(//\)$' \| \ + X"$ac_file" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$ac_file" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + { if $as_mkdir_p; then + mkdir -p "$ac_dir" + else + as_dir="$ac_dir" + as_dirs= + while test ! -d "$as_dir"; do + as_dirs="$as_dir $as_dirs" + as_dir=`(dirname "$as_dir") 2>/dev/null || +$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_dir" : 'X\(//\)[^/]' \| \ + X"$as_dir" : 'X\(//\)$' \| \ + X"$as_dir" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$as_dir" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + done + test ! -n "$as_dirs" || mkdir $as_dirs + fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5 +echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;} + { (exit 1); exit 1; }; }; } + + ac_builddir=. + +if test "$ac_dir" != .; then + ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` + # A "../" for each directory in $ac_dir_suffix. + ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'` +else + ac_dir_suffix= ac_top_builddir= +fi + +case $srcdir in + .) # No --srcdir option. We are building in place. + ac_srcdir=. + if test -z "$ac_top_builddir"; then + ac_top_srcdir=. + else + ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'` + fi ;; + [\\/]* | ?:[\\/]* ) # Absolute path. + ac_srcdir=$srcdir$ac_dir_suffix; + ac_top_srcdir=$srcdir ;; + *) # Relative path. + ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix + ac_top_srcdir=$ac_top_builddir$srcdir ;; +esac + +# Do not use `cd foo && pwd` to compute absolute paths, because +# the directories may not exist. +case `pwd` in +.) ac_abs_builddir="$ac_dir";; +*) + case "$ac_dir" in + .) ac_abs_builddir=`pwd`;; + [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";; + *) ac_abs_builddir=`pwd`/"$ac_dir";; + esac;; +esac +case $ac_abs_builddir in +.) ac_abs_top_builddir=${ac_top_builddir}.;; +*) + case ${ac_top_builddir}. in + .) ac_abs_top_builddir=$ac_abs_builddir;; + [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;; + *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;; + esac;; +esac +case $ac_abs_builddir in +.) ac_abs_srcdir=$ac_srcdir;; +*) + case $ac_srcdir in + .) ac_abs_srcdir=$ac_abs_builddir;; + [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;; + *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;; + esac;; +esac +case $ac_abs_builddir in +.) ac_abs_top_srcdir=$ac_top_srcdir;; +*) + case $ac_top_srcdir in + .) ac_abs_top_srcdir=$ac_abs_builddir;; + [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;; + *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;; + esac;; +esac + + + case $INSTALL in + [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; + *) ac_INSTALL=$ac_top_builddir$INSTALL ;; + esac + + # Let's still pretend it is `configure' which instantiates (i.e., don't + # use $as_me), people would be surprised to read: + # /* config.h. Generated by config.status. */ + if test x"$ac_file" = x-; then + configure_input= + else + configure_input="$ac_file. " + fi + configure_input=$configure_input"Generated from `echo $ac_file_in | + sed 's,.*/,,'` by configure." + + # First look for the input files in the build tree, otherwise in the + # src tree. + ac_file_inputs=`IFS=: + for f in $ac_file_in; do + case $f in + -) echo $tmp/stdin ;; + [\\/$]*) + # Absolute (can't be DOS-style, as IFS=:) + test -f "$f" || { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 +echo "$as_me: error: cannot find input file: $f" >&2;} + { (exit 1); exit 1; }; } + echo "$f";; + *) # Relative + if test -f "$f"; then + # Build tree + echo "$f" + elif test -f "$srcdir/$f"; then + # Source tree + echo "$srcdir/$f" + else + # /dev/null tree + { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 +echo "$as_me: error: cannot find input file: $f" >&2;} + { (exit 1); exit 1; }; } + fi;; + esac + done` || { (exit 1); exit 1; } + + if test x"$ac_file" != x-; then + { echo "$as_me:$LINENO: creating $ac_file" >&5 +echo "$as_me: creating $ac_file" >&6;} + rm -f "$ac_file" + fi + sed "/^[ ]*VPATH[ ]*=/{ +s/:*\$(srcdir):*/:/; +s/:*\${srcdir}:*/:/; +s/:*@srcdir@:*/:/; +s/^\([^=]*=[ ]*\):*/\1/; +s/:*$//; +s/^[^=]*=[ ]*$//; +} + +:t +/@[a-zA-Z_][a-zA-Z_0-9]*@/!b +s,@configure_input@,$configure_input,;t t +s,@srcdir@,$ac_srcdir,;t t +s,@abs_srcdir@,$ac_abs_srcdir,;t t +s,@top_srcdir@,$ac_top_srcdir,;t t +s,@abs_top_srcdir@,$ac_abs_top_srcdir,;t t +s,@builddir@,$ac_builddir,;t t +s,@abs_builddir@,$ac_abs_builddir,;t t +s,@top_builddir@,$ac_top_builddir,;t t +s,@abs_top_builddir@,$ac_abs_top_builddir,;t t +s,@INSTALL@,$ac_INSTALL,;t t +" $ac_file_inputs | (eval "$ac_sed_cmds") >$tmp/out + rm -f $tmp/stdin + if test x"$ac_file" != x-; then + mv $tmp/out $ac_file + else + cat $tmp/out + rm -f $tmp/out + fi + +done + +# +# CONFIG_HEADER section. +# + +# These sed commands are passed to sed as "A NAME B NAME C VALUE D", where +# NAME is the cpp macro being defined and VALUE is the value it is being given. +# +# ac_d sets the value in "#define NAME VALUE" lines. +ac_dA='s,^\([ ]*\)#\([ ]*define[ ][ ]*\)' +ac_dB='[ ].*$,\1#\2' +ac_dC=' ' +ac_dD=',;t' +# ac_u turns "#undef NAME" without trailing blanks into "#define NAME VALUE". +ac_uA='s,^\([ ]*\)#\([ ]*\)undef\([ ][ ]*\)' +ac_uB='$,\1#\2define\3' +ac_uC=' ' +ac_uD=',;t' + +for ac_file in : $CONFIG_HEADERS; do test "x$ac_file" = x: && continue + # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in". + case $ac_file in + - | *:- | *:-:* ) # input from stdin + cat >$tmp/stdin + ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` + ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; + *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` + ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; + * ) ac_file_in=$ac_file.in ;; + esac + + test x"$ac_file" != x- && { echo "$as_me:$LINENO: creating $ac_file" >&5 +echo "$as_me: creating $ac_file" >&6;} + + # First look for the input files in the build tree, otherwise in the + # src tree. + ac_file_inputs=`IFS=: + for f in $ac_file_in; do + case $f in + -) echo $tmp/stdin ;; + [\\/$]*) + # Absolute (can't be DOS-style, as IFS=:) + test -f "$f" || { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 +echo "$as_me: error: cannot find input file: $f" >&2;} + { (exit 1); exit 1; }; } + # Do quote $f, to prevent DOS paths from being IFS'd. + echo "$f";; + *) # Relative + if test -f "$f"; then + # Build tree + echo "$f" + elif test -f "$srcdir/$f"; then + # Source tree + echo "$srcdir/$f" + else + # /dev/null tree + { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 +echo "$as_me: error: cannot find input file: $f" >&2;} + { (exit 1); exit 1; }; } + fi;; + esac + done` || { (exit 1); exit 1; } + # Remove the trailing spaces. + sed 's/[ ]*$//' $ac_file_inputs >$tmp/in + + # Handle all the #define templates only if necessary. + if grep "^[ ]*#[ ]*define" $tmp/in >/dev/null; then + # If there are no defines, we may have an empty if/fi + : + cat >$tmp/defines.sed <$tmp/out + rm -f $tmp/in + mv $tmp/out $tmp/in + + fi # grep + + # Handle all the #undef templates + cat >$tmp/undefs.sed <$tmp/out + rm -f $tmp/in + mv $tmp/out $tmp/in + + # Let's still pretend it is `configure' which instantiates (i.e., don't + # use $as_me), people would be surprised to read: + # /* config.h. Generated by config.status. */ + if test x"$ac_file" = x-; then + echo "/* Generated by configure. */" >$tmp/config.h + else + echo "/* $ac_file. Generated by configure. */" >$tmp/config.h + fi + cat $tmp/in >>$tmp/config.h + rm -f $tmp/in + if test x"$ac_file" != x-; then + if diff $ac_file $tmp/config.h >/dev/null 2>&1; then + { echo "$as_me:$LINENO: $ac_file is unchanged" >&5 +echo "$as_me: $ac_file is unchanged" >&6;} + else + ac_dir=`(dirname "$ac_file") 2>/dev/null || +$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$ac_file" : 'X\(//\)[^/]' \| \ + X"$ac_file" : 'X\(//\)$' \| \ + X"$ac_file" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$ac_file" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + { if $as_mkdir_p; then + mkdir -p "$ac_dir" + else + as_dir="$ac_dir" + as_dirs= + while test ! -d "$as_dir"; do + as_dirs="$as_dir $as_dirs" + as_dir=`(dirname "$as_dir") 2>/dev/null || +$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_dir" : 'X\(//\)[^/]' \| \ + X"$as_dir" : 'X\(//\)$' \| \ + X"$as_dir" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$as_dir" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + done + test ! -n "$as_dirs" || mkdir $as_dirs + fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5 +echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;} + { (exit 1); exit 1; }; }; } + + rm -f $ac_file + mv $tmp/config.h $ac_file + fi + else + cat $tmp/config.h + rm -f $tmp/config.h + fi +# Compute $ac_file's index in $config_headers. +_am_stamp_count=1 +for _am_header in $config_headers :; do + case $_am_header in + $ac_file | $ac_file:* ) + break ;; + * ) + _am_stamp_count=`expr $_am_stamp_count + 1` ;; + esac +done +echo "timestamp for $ac_file" >`(dirname $ac_file) 2>/dev/null || +$as_expr X$ac_file : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X$ac_file : 'X\(//\)[^/]' \| \ + X$ac_file : 'X\(//\)$' \| \ + X$ac_file : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X$ac_file | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'`/stamp-h$_am_stamp_count +done + +# +# CONFIG_COMMANDS section. +# +for ac_file in : $CONFIG_COMMANDS; do test "x$ac_file" = x: && continue + ac_dest=`echo "$ac_file" | sed 's,:.*,,'` + ac_source=`echo "$ac_file" | sed 's,[^:]*:,,'` + ac_dir=`(dirname "$ac_dest") 2>/dev/null || +$as_expr X"$ac_dest" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$ac_dest" : 'X\(//\)[^/]' \| \ + X"$ac_dest" : 'X\(//\)$' \| \ + X"$ac_dest" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$ac_dest" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + { if $as_mkdir_p; then + mkdir -p "$ac_dir" + else + as_dir="$ac_dir" + as_dirs= + while test ! -d "$as_dir"; do + as_dirs="$as_dir $as_dirs" + as_dir=`(dirname "$as_dir") 2>/dev/null || +$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_dir" : 'X\(//\)[^/]' \| \ + X"$as_dir" : 'X\(//\)$' \| \ + X"$as_dir" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$as_dir" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + done + test ! -n "$as_dirs" || mkdir $as_dirs + fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5 +echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;} + { (exit 1); exit 1; }; }; } + + ac_builddir=. + +if test "$ac_dir" != .; then + ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` + # A "../" for each directory in $ac_dir_suffix. + ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'` +else + ac_dir_suffix= ac_top_builddir= +fi + +case $srcdir in + .) # No --srcdir option. We are building in place. + ac_srcdir=. + if test -z "$ac_top_builddir"; then + ac_top_srcdir=. + else + ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'` + fi ;; + [\\/]* | ?:[\\/]* ) # Absolute path. + ac_srcdir=$srcdir$ac_dir_suffix; + ac_top_srcdir=$srcdir ;; + *) # Relative path. + ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix + ac_top_srcdir=$ac_top_builddir$srcdir ;; +esac + +# Do not use `cd foo && pwd` to compute absolute paths, because +# the directories may not exist. +case `pwd` in +.) ac_abs_builddir="$ac_dir";; +*) + case "$ac_dir" in + .) ac_abs_builddir=`pwd`;; + [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";; + *) ac_abs_builddir=`pwd`/"$ac_dir";; + esac;; +esac +case $ac_abs_builddir in +.) ac_abs_top_builddir=${ac_top_builddir}.;; +*) + case ${ac_top_builddir}. in + .) ac_abs_top_builddir=$ac_abs_builddir;; + [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;; + *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;; + esac;; +esac +case $ac_abs_builddir in +.) ac_abs_srcdir=$ac_srcdir;; +*) + case $ac_srcdir in + .) ac_abs_srcdir=$ac_abs_builddir;; + [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;; + *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;; + esac;; +esac +case $ac_abs_builddir in +.) ac_abs_top_srcdir=$ac_top_srcdir;; +*) + case $ac_top_srcdir in + .) ac_abs_top_srcdir=$ac_abs_builddir;; + [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;; + *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;; + esac;; +esac + + + { echo "$as_me:$LINENO: executing $ac_dest commands" >&5 +echo "$as_me: executing $ac_dest commands" >&6;} + case $ac_dest in + depfiles ) test x"$AMDEP_TRUE" != x"" || for mf in $CONFIG_FILES; do + # Strip MF so we end up with the name of the file. + mf=`echo "$mf" | sed -e 's/:.*$//'` + # Check whether this is an Automake generated Makefile or not. + # We used to match only the files named `Makefile.in', but + # some people rename them; so instead we look at the file content. + # Grep'ing the first line is not enough: some people post-process + # each Makefile.in and add a new line on top of each file to say so. + # So let's grep whole file. + if grep '^#.*generated by automake' $mf > /dev/null 2>&1; then + dirpart=`(dirname "$mf") 2>/dev/null || +$as_expr X"$mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$mf" : 'X\(//\)[^/]' \| \ + X"$mf" : 'X\(//\)$' \| \ + X"$mf" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$mf" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + else + continue + fi + # Extract the definition of DEPDIR, am__include, and am__quote + # from the Makefile without running `make'. + DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` + test -z "$DEPDIR" && continue + am__include=`sed -n 's/^am__include = //p' < "$mf"` + test -z "am__include" && continue + am__quote=`sed -n 's/^am__quote = //p' < "$mf"` + # When using ansi2knr, U may be empty or an underscore; expand it + U=`sed -n 's/^U = //p' < "$mf"` + # Find all dependency output files, they are included files with + # $(DEPDIR) in their names. We invoke sed twice because it is the + # simplest approach to changing $(DEPDIR) to its actual value in the + # expansion. + for file in `sed -n " + s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ + sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do + # Make sure the directory exists. + test -f "$dirpart/$file" && continue + fdir=`(dirname "$file") 2>/dev/null || +$as_expr X"$file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$file" : 'X\(//\)[^/]' \| \ + X"$file" : 'X\(//\)$' \| \ + X"$file" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$file" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + { if $as_mkdir_p; then + mkdir -p $dirpart/$fdir + else + as_dir=$dirpart/$fdir + as_dirs= + while test ! -d "$as_dir"; do + as_dirs="$as_dir $as_dirs" + as_dir=`(dirname "$as_dir") 2>/dev/null || +$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_dir" : 'X\(//\)[^/]' \| \ + X"$as_dir" : 'X\(//\)$' \| \ + X"$as_dir" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$as_dir" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + done + test ! -n "$as_dirs" || mkdir $as_dirs + fi || { { echo "$as_me:$LINENO: error: cannot create directory $dirpart/$fdir" >&5 +echo "$as_me: error: cannot create directory $dirpart/$fdir" >&2;} + { (exit 1); exit 1; }; }; } + + # echo "creating $dirpart/$file" + echo '# dummy' > "$dirpart/$file" + done +done + ;; + esac +done + +{ (exit 0); exit 0; } diff --git a/rescue/linux/cdrom/yaird-0.0.5/configure b/rescue/linux/cdrom/yaird-0.0.5/configure new file mode 100755 index 0000000..2be1d15 --- /dev/null +++ b/rescue/linux/cdrom/yaird-0.0.5/configure @@ -0,0 +1,4345 @@ +#! /bin/sh +# Guess values for system-dependent variables and create Makefiles. +# Generated by GNU Autoconf 2.59. +# +# Copyright (C) 2003 Free Software Foundation, Inc. +# This configure script is free software; the Free Software Foundation +# gives unlimited permission to copy, distribute and modify it. +## --------------------- ## +## M4sh Initialization. ## +## --------------------- ## + +# Be Bourne compatible +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then + emulate sh + NULLCMD=: + # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' +elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then + set -o posix +fi +DUALCASE=1; export DUALCASE # for MKS sh + +# Support unset when possible. +if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then + as_unset=unset +else + as_unset=false +fi + + +# Work around bugs in pre-3.0 UWIN ksh. +$as_unset ENV MAIL MAILPATH +PS1='$ ' +PS2='> ' +PS4='+ ' + +# NLS nuisances. +for as_var in \ + LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \ + LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \ + LC_TELEPHONE LC_TIME +do + if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then + eval $as_var=C; export $as_var + else + $as_unset $as_var + fi +done + +# Required to use basename. +if expr a : '\(a\)' >/dev/null 2>&1; then + as_expr=expr +else + as_expr=false +fi + +if (basename /) >/dev/null 2>&1 && test "X`basename / 2>&1`" = "X/"; then + as_basename=basename +else + as_basename=false +fi + + +# Name of the executable. +as_me=`$as_basename "$0" || +$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ + X"$0" : 'X\(//\)$' \| \ + X"$0" : 'X\(/\)$' \| \ + . : '\(.\)' 2>/dev/null || +echo X/"$0" | + sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/; q; } + /^X\/\(\/\/\)$/{ s//\1/; q; } + /^X\/\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + + +# PATH needs CR, and LINENO needs CR and PATH. +# Avoid depending upon Character Ranges. +as_cr_letters='abcdefghijklmnopqrstuvwxyz' +as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' +as_cr_Letters=$as_cr_letters$as_cr_LETTERS +as_cr_digits='0123456789' +as_cr_alnum=$as_cr_Letters$as_cr_digits + +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + echo "#! /bin/sh" >conf$$.sh + echo "exit 0" >>conf$$.sh + chmod +x conf$$.sh + if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then + PATH_SEPARATOR=';' + else + PATH_SEPARATOR=: + fi + rm -f conf$$.sh +fi + + + as_lineno_1=$LINENO + as_lineno_2=$LINENO + as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` + test "x$as_lineno_1" != "x$as_lineno_2" && + test "x$as_lineno_3" = "x$as_lineno_2" || { + # Find who we are. Look in the path if we contain no path at all + # relative or not. + case $0 in + *[\\/]* ) as_myself=$0 ;; + *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break +done + + ;; + esac + # We did not find ourselves, most probably we were run as `sh COMMAND' + # in which case we are not to be found in the path. + if test "x$as_myself" = x; then + as_myself=$0 + fi + if test ! -f "$as_myself"; then + { echo "$as_me: error: cannot find myself; rerun with an absolute path" >&2 + { (exit 1); exit 1; }; } + fi + case $CONFIG_SHELL in + '') + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for as_base in sh bash ksh sh5; do + case $as_dir in + /*) + if ("$as_dir/$as_base" -c ' + as_lineno_1=$LINENO + as_lineno_2=$LINENO + as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` + test "x$as_lineno_1" != "x$as_lineno_2" && + test "x$as_lineno_3" = "x$as_lineno_2" ') 2>/dev/null; then + $as_unset BASH_ENV || test "${BASH_ENV+set}" != set || { BASH_ENV=; export BASH_ENV; } + $as_unset ENV || test "${ENV+set}" != set || { ENV=; export ENV; } + CONFIG_SHELL=$as_dir/$as_base + export CONFIG_SHELL + exec "$CONFIG_SHELL" "$0" ${1+"$@"} + fi;; + esac + done +done +;; + esac + + # Create $as_me.lineno as a copy of $as_myself, but with $LINENO + # uniformly replaced by the line number. The first 'sed' inserts a + # line-number line before each line; the second 'sed' does the real + # work. The second script uses 'N' to pair each line-number line + # with the numbered line, and appends trailing '-' during + # substitution so that $LINENO is not a special case at line end. + # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the + # second 'sed' script. Blame Lee E. McMahon for sed's syntax. :-) + sed '=' <$as_myself | + sed ' + N + s,$,-, + : loop + s,^\(['$as_cr_digits']*\)\(.*\)[$]LINENO\([^'$as_cr_alnum'_]\),\1\2\1\3, + t loop + s,-$,, + s,^['$as_cr_digits']*\n,, + ' >$as_me.lineno && + chmod +x $as_me.lineno || + { echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2 + { (exit 1); exit 1; }; } + + # Don't try to exec as it changes $[0], causing all sort of problems + # (the dirname of $[0] is not the place where we might find the + # original and so on. Autoconf is especially sensible to this). + . ./$as_me.lineno + # Exit status is that of the last command. + exit +} + + +case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in + *c*,-n*) ECHO_N= ECHO_C=' +' ECHO_T=' ' ;; + *c*,* ) ECHO_N=-n ECHO_C= ECHO_T= ;; + *) ECHO_N= ECHO_C='\c' ECHO_T= ;; +esac + +if expr a : '\(a\)' >/dev/null 2>&1; then + as_expr=expr +else + as_expr=false +fi + +rm -f conf$$ conf$$.exe conf$$.file +echo >conf$$.file +if ln -s conf$$.file conf$$ 2>/dev/null; then + # We could just check for DJGPP; but this test a) works b) is more generic + # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04). + if test -f conf$$.exe; then + # Don't use ln at all; we don't have any links + as_ln_s='cp -p' + else + as_ln_s='ln -s' + fi +elif ln conf$$.file conf$$ 2>/dev/null; then + as_ln_s=ln +else + as_ln_s='cp -p' +fi +rm -f conf$$ conf$$.exe conf$$.file + +if mkdir -p . 2>/dev/null; then + as_mkdir_p=: +else + test -d ./-p && rmdir ./-p + as_mkdir_p=false +fi + +as_executable_p="test -f" + +# Sed expression to map a string onto a valid CPP name. +as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" + +# Sed expression to map a string onto a valid variable name. +as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" + + +# IFS +# We need space, tab and new line, in precisely that order. +as_nl=' +' +IFS=" $as_nl" + +# CDPATH. +$as_unset CDPATH + + +# Name of the host. +# hostname on some systems (SVR3.2, Linux) returns a bogus exit status, +# so uname gets run too. +ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` + +exec 6>&1 + +# +# Initializations. +# +ac_default_prefix=/usr/local +ac_config_libobj_dir=. +cross_compiling=no +subdirs= +MFLAGS= +MAKEFLAGS= +SHELL=${CONFIG_SHELL-/bin/sh} + +# Maximum number of lines to put in a shell here document. +# This variable seems obsolete. It should probably be removed, and +# only ac_max_sed_lines should be used. +: ${ac_max_here_lines=38} + +# Identity of this package. +PACKAGE_NAME= +PACKAGE_TARNAME= +PACKAGE_VERSION= +PACKAGE_STRING= +PACKAGE_BUGREPORT= + +ac_unique_file="perl/main.pl" +ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA CYGPATH_W PACKAGE VERSION ACLOCAL AUTOCONF AUTOMAKE AUTOHEADER MAKEINFO install_sh STRIP ac_ct_STRIP INSTALL_STRIP_PROGRAM mkdir_p AWK SET_MAKE am__leading_dot AMTAR am__tar am__untar INITRD_TEMPLATE PERL CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC EXEEXT OBJEXT DEPDIR am__include am__quote AMDEP_TRUE AMDEP_FALSE AMDEPBACKSLASH CCDEPMODE am__fastdepCC_TRUE am__fastdepCC_FALSE XMLTO LIBOBJS LTLIBOBJS' +ac_subst_files='' + +# Initialize some variables set by options. +ac_init_help= +ac_init_version=false +# The variables have the same names as the options, with +# dashes changed to underlines. +cache_file=/dev/null +exec_prefix=NONE +no_create= +no_recursion= +prefix=NONE +program_prefix=NONE +program_suffix=NONE +program_transform_name=s,x,x, +silent= +site= +srcdir= +verbose= +x_includes=NONE +x_libraries=NONE + +# Installation directory options. +# These are left unexpanded so users can "make install exec_prefix=/foo" +# and all the variables that are supposed to be based on exec_prefix +# by default will actually change. +# Use braces instead of parens because sh, perl, etc. also accept them. +bindir='${exec_prefix}/bin' +sbindir='${exec_prefix}/sbin' +libexecdir='${exec_prefix}/libexec' +datadir='${prefix}/share' +sysconfdir='${prefix}/etc' +sharedstatedir='${prefix}/com' +localstatedir='${prefix}/var' +libdir='${exec_prefix}/lib' +includedir='${prefix}/include' +oldincludedir='/usr/include' +infodir='${prefix}/info' +mandir='${prefix}/man' + +ac_prev= +for ac_option +do + # If the previous option needs an argument, assign it. + if test -n "$ac_prev"; then + eval "$ac_prev=\$ac_option" + ac_prev= + continue + fi + + ac_optarg=`expr "x$ac_option" : 'x[^=]*=\(.*\)'` + + # Accept the important Cygnus configure options, so we can diagnose typos. + + case $ac_option in + + -bindir | --bindir | --bindi | --bind | --bin | --bi) + ac_prev=bindir ;; + -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) + bindir=$ac_optarg ;; + + -build | --build | --buil | --bui | --bu) + ac_prev=build_alias ;; + -build=* | --build=* | --buil=* | --bui=* | --bu=*) + build_alias=$ac_optarg ;; + + -cache-file | --cache-file | --cache-fil | --cache-fi \ + | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) + ac_prev=cache_file ;; + -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ + | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) + cache_file=$ac_optarg ;; + + --config-cache | -C) + cache_file=config.cache ;; + + -datadir | --datadir | --datadi | --datad | --data | --dat | --da) + ac_prev=datadir ;; + -datadir=* | --datadir=* | --datadi=* | --datad=* | --data=* | --dat=* \ + | --da=*) + datadir=$ac_optarg ;; + + -disable-* | --disable-*) + ac_feature=`expr "x$ac_option" : 'x-*disable-\(.*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_feature" : ".*[^-_$as_cr_alnum]" >/dev/null && + { echo "$as_me: error: invalid feature name: $ac_feature" >&2 + { (exit 1); exit 1; }; } + ac_feature=`echo $ac_feature | sed 's/-/_/g'` + eval "enable_$ac_feature=no" ;; + + -enable-* | --enable-*) + ac_feature=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_feature" : ".*[^-_$as_cr_alnum]" >/dev/null && + { echo "$as_me: error: invalid feature name: $ac_feature" >&2 + { (exit 1); exit 1; }; } + ac_feature=`echo $ac_feature | sed 's/-/_/g'` + case $ac_option in + *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;; + *) ac_optarg=yes ;; + esac + eval "enable_$ac_feature='$ac_optarg'" ;; + + -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ + | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ + | --exec | --exe | --ex) + ac_prev=exec_prefix ;; + -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ + | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ + | --exec=* | --exe=* | --ex=*) + exec_prefix=$ac_optarg ;; + + -gas | --gas | --ga | --g) + # Obsolete; use --with-gas. + with_gas=yes ;; + + -help | --help | --hel | --he | -h) + ac_init_help=long ;; + -help=r* | --help=r* | --hel=r* | --he=r* | -hr*) + ac_init_help=recursive ;; + -help=s* | --help=s* | --hel=s* | --he=s* | -hs*) + ac_init_help=short ;; + + -host | --host | --hos | --ho) + ac_prev=host_alias ;; + -host=* | --host=* | --hos=* | --ho=*) + host_alias=$ac_optarg ;; + + -includedir | --includedir | --includedi | --included | --include \ + | --includ | --inclu | --incl | --inc) + ac_prev=includedir ;; + -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ + | --includ=* | --inclu=* | --incl=* | --inc=*) + includedir=$ac_optarg ;; + + -infodir | --infodir | --infodi | --infod | --info | --inf) + ac_prev=infodir ;; + -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) + infodir=$ac_optarg ;; + + -libdir | --libdir | --libdi | --libd) + ac_prev=libdir ;; + -libdir=* | --libdir=* | --libdi=* | --libd=*) + libdir=$ac_optarg ;; + + -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ + | --libexe | --libex | --libe) + ac_prev=libexecdir ;; + -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ + | --libexe=* | --libex=* | --libe=*) + libexecdir=$ac_optarg ;; + + -localstatedir | --localstatedir | --localstatedi | --localstated \ + | --localstate | --localstat | --localsta | --localst \ + | --locals | --local | --loca | --loc | --lo) + ac_prev=localstatedir ;; + -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ + | --localstate=* | --localstat=* | --localsta=* | --localst=* \ + | --locals=* | --local=* | --loca=* | --loc=* | --lo=*) + localstatedir=$ac_optarg ;; + + -mandir | --mandir | --mandi | --mand | --man | --ma | --m) + ac_prev=mandir ;; + -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) + mandir=$ac_optarg ;; + + -nfp | --nfp | --nf) + # Obsolete; use --without-fp. + with_fp=no ;; + + -no-create | --no-create | --no-creat | --no-crea | --no-cre \ + | --no-cr | --no-c | -n) + no_create=yes ;; + + -no-recursion | --no-recursion | --no-recursio | --no-recursi \ + | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) + no_recursion=yes ;; + + -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ + | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ + | --oldin | --oldi | --old | --ol | --o) + ac_prev=oldincludedir ;; + -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ + | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ + | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) + oldincludedir=$ac_optarg ;; + + -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) + ac_prev=prefix ;; + -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) + prefix=$ac_optarg ;; + + -program-prefix | --program-prefix | --program-prefi | --program-pref \ + | --program-pre | --program-pr | --program-p) + ac_prev=program_prefix ;; + -program-prefix=* | --program-prefix=* | --program-prefi=* \ + | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) + program_prefix=$ac_optarg ;; + + -program-suffix | --program-suffix | --program-suffi | --program-suff \ + | --program-suf | --program-su | --program-s) + ac_prev=program_suffix ;; + -program-suffix=* | --program-suffix=* | --program-suffi=* \ + | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) + program_suffix=$ac_optarg ;; + + -program-transform-name | --program-transform-name \ + | --program-transform-nam | --program-transform-na \ + | --program-transform-n | --program-transform- \ + | --program-transform | --program-transfor \ + | --program-transfo | --program-transf \ + | --program-trans | --program-tran \ + | --progr-tra | --program-tr | --program-t) + ac_prev=program_transform_name ;; + -program-transform-name=* | --program-transform-name=* \ + | --program-transform-nam=* | --program-transform-na=* \ + | --program-transform-n=* | --program-transform-=* \ + | --program-transform=* | --program-transfor=* \ + | --program-transfo=* | --program-transf=* \ + | --program-trans=* | --program-tran=* \ + | --progr-tra=* | --program-tr=* | --program-t=*) + program_transform_name=$ac_optarg ;; + + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil) + silent=yes ;; + + -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) + ac_prev=sbindir ;; + -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ + | --sbi=* | --sb=*) + sbindir=$ac_optarg ;; + + -sharedstatedir | --sharedstatedir | --sharedstatedi \ + | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ + | --sharedst | --shareds | --shared | --share | --shar \ + | --sha | --sh) + ac_prev=sharedstatedir ;; + -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ + | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ + | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ + | --sha=* | --sh=*) + sharedstatedir=$ac_optarg ;; + + -site | --site | --sit) + ac_prev=site ;; + -site=* | --site=* | --sit=*) + site=$ac_optarg ;; + + -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) + ac_prev=srcdir ;; + -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) + srcdir=$ac_optarg ;; + + -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ + | --syscon | --sysco | --sysc | --sys | --sy) + ac_prev=sysconfdir ;; + -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ + | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) + sysconfdir=$ac_optarg ;; + + -target | --target | --targe | --targ | --tar | --ta | --t) + ac_prev=target_alias ;; + -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) + target_alias=$ac_optarg ;; + + -v | -verbose | --verbose | --verbos | --verbo | --verb) + verbose=yes ;; + + -version | --version | --versio | --versi | --vers | -V) + ac_init_version=: ;; + + -with-* | --with-*) + ac_package=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_package" : ".*[^-_$as_cr_alnum]" >/dev/null && + { echo "$as_me: error: invalid package name: $ac_package" >&2 + { (exit 1); exit 1; }; } + ac_package=`echo $ac_package| sed 's/-/_/g'` + case $ac_option in + *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;; + *) ac_optarg=yes ;; + esac + eval "with_$ac_package='$ac_optarg'" ;; + + -without-* | --without-*) + ac_package=`expr "x$ac_option" : 'x-*without-\(.*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_package" : ".*[^-_$as_cr_alnum]" >/dev/null && + { echo "$as_me: error: invalid package name: $ac_package" >&2 + { (exit 1); exit 1; }; } + ac_package=`echo $ac_package | sed 's/-/_/g'` + eval "with_$ac_package=no" ;; + + --x) + # Obsolete; use --with-x. + with_x=yes ;; + + -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ + | --x-incl | --x-inc | --x-in | --x-i) + ac_prev=x_includes ;; + -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ + | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) + x_includes=$ac_optarg ;; + + -x-libraries | --x-libraries | --x-librarie | --x-librari \ + | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) + ac_prev=x_libraries ;; + -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ + | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) + x_libraries=$ac_optarg ;; + + -*) { echo "$as_me: error: unrecognized option: $ac_option +Try \`$0 --help' for more information." >&2 + { (exit 1); exit 1; }; } + ;; + + *=*) + ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` + # Reject names that are not valid shell variable names. + expr "x$ac_envvar" : ".*[^_$as_cr_alnum]" >/dev/null && + { echo "$as_me: error: invalid variable name: $ac_envvar" >&2 + { (exit 1); exit 1; }; } + ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` + eval "$ac_envvar='$ac_optarg'" + export $ac_envvar ;; + + *) + # FIXME: should be removed in autoconf 3.0. + echo "$as_me: WARNING: you should use --build, --host, --target" >&2 + expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && + echo "$as_me: WARNING: invalid host type: $ac_option" >&2 + : ${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option} + ;; + + esac +done + +if test -n "$ac_prev"; then + ac_option=--`echo $ac_prev | sed 's/_/-/g'` + { echo "$as_me: error: missing argument to $ac_option" >&2 + { (exit 1); exit 1; }; } +fi + +# Be sure to have absolute paths. +for ac_var in exec_prefix prefix +do + eval ac_val=$`echo $ac_var` + case $ac_val in + [\\/$]* | ?:[\\/]* | NONE | '' ) ;; + *) { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2 + { (exit 1); exit 1; }; };; + esac +done + +# Be sure to have absolute paths. +for ac_var in bindir sbindir libexecdir datadir sysconfdir sharedstatedir \ + localstatedir libdir includedir oldincludedir infodir mandir +do + eval ac_val=$`echo $ac_var` + case $ac_val in + [\\/$]* | ?:[\\/]* ) ;; + *) { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2 + { (exit 1); exit 1; }; };; + esac +done + +# There might be people who depend on the old broken behavior: `$host' +# used to hold the argument of --host etc. +# FIXME: To remove some day. +build=$build_alias +host=$host_alias +target=$target_alias + +# FIXME: To remove some day. +if test "x$host_alias" != x; then + if test "x$build_alias" = x; then + cross_compiling=maybe + echo "$as_me: WARNING: If you wanted to set the --build type, don't use --host. + If a cross compiler is detected then cross compile mode will be used." >&2 + elif test "x$build_alias" != "x$host_alias"; then + cross_compiling=yes + fi +fi + +ac_tool_prefix= +test -n "$host_alias" && ac_tool_prefix=$host_alias- + +test "$silent" = yes && exec 6>/dev/null + + +# Find the source files, if location was not specified. +if test -z "$srcdir"; then + ac_srcdir_defaulted=yes + # Try the directory containing this script, then its parent. + ac_confdir=`(dirname "$0") 2>/dev/null || +$as_expr X"$0" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$0" : 'X\(//\)[^/]' \| \ + X"$0" : 'X\(//\)$' \| \ + X"$0" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$0" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + srcdir=$ac_confdir + if test ! -r $srcdir/$ac_unique_file; then + srcdir=.. + fi +else + ac_srcdir_defaulted=no +fi +if test ! -r $srcdir/$ac_unique_file; then + if test "$ac_srcdir_defaulted" = yes; then + { echo "$as_me: error: cannot find sources ($ac_unique_file) in $ac_confdir or .." >&2 + { (exit 1); exit 1; }; } + else + { echo "$as_me: error: cannot find sources ($ac_unique_file) in $srcdir" >&2 + { (exit 1); exit 1; }; } + fi +fi +(cd $srcdir && test -r ./$ac_unique_file) 2>/dev/null || + { echo "$as_me: error: sources are in $srcdir, but \`cd $srcdir' does not work" >&2 + { (exit 1); exit 1; }; } +srcdir=`echo "$srcdir" | sed 's%\([^\\/]\)[\\/]*$%\1%'` +ac_env_build_alias_set=${build_alias+set} +ac_env_build_alias_value=$build_alias +ac_cv_env_build_alias_set=${build_alias+set} +ac_cv_env_build_alias_value=$build_alias +ac_env_host_alias_set=${host_alias+set} +ac_env_host_alias_value=$host_alias +ac_cv_env_host_alias_set=${host_alias+set} +ac_cv_env_host_alias_value=$host_alias +ac_env_target_alias_set=${target_alias+set} +ac_env_target_alias_value=$target_alias +ac_cv_env_target_alias_set=${target_alias+set} +ac_cv_env_target_alias_value=$target_alias +ac_env_CC_set=${CC+set} +ac_env_CC_value=$CC +ac_cv_env_CC_set=${CC+set} +ac_cv_env_CC_value=$CC +ac_env_CFLAGS_set=${CFLAGS+set} +ac_env_CFLAGS_value=$CFLAGS +ac_cv_env_CFLAGS_set=${CFLAGS+set} +ac_cv_env_CFLAGS_value=$CFLAGS +ac_env_LDFLAGS_set=${LDFLAGS+set} +ac_env_LDFLAGS_value=$LDFLAGS +ac_cv_env_LDFLAGS_set=${LDFLAGS+set} +ac_cv_env_LDFLAGS_value=$LDFLAGS +ac_env_CPPFLAGS_set=${CPPFLAGS+set} +ac_env_CPPFLAGS_value=$CPPFLAGS +ac_cv_env_CPPFLAGS_set=${CPPFLAGS+set} +ac_cv_env_CPPFLAGS_value=$CPPFLAGS + +# +# Report the --help message. +# +if test "$ac_init_help" = "long"; then + # Omit some internal or obsolete options to make the list less imposing. + # This message is too long to be a string in the A/UX 3.1 sh. + cat <<_ACEOF +\`configure' configures this package to adapt to many kinds of systems. + +Usage: $0 [OPTION]... [VAR=VALUE]... + +To assign environment variables (e.g., CC, CFLAGS...), specify them as +VAR=VALUE. See below for descriptions of some of the useful variables. + +Defaults for the options are specified in brackets. + +Configuration: + -h, --help display this help and exit + --help=short display options specific to this package + --help=recursive display the short help of all the included packages + -V, --version display version information and exit + -q, --quiet, --silent do not print \`checking...' messages + --cache-file=FILE cache test results in FILE [disabled] + -C, --config-cache alias for \`--cache-file=config.cache' + -n, --no-create do not create output files + --srcdir=DIR find the sources in DIR [configure dir or \`..'] + +_ACEOF + + cat <<_ACEOF +Installation directories: + --prefix=PREFIX install architecture-independent files in PREFIX + [$ac_default_prefix] + --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX + [PREFIX] + +By default, \`make install' will install all the files in +\`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify +an installation prefix other than \`$ac_default_prefix' using \`--prefix', +for instance \`--prefix=\$HOME'. + +For better control, use the options below. + +Fine tuning of the installation directories: + --bindir=DIR user executables [EPREFIX/bin] + --sbindir=DIR system admin executables [EPREFIX/sbin] + --libexecdir=DIR program executables [EPREFIX/libexec] + --datadir=DIR read-only architecture-independent data [PREFIX/share] + --sysconfdir=DIR read-only single-machine data [PREFIX/etc] + --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] + --localstatedir=DIR modifiable single-machine data [PREFIX/var] + --libdir=DIR object code libraries [EPREFIX/lib] + --includedir=DIR C header files [PREFIX/include] + --oldincludedir=DIR C header files for non-gcc [/usr/include] + --infodir=DIR info documentation [PREFIX/info] + --mandir=DIR man documentation [PREFIX/man] +_ACEOF + + cat <<\_ACEOF + +Program names: + --program-prefix=PREFIX prepend PREFIX to installed program names + --program-suffix=SUFFIX append SUFFIX to installed program names + --program-transform-name=PROGRAM run sed PROGRAM on installed program names +_ACEOF +fi + +if test -n "$ac_init_help"; then + + cat <<\_ACEOF + +Optional Features: + --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) + --enable-FEATURE[=ARG] include FEATURE [ARG=yes] + --enable-template=name install templates/name.pm as initrd template (no + default) + --enable-nuke Nuke initramfs before moving to real root + --disable-dependency-tracking speeds up one-time build + --enable-dependency-tracking do not reject slow dependency extractors + +Some influential environment variables: + CC C compiler command + CFLAGS C compiler flags + LDFLAGS linker flags, e.g. -L if you have libraries in a + nonstandard directory + CPPFLAGS C/C++ preprocessor flags, e.g. -I if you have + headers in a nonstandard directory + +Use these variables to override the choices made by `configure' or to help +it to find libraries and programs with nonstandard names/locations. + +_ACEOF +fi + +if test "$ac_init_help" = "recursive"; then + # If there are subdirs, report their specific --help. + ac_popdir=`pwd` + for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue + test -d $ac_dir || continue + ac_builddir=. + +if test "$ac_dir" != .; then + ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` + # A "../" for each directory in $ac_dir_suffix. + ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'` +else + ac_dir_suffix= ac_top_builddir= +fi + +case $srcdir in + .) # No --srcdir option. We are building in place. + ac_srcdir=. + if test -z "$ac_top_builddir"; then + ac_top_srcdir=. + else + ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'` + fi ;; + [\\/]* | ?:[\\/]* ) # Absolute path. + ac_srcdir=$srcdir$ac_dir_suffix; + ac_top_srcdir=$srcdir ;; + *) # Relative path. + ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix + ac_top_srcdir=$ac_top_builddir$srcdir ;; +esac + +# Do not use `cd foo && pwd` to compute absolute paths, because +# the directories may not exist. +case `pwd` in +.) ac_abs_builddir="$ac_dir";; +*) + case "$ac_dir" in + .) ac_abs_builddir=`pwd`;; + [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";; + *) ac_abs_builddir=`pwd`/"$ac_dir";; + esac;; +esac +case $ac_abs_builddir in +.) ac_abs_top_builddir=${ac_top_builddir}.;; +*) + case ${ac_top_builddir}. in + .) ac_abs_top_builddir=$ac_abs_builddir;; + [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;; + *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;; + esac;; +esac +case $ac_abs_builddir in +.) ac_abs_srcdir=$ac_srcdir;; +*) + case $ac_srcdir in + .) ac_abs_srcdir=$ac_abs_builddir;; + [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;; + *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;; + esac;; +esac +case $ac_abs_builddir in +.) ac_abs_top_srcdir=$ac_top_srcdir;; +*) + case $ac_top_srcdir in + .) ac_abs_top_srcdir=$ac_abs_builddir;; + [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;; + *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;; + esac;; +esac + + cd $ac_dir + # Check for guested configure; otherwise get Cygnus style configure. + if test -f $ac_srcdir/configure.gnu; then + echo + $SHELL $ac_srcdir/configure.gnu --help=recursive + elif test -f $ac_srcdir/configure; then + echo + $SHELL $ac_srcdir/configure --help=recursive + elif test -f $ac_srcdir/configure.ac || + test -f $ac_srcdir/configure.in; then + echo + $ac_configure --help + else + echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 + fi + cd "$ac_popdir" + done +fi + +test -n "$ac_init_help" && exit 0 +if $ac_init_version; then + cat <<\_ACEOF + +Copyright (C) 2003 Free Software Foundation, Inc. +This configure script is free software; the Free Software Foundation +gives unlimited permission to copy, distribute and modify it. +_ACEOF + exit 0 +fi +exec 5>config.log +cat >&5 <<_ACEOF +This file contains any messages produced by compilers while +running configure, to aid debugging if configure makes a mistake. + +It was created by $as_me, which was +generated by GNU Autoconf 2.59. Invocation command line was + + $ $0 $@ + +_ACEOF +{ +cat <<_ASUNAME +## --------- ## +## Platform. ## +## --------- ## + +hostname = `(hostname || uname -n) 2>/dev/null | sed 1q` +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 || echo unknown` +/bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown` + +/bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` +/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` +/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` +hostinfo = `(hostinfo) 2>/dev/null || echo unknown` +/bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` +/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` +/bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` + +_ASUNAME + +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + echo "PATH: $as_dir" +done + +} >&5 + +cat >&5 <<_ACEOF + + +## ----------- ## +## Core tests. ## +## ----------- ## + +_ACEOF + + +# Keep a trace of the command line. +# Strip out --no-create and --no-recursion so they do not pile up. +# Strip out --silent because we don't want to record it for future runs. +# Also quote any args containing shell meta-characters. +# Make two passes to allow for proper duplicate-argument suppression. +ac_configure_args= +ac_configure_args0= +ac_configure_args1= +ac_sep= +ac_must_keep_next=false +for ac_pass in 1 2 +do + for ac_arg + do + case $ac_arg in + -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;; + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil) + continue ;; + *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?\"\']*) + ac_arg=`echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; + esac + case $ac_pass in + 1) ac_configure_args0="$ac_configure_args0 '$ac_arg'" ;; + 2) + ac_configure_args1="$ac_configure_args1 '$ac_arg'" + if test $ac_must_keep_next = true; then + ac_must_keep_next=false # Got value, back to normal. + else + case $ac_arg in + *=* | --config-cache | -C | -disable-* | --disable-* \ + | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \ + | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \ + | -with-* | --with-* | -without-* | --without-* | --x) + case "$ac_configure_args0 " in + "$ac_configure_args1"*" '$ac_arg' "* ) continue ;; + esac + ;; + -* ) ac_must_keep_next=true ;; + esac + fi + ac_configure_args="$ac_configure_args$ac_sep'$ac_arg'" + # Get rid of the leading space. + ac_sep=" " + ;; + esac + done +done +$as_unset ac_configure_args0 || test "${ac_configure_args0+set}" != set || { ac_configure_args0=; export ac_configure_args0; } +$as_unset ac_configure_args1 || test "${ac_configure_args1+set}" != set || { ac_configure_args1=; export ac_configure_args1; } + +# When interrupted or exit'd, cleanup temporary files, and complete +# config.log. We remove comments because anyway the quotes in there +# would cause problems or look ugly. +# WARNING: Be sure not to use single quotes in there, as some shells, +# such as our DU 5.0 friend, will then `close' the trap. +trap 'exit_status=$? + # Save into config.log some information that might help in debugging. + { + echo + + cat <<\_ASBOX +## ---------------- ## +## Cache variables. ## +## ---------------- ## +_ASBOX + echo + # The following way of writing the cache mishandles newlines in values, +{ + (set) 2>&1 | + case `(ac_space='"'"' '"'"'; set | grep ac_space) 2>&1` in + *ac_space=\ *) + sed -n \ + "s/'"'"'/'"'"'\\\\'"'"''"'"'/g; + s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='"'"'\\2'"'"'/p" + ;; + *) + sed -n \ + "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p" + ;; + esac; +} + echo + + cat <<\_ASBOX +## ----------------- ## +## Output variables. ## +## ----------------- ## +_ASBOX + echo + for ac_var in $ac_subst_vars + do + eval ac_val=$`echo $ac_var` + echo "$ac_var='"'"'$ac_val'"'"'" + done | sort + echo + + if test -n "$ac_subst_files"; then + cat <<\_ASBOX +## ------------- ## +## Output files. ## +## ------------- ## +_ASBOX + echo + for ac_var in $ac_subst_files + do + eval ac_val=$`echo $ac_var` + echo "$ac_var='"'"'$ac_val'"'"'" + done | sort + echo + fi + + if test -s confdefs.h; then + cat <<\_ASBOX +## ----------- ## +## confdefs.h. ## +## ----------- ## +_ASBOX + echo + sed "/^$/d" confdefs.h | sort + echo + fi + test "$ac_signal" != 0 && + echo "$as_me: caught signal $ac_signal" + echo "$as_me: exit $exit_status" + } >&5 + rm -f core *.core && + rm -rf conftest* confdefs* conf$$* $ac_clean_files && + exit $exit_status + ' 0 +for ac_signal in 1 2 13 15; do + trap 'ac_signal='$ac_signal'; { (exit 1); exit 1; }' $ac_signal +done +ac_signal=0 + +# confdefs.h avoids OS command line length limits that DEFS can exceed. +rm -rf conftest* confdefs.h +# AIX cpp loses on an empty file, so make sure it contains at least a newline. +echo >confdefs.h + +# Predefined preprocessor variables. + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_NAME "$PACKAGE_NAME" +_ACEOF + + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_TARNAME "$PACKAGE_TARNAME" +_ACEOF + + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_VERSION "$PACKAGE_VERSION" +_ACEOF + + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_STRING "$PACKAGE_STRING" +_ACEOF + + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT" +_ACEOF + + +# Let the site file select an alternate cache file if it wants to. +# Prefer explicitly selected file to automatically selected ones. +if test -z "$CONFIG_SITE"; then + if test "x$prefix" != xNONE; then + CONFIG_SITE="$prefix/share/config.site $prefix/etc/config.site" + else + CONFIG_SITE="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site" + fi +fi +for ac_site_file in $CONFIG_SITE; do + if test -r "$ac_site_file"; then + { echo "$as_me:$LINENO: loading site script $ac_site_file" >&5 +echo "$as_me: loading site script $ac_site_file" >&6;} + sed 's/^/| /' "$ac_site_file" >&5 + . "$ac_site_file" + fi +done + +if test -r "$cache_file"; then + # Some versions of bash will fail to source /dev/null (special + # files actually), so we avoid doing that. + if test -f "$cache_file"; then + { echo "$as_me:$LINENO: loading cache $cache_file" >&5 +echo "$as_me: loading cache $cache_file" >&6;} + case $cache_file in + [\\/]* | ?:[\\/]* ) . $cache_file;; + *) . ./$cache_file;; + esac + fi +else + { echo "$as_me:$LINENO: creating cache $cache_file" >&5 +echo "$as_me: creating cache $cache_file" >&6;} + >$cache_file +fi + +# Check that the precious variables saved in the cache have kept the same +# value. +ac_cache_corrupted=false +for ac_var in `(set) 2>&1 | + sed -n 's/^ac_env_\([a-zA-Z_0-9]*\)_set=.*/\1/p'`; do + eval ac_old_set=\$ac_cv_env_${ac_var}_set + eval ac_new_set=\$ac_env_${ac_var}_set + eval ac_old_val="\$ac_cv_env_${ac_var}_value" + eval ac_new_val="\$ac_env_${ac_var}_value" + case $ac_old_set,$ac_new_set in + set,) + { echo "$as_me:$LINENO: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 +echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} + ac_cache_corrupted=: ;; + ,set) + { echo "$as_me:$LINENO: error: \`$ac_var' was not set in the previous run" >&5 +echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} + ac_cache_corrupted=: ;; + ,);; + *) + if test "x$ac_old_val" != "x$ac_new_val"; then + { echo "$as_me:$LINENO: error: \`$ac_var' has changed since the previous run:" >&5 +echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} + { echo "$as_me:$LINENO: former value: $ac_old_val" >&5 +echo "$as_me: former value: $ac_old_val" >&2;} + { echo "$as_me:$LINENO: current value: $ac_new_val" >&5 +echo "$as_me: current value: $ac_new_val" >&2;} + ac_cache_corrupted=: + fi;; + esac + # Pass precious variables to config.status. + if test "$ac_new_set" = set; then + case $ac_new_val in + *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?\"\']*) + ac_arg=$ac_var=`echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; + *) ac_arg=$ac_var=$ac_new_val ;; + esac + case " $ac_configure_args " in + *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. + *) ac_configure_args="$ac_configure_args '$ac_arg'" ;; + esac + fi +done +if $ac_cache_corrupted; then + { echo "$as_me:$LINENO: error: changes in the environment can compromise the build" >&5 +echo "$as_me: error: changes in the environment can compromise the build" >&2;} + { { echo "$as_me:$LINENO: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&5 +echo "$as_me: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&2;} + { (exit 1); exit 1; }; } +fi + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + + + + + + + + + + + + + + + + + + + +YAIRD_VERSION=0.0.5 +am__api_version="1.9" +ac_aux_dir= +for ac_dir in $srcdir $srcdir/.. $srcdir/../..; do + if test -f $ac_dir/install-sh; then + ac_aux_dir=$ac_dir + ac_install_sh="$ac_aux_dir/install-sh -c" + break + elif test -f $ac_dir/install.sh; then + ac_aux_dir=$ac_dir + ac_install_sh="$ac_aux_dir/install.sh -c" + break + elif test -f $ac_dir/shtool; then + ac_aux_dir=$ac_dir + ac_install_sh="$ac_aux_dir/shtool install -c" + break + fi +done +if test -z "$ac_aux_dir"; then + { { echo "$as_me:$LINENO: error: cannot find install-sh or install.sh in $srcdir $srcdir/.. $srcdir/../.." >&5 +echo "$as_me: error: cannot find install-sh or install.sh in $srcdir $srcdir/.. $srcdir/../.." >&2;} + { (exit 1); exit 1; }; } +fi +ac_config_guess="$SHELL $ac_aux_dir/config.guess" +ac_config_sub="$SHELL $ac_aux_dir/config.sub" +ac_configure="$SHELL $ac_aux_dir/configure" # This should be Cygnus configure. + +# Find a good install program. We prefer a C program (faster), +# so one script is as good as another. But avoid the broken or +# incompatible versions: +# SysV /etc/install, /usr/sbin/install +# SunOS /usr/etc/install +# IRIX /sbin/install +# AIX /bin/install +# AmigaOS /C/install, which installs bootblocks on floppy discs +# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag +# AFS /usr/afsws/bin/install, which mishandles nonexistent args +# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" +# OS/2's system install, which has a completely different semantic +# ./install, which can be erroneously created by make from ./install.sh. +echo "$as_me:$LINENO: checking for a BSD-compatible install" >&5 +echo $ECHO_N "checking for a BSD-compatible install... $ECHO_C" >&6 +if test -z "$INSTALL"; then +if test "${ac_cv_path_install+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + # Account for people who put trailing slashes in PATH elements. +case $as_dir/ in + ./ | .// | /cC/* | \ + /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ + ?:\\/os2\\/install\\/* | ?:\\/OS2\\/INSTALL\\/* | \ + /usr/ucb/* ) ;; + *) + # OSF1 and SCO ODT 3.0 have their own names for install. + # Don't use installbsd from OSF since it installs stuff as root + # by default. + for ac_prog in ginstall scoinst install; do + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then + if test $ac_prog = install && + grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then + # AIX install. It has an incompatible calling convention. + : + elif test $ac_prog = install && + grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then + # program-specific install script used by HP pwplus--don't use. + : + else + ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c" + break 3 + fi + fi + done + done + ;; +esac +done + + +fi + if test "${ac_cv_path_install+set}" = set; then + INSTALL=$ac_cv_path_install + else + # As a last resort, use the slow shell script. We don't cache a + # path for INSTALL within a source directory, because that will + # break other packages using the cache if that directory is + # removed, or if the path is relative. + INSTALL=$ac_install_sh + fi +fi +echo "$as_me:$LINENO: result: $INSTALL" >&5 +echo "${ECHO_T}$INSTALL" >&6 + +# Use test -z because SunOS4 sh mishandles braces in ${var-val}. +# It thinks the first close brace ends the variable substitution. +test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' + +test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' + +test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' + +echo "$as_me:$LINENO: checking whether build environment is sane" >&5 +echo $ECHO_N "checking whether build environment is sane... $ECHO_C" >&6 +# Just in case +sleep 1 +echo timestamp > conftest.file +# Do `set' in a subshell so we don't clobber the current shell's +# arguments. Must try -L first in case configure is actually a +# symlink; some systems play weird games with the mod time of symlinks +# (eg FreeBSD returns the mod time of the symlink's containing +# directory). +if ( + set X `ls -Lt $srcdir/configure conftest.file 2> /dev/null` + if test "$*" = "X"; then + # -L didn't work. + set X `ls -t $srcdir/configure conftest.file` + fi + rm -f conftest.file + if test "$*" != "X $srcdir/configure conftest.file" \ + && test "$*" != "X conftest.file $srcdir/configure"; then + + # If neither matched, then we have a broken ls. This can happen + # if, for instance, CONFIG_SHELL is bash and it inherits a + # broken ls alias from the environment. This has actually + # happened. Such a system could not be considered "sane". + { { echo "$as_me:$LINENO: error: ls -t appears to fail. Make sure there is not a broken +alias in your environment" >&5 +echo "$as_me: error: ls -t appears to fail. Make sure there is not a broken +alias in your environment" >&2;} + { (exit 1); exit 1; }; } + fi + + test "$2" = conftest.file + ) +then + # Ok. + : +else + { { echo "$as_me:$LINENO: error: newly created file is older than distributed files! +Check your system clock" >&5 +echo "$as_me: error: newly created file is older than distributed files! +Check your system clock" >&2;} + { (exit 1); exit 1; }; } +fi +echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6 +test "$program_prefix" != NONE && + program_transform_name="s,^,$program_prefix,;$program_transform_name" +# Use a double $ so make ignores it. +test "$program_suffix" != NONE && + program_transform_name="s,\$,$program_suffix,;$program_transform_name" +# Double any \ or $. echo might interpret backslashes. +# By default was `s,x,x', remove it if useless. +cat <<\_ACEOF >conftest.sed +s/[\\$]/&&/g;s/;s,x,x,$// +_ACEOF +program_transform_name=`echo $program_transform_name | sed -f conftest.sed` +rm conftest.sed + +# expand $ac_aux_dir to an absolute path +am_aux_dir=`cd $ac_aux_dir && pwd` + +test x"${MISSING+set}" = xset || MISSING="\${SHELL} $am_aux_dir/missing" +# Use eval to expand $SHELL +if eval "$MISSING --run true"; then + am_missing_run="$MISSING --run " +else + am_missing_run= + { echo "$as_me:$LINENO: WARNING: \`missing' script is too old or missing" >&5 +echo "$as_me: WARNING: \`missing' script is too old or missing" >&2;} +fi + +if mkdir -p --version . >/dev/null 2>&1 && test ! -d ./--version; then + # We used to keeping the `.' as first argument, in order to + # allow $(mkdir_p) to be used without argument. As in + # $(mkdir_p) $(somedir) + # where $(somedir) is conditionally defined. However this is wrong + # for two reasons: + # 1. if the package is installed by a user who cannot write `.' + # make install will fail, + # 2. the above comment should most certainly read + # $(mkdir_p) $(DESTDIR)$(somedir) + # so it does not work when $(somedir) is undefined and + # $(DESTDIR) is not. + # To support the latter case, we have to write + # test -z "$(somedir)" || $(mkdir_p) $(DESTDIR)$(somedir), + # so the `.' trick is pointless. + mkdir_p='mkdir -p --' +else + # On NextStep and OpenStep, the `mkdir' command does not + # recognize any option. It will interpret all options as + # directories to create, and then abort because `.' already + # exists. + for d in ./-p ./--version; + do + test -d $d && rmdir $d + done + # $(mkinstalldirs) is defined by Automake if mkinstalldirs exists. + if test -f "$ac_aux_dir/mkinstalldirs"; then + mkdir_p='$(mkinstalldirs)' + else + mkdir_p='$(install_sh) -d' + fi +fi + +for ac_prog in gawk mawk nawk awk +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_AWK+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$AWK"; then + ac_cv_prog_AWK="$AWK" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_AWK="$ac_prog" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +AWK=$ac_cv_prog_AWK +if test -n "$AWK"; then + echo "$as_me:$LINENO: result: $AWK" >&5 +echo "${ECHO_T}$AWK" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + test -n "$AWK" && break +done + +echo "$as_me:$LINENO: checking whether ${MAKE-make} sets \$(MAKE)" >&5 +echo $ECHO_N "checking whether ${MAKE-make} sets \$(MAKE)... $ECHO_C" >&6 +set dummy ${MAKE-make}; ac_make=`echo "$2" | sed 'y,:./+-,___p_,'` +if eval "test \"\${ac_cv_prog_make_${ac_make}_set+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.make <<\_ACEOF +all: + @echo 'ac_maketemp="$(MAKE)"' +_ACEOF +# GNU make sometimes prints "make[1]: Entering...", which would confuse us. +eval `${MAKE-make} -f conftest.make 2>/dev/null | grep temp=` +if test -n "$ac_maketemp"; then + eval ac_cv_prog_make_${ac_make}_set=yes +else + eval ac_cv_prog_make_${ac_make}_set=no +fi +rm -f conftest.make +fi +if eval "test \"`echo '$ac_cv_prog_make_'${ac_make}_set`\" = yes"; then + echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6 + SET_MAKE= +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 + SET_MAKE="MAKE=${MAKE-make}" +fi + +rm -rf .tst 2>/dev/null +mkdir .tst 2>/dev/null +if test -d .tst; then + am__leading_dot=. +else + am__leading_dot=_ +fi +rmdir .tst 2>/dev/null + +# test to see if srcdir already configured +if test "`cd $srcdir && pwd`" != "`pwd`" && + test -f $srcdir/config.status; then + { { echo "$as_me:$LINENO: error: source directory already configured; run \"make distclean\" there first" >&5 +echo "$as_me: error: source directory already configured; run \"make distclean\" there first" >&2;} + { (exit 1); exit 1; }; } +fi + +# test whether we have cygpath +if test -z "$CYGPATH_W"; then + if (cygpath --version) >/dev/null 2>/dev/null; then + CYGPATH_W='cygpath -w' + else + CYGPATH_W=echo + fi +fi + + +# Define the identity of the package. + PACKAGE=yaird + VERSION=${YAIRD_VERSION} + + +cat >>confdefs.h <<_ACEOF +#define PACKAGE "$PACKAGE" +_ACEOF + + +cat >>confdefs.h <<_ACEOF +#define VERSION "$VERSION" +_ACEOF + +# Some tools Automake needs. + +ACLOCAL=${ACLOCAL-"${am_missing_run}aclocal-${am__api_version}"} + + +AUTOCONF=${AUTOCONF-"${am_missing_run}autoconf"} + + +AUTOMAKE=${AUTOMAKE-"${am_missing_run}automake-${am__api_version}"} + + +AUTOHEADER=${AUTOHEADER-"${am_missing_run}autoheader"} + + +MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"} + +install_sh=${install_sh-"$am_aux_dir/install-sh"} + +# Installed binaries are usually stripped using `strip' when the user +# run `make install-strip'. However `strip' might not be the right +# tool to use in cross-compilation environments, therefore Automake +# will honor the `STRIP' environment variable to overrule this program. +if test "$cross_compiling" != no; then + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. +set dummy ${ac_tool_prefix}strip; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_STRIP+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$STRIP"; then + ac_cv_prog_STRIP="$STRIP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_STRIP="${ac_tool_prefix}strip" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +STRIP=$ac_cv_prog_STRIP +if test -n "$STRIP"; then + echo "$as_me:$LINENO: result: $STRIP" >&5 +echo "${ECHO_T}$STRIP" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + +fi +if test -z "$ac_cv_prog_STRIP"; then + ac_ct_STRIP=$STRIP + # Extract the first word of "strip", so it can be a program name with args. +set dummy strip; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_ac_ct_STRIP+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$ac_ct_STRIP"; then + ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_STRIP="strip" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + + test -z "$ac_cv_prog_ac_ct_STRIP" && ac_cv_prog_ac_ct_STRIP=":" +fi +fi +ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP +if test -n "$ac_ct_STRIP"; then + echo "$as_me:$LINENO: result: $ac_ct_STRIP" >&5 +echo "${ECHO_T}$ac_ct_STRIP" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + STRIP=$ac_ct_STRIP +else + STRIP="$ac_cv_prog_STRIP" +fi + +fi +INSTALL_STRIP_PROGRAM="\${SHELL} \$(install_sh) -c -s" + +# We need awk for the "check" target. The system "awk" is bad on +# some platforms. +# Always define AMTAR for backward compatibility. + +AMTAR=${AMTAR-"${am_missing_run}tar"} + +am__tar='${AMTAR} chof - "$$tardir"'; am__untar='${AMTAR} xf -' + + + + + + +# +# Required optional feature to determine which template to install. +# Packagers are expected to put their own template in ./templates +# before configuring, so this should not get in their way. +# This should go away once we have option file parsing. +# +# Check whether --enable-template or --disable-template was given. +if test "${enable_template+set}" = set; then + enableval="$enable_template" + + if test -f "templates/$enableval.pm" + then + INITRD_TEMPLATE="$enableval" + + else + { { echo "$as_me:$LINENO: error: Template '$enableval' not found in ./templates" >&5 +echo "$as_me: error: Template '$enableval' not found in ./templates" >&2;} + { (exit 1); exit 1; }; } + fi + +else + { { echo "$as_me:$LINENO: error: required option --enable-template=xxx is missing" >&5 +echo "$as_me: error: required option --enable-template=xxx is missing" >&2;} + { (exit 1); exit 1; }; } +fi; + +# Check whether --enable-nuke or --disable-nuke was given. +if test "${enable_nuke+set}" = set; then + enableval="$enable_nuke" + + case "${enableval}" in + yes) enable_nuke=true ;; + no) enable_nuke=false ;; + *) { { echo "$as_me:$LINENO: error: bad value ${enableval} for --enable-nuke" >&5 +echo "$as_me: error: bad value ${enableval} for --enable-nuke" >&2;} + { (exit 1); exit 1; }; } ;; + esac + +else + + enable_nuke=false + +fi; +if test "$enable_nuke" = true; then + +cat >>confdefs.h <<\_ACEOF +#define ENABLE_NUKE 1 +_ACEOF + +fi + +# Checks for programs. +# Extract the first word of "perl", so it can be a program name with args. +set dummy perl; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_path_PERL+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + case $PERL in + [\\/]* | ?:[\\/]*) + ac_cv_path_PERL="$PERL" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_PERL="$as_dir/$ac_word$ac_exec_ext" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + + ;; +esac +fi +PERL=$ac_cv_path_PERL + +if test -n "$PERL"; then + echo "$as_me:$LINENO: result: $PERL" >&5 +echo "${ECHO_T}$PERL" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. +set dummy ${ac_tool_prefix}gcc; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="${ac_tool_prefix}gcc" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + echo "$as_me:$LINENO: result: $CC" >&5 +echo "${ECHO_T}$CC" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + +fi +if test -z "$ac_cv_prog_CC"; then + ac_ct_CC=$CC + # Extract the first word of "gcc", so it can be a program name with args. +set dummy gcc; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_ac_ct_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CC="gcc" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 +echo "${ECHO_T}$ac_ct_CC" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + CC=$ac_ct_CC +else + CC="$ac_cv_prog_CC" +fi + +if test -z "$CC"; then + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. +set dummy ${ac_tool_prefix}cc; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="${ac_tool_prefix}cc" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + echo "$as_me:$LINENO: result: $CC" >&5 +echo "${ECHO_T}$CC" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + +fi +if test -z "$ac_cv_prog_CC"; then + ac_ct_CC=$CC + # Extract the first word of "cc", so it can be a program name with args. +set dummy cc; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_ac_ct_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CC="cc" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 +echo "${ECHO_T}$ac_ct_CC" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + CC=$ac_ct_CC +else + CC="$ac_cv_prog_CC" +fi + +fi +if test -z "$CC"; then + # Extract the first word of "cc", so it can be a program name with args. +set dummy cc; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else + ac_prog_rejected=no +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then + ac_prog_rejected=yes + continue + fi + ac_cv_prog_CC="cc" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +if test $ac_prog_rejected = yes; then + # We found a bogon in the path, so make sure we never use it. + set dummy $ac_cv_prog_CC + shift + if test $# != 0; then + # We chose a different compiler from the bogus one. + # However, it has the same basename, so the bogon will be chosen + # first if we set CC to just the basename; use the full file name. + shift + ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@" + fi +fi +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + echo "$as_me:$LINENO: result: $CC" >&5 +echo "${ECHO_T}$CC" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + +fi +if test -z "$CC"; then + if test -n "$ac_tool_prefix"; then + for ac_prog in cl + do + # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. +set dummy $ac_tool_prefix$ac_prog; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="$ac_tool_prefix$ac_prog" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + echo "$as_me:$LINENO: result: $CC" >&5 +echo "${ECHO_T}$CC" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + test -n "$CC" && break + done +fi +if test -z "$CC"; then + ac_ct_CC=$CC + for ac_prog in cl +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_ac_ct_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CC="$ac_prog" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 +echo "${ECHO_T}$ac_ct_CC" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + test -n "$ac_ct_CC" && break +done + + CC=$ac_ct_CC +fi + +fi + + +test -z "$CC" && { { echo "$as_me:$LINENO: error: no acceptable C compiler found in \$PATH +See \`config.log' for more details." >&5 +echo "$as_me: error: no acceptable C compiler found in \$PATH +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } + +# Provide some information about the compiler. +echo "$as_me:$LINENO:" \ + "checking for C compiler version" >&5 +ac_compiler=`set X $ac_compile; echo $2` +{ (eval echo "$as_me:$LINENO: \"$ac_compiler --version &5\"") >&5 + (eval $ac_compiler --version &5) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } +{ (eval echo "$as_me:$LINENO: \"$ac_compiler -v &5\"") >&5 + (eval $ac_compiler -v &5) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } +{ (eval echo "$as_me:$LINENO: \"$ac_compiler -V &5\"") >&5 + (eval $ac_compiler -V &5) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } + +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +ac_clean_files_save=$ac_clean_files +ac_clean_files="$ac_clean_files a.out a.exe b.out" +# Try to create an executable without -o first, disregard a.out. +# It will help us diagnose broken compilers, and finding out an intuition +# of exeext. +echo "$as_me:$LINENO: checking for C compiler default output file name" >&5 +echo $ECHO_N "checking for C compiler default output file name... $ECHO_C" >&6 +ac_link_default=`echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` +if { (eval echo "$as_me:$LINENO: \"$ac_link_default\"") >&5 + (eval $ac_link_default) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; then + # Find the output, starting from the most likely. This scheme is +# not robust to junk in `.', hence go to wildcards (a.*) only as a last +# resort. + +# Be careful to initialize this variable, since it used to be cached. +# Otherwise an old cache value of `no' led to `EXEEXT = no' in a Makefile. +ac_cv_exeext= +# b.out is created by i960 compilers. +for ac_file in a_out.exe a.exe conftest.exe a.out conftest a.* conftest.* b.out +do + test -f "$ac_file" || continue + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.o | *.obj ) + ;; + conftest.$ac_ext ) + # This is the source file. + ;; + [ab].out ) + # We found the default executable, but exeext='' is most + # certainly right. + break;; + *.* ) + ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` + # FIXME: I believe we export ac_cv_exeext for Libtool, + # but it would be cool to find out if it's true. Does anybody + # maintain Libtool? --akim. + export ac_cv_exeext + break;; + * ) + break;; + esac +done +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +{ { echo "$as_me:$LINENO: error: C compiler cannot create executables +See \`config.log' for more details." >&5 +echo "$as_me: error: C compiler cannot create executables +See \`config.log' for more details." >&2;} + { (exit 77); exit 77; }; } +fi + +ac_exeext=$ac_cv_exeext +echo "$as_me:$LINENO: result: $ac_file" >&5 +echo "${ECHO_T}$ac_file" >&6 + +# Check the compiler produces executables we can run. If not, either +# the compiler is broken, or we cross compile. +echo "$as_me:$LINENO: checking whether the C compiler works" >&5 +echo $ECHO_N "checking whether the C compiler works... $ECHO_C" >&6 +# FIXME: These cross compiler hacks should be removed for Autoconf 3.0 +# If not cross compiling, check that we can run a simple program. +if test "$cross_compiling" != yes; then + if { ac_try='./$ac_file' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + cross_compiling=no + else + if test "$cross_compiling" = maybe; then + cross_compiling=yes + else + { { echo "$as_me:$LINENO: error: cannot run C compiled programs. +If you meant to cross compile, use \`--host'. +See \`config.log' for more details." >&5 +echo "$as_me: error: cannot run C compiled programs. +If you meant to cross compile, use \`--host'. +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } + fi + fi +fi +echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6 + +rm -f a.out a.exe conftest$ac_cv_exeext b.out +ac_clean_files=$ac_clean_files_save +# Check the compiler produces executables we can run. If not, either +# the compiler is broken, or we cross compile. +echo "$as_me:$LINENO: checking whether we are cross compiling" >&5 +echo $ECHO_N "checking whether we are cross compiling... $ECHO_C" >&6 +echo "$as_me:$LINENO: result: $cross_compiling" >&5 +echo "${ECHO_T}$cross_compiling" >&6 + +echo "$as_me:$LINENO: checking for suffix of executables" >&5 +echo $ECHO_N "checking for suffix of executables... $ECHO_C" >&6 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; then + # If both `conftest.exe' and `conftest' are `present' (well, observable) +# catch `conftest.exe'. For instance with Cygwin, `ls conftest' will +# work properly (i.e., refer to `conftest.exe'), while it won't with +# `rm'. +for ac_file in conftest.exe conftest conftest.*; do + test -f "$ac_file" || continue + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.o | *.obj ) ;; + *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` + export ac_cv_exeext + break;; + * ) break;; + esac +done +else + { { echo "$as_me:$LINENO: error: cannot compute suffix of executables: cannot compile and link +See \`config.log' for more details." >&5 +echo "$as_me: error: cannot compute suffix of executables: cannot compile and link +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } +fi + +rm -f conftest$ac_cv_exeext +echo "$as_me:$LINENO: result: $ac_cv_exeext" >&5 +echo "${ECHO_T}$ac_cv_exeext" >&6 + +rm -f conftest.$ac_ext +EXEEXT=$ac_cv_exeext +ac_exeext=$EXEEXT +echo "$as_me:$LINENO: checking for suffix of object files" >&5 +echo $ECHO_N "checking for suffix of object files... $ECHO_C" >&6 +if test "${ac_cv_objext+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.o conftest.obj +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; then + for ac_file in `(ls conftest.o conftest.obj; ls conftest.*) 2>/dev/null`; do + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg ) ;; + *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` + break;; + esac +done +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +{ { echo "$as_me:$LINENO: error: cannot compute suffix of object files: cannot compile +See \`config.log' for more details." >&5 +echo "$as_me: error: cannot compute suffix of object files: cannot compile +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } +fi + +rm -f conftest.$ac_cv_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_objext" >&5 +echo "${ECHO_T}$ac_cv_objext" >&6 +OBJEXT=$ac_cv_objext +ac_objext=$OBJEXT +echo "$as_me:$LINENO: checking whether we are using the GNU C compiler" >&5 +echo $ECHO_N "checking whether we are using the GNU C compiler... $ECHO_C" >&6 +if test "${ac_cv_c_compiler_gnu+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ +#ifndef __GNUC__ + choke me +#endif + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_compiler_gnu=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_compiler_gnu=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +ac_cv_c_compiler_gnu=$ac_compiler_gnu + +fi +echo "$as_me:$LINENO: result: $ac_cv_c_compiler_gnu" >&5 +echo "${ECHO_T}$ac_cv_c_compiler_gnu" >&6 +GCC=`test $ac_compiler_gnu = yes && echo yes` +ac_test_CFLAGS=${CFLAGS+set} +ac_save_CFLAGS=$CFLAGS +CFLAGS="-g" +echo "$as_me:$LINENO: checking whether $CC accepts -g" >&5 +echo $ECHO_N "checking whether $CC accepts -g... $ECHO_C" >&6 +if test "${ac_cv_prog_cc_g+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_prog_cc_g=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_prog_cc_g=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_prog_cc_g" >&5 +echo "${ECHO_T}$ac_cv_prog_cc_g" >&6 +if test "$ac_test_CFLAGS" = set; then + CFLAGS=$ac_save_CFLAGS +elif test $ac_cv_prog_cc_g = yes; then + if test "$GCC" = yes; then + CFLAGS="-g -O2" + else + CFLAGS="-g" + fi +else + if test "$GCC" = yes; then + CFLAGS="-O2" + else + CFLAGS= + fi +fi +echo "$as_me:$LINENO: checking for $CC option to accept ANSI C" >&5 +echo $ECHO_N "checking for $CC option to accept ANSI C... $ECHO_C" >&6 +if test "${ac_cv_prog_cc_stdc+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_cv_prog_cc_stdc=no +ac_save_CC=$CC +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +#include +#include +#include +/* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ +struct buf { int x; }; +FILE * (*rcsopen) (struct buf *, struct stat *, int); +static char *e (p, i) + char **p; + int i; +{ + return p[i]; +} +static char *f (char * (*g) (char **, int), char **p, ...) +{ + char *s; + va_list v; + va_start (v,p); + s = g (p, va_arg (v,int)); + va_end (v); + return s; +} + +/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has + function prototypes and stuff, but not '\xHH' hex character constants. + These don't provoke an error unfortunately, instead are silently treated + as 'x'. The following induces an error, until -std1 is added to get + proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an + array size at least. It's necessary to write '\x00'==0 to get something + that's true only with -std1. */ +int osf4_cc_array ['\x00' == 0 ? 1 : -1]; + +int test (int i, double x); +struct s1 {int (*f) (int a);}; +struct s2 {int (*f) (double a);}; +int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); +int argc; +char **argv; +int +main () +{ +return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; + ; + return 0; +} +_ACEOF +# Don't try gcc -ansi; that turns off useful extensions and +# breaks some systems' header files. +# AIX -qlanglvl=ansi +# Ultrix and OSF/1 -std1 +# HP-UX 10.20 and later -Ae +# HP-UX older versions -Aa -D_HPUX_SOURCE +# SVR4 -Xc -D__EXTENSIONS__ +for ac_arg in "" -qlanglvl=ansi -std1 -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" +do + CC="$ac_save_CC $ac_arg" + rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_prog_cc_stdc=$ac_arg +break +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +fi +rm -f conftest.err conftest.$ac_objext +done +rm -f conftest.$ac_ext conftest.$ac_objext +CC=$ac_save_CC + +fi + +case "x$ac_cv_prog_cc_stdc" in + x|xno) + echo "$as_me:$LINENO: result: none needed" >&5 +echo "${ECHO_T}none needed" >&6 ;; + *) + echo "$as_me:$LINENO: result: $ac_cv_prog_cc_stdc" >&5 +echo "${ECHO_T}$ac_cv_prog_cc_stdc" >&6 + CC="$CC $ac_cv_prog_cc_stdc" ;; +esac + +# Some people use a C++ compiler to compile C. Since we use `exit', +# in C++ we need to declare it. In case someone uses the same compiler +# for both compiling C and C++ we need to have the C++ compiler decide +# the declaration of exit, since it's the most demanding environment. +cat >conftest.$ac_ext <<_ACEOF +#ifndef __cplusplus + choke me +#endif +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + for ac_declaration in \ + '' \ + 'extern "C" void std::exit (int) throw (); using std::exit;' \ + 'extern "C" void std::exit (int); using std::exit;' \ + 'extern "C" void exit (int) throw ();' \ + 'extern "C" void exit (int);' \ + 'void exit (int);' +do + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_declaration +#include +int +main () +{ +exit (42); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + : +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +continue +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_declaration +int +main () +{ +exit (42); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + break +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +done +rm -f conftest* +if test -n "$ac_declaration"; then + echo '#ifdef __cplusplus' >>confdefs.h + echo $ac_declaration >>confdefs.h + echo '#endif' >>confdefs.h +fi + +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu +DEPDIR="${am__leading_dot}deps" + + ac_config_commands="$ac_config_commands depfiles" + + +am_make=${MAKE-make} +cat > confinc << 'END' +am__doit: + @echo done +.PHONY: am__doit +END +# If we don't find an include directive, just comment out the code. +echo "$as_me:$LINENO: checking for style of include used by $am_make" >&5 +echo $ECHO_N "checking for style of include used by $am_make... $ECHO_C" >&6 +am__include="#" +am__quote= +_am_result=none +# First try GNU make style include. +echo "include confinc" > confmf +# We grep out `Entering directory' and `Leaving directory' +# messages which can occur if `w' ends up in MAKEFLAGS. +# In particular we don't look at `^make:' because GNU make might +# be invoked under some other name (usually "gmake"), in which +# case it prints its new name instead of `make'. +if test "`$am_make -s -f confmf 2> /dev/null | grep -v 'ing directory'`" = "done"; then + am__include=include + am__quote= + _am_result=GNU +fi +# Now try BSD make style include. +if test "$am__include" = "#"; then + echo '.include "confinc"' > confmf + if test "`$am_make -s -f confmf 2> /dev/null`" = "done"; then + am__include=.include + am__quote="\"" + _am_result=BSD + fi +fi + + +echo "$as_me:$LINENO: result: $_am_result" >&5 +echo "${ECHO_T}$_am_result" >&6 +rm -f confinc confmf + +# Check whether --enable-dependency-tracking or --disable-dependency-tracking was given. +if test "${enable_dependency_tracking+set}" = set; then + enableval="$enable_dependency_tracking" + +fi; +if test "x$enable_dependency_tracking" != xno; then + am_depcomp="$ac_aux_dir/depcomp" + AMDEPBACKSLASH='\' +fi + + +if test "x$enable_dependency_tracking" != xno; then + AMDEP_TRUE= + AMDEP_FALSE='#' +else + AMDEP_TRUE='#' + AMDEP_FALSE= +fi + + + + +depcc="$CC" am_compiler_list= + +echo "$as_me:$LINENO: checking dependency style of $depcc" >&5 +echo $ECHO_N "checking dependency style of $depcc... $ECHO_C" >&6 +if test "${am_cv_CC_dependencies_compiler_type+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then + # We make a subdir and do the tests there. Otherwise we can end up + # making bogus files that we don't know about and never remove. For + # instance it was reported that on HP-UX the gcc test will end up + # making a dummy file named `D' -- because `-MD' means `put the output + # in D'. + mkdir conftest.dir + # Copy depcomp to subdir because otherwise we won't find it if we're + # using a relative directory. + cp "$am_depcomp" conftest.dir + cd conftest.dir + # We will build objects and dependencies in a subdirectory because + # it helps to detect inapplicable dependency modes. For instance + # both Tru64's cc and ICC support -MD to output dependencies as a + # side effect of compilation, but ICC will put the dependencies in + # the current directory while Tru64 will put them in the object + # directory. + mkdir sub + + am_cv_CC_dependencies_compiler_type=none + if test "$am_compiler_list" = ""; then + am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` + fi + for depmode in $am_compiler_list; do + # Setup a source with many dependencies, because some compilers + # like to wrap large dependency lists on column 80 (with \), and + # we should not choose a depcomp mode which is confused by this. + # + # We need to recreate these files for each test, as the compiler may + # overwrite some of them when testing with obscure command lines. + # This happens at least with the AIX C compiler. + : > sub/conftest.c + for i in 1 2 3 4 5 6; do + echo '#include "conftst'$i'.h"' >> sub/conftest.c + # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with + # Solaris 8's {/usr,}/bin/sh. + touch sub/conftst$i.h + done + echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf + + case $depmode in + nosideeffect) + # after this tag, mechanisms are not by side-effect, so they'll + # only be used when explicitly requested + if test "x$enable_dependency_tracking" = xyes; then + continue + else + break + fi + ;; + none) break ;; + esac + # We check with `-c' and `-o' for the sake of the "dashmstdout" + # mode. It turns out that the SunPro C++ compiler does not properly + # handle `-M -o', and we need to detect this. + if depmode=$depmode \ + source=sub/conftest.c object=sub/conftest.${OBJEXT-o} \ + depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ + $SHELL ./depcomp $depcc -c -o sub/conftest.${OBJEXT-o} sub/conftest.c \ + >/dev/null 2>conftest.err && + grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && + grep sub/conftest.${OBJEXT-o} sub/conftest.Po > /dev/null 2>&1 && + ${MAKE-make} -s -f confmf > /dev/null 2>&1; then + # icc doesn't choke on unknown options, it will just issue warnings + # or remarks (even with -Werror). So we grep stderr for any message + # that says an option was ignored or not supported. + # When given -MP, icc 7.0 and 7.1 complain thusly: + # icc: Command line warning: ignoring option '-M'; no argument required + # The diagnosis changed in icc 8.0: + # icc: Command line remark: option '-MP' not supported + if (grep 'ignoring option' conftest.err || + grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else + am_cv_CC_dependencies_compiler_type=$depmode + break + fi + fi + done + + cd .. + rm -rf conftest.dir +else + am_cv_CC_dependencies_compiler_type=none +fi + +fi +echo "$as_me:$LINENO: result: $am_cv_CC_dependencies_compiler_type" >&5 +echo "${ECHO_T}$am_cv_CC_dependencies_compiler_type" >&6 +CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type + + + +if + test "x$enable_dependency_tracking" != xno \ + && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then + am__fastdepCC_TRUE= + am__fastdepCC_FALSE='#' +else + am__fastdepCC_TRUE='#' + am__fastdepCC_FALSE= +fi + + + +# +# XML formatting; unclear what processor is most widely available. +# +# Extract the first word of "xmlto", so it can be a program name with args. +set dummy xmlto; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_path_XMLTO+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + case $XMLTO in + [\\/]* | ?:[\\/]*) + ac_cv_path_XMLTO="$XMLTO" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_XMLTO="$as_dir/$ac_word$ac_exec_ext" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + + test -z "$ac_cv_path_XMLTO" && ac_cv_path_XMLTO=":" + ;; +esac +fi +XMLTO=$ac_cv_path_XMLTO + +if test -n "$XMLTO"; then + echo "$as_me:$LINENO: result: $XMLTO" >&5 +echo "${ECHO_T}$XMLTO" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + +# Checks for libraries. +# Checks for header files. +# Checks for typedefs, structures, and compiler characteristics. +# Checks for library functions. + +# Use this when we need to compile C programs. + ac_config_headers="$ac_config_headers include/config.h" + + + ac_config_files="$ac_config_files Makefile templates/Makefile perl/Makefile doc/Makefile exec/Makefile doc/yaird.xml" + +cat >confcache <<\_ACEOF +# This file is a shell script that caches the results of configure +# tests run on this system so they can be shared between configure +# scripts and configure runs, see configure's option --config-cache. +# It is not useful on other systems. If it contains results you don't +# want to keep, you may remove or edit it. +# +# config.status only pays attention to the cache file if you give it +# the --recheck option to rerun configure. +# +# `ac_cv_env_foo' variables (set or unset) will be overridden when +# loading this file, other *unset* `ac_cv_foo' will be assigned the +# following values. + +_ACEOF + +# The following way of writing the cache mishandles newlines in values, +# but we know of no workaround that is simple, portable, and efficient. +# So, don't put newlines in cache variables' values. +# Ultrix sh set writes to stderr and can't be redirected directly, +# and sets the high bit in the cache file unless we assign to the vars. +{ + (set) 2>&1 | + case `(ac_space=' '; set | grep ac_space) 2>&1` in + *ac_space=\ *) + # `set' does not quote correctly, so add quotes (double-quote + # substitution turns \\\\ into \\, and sed turns \\ into \). + sed -n \ + "s/'/'\\\\''/g; + s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" + ;; + *) + # `set' quotes correctly as required by POSIX, so do not add quotes. + sed -n \ + "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p" + ;; + esac; +} | + sed ' + t clear + : clear + s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ + t end + /^ac_cv_env/!s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ + : end' >>confcache +if diff $cache_file confcache >/dev/null 2>&1; then :; else + if test -w $cache_file; then + test "x$cache_file" != "x/dev/null" && echo "updating cache $cache_file" + cat confcache >$cache_file + else + echo "not updating unwritable cache $cache_file" + fi +fi +rm -f confcache + +test "x$prefix" = xNONE && prefix=$ac_default_prefix +# Let make expand exec_prefix. +test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' + +# VPATH may cause trouble with some makes, so we remove $(srcdir), +# ${srcdir} and @srcdir@ from VPATH if srcdir is ".", strip leading and +# trailing colons and then remove the whole line if VPATH becomes empty +# (actually we leave an empty line to preserve line numbers). +if test "x$srcdir" = x.; then + ac_vpsub='/^[ ]*VPATH[ ]*=/{ +s/:*\$(srcdir):*/:/; +s/:*\${srcdir}:*/:/; +s/:*@srcdir@:*/:/; +s/^\([^=]*=[ ]*\):*/\1/; +s/:*$//; +s/^[^=]*=[ ]*$//; +}' +fi + +DEFS=-DHAVE_CONFIG_H + +ac_libobjs= +ac_ltlibobjs= +for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue + # 1. Remove the extension, and $U if already installed. + ac_i=`echo "$ac_i" | + sed 's/\$U\././;s/\.o$//;s/\.obj$//'` + # 2. Add them. + ac_libobjs="$ac_libobjs $ac_i\$U.$ac_objext" + ac_ltlibobjs="$ac_ltlibobjs $ac_i"'$U.lo' +done +LIBOBJS=$ac_libobjs + +LTLIBOBJS=$ac_ltlibobjs + + +if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then + { { echo "$as_me:$LINENO: error: conditional \"AMDEP\" was never defined. +Usually this means the macro was only invoked conditionally." >&5 +echo "$as_me: error: conditional \"AMDEP\" was never defined. +Usually this means the macro was only invoked conditionally." >&2;} + { (exit 1); exit 1; }; } +fi +if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then + { { echo "$as_me:$LINENO: error: conditional \"am__fastdepCC\" was never defined. +Usually this means the macro was only invoked conditionally." >&5 +echo "$as_me: error: conditional \"am__fastdepCC\" was never defined. +Usually this means the macro was only invoked conditionally." >&2;} + { (exit 1); exit 1; }; } +fi + +: ${CONFIG_STATUS=./config.status} +ac_clean_files_save=$ac_clean_files +ac_clean_files="$ac_clean_files $CONFIG_STATUS" +{ echo "$as_me:$LINENO: creating $CONFIG_STATUS" >&5 +echo "$as_me: creating $CONFIG_STATUS" >&6;} +cat >$CONFIG_STATUS <<_ACEOF +#! $SHELL +# Generated by $as_me. +# Run this file to recreate the current configuration. +# Compiler output produced by configure, useful for debugging +# configure, is in config.log if it exists. + +debug=false +ac_cs_recheck=false +ac_cs_silent=false +SHELL=\${CONFIG_SHELL-$SHELL} +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF +## --------------------- ## +## M4sh Initialization. ## +## --------------------- ## + +# Be Bourne compatible +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then + emulate sh + NULLCMD=: + # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' +elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then + set -o posix +fi +DUALCASE=1; export DUALCASE # for MKS sh + +# Support unset when possible. +if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then + as_unset=unset +else + as_unset=false +fi + + +# Work around bugs in pre-3.0 UWIN ksh. +$as_unset ENV MAIL MAILPATH +PS1='$ ' +PS2='> ' +PS4='+ ' + +# NLS nuisances. +for as_var in \ + LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \ + LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \ + LC_TELEPHONE LC_TIME +do + if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then + eval $as_var=C; export $as_var + else + $as_unset $as_var + fi +done + +# Required to use basename. +if expr a : '\(a\)' >/dev/null 2>&1; then + as_expr=expr +else + as_expr=false +fi + +if (basename /) >/dev/null 2>&1 && test "X`basename / 2>&1`" = "X/"; then + as_basename=basename +else + as_basename=false +fi + + +# Name of the executable. +as_me=`$as_basename "$0" || +$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ + X"$0" : 'X\(//\)$' \| \ + X"$0" : 'X\(/\)$' \| \ + . : '\(.\)' 2>/dev/null || +echo X/"$0" | + sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/; q; } + /^X\/\(\/\/\)$/{ s//\1/; q; } + /^X\/\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + + +# PATH needs CR, and LINENO needs CR and PATH. +# Avoid depending upon Character Ranges. +as_cr_letters='abcdefghijklmnopqrstuvwxyz' +as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' +as_cr_Letters=$as_cr_letters$as_cr_LETTERS +as_cr_digits='0123456789' +as_cr_alnum=$as_cr_Letters$as_cr_digits + +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + echo "#! /bin/sh" >conf$$.sh + echo "exit 0" >>conf$$.sh + chmod +x conf$$.sh + if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then + PATH_SEPARATOR=';' + else + PATH_SEPARATOR=: + fi + rm -f conf$$.sh +fi + + + as_lineno_1=$LINENO + as_lineno_2=$LINENO + as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` + test "x$as_lineno_1" != "x$as_lineno_2" && + test "x$as_lineno_3" = "x$as_lineno_2" || { + # Find who we are. Look in the path if we contain no path at all + # relative or not. + case $0 in + *[\\/]* ) as_myself=$0 ;; + *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break +done + + ;; + esac + # We did not find ourselves, most probably we were run as `sh COMMAND' + # in which case we are not to be found in the path. + if test "x$as_myself" = x; then + as_myself=$0 + fi + if test ! -f "$as_myself"; then + { { echo "$as_me:$LINENO: error: cannot find myself; rerun with an absolute path" >&5 +echo "$as_me: error: cannot find myself; rerun with an absolute path" >&2;} + { (exit 1); exit 1; }; } + fi + case $CONFIG_SHELL in + '') + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for as_base in sh bash ksh sh5; do + case $as_dir in + /*) + if ("$as_dir/$as_base" -c ' + as_lineno_1=$LINENO + as_lineno_2=$LINENO + as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` + test "x$as_lineno_1" != "x$as_lineno_2" && + test "x$as_lineno_3" = "x$as_lineno_2" ') 2>/dev/null; then + $as_unset BASH_ENV || test "${BASH_ENV+set}" != set || { BASH_ENV=; export BASH_ENV; } + $as_unset ENV || test "${ENV+set}" != set || { ENV=; export ENV; } + CONFIG_SHELL=$as_dir/$as_base + export CONFIG_SHELL + exec "$CONFIG_SHELL" "$0" ${1+"$@"} + fi;; + esac + done +done +;; + esac + + # Create $as_me.lineno as a copy of $as_myself, but with $LINENO + # uniformly replaced by the line number. The first 'sed' inserts a + # line-number line before each line; the second 'sed' does the real + # work. The second script uses 'N' to pair each line-number line + # with the numbered line, and appends trailing '-' during + # substitution so that $LINENO is not a special case at line end. + # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the + # second 'sed' script. Blame Lee E. McMahon for sed's syntax. :-) + sed '=' <$as_myself | + sed ' + N + s,$,-, + : loop + s,^\(['$as_cr_digits']*\)\(.*\)[$]LINENO\([^'$as_cr_alnum'_]\),\1\2\1\3, + t loop + s,-$,, + s,^['$as_cr_digits']*\n,, + ' >$as_me.lineno && + chmod +x $as_me.lineno || + { { echo "$as_me:$LINENO: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&5 +echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2;} + { (exit 1); exit 1; }; } + + # Don't try to exec as it changes $[0], causing all sort of problems + # (the dirname of $[0] is not the place where we might find the + # original and so on. Autoconf is especially sensible to this). + . ./$as_me.lineno + # Exit status is that of the last command. + exit +} + + +case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in + *c*,-n*) ECHO_N= ECHO_C=' +' ECHO_T=' ' ;; + *c*,* ) ECHO_N=-n ECHO_C= ECHO_T= ;; + *) ECHO_N= ECHO_C='\c' ECHO_T= ;; +esac + +if expr a : '\(a\)' >/dev/null 2>&1; then + as_expr=expr +else + as_expr=false +fi + +rm -f conf$$ conf$$.exe conf$$.file +echo >conf$$.file +if ln -s conf$$.file conf$$ 2>/dev/null; then + # We could just check for DJGPP; but this test a) works b) is more generic + # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04). + if test -f conf$$.exe; then + # Don't use ln at all; we don't have any links + as_ln_s='cp -p' + else + as_ln_s='ln -s' + fi +elif ln conf$$.file conf$$ 2>/dev/null; then + as_ln_s=ln +else + as_ln_s='cp -p' +fi +rm -f conf$$ conf$$.exe conf$$.file + +if mkdir -p . 2>/dev/null; then + as_mkdir_p=: +else + test -d ./-p && rmdir ./-p + as_mkdir_p=false +fi + +as_executable_p="test -f" + +# Sed expression to map a string onto a valid CPP name. +as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" + +# Sed expression to map a string onto a valid variable name. +as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" + + +# IFS +# We need space, tab and new line, in precisely that order. +as_nl=' +' +IFS=" $as_nl" + +# CDPATH. +$as_unset CDPATH + +exec 6>&1 + +# Open the log real soon, to keep \$[0] and so on meaningful, and to +# report actual input values of CONFIG_FILES etc. instead of their +# values after options handling. Logging --version etc. is OK. +exec 5>>config.log +{ + echo + sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX +## Running $as_me. ## +_ASBOX +} >&5 +cat >&5 <<_CSEOF + +This file was extended by $as_me, which was +generated by GNU Autoconf 2.59. Invocation command line was + + CONFIG_FILES = $CONFIG_FILES + CONFIG_HEADERS = $CONFIG_HEADERS + CONFIG_LINKS = $CONFIG_LINKS + CONFIG_COMMANDS = $CONFIG_COMMANDS + $ $0 $@ + +_CSEOF +echo "on `(hostname || uname -n) 2>/dev/null | sed 1q`" >&5 +echo >&5 +_ACEOF + +# Files that config.status was made for. +if test -n "$ac_config_files"; then + echo "config_files=\"$ac_config_files\"" >>$CONFIG_STATUS +fi + +if test -n "$ac_config_headers"; then + echo "config_headers=\"$ac_config_headers\"" >>$CONFIG_STATUS +fi + +if test -n "$ac_config_links"; then + echo "config_links=\"$ac_config_links\"" >>$CONFIG_STATUS +fi + +if test -n "$ac_config_commands"; then + echo "config_commands=\"$ac_config_commands\"" >>$CONFIG_STATUS +fi + +cat >>$CONFIG_STATUS <<\_ACEOF + +ac_cs_usage="\ +\`$as_me' instantiates files from templates according to the +current configuration. + +Usage: $0 [OPTIONS] [FILE]... + + -h, --help print this help, then exit + -V, --version print version number, then exit + -q, --quiet do not print progress messages + -d, --debug don't remove temporary files + --recheck update $as_me by reconfiguring in the same conditions + --file=FILE[:TEMPLATE] + instantiate the configuration file FILE + --header=FILE[:TEMPLATE] + instantiate the configuration header FILE + +Configuration files: +$config_files + +Configuration headers: +$config_headers + +Configuration commands: +$config_commands + +Report bugs to ." +_ACEOF + +cat >>$CONFIG_STATUS <<_ACEOF +ac_cs_version="\\ +config.status +configured by $0, generated by GNU Autoconf 2.59, + with options \\"`echo "$ac_configure_args" | sed 's/[\\""\`\$]/\\\\&/g'`\\" + +Copyright (C) 2003 Free Software Foundation, Inc. +This config.status script is free software; the Free Software Foundation +gives unlimited permission to copy, distribute and modify it." +srcdir=$srcdir +INSTALL="$INSTALL" +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF +# If no file are specified by the user, then we need to provide default +# value. By we need to know if files were specified by the user. +ac_need_defaults=: +while test $# != 0 +do + case $1 in + --*=*) + ac_option=`expr "x$1" : 'x\([^=]*\)='` + ac_optarg=`expr "x$1" : 'x[^=]*=\(.*\)'` + ac_shift=: + ;; + -*) + ac_option=$1 + ac_optarg=$2 + ac_shift=shift + ;; + *) # This is not an option, so the user has probably given explicit + # arguments. + ac_option=$1 + ac_need_defaults=false;; + esac + + case $ac_option in + # Handling of the options. +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF + -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) + ac_cs_recheck=: ;; + --version | --vers* | -V ) + echo "$ac_cs_version"; exit 0 ;; + --he | --h) + # Conflict between --help and --header + { { echo "$as_me:$LINENO: error: ambiguous option: $1 +Try \`$0 --help' for more information." >&5 +echo "$as_me: error: ambiguous option: $1 +Try \`$0 --help' for more information." >&2;} + { (exit 1); exit 1; }; };; + --help | --hel | -h ) + echo "$ac_cs_usage"; exit 0 ;; + --debug | --d* | -d ) + debug=: ;; + --file | --fil | --fi | --f ) + $ac_shift + CONFIG_FILES="$CONFIG_FILES $ac_optarg" + ac_need_defaults=false;; + --header | --heade | --head | --hea ) + $ac_shift + CONFIG_HEADERS="$CONFIG_HEADERS $ac_optarg" + ac_need_defaults=false;; + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil | --si | --s) + ac_cs_silent=: ;; + + # This is an error. + -*) { { echo "$as_me:$LINENO: error: unrecognized option: $1 +Try \`$0 --help' for more information." >&5 +echo "$as_me: error: unrecognized option: $1 +Try \`$0 --help' for more information." >&2;} + { (exit 1); exit 1; }; } ;; + + *) ac_config_targets="$ac_config_targets $1" ;; + + esac + shift +done + +ac_configure_extra_args= + +if $ac_cs_silent; then + exec 6>/dev/null + ac_configure_extra_args="$ac_configure_extra_args --silent" +fi + +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF +if \$ac_cs_recheck; then + echo "running $SHELL $0 " $ac_configure_args \$ac_configure_extra_args " --no-create --no-recursion" >&6 + exec $SHELL $0 $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion +fi + +_ACEOF + +cat >>$CONFIG_STATUS <<_ACEOF +# +# INIT-COMMANDS section. +# + +AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir" + +_ACEOF + + + +cat >>$CONFIG_STATUS <<\_ACEOF +for ac_config_target in $ac_config_targets +do + case "$ac_config_target" in + # Handling of arguments. + "Makefile" ) CONFIG_FILES="$CONFIG_FILES Makefile" ;; + "templates/Makefile" ) CONFIG_FILES="$CONFIG_FILES templates/Makefile" ;; + "perl/Makefile" ) CONFIG_FILES="$CONFIG_FILES perl/Makefile" ;; + "doc/Makefile" ) CONFIG_FILES="$CONFIG_FILES doc/Makefile" ;; + "exec/Makefile" ) CONFIG_FILES="$CONFIG_FILES exec/Makefile" ;; + "doc/yaird.xml" ) CONFIG_FILES="$CONFIG_FILES doc/yaird.xml" ;; + "depfiles" ) CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;; + "include/config.h" ) CONFIG_HEADERS="$CONFIG_HEADERS include/config.h" ;; + *) { { echo "$as_me:$LINENO: error: invalid argument: $ac_config_target" >&5 +echo "$as_me: error: invalid argument: $ac_config_target" >&2;} + { (exit 1); exit 1; }; };; + esac +done + +# If the user did not use the arguments to specify the items to instantiate, +# then the envvar interface is used. Set only those that are not. +# We use the long form for the default assignment because of an extremely +# bizarre bug on SunOS 4.1.3. +if $ac_need_defaults; then + test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files + test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers + test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands +fi + +# Have a temporary directory for convenience. Make it in the build tree +# simply because there is no reason to put it here, and in addition, +# creating and moving files from /tmp can sometimes cause problems. +# Create a temporary directory, and hook for its removal unless debugging. +$debug || +{ + trap 'exit_status=$?; rm -rf $tmp && exit $exit_status' 0 + trap '{ (exit 1); exit 1; }' 1 2 13 15 +} + +# Create a (secure) tmp directory for tmp files. + +{ + tmp=`(umask 077 && mktemp -d -q "./confstatXXXXXX") 2>/dev/null` && + test -n "$tmp" && test -d "$tmp" +} || +{ + tmp=./confstat$$-$RANDOM + (umask 077 && mkdir $tmp) +} || +{ + echo "$me: cannot create a temporary directory in ." >&2 + { (exit 1); exit 1; } +} + +_ACEOF + +cat >>$CONFIG_STATUS <<_ACEOF + +# +# CONFIG_FILES section. +# + +# No need to generate the scripts if there are no CONFIG_FILES. +# This happens for instance when ./config.status config.h +if test -n "\$CONFIG_FILES"; then + # Protect against being on the right side of a sed subst in config.status. + sed 's/,@/@@/; s/@,/@@/; s/,;t t\$/@;t t/; /@;t t\$/s/[\\\\&,]/\\\\&/g; + s/@@/,@/; s/@@/@,/; s/@;t t\$/,;t t/' >\$tmp/subs.sed <<\\CEOF +s,@SHELL@,$SHELL,;t t +s,@PATH_SEPARATOR@,$PATH_SEPARATOR,;t t +s,@PACKAGE_NAME@,$PACKAGE_NAME,;t t +s,@PACKAGE_TARNAME@,$PACKAGE_TARNAME,;t t +s,@PACKAGE_VERSION@,$PACKAGE_VERSION,;t t +s,@PACKAGE_STRING@,$PACKAGE_STRING,;t t +s,@PACKAGE_BUGREPORT@,$PACKAGE_BUGREPORT,;t t +s,@exec_prefix@,$exec_prefix,;t t +s,@prefix@,$prefix,;t t +s,@program_transform_name@,$program_transform_name,;t t +s,@bindir@,$bindir,;t t +s,@sbindir@,$sbindir,;t t +s,@libexecdir@,$libexecdir,;t t +s,@datadir@,$datadir,;t t +s,@sysconfdir@,$sysconfdir,;t t +s,@sharedstatedir@,$sharedstatedir,;t t +s,@localstatedir@,$localstatedir,;t t +s,@libdir@,$libdir,;t t +s,@includedir@,$includedir,;t t +s,@oldincludedir@,$oldincludedir,;t t +s,@infodir@,$infodir,;t t +s,@mandir@,$mandir,;t t +s,@build_alias@,$build_alias,;t t +s,@host_alias@,$host_alias,;t t +s,@target_alias@,$target_alias,;t t +s,@DEFS@,$DEFS,;t t +s,@ECHO_C@,$ECHO_C,;t t +s,@ECHO_N@,$ECHO_N,;t t +s,@ECHO_T@,$ECHO_T,;t t +s,@LIBS@,$LIBS,;t t +s,@INSTALL_PROGRAM@,$INSTALL_PROGRAM,;t t +s,@INSTALL_SCRIPT@,$INSTALL_SCRIPT,;t t +s,@INSTALL_DATA@,$INSTALL_DATA,;t t +s,@CYGPATH_W@,$CYGPATH_W,;t t +s,@PACKAGE@,$PACKAGE,;t t +s,@VERSION@,$VERSION,;t t +s,@ACLOCAL@,$ACLOCAL,;t t +s,@AUTOCONF@,$AUTOCONF,;t t +s,@AUTOMAKE@,$AUTOMAKE,;t t +s,@AUTOHEADER@,$AUTOHEADER,;t t +s,@MAKEINFO@,$MAKEINFO,;t t +s,@install_sh@,$install_sh,;t t +s,@STRIP@,$STRIP,;t t +s,@ac_ct_STRIP@,$ac_ct_STRIP,;t t +s,@INSTALL_STRIP_PROGRAM@,$INSTALL_STRIP_PROGRAM,;t t +s,@mkdir_p@,$mkdir_p,;t t +s,@AWK@,$AWK,;t t +s,@SET_MAKE@,$SET_MAKE,;t t +s,@am__leading_dot@,$am__leading_dot,;t t +s,@AMTAR@,$AMTAR,;t t +s,@am__tar@,$am__tar,;t t +s,@am__untar@,$am__untar,;t t +s,@INITRD_TEMPLATE@,$INITRD_TEMPLATE,;t t +s,@PERL@,$PERL,;t t +s,@CC@,$CC,;t t +s,@CFLAGS@,$CFLAGS,;t t +s,@LDFLAGS@,$LDFLAGS,;t t +s,@CPPFLAGS@,$CPPFLAGS,;t t +s,@ac_ct_CC@,$ac_ct_CC,;t t +s,@EXEEXT@,$EXEEXT,;t t +s,@OBJEXT@,$OBJEXT,;t t +s,@DEPDIR@,$DEPDIR,;t t +s,@am__include@,$am__include,;t t +s,@am__quote@,$am__quote,;t t +s,@AMDEP_TRUE@,$AMDEP_TRUE,;t t +s,@AMDEP_FALSE@,$AMDEP_FALSE,;t t +s,@AMDEPBACKSLASH@,$AMDEPBACKSLASH,;t t +s,@CCDEPMODE@,$CCDEPMODE,;t t +s,@am__fastdepCC_TRUE@,$am__fastdepCC_TRUE,;t t +s,@am__fastdepCC_FALSE@,$am__fastdepCC_FALSE,;t t +s,@XMLTO@,$XMLTO,;t t +s,@LIBOBJS@,$LIBOBJS,;t t +s,@LTLIBOBJS@,$LTLIBOBJS,;t t +CEOF + +_ACEOF + + cat >>$CONFIG_STATUS <<\_ACEOF + # Split the substitutions into bite-sized pieces for seds with + # small command number limits, like on Digital OSF/1 and HP-UX. + ac_max_sed_lines=48 + ac_sed_frag=1 # Number of current file. + ac_beg=1 # First line for current file. + ac_end=$ac_max_sed_lines # Line after last line for current file. + ac_more_lines=: + ac_sed_cmds= + while $ac_more_lines; do + if test $ac_beg -gt 1; then + sed "1,${ac_beg}d; ${ac_end}q" $tmp/subs.sed >$tmp/subs.frag + else + sed "${ac_end}q" $tmp/subs.sed >$tmp/subs.frag + fi + if test ! -s $tmp/subs.frag; then + ac_more_lines=false + else + # The purpose of the label and of the branching condition is to + # speed up the sed processing (if there are no `@' at all, there + # is no need to browse any of the substitutions). + # These are the two extra sed commands mentioned above. + (echo ':t + /@[a-zA-Z_][a-zA-Z_0-9]*@/!b' && cat $tmp/subs.frag) >$tmp/subs-$ac_sed_frag.sed + if test -z "$ac_sed_cmds"; then + ac_sed_cmds="sed -f $tmp/subs-$ac_sed_frag.sed" + else + ac_sed_cmds="$ac_sed_cmds | sed -f $tmp/subs-$ac_sed_frag.sed" + fi + ac_sed_frag=`expr $ac_sed_frag + 1` + ac_beg=$ac_end + ac_end=`expr $ac_end + $ac_max_sed_lines` + fi + done + if test -z "$ac_sed_cmds"; then + ac_sed_cmds=cat + fi +fi # test -n "$CONFIG_FILES" + +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF +for ac_file in : $CONFIG_FILES; do test "x$ac_file" = x: && continue + # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in". + case $ac_file in + - | *:- | *:-:* ) # input from stdin + cat >$tmp/stdin + ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` + ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; + *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` + ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; + * ) ac_file_in=$ac_file.in ;; + esac + + # Compute @srcdir@, @top_srcdir@, and @INSTALL@ for subdirectories. + ac_dir=`(dirname "$ac_file") 2>/dev/null || +$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$ac_file" : 'X\(//\)[^/]' \| \ + X"$ac_file" : 'X\(//\)$' \| \ + X"$ac_file" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$ac_file" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + { if $as_mkdir_p; then + mkdir -p "$ac_dir" + else + as_dir="$ac_dir" + as_dirs= + while test ! -d "$as_dir"; do + as_dirs="$as_dir $as_dirs" + as_dir=`(dirname "$as_dir") 2>/dev/null || +$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_dir" : 'X\(//\)[^/]' \| \ + X"$as_dir" : 'X\(//\)$' \| \ + X"$as_dir" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$as_dir" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + done + test ! -n "$as_dirs" || mkdir $as_dirs + fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5 +echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;} + { (exit 1); exit 1; }; }; } + + ac_builddir=. + +if test "$ac_dir" != .; then + ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` + # A "../" for each directory in $ac_dir_suffix. + ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'` +else + ac_dir_suffix= ac_top_builddir= +fi + +case $srcdir in + .) # No --srcdir option. We are building in place. + ac_srcdir=. + if test -z "$ac_top_builddir"; then + ac_top_srcdir=. + else + ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'` + fi ;; + [\\/]* | ?:[\\/]* ) # Absolute path. + ac_srcdir=$srcdir$ac_dir_suffix; + ac_top_srcdir=$srcdir ;; + *) # Relative path. + ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix + ac_top_srcdir=$ac_top_builddir$srcdir ;; +esac + +# Do not use `cd foo && pwd` to compute absolute paths, because +# the directories may not exist. +case `pwd` in +.) ac_abs_builddir="$ac_dir";; +*) + case "$ac_dir" in + .) ac_abs_builddir=`pwd`;; + [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";; + *) ac_abs_builddir=`pwd`/"$ac_dir";; + esac;; +esac +case $ac_abs_builddir in +.) ac_abs_top_builddir=${ac_top_builddir}.;; +*) + case ${ac_top_builddir}. in + .) ac_abs_top_builddir=$ac_abs_builddir;; + [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;; + *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;; + esac;; +esac +case $ac_abs_builddir in +.) ac_abs_srcdir=$ac_srcdir;; +*) + case $ac_srcdir in + .) ac_abs_srcdir=$ac_abs_builddir;; + [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;; + *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;; + esac;; +esac +case $ac_abs_builddir in +.) ac_abs_top_srcdir=$ac_top_srcdir;; +*) + case $ac_top_srcdir in + .) ac_abs_top_srcdir=$ac_abs_builddir;; + [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;; + *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;; + esac;; +esac + + + case $INSTALL in + [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; + *) ac_INSTALL=$ac_top_builddir$INSTALL ;; + esac + + # Let's still pretend it is `configure' which instantiates (i.e., don't + # use $as_me), people would be surprised to read: + # /* config.h. Generated by config.status. */ + if test x"$ac_file" = x-; then + configure_input= + else + configure_input="$ac_file. " + fi + configure_input=$configure_input"Generated from `echo $ac_file_in | + sed 's,.*/,,'` by configure." + + # First look for the input files in the build tree, otherwise in the + # src tree. + ac_file_inputs=`IFS=: + for f in $ac_file_in; do + case $f in + -) echo $tmp/stdin ;; + [\\/$]*) + # Absolute (can't be DOS-style, as IFS=:) + test -f "$f" || { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 +echo "$as_me: error: cannot find input file: $f" >&2;} + { (exit 1); exit 1; }; } + echo "$f";; + *) # Relative + if test -f "$f"; then + # Build tree + echo "$f" + elif test -f "$srcdir/$f"; then + # Source tree + echo "$srcdir/$f" + else + # /dev/null tree + { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 +echo "$as_me: error: cannot find input file: $f" >&2;} + { (exit 1); exit 1; }; } + fi;; + esac + done` || { (exit 1); exit 1; } + + if test x"$ac_file" != x-; then + { echo "$as_me:$LINENO: creating $ac_file" >&5 +echo "$as_me: creating $ac_file" >&6;} + rm -f "$ac_file" + fi +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF + sed "$ac_vpsub +$extrasub +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF +:t +/@[a-zA-Z_][a-zA-Z_0-9]*@/!b +s,@configure_input@,$configure_input,;t t +s,@srcdir@,$ac_srcdir,;t t +s,@abs_srcdir@,$ac_abs_srcdir,;t t +s,@top_srcdir@,$ac_top_srcdir,;t t +s,@abs_top_srcdir@,$ac_abs_top_srcdir,;t t +s,@builddir@,$ac_builddir,;t t +s,@abs_builddir@,$ac_abs_builddir,;t t +s,@top_builddir@,$ac_top_builddir,;t t +s,@abs_top_builddir@,$ac_abs_top_builddir,;t t +s,@INSTALL@,$ac_INSTALL,;t t +" $ac_file_inputs | (eval "$ac_sed_cmds") >$tmp/out + rm -f $tmp/stdin + if test x"$ac_file" != x-; then + mv $tmp/out $ac_file + else + cat $tmp/out + rm -f $tmp/out + fi + +done +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF + +# +# CONFIG_HEADER section. +# + +# These sed commands are passed to sed as "A NAME B NAME C VALUE D", where +# NAME is the cpp macro being defined and VALUE is the value it is being given. +# +# ac_d sets the value in "#define NAME VALUE" lines. +ac_dA='s,^\([ ]*\)#\([ ]*define[ ][ ]*\)' +ac_dB='[ ].*$,\1#\2' +ac_dC=' ' +ac_dD=',;t' +# ac_u turns "#undef NAME" without trailing blanks into "#define NAME VALUE". +ac_uA='s,^\([ ]*\)#\([ ]*\)undef\([ ][ ]*\)' +ac_uB='$,\1#\2define\3' +ac_uC=' ' +ac_uD=',;t' + +for ac_file in : $CONFIG_HEADERS; do test "x$ac_file" = x: && continue + # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in". + case $ac_file in + - | *:- | *:-:* ) # input from stdin + cat >$tmp/stdin + ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` + ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; + *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` + ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; + * ) ac_file_in=$ac_file.in ;; + esac + + test x"$ac_file" != x- && { echo "$as_me:$LINENO: creating $ac_file" >&5 +echo "$as_me: creating $ac_file" >&6;} + + # First look for the input files in the build tree, otherwise in the + # src tree. + ac_file_inputs=`IFS=: + for f in $ac_file_in; do + case $f in + -) echo $tmp/stdin ;; + [\\/$]*) + # Absolute (can't be DOS-style, as IFS=:) + test -f "$f" || { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 +echo "$as_me: error: cannot find input file: $f" >&2;} + { (exit 1); exit 1; }; } + # Do quote $f, to prevent DOS paths from being IFS'd. + echo "$f";; + *) # Relative + if test -f "$f"; then + # Build tree + echo "$f" + elif test -f "$srcdir/$f"; then + # Source tree + echo "$srcdir/$f" + else + # /dev/null tree + { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 +echo "$as_me: error: cannot find input file: $f" >&2;} + { (exit 1); exit 1; }; } + fi;; + esac + done` || { (exit 1); exit 1; } + # Remove the trailing spaces. + sed 's/[ ]*$//' $ac_file_inputs >$tmp/in + +_ACEOF + +# Transform confdefs.h into two sed scripts, `conftest.defines' and +# `conftest.undefs', that substitutes the proper values into +# config.h.in to produce config.h. The first handles `#define' +# templates, and the second `#undef' templates. +# And first: Protect against being on the right side of a sed subst in +# config.status. Protect against being in an unquoted here document +# in config.status. +rm -f conftest.defines conftest.undefs +# Using a here document instead of a string reduces the quoting nightmare. +# Putting comments in sed scripts is not portable. +# +# `end' is used to avoid that the second main sed command (meant for +# 0-ary CPP macros) applies to n-ary macro definitions. +# See the Autoconf documentation for `clear'. +cat >confdef2sed.sed <<\_ACEOF +s/[\\&,]/\\&/g +s,[\\$`],\\&,g +t clear +: clear +s,^[ ]*#[ ]*define[ ][ ]*\([^ (][^ (]*\)\(([^)]*)\)[ ]*\(.*\)$,${ac_dA}\1${ac_dB}\1\2${ac_dC}\3${ac_dD},gp +t end +s,^[ ]*#[ ]*define[ ][ ]*\([^ ][^ ]*\)[ ]*\(.*\)$,${ac_dA}\1${ac_dB}\1${ac_dC}\2${ac_dD},gp +: end +_ACEOF +# If some macros were called several times there might be several times +# the same #defines, which is useless. Nevertheless, we may not want to +# sort them, since we want the *last* AC-DEFINE to be honored. +uniq confdefs.h | sed -n -f confdef2sed.sed >conftest.defines +sed 's/ac_d/ac_u/g' conftest.defines >conftest.undefs +rm -f confdef2sed.sed + +# This sed command replaces #undef with comments. This is necessary, for +# example, in the case of _POSIX_SOURCE, which is predefined and required +# on some systems where configure will not decide to define it. +cat >>conftest.undefs <<\_ACEOF +s,^[ ]*#[ ]*undef[ ][ ]*[a-zA-Z_][a-zA-Z_0-9]*,/* & */, +_ACEOF + +# Break up conftest.defines because some shells have a limit on the size +# of here documents, and old seds have small limits too (100 cmds). +echo ' # Handle all the #define templates only if necessary.' >>$CONFIG_STATUS +echo ' if grep "^[ ]*#[ ]*define" $tmp/in >/dev/null; then' >>$CONFIG_STATUS +echo ' # If there are no defines, we may have an empty if/fi' >>$CONFIG_STATUS +echo ' :' >>$CONFIG_STATUS +rm -f conftest.tail +while grep . conftest.defines >/dev/null +do + # Write a limited-size here document to $tmp/defines.sed. + echo ' cat >$tmp/defines.sed <>$CONFIG_STATUS + # Speed up: don't consider the non `#define' lines. + echo '/^[ ]*#[ ]*define/!b' >>$CONFIG_STATUS + # Work around the forget-to-reset-the-flag bug. + echo 't clr' >>$CONFIG_STATUS + echo ': clr' >>$CONFIG_STATUS + sed ${ac_max_here_lines}q conftest.defines >>$CONFIG_STATUS + echo 'CEOF + sed -f $tmp/defines.sed $tmp/in >$tmp/out + rm -f $tmp/in + mv $tmp/out $tmp/in +' >>$CONFIG_STATUS + sed 1,${ac_max_here_lines}d conftest.defines >conftest.tail + rm -f conftest.defines + mv conftest.tail conftest.defines +done +rm -f conftest.defines +echo ' fi # grep' >>$CONFIG_STATUS +echo >>$CONFIG_STATUS + +# Break up conftest.undefs because some shells have a limit on the size +# of here documents, and old seds have small limits too (100 cmds). +echo ' # Handle all the #undef templates' >>$CONFIG_STATUS +rm -f conftest.tail +while grep . conftest.undefs >/dev/null +do + # Write a limited-size here document to $tmp/undefs.sed. + echo ' cat >$tmp/undefs.sed <>$CONFIG_STATUS + # Speed up: don't consider the non `#undef' + echo '/^[ ]*#[ ]*undef/!b' >>$CONFIG_STATUS + # Work around the forget-to-reset-the-flag bug. + echo 't clr' >>$CONFIG_STATUS + echo ': clr' >>$CONFIG_STATUS + sed ${ac_max_here_lines}q conftest.undefs >>$CONFIG_STATUS + echo 'CEOF + sed -f $tmp/undefs.sed $tmp/in >$tmp/out + rm -f $tmp/in + mv $tmp/out $tmp/in +' >>$CONFIG_STATUS + sed 1,${ac_max_here_lines}d conftest.undefs >conftest.tail + rm -f conftest.undefs + mv conftest.tail conftest.undefs +done +rm -f conftest.undefs + +cat >>$CONFIG_STATUS <<\_ACEOF + # Let's still pretend it is `configure' which instantiates (i.e., don't + # use $as_me), people would be surprised to read: + # /* config.h. Generated by config.status. */ + if test x"$ac_file" = x-; then + echo "/* Generated by configure. */" >$tmp/config.h + else + echo "/* $ac_file. Generated by configure. */" >$tmp/config.h + fi + cat $tmp/in >>$tmp/config.h + rm -f $tmp/in + if test x"$ac_file" != x-; then + if diff $ac_file $tmp/config.h >/dev/null 2>&1; then + { echo "$as_me:$LINENO: $ac_file is unchanged" >&5 +echo "$as_me: $ac_file is unchanged" >&6;} + else + ac_dir=`(dirname "$ac_file") 2>/dev/null || +$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$ac_file" : 'X\(//\)[^/]' \| \ + X"$ac_file" : 'X\(//\)$' \| \ + X"$ac_file" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$ac_file" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + { if $as_mkdir_p; then + mkdir -p "$ac_dir" + else + as_dir="$ac_dir" + as_dirs= + while test ! -d "$as_dir"; do + as_dirs="$as_dir $as_dirs" + as_dir=`(dirname "$as_dir") 2>/dev/null || +$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_dir" : 'X\(//\)[^/]' \| \ + X"$as_dir" : 'X\(//\)$' \| \ + X"$as_dir" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$as_dir" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + done + test ! -n "$as_dirs" || mkdir $as_dirs + fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5 +echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;} + { (exit 1); exit 1; }; }; } + + rm -f $ac_file + mv $tmp/config.h $ac_file + fi + else + cat $tmp/config.h + rm -f $tmp/config.h + fi +# Compute $ac_file's index in $config_headers. +_am_stamp_count=1 +for _am_header in $config_headers :; do + case $_am_header in + $ac_file | $ac_file:* ) + break ;; + * ) + _am_stamp_count=`expr $_am_stamp_count + 1` ;; + esac +done +echo "timestamp for $ac_file" >`(dirname $ac_file) 2>/dev/null || +$as_expr X$ac_file : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X$ac_file : 'X\(//\)[^/]' \| \ + X$ac_file : 'X\(//\)$' \| \ + X$ac_file : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X$ac_file | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'`/stamp-h$_am_stamp_count +done +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF + +# +# CONFIG_COMMANDS section. +# +for ac_file in : $CONFIG_COMMANDS; do test "x$ac_file" = x: && continue + ac_dest=`echo "$ac_file" | sed 's,:.*,,'` + ac_source=`echo "$ac_file" | sed 's,[^:]*:,,'` + ac_dir=`(dirname "$ac_dest") 2>/dev/null || +$as_expr X"$ac_dest" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$ac_dest" : 'X\(//\)[^/]' \| \ + X"$ac_dest" : 'X\(//\)$' \| \ + X"$ac_dest" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$ac_dest" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + { if $as_mkdir_p; then + mkdir -p "$ac_dir" + else + as_dir="$ac_dir" + as_dirs= + while test ! -d "$as_dir"; do + as_dirs="$as_dir $as_dirs" + as_dir=`(dirname "$as_dir") 2>/dev/null || +$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_dir" : 'X\(//\)[^/]' \| \ + X"$as_dir" : 'X\(//\)$' \| \ + X"$as_dir" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$as_dir" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + done + test ! -n "$as_dirs" || mkdir $as_dirs + fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5 +echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;} + { (exit 1); exit 1; }; }; } + + ac_builddir=. + +if test "$ac_dir" != .; then + ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` + # A "../" for each directory in $ac_dir_suffix. + ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'` +else + ac_dir_suffix= ac_top_builddir= +fi + +case $srcdir in + .) # No --srcdir option. We are building in place. + ac_srcdir=. + if test -z "$ac_top_builddir"; then + ac_top_srcdir=. + else + ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'` + fi ;; + [\\/]* | ?:[\\/]* ) # Absolute path. + ac_srcdir=$srcdir$ac_dir_suffix; + ac_top_srcdir=$srcdir ;; + *) # Relative path. + ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix + ac_top_srcdir=$ac_top_builddir$srcdir ;; +esac + +# Do not use `cd foo && pwd` to compute absolute paths, because +# the directories may not exist. +case `pwd` in +.) ac_abs_builddir="$ac_dir";; +*) + case "$ac_dir" in + .) ac_abs_builddir=`pwd`;; + [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";; + *) ac_abs_builddir=`pwd`/"$ac_dir";; + esac;; +esac +case $ac_abs_builddir in +.) ac_abs_top_builddir=${ac_top_builddir}.;; +*) + case ${ac_top_builddir}. in + .) ac_abs_top_builddir=$ac_abs_builddir;; + [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;; + *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;; + esac;; +esac +case $ac_abs_builddir in +.) ac_abs_srcdir=$ac_srcdir;; +*) + case $ac_srcdir in + .) ac_abs_srcdir=$ac_abs_builddir;; + [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;; + *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;; + esac;; +esac +case $ac_abs_builddir in +.) ac_abs_top_srcdir=$ac_top_srcdir;; +*) + case $ac_top_srcdir in + .) ac_abs_top_srcdir=$ac_abs_builddir;; + [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;; + *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;; + esac;; +esac + + + { echo "$as_me:$LINENO: executing $ac_dest commands" >&5 +echo "$as_me: executing $ac_dest commands" >&6;} + case $ac_dest in + depfiles ) test x"$AMDEP_TRUE" != x"" || for mf in $CONFIG_FILES; do + # Strip MF so we end up with the name of the file. + mf=`echo "$mf" | sed -e 's/:.*$//'` + # Check whether this is an Automake generated Makefile or not. + # We used to match only the files named `Makefile.in', but + # some people rename them; so instead we look at the file content. + # Grep'ing the first line is not enough: some people post-process + # each Makefile.in and add a new line on top of each file to say so. + # So let's grep whole file. + if grep '^#.*generated by automake' $mf > /dev/null 2>&1; then + dirpart=`(dirname "$mf") 2>/dev/null || +$as_expr X"$mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$mf" : 'X\(//\)[^/]' \| \ + X"$mf" : 'X\(//\)$' \| \ + X"$mf" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$mf" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + else + continue + fi + # Extract the definition of DEPDIR, am__include, and am__quote + # from the Makefile without running `make'. + DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` + test -z "$DEPDIR" && continue + am__include=`sed -n 's/^am__include = //p' < "$mf"` + test -z "am__include" && continue + am__quote=`sed -n 's/^am__quote = //p' < "$mf"` + # When using ansi2knr, U may be empty or an underscore; expand it + U=`sed -n 's/^U = //p' < "$mf"` + # Find all dependency output files, they are included files with + # $(DEPDIR) in their names. We invoke sed twice because it is the + # simplest approach to changing $(DEPDIR) to its actual value in the + # expansion. + for file in `sed -n " + s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ + sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do + # Make sure the directory exists. + test -f "$dirpart/$file" && continue + fdir=`(dirname "$file") 2>/dev/null || +$as_expr X"$file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$file" : 'X\(//\)[^/]' \| \ + X"$file" : 'X\(//\)$' \| \ + X"$file" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$file" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + { if $as_mkdir_p; then + mkdir -p $dirpart/$fdir + else + as_dir=$dirpart/$fdir + as_dirs= + while test ! -d "$as_dir"; do + as_dirs="$as_dir $as_dirs" + as_dir=`(dirname "$as_dir") 2>/dev/null || +$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_dir" : 'X\(//\)[^/]' \| \ + X"$as_dir" : 'X\(//\)$' \| \ + X"$as_dir" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$as_dir" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + done + test ! -n "$as_dirs" || mkdir $as_dirs + fi || { { echo "$as_me:$LINENO: error: cannot create directory $dirpart/$fdir" >&5 +echo "$as_me: error: cannot create directory $dirpart/$fdir" >&2;} + { (exit 1); exit 1; }; }; } + + # echo "creating $dirpart/$file" + echo '# dummy' > "$dirpart/$file" + done +done + ;; + esac +done +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF + +{ (exit 0); exit 0; } +_ACEOF +chmod +x $CONFIG_STATUS +ac_clean_files=$ac_clean_files_save + + +# configure is writing to config.log, and then calls config.status. +# config.status does its own redirection, appending to config.log. +# Unfortunately, on DOS this fails, as config.log is still kept open +# by configure, so config.status won't be able to write to it; its +# output is simply discarded. So we exec the FD to /dev/null, +# effectively closing config.log, so it can be properly (re)opened and +# appended to by config.status. When coming back to configure, we +# need to make the FD available again. +if test "$no_create" != yes; then + ac_cs_success=: + ac_config_status_args= + test "$silent" = yes && + ac_config_status_args="$ac_config_status_args --quiet" + exec 5>/dev/null + $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false + exec 5>>config.log + # Use ||, not &&, to avoid exiting from the if with $? = 1, which + # would make configure fail if this is the last instruction. + $ac_cs_success || { (exit 1); exit 1; } +fi + + diff --git a/rescue/linux/cdrom/yaird-0.0.5/configure.in b/rescue/linux/cdrom/yaird-0.0.5/configure.in new file mode 100644 index 0000000..0a38911 --- /dev/null +++ b/rescue/linux/cdrom/yaird-0.0.5/configure.in @@ -0,0 +1,75 @@ +# +# Process this file with autoconf to produce a configure script. +# + +# autoconf claims that this should be package name; +# but it seems that the name of a randomly choosen but +# existing file is required. +AC_INIT(perl/main.pl) + +YAIRD_VERSION=0.0.5 +AM_INIT_AUTOMAKE(yaird,${YAIRD_VERSION}) + +# +# Required optional feature to determine which template to install. +# Packagers are expected to put their own template in ./templates +# before configuring, so this should not get in their way. +# This should go away once we have option file parsing. +# +AC_ARG_ENABLE(template, + AC_HELP_STRING([--enable-template=name],[install templates/name.pm as initrd template (no default)]), + [ + if test -f "templates/$enableval.pm" + then + INITRD_TEMPLATE="$enableval" + AC_SUBST(INITRD_TEMPLATE) + else + AC_MSG_ERROR(Template '$enableval' not found in ./templates) + fi + ], + [ AC_MSG_ERROR(required option --enable-template=xxx is missing) ]) + +AC_ARG_ENABLE(nuke, + AC_HELP_STRING([--enable-nuke], + [Nuke initramfs before moving to real root]), + [ + case "${enableval}" in + yes) enable_nuke=true ;; + no) enable_nuke=false ;; + *) AC_MSG_ERROR(bad value ${enableval} for --enable-nuke) ;; + esac + ],[ + enable_nuke=false + ]) +if test "$enable_nuke" = true; then + AC_DEFINE(ENABLE_NUKE,1, + [Define to nuke initramfs before moving to real root]) +fi + +# Checks for programs. +AC_PATH_PROG(PERL,perl) +AC_PROG_CC + +# +# XML formatting; unclear what processor is most widely available. +# +AC_PATH_PROG(XMLTO,xmlto,:) + +# Checks for libraries. +# Checks for header files. +# Checks for typedefs, structures, and compiler characteristics. +# Checks for library functions. + +# Use this when we need to compile C programs. +AM_CONFIG_HEADER(include/config.h) + +AC_CONFIG_FILES([ + Makefile + templates/Makefile + perl/Makefile + doc/Makefile + exec/Makefile + doc/yaird.xml + ]) +AC_OUTPUT() + diff --git a/rescue/linux/cdrom/yaird-0.0.5/depcomp b/rescue/linux/cdrom/yaird-0.0.5/depcomp new file mode 100755 index 0000000..ffcd540 --- /dev/null +++ b/rescue/linux/cdrom/yaird-0.0.5/depcomp @@ -0,0 +1,529 @@ +#! /bin/sh +# depcomp - compile a program generating dependencies as side-effects + +scriptversion=2005-02-09.22 + +# Copyright (C) 1999, 2000, 2003, 2004, 2005 Free Software Foundation, Inc. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2, or (at your option) +# any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA +# 02111-1307, USA. + +# 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 Alexandre Oliva . + +case $1 in + '') + echo "$0: No command. Try \`$0 --help' for more information." 1>&2 + exit 1; + ;; + -h | --h*) + cat <<\EOF +Usage: depcomp [--help] [--version] PROGRAM [ARGS] + +Run PROGRAMS ARGS to compile a file, generating dependencies +as side-effects. + +Environment variables: + depmode Dependency tracking mode. + source Source file read by `PROGRAMS ARGS'. + object Object file output by `PROGRAMS ARGS'. + DEPDIR directory where to store dependencies. + depfile Dependency file to output. + tmpdepfile Temporary file to use when outputing dependencies. + libtool Whether libtool is used (yes/no). + +Report bugs to . +EOF + exit $? + ;; + -v | --v*) + echo "depcomp $scriptversion" + exit $? + ;; +esac + +if test -z "$depmode" || test -z "$source" || test -z "$object"; then + echo "depcomp: Variables source, object and depmode must be set" 1>&2 + exit 1 +fi + +# Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po. +depfile=${depfile-`echo "$object" | + sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`} +tmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`} + +rm -f "$tmpdepfile" + +# Some modes work just like other modes, but use different flags. We +# parameterize here, but still list the modes in the big case below, +# to make depend.m4 easier to write. Note that we *cannot* use a case +# here, because this file can only contain one case statement. +if test "$depmode" = hp; then + # HP compiler uses -M and no extra arg. + gccflag=-M + depmode=gcc +fi + +if test "$depmode" = dashXmstdout; then + # This is just like dashmstdout with a different argument. + dashmflag=-xM + depmode=dashmstdout +fi + +case "$depmode" in +gcc3) +## gcc 3 implements dependency tracking that does exactly what +## we want. Yay! Note: for some reason libtool 1.4 doesn't like +## it if -MD -MP comes after the -MF stuff. Hmm. + "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" + stat=$? + if test $stat -eq 0; then : + else + rm -f "$tmpdepfile" + exit $stat + fi + mv "$tmpdepfile" "$depfile" + ;; + +gcc) +## There are various ways to get dependency output from gcc. Here's +## why we pick this rather obscure method: +## - Don't want to use -MD because we'd like the dependencies to end +## up in a subdir. Having to rename by hand is ugly. +## (We might end up doing this anyway to support other compilers.) +## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like +## -MM, not -M (despite what the docs say). +## - Using -M directly means running the compiler twice (even worse +## than renaming). + if test -z "$gccflag"; then + gccflag=-MD, + fi + "$@" -Wp,"$gccflag$tmpdepfile" + stat=$? + if test $stat -eq 0; then : + else + rm -f "$tmpdepfile" + exit $stat + fi + rm -f "$depfile" + echo "$object : \\" > "$depfile" + alpha=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz +## The second -e expression handles DOS-style file names with drive letters. + sed -e 's/^[^:]*: / /' \ + -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile" +## This next piece of magic avoids the `deleted header file' problem. +## The problem is that when a header file which appears in a .P file +## is deleted, the dependency causes make to die (because there is +## typically no way to rebuild the header). We avoid this by adding +## dummy dependencies for each header file. Too bad gcc doesn't do +## this for us directly. + tr ' ' ' +' < "$tmpdepfile" | +## Some versions of gcc put a space before the `:'. On the theory +## that the space means something, we add a space to the output as +## well. +## Some versions of the HPUX 10.20 sed can't process this invocation +## correctly. Breaking it into two sed invocations is a workaround. + sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" + rm -f "$tmpdepfile" + ;; + +hp) + # This case exists only to let depend.m4 do its work. It works by + # looking at the text of this script. This case will never be run, + # since it is checked for above. + exit 1 + ;; + +sgi) + if test "$libtool" = yes; then + "$@" "-Wp,-MDupdate,$tmpdepfile" + else + "$@" -MDupdate "$tmpdepfile" + fi + stat=$? + if test $stat -eq 0; then : + else + rm -f "$tmpdepfile" + exit $stat + fi + rm -f "$depfile" + + if test -f "$tmpdepfile"; then # yes, the sourcefile depend on other files + echo "$object : \\" > "$depfile" + + # Clip off the initial element (the dependent). Don't try to be + # clever and replace this with sed code, as IRIX sed won't handle + # lines with more than a fixed number of characters (4096 in + # IRIX 6.2 sed, 8192 in IRIX 6.5). We also remove comment lines; + # the IRIX cc adds comments like `#:fec' to the end of the + # dependency line. + tr ' ' ' +' < "$tmpdepfile" \ + | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \ + tr ' +' ' ' >> $depfile + echo >> $depfile + + # The second pass generates a dummy entry for each header file. + tr ' ' ' +' < "$tmpdepfile" \ + | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \ + >> $depfile + else + # The sourcefile does not contain any dependencies, so just + # store a dummy comment line, to avoid errors with the Makefile + # "include basename.Plo" scheme. + echo "#dummy" > "$depfile" + fi + rm -f "$tmpdepfile" + ;; + +aix) + # The C for AIX Compiler uses -M and outputs the dependencies + # in a .u file. In older versions, this file always lives in the + # current directory. Also, the AIX compiler puts `$object:' at the + # start of each line; $object doesn't have directory information. + # Version 6 uses the directory in both cases. + stripped=`echo "$object" | sed 's/\(.*\)\..*$/\1/'` + tmpdepfile="$stripped.u" + if test "$libtool" = yes; then + "$@" -Wc,-M + else + "$@" -M + fi + stat=$? + + if test -f "$tmpdepfile"; then : + else + stripped=`echo "$stripped" | sed 's,^.*/,,'` + tmpdepfile="$stripped.u" + fi + + if test $stat -eq 0; then : + else + rm -f "$tmpdepfile" + exit $stat + fi + + if test -f "$tmpdepfile"; then + outname="$stripped.o" + # Each line is of the form `foo.o: dependent.h'. + # Do two passes, one to just change these to + # `$object: dependent.h' and one to simply `dependent.h:'. + sed -e "s,^$outname:,$object :," < "$tmpdepfile" > "$depfile" + sed -e "s,^$outname: \(.*\)$,\1:," < "$tmpdepfile" >> "$depfile" + else + # The sourcefile does not contain any dependencies, so just + # store a dummy comment line, to avoid errors with the Makefile + # "include basename.Plo" scheme. + echo "#dummy" > "$depfile" + fi + rm -f "$tmpdepfile" + ;; + +icc) + # Intel's C compiler understands `-MD -MF file'. However on + # icc -MD -MF foo.d -c -o sub/foo.o sub/foo.c + # ICC 7.0 will fill foo.d with something like + # foo.o: sub/foo.c + # foo.o: sub/foo.h + # which is wrong. We want: + # sub/foo.o: sub/foo.c + # sub/foo.o: sub/foo.h + # sub/foo.c: + # sub/foo.h: + # ICC 7.1 will output + # foo.o: sub/foo.c sub/foo.h + # and will wrap long lines using \ : + # foo.o: sub/foo.c ... \ + # sub/foo.h ... \ + # ... + + "$@" -MD -MF "$tmpdepfile" + stat=$? + if test $stat -eq 0; then : + else + rm -f "$tmpdepfile" + exit $stat + fi + rm -f "$depfile" + # Each line is of the form `foo.o: dependent.h', + # or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'. + # Do two passes, one to just change these to + # `$object: dependent.h' and one to simply `dependent.h:'. + sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile" + # Some versions of the HPUX 10.20 sed can't process this invocation + # correctly. Breaking it into two sed invocations is a workaround. + sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" | + sed -e 's/$/ :/' >> "$depfile" + rm -f "$tmpdepfile" + ;; + +tru64) + # The Tru64 compiler uses -MD to generate dependencies as a side + # effect. `cc -MD -o foo.o ...' puts the dependencies into `foo.o.d'. + # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put + # dependencies in `foo.d' instead, so we check for that too. + # Subdirectories are respected. + dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` + test "x$dir" = "x$object" && dir= + base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'` + + if test "$libtool" = yes; then + # With Tru64 cc, shared objects can also be used to make a + # static library. This mecanism is used in libtool 1.4 series to + # handle both shared and static libraries in a single compilation. + # With libtool 1.4, dependencies were output in $dir.libs/$base.lo.d. + # + # With libtool 1.5 this exception was removed, and libtool now + # generates 2 separate objects for the 2 libraries. These two + # compilations output dependencies in in $dir.libs/$base.o.d and + # in $dir$base.o.d. We have to check for both files, because + # one of the two compilations can be disabled. We should prefer + # $dir$base.o.d over $dir.libs/$base.o.d because the latter is + # automatically cleaned when .libs/ is deleted, while ignoring + # the former would cause a distcleancheck panic. + tmpdepfile1=$dir.libs/$base.lo.d # libtool 1.4 + tmpdepfile2=$dir$base.o.d # libtool 1.5 + tmpdepfile3=$dir.libs/$base.o.d # libtool 1.5 + tmpdepfile4=$dir.libs/$base.d # Compaq CCC V6.2-504 + "$@" -Wc,-MD + else + tmpdepfile1=$dir$base.o.d + tmpdepfile2=$dir$base.d + tmpdepfile3=$dir$base.d + tmpdepfile4=$dir$base.d + "$@" -MD + fi + + stat=$? + if test $stat -eq 0; then : + else + rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4" + exit $stat + fi + + for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4" + do + test -f "$tmpdepfile" && break + done + if test -f "$tmpdepfile"; then + sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile" + # That's a tab and a space in the []. + sed -e 's,^.*\.[a-z]*:[ ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile" + else + echo "#dummy" > "$depfile" + fi + rm -f "$tmpdepfile" + ;; + +#nosideeffect) + # This comment above is used by automake to tell side-effect + # dependency tracking mechanisms from slower ones. + +dashmstdout) + # Important note: in order to support this mode, a compiler *must* + # always write the preprocessed file to stdout, regardless of -o. + "$@" || exit $? + + # Remove the call to Libtool. + if test "$libtool" = yes; then + while test $1 != '--mode=compile'; do + shift + done + shift + fi + + # Remove `-o $object'. + IFS=" " + for arg + do + case $arg in + -o) + shift + ;; + $object) + shift + ;; + *) + set fnord "$@" "$arg" + shift # fnord + shift # $arg + ;; + esac + done + + test -z "$dashmflag" && dashmflag=-M + # Require at least two characters before searching for `:' + # in the target name. This is to cope with DOS-style filenames: + # a dependency such as `c:/foo/bar' could be seen as target `c' otherwise. + "$@" $dashmflag | + sed 's:^[ ]*[^: ][^:][^:]*\:[ ]*:'"$object"'\: :' > "$tmpdepfile" + rm -f "$depfile" + cat < "$tmpdepfile" > "$depfile" + tr ' ' ' +' < "$tmpdepfile" | \ +## Some versions of the HPUX 10.20 sed can't process this invocation +## correctly. Breaking it into two sed invocations is a workaround. + sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" + rm -f "$tmpdepfile" + ;; + +dashXmstdout) + # This case only exists to satisfy depend.m4. It is never actually + # run, as this mode is specially recognized in the preamble. + exit 1 + ;; + +makedepend) + "$@" || exit $? + # Remove any Libtool call + if test "$libtool" = yes; then + while test $1 != '--mode=compile'; do + shift + done + shift + fi + # X makedepend + shift + cleared=no + for arg in "$@"; do + case $cleared in + no) + set ""; shift + cleared=yes ;; + esac + case "$arg" in + -D*|-I*) + set fnord "$@" "$arg"; shift ;; + # Strip any option that makedepend may not understand. Remove + # the object too, otherwise makedepend will parse it as a source file. + -*|$object) + ;; + *) + set fnord "$@" "$arg"; shift ;; + esac + done + obj_suffix="`echo $object | sed 's/^.*\././'`" + touch "$tmpdepfile" + ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@" + rm -f "$depfile" + cat < "$tmpdepfile" > "$depfile" + sed '1,2d' "$tmpdepfile" | tr ' ' ' +' | \ +## Some versions of the HPUX 10.20 sed can't process this invocation +## correctly. Breaking it into two sed invocations is a workaround. + sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" + rm -f "$tmpdepfile" "$tmpdepfile".bak + ;; + +cpp) + # Important note: in order to support this mode, a compiler *must* + # always write the preprocessed file to stdout. + "$@" || exit $? + + # Remove the call to Libtool. + if test "$libtool" = yes; then + while test $1 != '--mode=compile'; do + shift + done + shift + fi + + # Remove `-o $object'. + IFS=" " + for arg + do + case $arg in + -o) + shift + ;; + $object) + shift + ;; + *) + set fnord "$@" "$arg" + shift # fnord + shift # $arg + ;; + esac + done + + "$@" -E | + sed -n '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' | + sed '$ s: \\$::' > "$tmpdepfile" + rm -f "$depfile" + echo "$object : \\" > "$depfile" + cat < "$tmpdepfile" >> "$depfile" + sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile" + rm -f "$tmpdepfile" + ;; + +msvisualcpp) + # Important note: in order to support this mode, a compiler *must* + # always write the preprocessed file to stdout, regardless of -o, + # because we must use -o when running libtool. + "$@" || exit $? + IFS=" " + for arg + do + case "$arg" in + "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI") + set fnord "$@" + shift + shift + ;; + *) + set fnord "$@" "$arg" + shift + shift + ;; + esac + done + "$@" -E | + sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::echo "`cygpath -u \\"\1\\"`":p' | sort | uniq > "$tmpdepfile" + rm -f "$depfile" + echo "$object : \\" > "$depfile" + . "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s:: \1 \\:p' >> "$depfile" + echo " " >> "$depfile" + . "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s::\1\::p' >> "$depfile" + rm -f "$tmpdepfile" + ;; + +none) + exec "$@" + ;; + +*) + echo "Unknown depmode $depmode" 1>&2 + exit 1 + ;; +esac + +exit 0 + +# Local Variables: +# mode: shell-script +# sh-indentation: 2 +# eval: (add-hook 'write-file-hooks 'time-stamp) +# time-stamp-start: "scriptversion=" +# time-stamp-format: "%:y-%02m-%02d.%02H" +# time-stamp-end: "$" +# End: diff --git a/rescue/linux/cdrom/yaird-0.0.5/doc/Makefile b/rescue/linux/cdrom/yaird-0.0.5/doc/Makefile new file mode 100644 index 0000000..dc7ff51 --- /dev/null +++ b/rescue/linux/cdrom/yaird-0.0.5/doc/Makefile @@ -0,0 +1,326 @@ +# Makefile.in generated by automake 1.9.5 from Makefile.am. +# doc/Makefile. Generated from Makefile.in by configure. + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005 Free Software Foundation, Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + + + +# +# Makefile.am -- installation and packaging instructions +# Copyright (C) 2005 Erik van Konijnenburg +# +# 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 +# +# Quick hack of a makefile, based on dia xml documentation. +# using the XSL sheets with xsltproc is a lot quicker than +# using jade via db2html; the generated html also is a lot more +# readable. On the other hand, jade's validation looks more robust. +# + +srcdir = . +top_srcdir = .. + +pkgdatadir = $(datadir)/yaird +pkglibdir = $(libdir)/yaird +pkgincludedir = $(includedir)/yaird +top_builddir = .. +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +INSTALL = /usr/bin/install -c +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +subdir = doc +DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \ + $(srcdir)/yaird.xml.in +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/configure.in +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/include/config.h +CONFIG_CLEAN_FILES = yaird.xml +SOURCES = +DIST_SOURCES = +DATA = $(noinst_DATA) +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = ${SHELL} /home/kern/bacula/k/rescue/linux/cdrom/yaird-0.0.5/missing --run aclocal-1.9 +AMDEP_FALSE = # +AMDEP_TRUE = +AMTAR = ${SHELL} /home/kern/bacula/k/rescue/linux/cdrom/yaird-0.0.5/missing --run tar +AUTOCONF = ${SHELL} /home/kern/bacula/k/rescue/linux/cdrom/yaird-0.0.5/missing --run autoconf +AUTOHEADER = ${SHELL} /home/kern/bacula/k/rescue/linux/cdrom/yaird-0.0.5/missing --run autoheader +AUTOMAKE = ${SHELL} /home/kern/bacula/k/rescue/linux/cdrom/yaird-0.0.5/missing --run automake-1.9 +AWK = gawk +CC = gcc +CCDEPMODE = depmode=gcc3 +CFLAGS = -g -O2 +CPPFLAGS = +CYGPATH_W = echo +DEFS = -DHAVE_CONFIG_H +DEPDIR = .deps +ECHO_C = +ECHO_N = -n +ECHO_T = +EXEEXT = +INITRD_TEMPLATE = Fedora +INSTALL_DATA = ${INSTALL} -m 644 +INSTALL_PROGRAM = ${INSTALL} +INSTALL_SCRIPT = ${INSTALL} +INSTALL_STRIP_PROGRAM = ${SHELL} $(install_sh) -c -s +LDFLAGS = +LIBOBJS = +LIBS = +LTLIBOBJS = +MAKEINFO = ${SHELL} /home/kern/bacula/k/rescue/linux/cdrom/yaird-0.0.5/missing --run makeinfo +OBJEXT = o +PACKAGE = yaird +PACKAGE_BUGREPORT = +PACKAGE_NAME = +PACKAGE_STRING = +PACKAGE_TARNAME = +PACKAGE_VERSION = +PATH_SEPARATOR = : +PERL = /usr/bin/perl +SET_MAKE = +SHELL = /bin/sh +STRIP = +VERSION = 0.0.5 +XMLTO = /usr/bin/xmlto +ac_ct_CC = gcc +ac_ct_STRIP = +am__fastdepCC_FALSE = # +am__fastdepCC_TRUE = +am__include = include +am__leading_dot = . +am__quote = +am__tar = ${AMTAR} chof - "$$tardir" +am__untar = ${AMTAR} xf - +bindir = ${exec_prefix}/bin +build_alias = +datadir = ${prefix}/share +exec_prefix = ${prefix} +host_alias = +includedir = ${prefix}/include +infodir = ${prefix}/info +install_sh = /home/kern/bacula/k/rescue/linux/cdrom/yaird-0.0.5/install-sh +libdir = ${exec_prefix}/lib +libexecdir = ${exec_prefix}/libexec +localstatedir = ${prefix}/var +mandir = ${prefix}/man +mkdir_p = mkdir -p -- +oldincludedir = /usr/include +prefix = /usr/local +program_transform_name = s,x,x, +sbindir = ${exec_prefix}/sbin +sharedstatedir = ${prefix}/com +sysconfdir = ${prefix}/etc +target_alias = +noinst_DATA = yaird.html +CLEANFILES = $(noinst_DATA) + +# not compiled, but must go in the tarball. +EXTRA_DIST = \ + authors.xml \ + concepts.xml \ + figures/console.dia \ + figures/console.png \ + input.xml \ + intro.xml \ + kernel.xml \ + license.xml \ + raid.xml \ + security.xml \ + shlibs.xml \ + spec.xml \ + tools.xml \ + yaird.xml + +all: all-am + +.SUFFIXES: +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu doc/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnu doc/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +yaird.xml: $(top_builddir)/config.status $(srcdir)/yaird.xml.in + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ +uninstall-info-am: +tags: TAGS +TAGS: + +ctags: CTAGS +CTAGS: + + +distdir: $(DISTFILES) + $(mkdir_p) $(distdir)/figures + @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ + list='$(DISTFILES)'; for file in $$list; do \ + case $$file in \ + $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ + $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ + esac; \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test "$$dir" != "$$file" && test "$$dir" != "."; then \ + dir="/$$dir"; \ + $(mkdir_p) "$(distdir)$$dir"; \ + else \ + dir=''; \ + fi; \ + if test -d $$d/$$file; then \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + else \ + test -f $(distdir)/$$file \ + || cp -p $$d/$$file $(distdir)/$$file \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile $(DATA) +installdirs: +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-generic mostlyclean-am + +distclean: distclean-am + -rm -f Makefile +distclean-am: clean-am distclean-generic + +dvi: dvi-am + +dvi-am: + +html: html-am + +info: info-am + +info-am: + +install-data-am: + +install-exec-am: + +install-info: install-info-am + +install-man: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-generic + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-info-am + +.PHONY: all all-am check check-am clean clean-generic distclean \ + distclean-generic distdir dvi dvi-am html html-am info info-am \ + install install-am install-data install-data-am install-exec \ + install-exec-am install-info install-info-am install-man \ + install-strip installcheck installcheck-am installdirs \ + maintainer-clean maintainer-clean-generic mostlyclean \ + mostlyclean-generic pdf pdf-am ps ps-am uninstall uninstall-am \ + uninstall-info-am + + +yaird.html: $(EXTRA_DIST) + $(XMLTO) xhtml-nochunks yaird.xml +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/rescue/linux/cdrom/yaird-0.0.5/doc/Makefile.am b/rescue/linux/cdrom/yaird-0.0.5/doc/Makefile.am new file mode 100644 index 0000000..aae0c4a --- /dev/null +++ b/rescue/linux/cdrom/yaird-0.0.5/doc/Makefile.am @@ -0,0 +1,48 @@ +# +# Makefile.am -- installation and packaging instructions +# Copyright (C) 2005 Erik van Konijnenburg +# +# 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 +# +# Quick hack of a makefile, based on dia xml documentation. +# using the XSL sheets with xsltproc is a lot quicker than +# using jade via db2html; the generated html also is a lot more +# readable. On the other hand, jade's validation looks more robust. +# + +noinst_DATA = yaird.html +CLEANFILES = $(noinst_DATA) + +yaird.html: $(EXTRA_DIST) + $(XMLTO) xhtml-nochunks yaird.xml + + + +# not compiled, but must go in the tarball. +EXTRA_DIST = \ + authors.xml \ + concepts.xml \ + figures/console.dia \ + figures/console.png \ + input.xml \ + intro.xml \ + kernel.xml \ + license.xml \ + raid.xml \ + security.xml \ + shlibs.xml \ + spec.xml \ + tools.xml \ + yaird.xml diff --git a/rescue/linux/cdrom/yaird-0.0.5/doc/Makefile.in b/rescue/linux/cdrom/yaird-0.0.5/doc/Makefile.in new file mode 100644 index 0000000..d399043 --- /dev/null +++ b/rescue/linux/cdrom/yaird-0.0.5/doc/Makefile.in @@ -0,0 +1,326 @@ +# Makefile.in generated by automake 1.9.5 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005 Free Software Foundation, Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +# +# Makefile.am -- installation and packaging instructions +# Copyright (C) 2005 Erik van Konijnenburg +# +# 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 +# +# Quick hack of a makefile, based on dia xml documentation. +# using the XSL sheets with xsltproc is a lot quicker than +# using jade via db2html; the generated html also is a lot more +# readable. On the other hand, jade's validation looks more robust. +# + +srcdir = @srcdir@ +top_srcdir = @top_srcdir@ +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +top_builddir = .. +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +INSTALL = @INSTALL@ +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +subdir = doc +DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \ + $(srcdir)/yaird.xml.in +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/configure.in +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/include/config.h +CONFIG_CLEAN_FILES = yaird.xml +SOURCES = +DIST_SOURCES = +DATA = $(noinst_DATA) +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +AMDEP_FALSE = @AMDEP_FALSE@ +AMDEP_TRUE = @AMDEP_TRUE@ +AMTAR = @AMTAR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPPFLAGS = @CPPFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EXEEXT = @EXEEXT@ +INITRD_TEMPLATE = @INITRD_TEMPLATE@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +LDFLAGS = @LDFLAGS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LTLIBOBJS = @LTLIBOBJS@ +MAKEINFO = @MAKEINFO@ +OBJEXT = @OBJEXT@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +PERL = @PERL@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +VERSION = @VERSION@ +XMLTO = @XMLTO@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_STRIP = @ac_ct_STRIP@ +am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ +am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build_alias = @build_alias@ +datadir = @datadir@ +exec_prefix = @exec_prefix@ +host_alias = @host_alias@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +noinst_DATA = yaird.html +CLEANFILES = $(noinst_DATA) + +# not compiled, but must go in the tarball. +EXTRA_DIST = \ + authors.xml \ + concepts.xml \ + figures/console.dia \ + figures/console.png \ + input.xml \ + intro.xml \ + kernel.xml \ + license.xml \ + raid.xml \ + security.xml \ + shlibs.xml \ + spec.xml \ + tools.xml \ + yaird.xml + +all: all-am + +.SUFFIXES: +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu doc/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnu doc/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +yaird.xml: $(top_builddir)/config.status $(srcdir)/yaird.xml.in + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ +uninstall-info-am: +tags: TAGS +TAGS: + +ctags: CTAGS +CTAGS: + + +distdir: $(DISTFILES) + $(mkdir_p) $(distdir)/figures + @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ + list='$(DISTFILES)'; for file in $$list; do \ + case $$file in \ + $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ + $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ + esac; \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test "$$dir" != "$$file" && test "$$dir" != "."; then \ + dir="/$$dir"; \ + $(mkdir_p) "$(distdir)$$dir"; \ + else \ + dir=''; \ + fi; \ + if test -d $$d/$$file; then \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + else \ + test -f $(distdir)/$$file \ + || cp -p $$d/$$file $(distdir)/$$file \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile $(DATA) +installdirs: +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-generic mostlyclean-am + +distclean: distclean-am + -rm -f Makefile +distclean-am: clean-am distclean-generic + +dvi: dvi-am + +dvi-am: + +html: html-am + +info: info-am + +info-am: + +install-data-am: + +install-exec-am: + +install-info: install-info-am + +install-man: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-generic + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-info-am + +.PHONY: all all-am check check-am clean clean-generic distclean \ + distclean-generic distdir dvi dvi-am html html-am info info-am \ + install install-am install-data install-data-am install-exec \ + install-exec-am install-info install-info-am install-man \ + install-strip installcheck installcheck-am installdirs \ + maintainer-clean maintainer-clean-generic mostlyclean \ + mostlyclean-generic pdf pdf-am ps ps-am uninstall uninstall-am \ + uninstall-info-am + + +yaird.html: $(EXTRA_DIST) + $(XMLTO) xhtml-nochunks yaird.xml +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/rescue/linux/cdrom/yaird-0.0.5/doc/authors.xml b/rescue/linux/cdrom/yaird-0.0.5/doc/authors.xml new file mode 100644 index 0000000..68ed2bf --- /dev/null +++ b/rescue/linux/cdrom/yaird-0.0.5/doc/authors.xml @@ -0,0 +1,9 @@ +
+ Authors + + This is a place holder section. + Yaird was written by ... + website here ... comments to ... bug reports ... + + +
diff --git a/rescue/linux/cdrom/yaird-0.0.5/doc/concepts.xml b/rescue/linux/cdrom/yaird-0.0.5/doc/concepts.xml new file mode 100644 index 0000000..27722de --- /dev/null +++ b/rescue/linux/cdrom/yaird-0.0.5/doc/concepts.xml @@ -0,0 +1,450 @@ +
+ Concepts + + This section discusses the basic concepts underlying + yaird. + + + + The basic operation is simple: + + + + + make a plan to build an image, + + + + + + transform the plan to a detailed description of the image, + + + + + + build and pack the image. + + + + + + + + + The plan consists of a number of goals to be achieved: a loaded + device driver, a block special file created, a device mounted. + The plan does not specify details such as the exact path of the + mknod executable or the shared libraries + needed to run that executable. + + + + Making the Plan + + + The most interesting part is making the plan. At the top level, + the plan is governed by some ultimate goals. For now, the only + goal is to get a working keyboard and to mount the root file system, + but if we're going to support swsusp, the swap devices also need to + be activated. To realise the goal, subgoals need to be realised. + As an example, before mounting a file system, the modules containing + the implementation of the file system need to be loaded. + + + + To refine the goal of loading a kernel module, + the ModDepTab module interprets + modules.dep for the new kernel. Given a + module name, this will return a list of required modules with all + dependencies recursively resolved. It knows about the equivalence + between hyphen and underscore in module names, it also knows how + to search for modules in the /lib/modules + directory. + + + + The KConfig module determines if loading a + module can be omitted because the module is hardcoded into the + kernel. As an example, it is aware of the fact that the module + ext3 is not needed if the new kernel configuration + contains CONFIG_EXT3_FS=y. + + Having knowledge of the relation between module names and + kernel defines hardcoded into yaird + is hardly elegant. Perhaps it is possible to generate this + mapping based on the kernel Makefiles when building the + kernel, but that's too complex just now. + + + Only a few modules are known: yaird + looks for modules such as ext3 when that filesystem + is used, so it makes sense to check whether a missing module + is compiled in. On the other hand, hardware modules that are + compiled in never show up in modules.pcimap + and friends, so they remain completely outside the view of + yaird. + + + + Module aliases and options as supported by + modprobe are unsupported for the moment. + + + + Before a device as listed in /etc/fstab can be + mounted, that device needs to be enabled. That device could be an + NFS mount, a loopback mount or it could be a block device. The NFS + and loopback cases are not supported yet, but block devices are. + This support is based on a number of sources of information: + + + + + Scanning the /dev directory gives us the + relation between all block special files and major/minor + numbers. + + + + + + Scanning the /sys/block directory gives us the + relation between all major/minor numbers and kernel names + such as dm-0 or sda1; it + also gives the relation between partitions and complete + devices. + + + + + + If there is a symlink in a /sys/block + subdirectory to the /sys/devices + directory, it also gives is the relation between a block + device and the underlying hardware. + + + + + + + + Based on the kernel name and partition relationships of the device, + we determine the steps needed to activate the device. As an example, + to activate sda1, we need to activate sda, + then create a block special file for sda1. As + another example, to activate dm-0, our first bet is + to check whether this is an LVM logical + volume, + + It could also be an encrypted device; this case is not handled + yet. + + and if so activate the + physical volumes underlying the volume group, and finally running + vgchange -a y. + + + + + Hardware Planning + + + Some devices, such as sdx or hdy, are + expected to have underlying hardware; as an example, sda + may be backed by pci0000:00/0000:00:1f.2/host0/0:0:0:0. + This represents a hardware path, in this case a controller on the PCI + bus that connects to a SCSI device. In order to use the device, + every component on the path needs to be activated, the component + closest to the CPU first. + Based on the pathname in /sys/devices and on + files within the directory for the component, we can determine + what kind of component we're dealing with, and how to find the + required modules. + + + + Finding modules closely follows the methods used in the + hotplug package, and the + hotplug approach in turn is an almost + literal translation of the code that the kernel uses to find a + driver for a newly detected piece of hardware. + + + + For components that talk some protocol over a bus, like SCSI or + IDE disks or CDROMs, this is a simple hard coded selection; as an + example, the ScsiDev module knows that a SCSI device + with a type file containing "5" is a CDROM, + and that sr-mod is the appropriate driver. + + + + Devices such as PCI or USB devices cannot be classified into + a few simple categories. These devices have properties such + as "Vendor", "Device" and "Class" that are visible in sysfs. + The source code of kernel driver modules for these devices + contains a table listing which combination of properties mark a + device that the driver is prepared to handle. When the kernel + is compiled, these tables are summarised in a text file such + as modules.pcimap. Based on this table, + we find a driver module needed for the device and mark it for + inclusion on the image. + + + + Multiple modules can match the same hardware: as an example, + usb-storage and ub both match an USB + stick. In such cases, we load all matching modules into the + kernel and leave it to kernel to decide who gets to manage the + device. There's one complication: some modules, such as + usb-core, match any device (probably to maintain some + administration of their own, or to provide an ultra-generic + interface), but do not actually provide access to the device. + Such devices are weeded out by the Blacklist module, + based on information in + /etc/hotplug/blacklist and + /etc/hotplug/blacklist.d. + + + + It turns out that the "load modules for every component in the sysfs + path" approach is not always sufficient: sometimes you have to load + siblings as well. As an example, consider a combined EHCI/UHCI + USB controller on a single chip. The same ports can show up as EHCI + or UHCI devices, different PCI functions in the same PCI slot, with + different sysfs directories, depending on what kind of hardware is + connected. Purely following the sysfs path, we would only need to load + the EHCI driver, but it appears that on this kind of chip, EHCI devices + are not reliably detected unless the UHCI driver is loaded as well. + For this reason, we extend the algorithm with a rule: "for PCI devices, + load modules for every function in the PCI slot". + + + + That's actually a bit much: it would load all of ALSA if you have a + combined ISA/IDE/USB/Multimedia chipset. So we limit the above + to those PCI functions that provide USB ports. + + + + + + Plan Transformation + + + The plan generated in the first phase is a collection of general + intentions, stuff like 'load this module', but it does not + specify exactly what files must be placed on the image and what + lines are to be added to the initialisation scripts. + + + + The module ActionList represents this plan with a + list of hashes; every hash contains at least 'action' and + 'target', with other keys added to provide extra information + as needed. If two steps in the plan have identical action and + target, the last one is considered redundant and silently omitted. + + + + This plan is transformed to an exact image description with + the help of templates. The module Template + contains a hash with for every type of action: + + + + a list of files to be copied from the mother system to the + image; + + + + + + a list of directories to be created on the image; these do + not have to exist on the mother system; + + + + + + a list of trees to be copied recursively from the mother + system to the image; + + + + + + a hash, with as key the name of a script to be appended to + and as value that which is to be appended. + + + + All of the above are fed through HTML-Template, with the hash + describing this step as parameters. In practice, this looks + like so: + + insmod => { + files => [ + '<TMPL_VAR NAME=target>', + '/sbin/insmod', + ], + directories => [], + trees => [], + scripts => { + '/init' => <<'//', + /sbin/insmod '<TMPL_VAR NAME=target>' +// + }, + }, + + + + + There are a few attributes that are available to every template: + + + + + version + + + + The kernel version we're generating an image for. + Useful if you want your image to include a complete copy + of /lib/modules/(version)/kernel. + + + + + + + appVersion + + + + The version of yaird used to + build the image. + + + + + + + auxDir + + + + The directory where yaird + keeps executables intended to go on the image, such as + run_init. + + + + + + + + + Currently, there are templates for Debian and for Fedora, plus + a template showing how to use the older initrd approach. + + + + + + Image Generation + + The detailed image description consists of a collection of names of + files, directories, symbolic links and block or character devices, + plus a number of lines of shell script. The image description does + not contain permission or ownership information: files always have + mode 444, executables and directories always 555, devices always + mode 600, + + Having device files on the image is wrong: it will + break if the new kernel uses different device numbers. Mostly + this can be avoided by using the dev + files provided by sysfs, but there is a bootstrap problem: + the mount command needed to + access sysfs assumes /dev/null and + /dev/console are available. + + and everything is owned by root. + + + + The Image module contains the image description and + can write the image to a directory. It understands about symlinks: + if /sbin/vgscan is added to the image and it + happens to be a symlink to lvmiopversion, both + vgscan and lvmiopversion + will be added to the image. Shared libraries are supported + via the SharedLibraries module, as discussed in + . Invocations of other executables are not + recognised automatically: if lvmiopversion executes + /etc/lvm-200/vgscan, the latter needs to be + added explicitly to the image. + + + + The copying of complete trees to the image is influenced by the + copying for executables: if there is a symlink in the tree, it's + target is also included on the image, but if the target is a + directory, its contents are not copied recursively. This + approach avoids loops in image generation. + Note that the target of a symlink must exist: + yaird refuses to copy dangling links. + + + + + Packing the Image + + The final step is packing the image in a format that the + bootloader can process; this is handled by the module + Pack. The following formats are supported: + + + + + cpio + + + + A zipped cpio file (new ASCII format), required for the + initramfs model as used in the templates for Debian and + Fedora. + + + + + + + directory + + + + An unpacked directory, good for debugging or manually + creating odd formats. + + + + + + + cramfs + + + + A cramfs filesystem, used for Debian initrd images. + + + + + + + + +
diff --git a/rescue/linux/cdrom/yaird-0.0.5/doc/figures/console.dia b/rescue/linux/cdrom/yaird-0.0.5/doc/figures/console.dia new file mode 100644 index 0000000..0707eb5 Binary files /dev/null and b/rescue/linux/cdrom/yaird-0.0.5/doc/figures/console.dia differ diff --git a/rescue/linux/cdrom/yaird-0.0.5/doc/figures/console.png b/rescue/linux/cdrom/yaird-0.0.5/doc/figures/console.png new file mode 100644 index 0000000..8ea4465 Binary files /dev/null and b/rescue/linux/cdrom/yaird-0.0.5/doc/figures/console.png differ diff --git a/rescue/linux/cdrom/yaird-0.0.5/doc/input.xml b/rescue/linux/cdrom/yaird-0.0.5/doc/input.xml new file mode 100644 index 0000000..362d967 --- /dev/null +++ b/rescue/linux/cdrom/yaird-0.0.5/doc/input.xml @@ -0,0 +1,443 @@ +
+ Supporting Input Devices + + + A working console and keyboard during the initial boot image execution + is needed to enter a password for encrypted file systems; it also + helps while debugging. This section discusses the kernel input + layer and how it can be supported during image generation. + + + + The console is a designated terminal, where kernel output goes, and that + is the initial I/O device for /sbin/init. Like all + terminal devices, it provides a number of functions: you can read + and write to it, plus it has a number of ioctl() + functions to manage line buffering, interrupt characters and + baudrate or parity where applicable. + + + + Terminals come in different types: it can be a VT100 or terminal + emulator connected via an RS232 cable, or it can be a combination + of a CRT and a keyboard. The keyboard can be connected via + USB or it can talk a byte oriented protocol via a legacy UART + chip. + + + + The CRT is managed in two layers. The top layer, "virtual + terminal", manages a two dimensional array describing which letter + should go in which position of the screen. In fact, there are a + number of different arrays, and which one is actually visible on + the screen is selected by a keyboard combination. + Below the virtual terminals is a layer that actually places the + letters on the screen. This can be done a letter at a time, + using a VGA interface, or the letters can be painted pixel by + pixel, using a frame buffer. + + + + Below the terminal concept we find the input layer. This provides a + unified interface to the various user input devices: mouse, keyboard, + PC speaker, joystick, tablet. These input devices not only + generate data, they can also receive input from the computer. As + an example, the keyboard needs computer input to operate the NUM + LOCK indicator. Hardware devices such as keyboards register + themselves with the input layer, describing their capabilities + (I can send relative position, have two buttons and no LEDs), + and the input layer assigns a handler to the hardware device. + The handler presents the device to upper layers, either as a char + special file or as the input part of a terminal device. + This is not a one-to-one mapping: every mouse gets its own + handler, but keyboard and PC speaker share a handler, so it looks + to userland like you have a keyboard that can do "beep". + + + + In addition to handlers for specific type of upper layers (mouse, + joystick, touch screen) there is a generic handler that provides a + character device file such as /dev/input/event0 + for every input device detected; input events are presented through + these devices in a unified format. The input layer generates + hotplug events for these generic event handlers; hotplug uses + modules.inputmap to load a module containing a + suitable upper layer event handler. The keyboard handler is a special + case that does not occur in this map, so for image generation there + is little to be learned from hotplug input support. + + + + To guarantee a working console, yaird + should examine /dev/console, determine + whether it's RS232 or hardware directly connected to the computer, + and then load modules for either serial port, or for virtual + terminals, the input layer and any hardware underlying it. + Unfortunately, /dev/console does not give + a hint what is below the terminal interface, and unfortunately, + lots of input devices are legacy hardware that is hard to probe + and only sketchily described by sysfs in kernel 2.6.10. + + + + This means that a guarantee for a working console cannot be made, + which is why distribution kernels come with components such as the + keyboard and serial port driver compiled into the kernel. We can + do something else though: provide modules for keyboard devices + provided the kernel provides correct information. That covers the + case of USB keyboards, and that's something that's not compiled + into distribution kernels, so that the administrator has to add + modules explictly in order to get the keyboard working in + the initial boot image. + + + + Lets examine the sources of information we have to find which input + hardware we have to support. + + + + + In /sys/class/input, all input devices + are enumerated. Mostly, these only contain a + dev file containing major/minor number, + but USB devices also have a device + symlink into /sys/devices identifying + the underlying hardware. + + + + + + In /boot/menu/grub.lst, kernel options + can be defined that determine whether to use a serial line as + console and whether to use a frame buffer. The consequence + is that it is fundamentally impossible to determine by looking + at the hardware alone what's needed to get an image that will + boot without problems. This probably means we'll have to consider + supplying some modules in the image that will only get loaded + depending on kernel options. + + + + + + The file /proc/bus/input/devices gives + a formatted overview of all known input devices; entries look + like this: + + I: Bus=0003 Vendor=413c Product=2003 Version=0100 + N: Name="DELL DELL USB Keyboard" + P: Phys=usb-0000:00:1d.7-4.1/input1 + H: Handlers=kbd event2 + B: EV=100003 + B: KEY=7f f0000 0 3878 d801d101 1e0000 0 0 0 + + Here the "I" line shows identification information passed to + the input layer by the hardware driver that is used to look + up the appropiate handler. "N" is a printable name provided + by the hardware driver. "P" is a hint at location in a bus + of the device; note how this line is completely unrelated to + the location of the hardware in + /sys/devices. + The H (Handlers) line is obvious; The B lines specify + capabilities of the device, plus extra information for each + capability. Known capabilities include: + + + + + Capability + Description + + + + + SYN + Input event is completed + + + KEY + Key press/release event + + + REL + Relative measure, as in mouse movement + + + ABS + Absolute position, as in graphics + tablet + + + MSC + Miscelanious + + + SND + Beep + + + REP + Set hardware repeat + + + FF + Don't know + + + PWR + Power event: on/off switch pressed. + + + FF_STATUS + Don't know. + + + + + + + + + + + Finally, let's consider some kernel configuration defines, the + corresponding modules and their function. This could be used as a + start to check whether all components required to make an + operational console are available on the generated image: + + + + + Define + Module + Description + + + + + + VT + (bool) + + Support multiple virtual terminals, irrespective of what + hardware is used to display letters from the virtual + terminal on the CRT. + + + + + VT_CONSOLE + (bool) + + Make the VT a candidate for console output. The alternative + is a serial line to a VT100 or terminal emulator + + + + + VGA_CONSOLE + (bool) + + Display a terminal on CRT using the VGA interface. + + + + + FRAMEBUFFER_CONSOLE + fbcon + + Display a terminal on a framebuffer, painting letters a + pixel at a time. This has to know about fonts. + + + + + FB_VESA + vesafb + + Implement a framebuffer based on VESA (a common standard + for PC graphic cards), a place where an X server or + the framebuffer console can write pixels to be displayed + on CRT. + There are many different framebuffer modules that + optimise for different graphics cards. + Note that while vesafb and other drivers such as intelfb + can be built as a module, they only function correctly + when built into the kernel. Most framebuffer modules + depend on three other modules to function correctly: + cfbfillrect, cfbcopyarea, cfbimgblt. + + + + + ATKBD + atkbd + + Interpret input from a standard AT or PS/2 keyboard. + Other keyboards use other byte codes, see for example + the Acorn keyboard (rpckbd). + + + + + SERIO + serio + + Module that manages a stream of bytes from and to an IO port. + It includes a kernel thread (kseriod) that handles the queue + needed to talk to slow ports. It is normally used for + dedicated IO ports talking to PS/2 mouse and keyboard, + but can also be interfaced to serial ports (COM1, COM2). + The atkbd driver uses a serio driver to communicate with + the keyboard. + + + + + SERIO_I8042 + i8042 + + Implement a serio stream on top of the i8042 chip, the chip + that connects the standard AT keyboard and PS/2 mouse to + the computer. + This is legacy hardware: it's not connected via PCI but + directly to the 'platform bus'. + When a chip such as i8042 that implements + serio is detected, it registers itself with the input + layer. The input layer then lets drivers that use serio + (such as atkbd and psmouse) probe whether a known device + is connected via the chip; if such a device is found, + it is registered as a new input device. + + + + + SERIAL_8250 + serial + + Support for serial ports (COM1, COM2) on PC hardware. + Lots of other configuration options exist to support + multiple cards and fiddle with interrupts. + If compiled in rather than modular, a further option, + SERIAL_8250_CONSOLE, allows using the serial port as a + console. + + + + + USB_HID + usbhid + + Driver for USB keyboards and mice. + Another define, USB_HIDINPUT, needs to be true for + these devices to actually work. + + + + + USB_KBD + usbkbd + + Severely limited form of USB keyboard; uses the "boot + protocol". This conflicts with the complete driver. + + + + + + + + + + + The following figure gives an example of how the various modules + can fit together. + + +
+ + Module relation for common console setup + + + + + + +
+ + + In practical terms, a first step toward a more robust boot image + is to support new keyboard types, such as USB keyboards. + The following algorithm should do that. + + + + + + Interpret /proc/bus/input/devices. + + + + + + Look for devices that have handler kbd and + that have buttons. Mice and the PC speaker don't match that + criterium, keyboards do. + + + + + + You could interpret the name field of such devices if you're + interested in supporting legacy keyboards. + + + + + + The devices that have handler 'kbd' also have a handler 'event\d', + where input is presented in a generalised event format; + look up this device in /sys/class/input/event\d/. + + + + + + If it's got a device symlink, load the hardware drivers for that + hardware device (most likely it's usbhid plus a usb core driver). + + + + + + Don't bother with a mknod, the input is handled via + /dev/console. + + + + + + Otherwise it's presumable a legacy device; you could check for + the existence of + /sys/devices/platform/i8042/serio\d/, + or you could just assume the appropriate driver to be compiled in. + + + + + + Implement support for + /etc/hotplug/blacklist, + since some USB keyboards publish two interfaces (full HID + and the limited boot protocol), the input layer makes both + visible in /proc/bus/input/devices and + the corresponding modules are mutually conflicting. + The blacklist is used to filter out one of these modules. + + + + + +
diff --git a/rescue/linux/cdrom/yaird-0.0.5/doc/intro.xml b/rescue/linux/cdrom/yaird-0.0.5/doc/intro.xml new file mode 100644 index 0000000..8b80409 --- /dev/null +++ b/rescue/linux/cdrom/yaird-0.0.5/doc/intro.xml @@ -0,0 +1,31 @@ +
+ Introduction + + Yaird (Yet Another mkInitRD) is an + application to create an initial boot image, a minimal filesystem used + to bring a booting Linux kernel to a level where it can access + the root file system and use startup scripts to bring the system + to the normal run level. + + + + It differs from earlier mkinitrd + implementations in that it attempts to leverage the information in + sysfs to minimise the number of special cases that the application + has to know about, and in that it uses a template system to separate + the analysis of the system from the building of the image. + + + + This document gives an overview of the design and implementation + of Yaird; see the README file for + usage information. This text assumes familiarity with Linux + system administration and the basics of hotplug and sysfs. + + + + This document describes version &VERSION; + of Yaird. + This is a very rough, proof of concept, version. + +
diff --git a/rescue/linux/cdrom/yaird-0.0.5/doc/kernel.xml b/rescue/linux/cdrom/yaird-0.0.5/doc/kernel.xml new file mode 100644 index 0000000..e2d0f79 --- /dev/null +++ b/rescue/linux/cdrom/yaird-0.0.5/doc/kernel.xml @@ -0,0 +1,491 @@ +
+ The interface between kernel and image + + + The initial boot image is supposed to load enough modules to let + the real root device be mounted cleanly. It starts up in a + very bare environment and it has to do tricky + stuff like juggling root filesystems; to pull that off successfully + it makes sense to take a close look at the environment that the + kernel creates for the image and what the kernel expects it to do. + This section contains raw design notes based on kernel 2.6.8. + + + + The processing of the image starts even before the kernel is + activated. The bootloader, grub or lilo for example, reads two + files from the boot file system into ram: the kernel and image. + The bootloader somehow manages to set two variables in the kernel: + initrd_start and initrd_end; these variables + point to the copy of the image in ram. The bootloader now + hands over control to the kernel. + + + + During setup, the kernel creates a special file system, rootfs. + This mostly reuses ramfs code, but there are a few twists: it can + never be mounted from userspace, there's only one copy, and it's not + mounted on top of anything else. The existence of rootfs means that + the rest of the kernel always can assume there's a place to mount + other file systems. It also is a place where temporary files can + be created during the boot sequence. + + + + In initramfs.c:populate_rootfs(), there are two + possibilities. If the image looks like a cpio.gz file, it is + unpacked into rootfs. If the file /init is + among the files unpacked from the cpio file, the initramfs model + is used; otherwise we get a more complex interaction between kernel + and initrd, discussed in . + + + + Booting with Initramfs + + If the image was a cpio file, and it contains a file + /init, the initram model is used. + The kernel does some basic setup and hands over control to + /init; it is then up to + /init to make a real root available and to + transfer control to the /sbin/init command + on the real root. + + + + The tricky part is to do that in such a way that there + is no way for user processes to gain access to the rootfs + filesystem; and in such a way that rootfs remains empty and + hidden under the user root file system. This is best done + using some C code; yaird uses + run_init, a small tool based on + klibc. + + # invoked as last command in /init, with no other processes running, + # as follows: + # exec run_init /newroot /sbin/init "$@" + - chdir /newroot + # following after lots of sanity checks and not across mounts: + - rm -rf /* + - mount --move . / + - chroot . + - chdir / + - open /dev/console + - exec /sbin/init "$@" + + + + + + + Booting with initrd + + If the image was not a cpio file, the kernel copies the + initrd image from where ever the boot loader left it to + rootfs:/initrd.image, and frees the ram used + by the bootloader for the initrd image. + + + + After reading initrd, the kernel does more setup to the point where + we have: + + + + + working CPU and memory management + + + + + + working process management + + + + + + compiled in drivers activated + + + + + + a number of support processes such as ksoftirqd are created. + (These processes have the rootfs as root; they can get a new + root when the pivot_root() system call is used.) + + + + + + something like a console. Console_init() is + called before PCI or USB probes, so expect only compiled in + console devices to work. + + + + + + + + At this point, in do_mounts.c:prepare_namespace(), + the kernel looks for a root filesystem to mount. That root file + system can come from a number of places: NFS, a raid device, a plain + disk or an initrd. If it's an initrd, the sequence is as follows + (where devfs can fail if it's not compiled into the kernel) + + + - mount -t devfs devfs /dev + - md_run_setup() + - process initrd + - umount /dev + - mount --move . / + - chroot . + - mount -t devfs devfs /dev + + + + + + Once that returns, in init/main.c:init(), + initialisation memory is freed and /sbin/init + is executed with /dev/console as file descriptor 0, 1 + and 2. /sbin/init can be overruled with + an init=/usr/bin/firefox parameter passed to the + boot loader; if /sbin/init is not found, + /etc/init and a number of other fallbacks + are tried. We're in business. + + + + The processing of initrd starts in + do_mounts_initrd.c:initrd_load(). It creates + rootfs:/dev/ram, then copies + rootfs:/initrd.image there and unlinks + rootfs:/initrd.image. Now we have the initrd + image in a block device, which is good for mounting. It calls + handle_initrd(), which does: + + + # make another block special file for ram0 + - mknod /dev/root.old b 1 0 + # try mounting initrd with all known file systems, + # optionally read-only + - mount -t xxx /dev/root.old /root + - mkdir rootfs:/old + - cd /root + - mount --move . / + - chroot . + - mount -t devfs devfs /dev + - system ("/linuxrc"); + - cd rootfs:/old + - mount --move / . + - cd rootfs:/ + - chroot . + - umount rootfs:/old/dev + - ... more ... + + + + + + So initrd:/linuxrc runs in an environment where + initrd is the root, with devfs mounted if available, and rootfs is + invisible (except that there are open file handles to directories + in rootfs, needed to change back to the old environment). + + + + Now the idea seems to have been that /linuxrc + would mount the real root and pivot_root into it, then start + /sbin/init. Thus, linuxrc would never return. + However, main.c:init() does some usefull stuff only + after linuxrc returns: freeing init memory segments and starting numa + policy, so in eg Debian and Fedora, /linuxrc + will end, and /sbin/init + is started by main.c:init(). + + + + After linuxrc returns, the variable real_root_dev + determines what happens. This variable can be read and written + via /proc/sys/kernel/real-root-dev. If it + is 0x0100 (the device number of /dev/ram0) + or something equivalent, handle_initrd() will change + directory to /old and return. If it is + something else, handle_initrd() will decode it, mount + it as root, mount initrd as /root/initrd, + and again start /sbin/init. (if mounting as + /root/initrd fails, the block device is freed.) + + + + Remember handle_initrd() was called via + load_initrd() from prepare_namespace(), + and prepare_namespace() ends by chrooting into the + current directory: rootfs:/old. + + + + Note that rootfs:/old was move-mounted + from '/' after /linuxrc returned. + When /linuxrc started, the root was + initrd, but /linuxrc may have done a + pivot_root(), replacing the root with a real root, + say /dev/hda1. + + + + Thus: + + + + + /linuxrc is started with initrd + mounted as root. + + + + + + There is working memory management, processes, compiled + in drivers, and stdin/out/err are connected to a console, + if the relevant drivers are compiled in. + + + + + + Devfs may be mounted on /dev. + + + + + + /linuxrc can pivot_root. + + + + + + If you echo 0x0100 to + /proc/sys/kernel/real-root-dev, + the pivot_root will remain in effect after + /linuxrc ends. + + + + + + After /linuxrc returns, + /dev may be unmounted and replaced + with devfs. + + + + + + + + Thus a good strategy for /linuxrc is to + do as little as possible, and defer the real initialisation + to /sbin/init on the initrd; this + /sbin/init can then pivot_root + into the real root device. + + #!/bin/dash + set -x + mount -nt proc proc /proc + # root=$(cat proc/sys/kernel/real-root-dev) + echo 256 > proc/sys/kernel/real-root-dev + umount -n /proc + + + + + + + Kernel command line parameters + + The kernel passes more information than just an initial file system + to the initrd or initramfs image; there also are the kernel boot + parameters. The bootloader passes these to the kernel, and the kernel + in turn passes them on via /proc/cmdline. + + + + An old version of these parameters is documented in the + + + bootparam + 7 + manual page; more recent information is in the kernel + documentation file kernel-parameters.txt. + Mostly, these parameters are used to configure non-modular drivers, + and thus not very interesting to yaird. + Then there are parameters such as noapic, which are + interpreted by the kernel core and also irrelevant to + yaird. + Finally there are a few parameters which are used by the kernel + to determine how to mount the root file system. + + + + Whether the initial image should emulate these options or ignore them + is open to discussion; you can make a case that the flexibility these + options offer has become irrelevant now that initrd/initramfs offers + far more fine grained control over the way in which the system + is booted. + Support for these options is mostly a matter of tuning the + distribution specific templates, but it is possible that the + templates need an occassional hint from the planner. + To find out just how much "mostly" is, we'll try to implement + full support for these options and see where we run into + limitations. + An inventarisation of relevant options. + + + + + ide + + + + These are options for the modular ide-core driver. + This could be supported by adding an attribute + "isIdeCore" to insmod actions, and expanding the ide + kernel options only for insmod actions where that + attribute is true. + It seems cleaner to support the options from + /etc/modprobe.conf. + Unsupported for now. + + + + + + + init + + + + The first program to be started on the definitive root device, + default /sbin/init. Supported. + + + + + + + ro + + + + Mount the definitive root device read only, + so that it can be submitted to fsck. + Supported; this is the default behaviour. + + + + + + + rw + + + + Three guesses. Supported. + + + + + + + resume, noresume + + + + Which device (not) to use for software suspend. + To be done. + + + + + + + root + + + + The device to mount as root. This is a nasty one: + the planner by default only creates device nodes + that are needed to mount the root device, and even + if you were to put hotplug on the inital image + to create all possible device nodes, there's still + the matter of putting support for the proper file system + on the initial image. + We could make an option to + yaird to specify a list + of possible root devices and load the necessary + modules for all of them. + Unsupported until there's a clear need for it. + + + + + + + rootflags + + + + Flags to use while mounting root file system. + Implement together with root option. + + + + + + + rootfstype + + + + File system type for root file system. + Implement together with root option. + + + + + + + nfsaddrs + + + + For diskless booting. + Unclear whether we need this. NFS booting is desirable, + but I guess that will mostly be done under control of + DHCP. Unsupported for now. + + + + + + + nfsroot + + + + More diskless booting. + Unsupported for now. + + + + + + + + +
diff --git a/rescue/linux/cdrom/yaird-0.0.5/doc/license.xml b/rescue/linux/cdrom/yaird-0.0.5/doc/license.xml new file mode 100644 index 0000000..f3ccfcd --- /dev/null +++ b/rescue/linux/cdrom/yaird-0.0.5/doc/license.xml @@ -0,0 +1,65 @@ +
+ License + + 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; you may also obtain + a copy of the GNU General Public License + from the Free Software Foundation by visiting their Web site or by writing to +
+ Free Software Foundation, Inc. + 59 Temple Place - Suite 330 + Boston, MA 02111-1307 + USA +
+
+ + Klibc code + + Yaird contains code based on klibc; this code is made available + by the author under the following licence. The relevant source + files have this copyright notice included. + +/* ----------------------------------------------------------------------- * + * + * Copyright 2004 H. Peter Anvin - All Rights Reserved + * + * Permission is hereby granted, free of charge, to any person + * obtaining a copy of this software and associated documentation + * files (the "Software"), to deal in the Software without + * restriction, including without limitation the rights to use, + * copy, modify, merge, publish, distribute, sublicense, and/or + * sell copies of the Software, and to permit persons to whom + * the Software is furnished to do so, subject to the following + * conditions: + * + * The above copyright notice and this permission notice shall + * be included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES + * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT + * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR + * OTHER DEALINGS IN THE SOFTWARE. + * + * ----------------------------------------------------------------------- */ + + + +
diff --git a/rescue/linux/cdrom/yaird-0.0.5/doc/raid.xml b/rescue/linux/cdrom/yaird-0.0.5/doc/raid.xml new file mode 100644 index 0000000..4a23282 --- /dev/null +++ b/rescue/linux/cdrom/yaird-0.0.5/doc/raid.xml @@ -0,0 +1,196 @@ +
+ Supporting Raid Devices + + + This section discusses software raid devices from an initial boot + image perspective: how to get the root device up and running. + There are other aspects to consider, the bootloader for example: + if your root device is on a mirror for reliability, it would be + a disappointment if after the crash you still had a long downtime + because the MBR was only available on the crashed disk. Then there's + the issue of managing raid devices in combination with hotplugging: + once the system is operational, how should the raid devices that + the initial image left untouched be brought online? + + + + Raid devices are managed via ioctls (mostly; there is something + called "autorun" in the kernel) + The interface from userland is simple: mknod a block device file, + send an ioctl to it specifying the devnos of the underlying block + devices and whether you'd like mirroring or striping, then send + a final ioctl to activate the device. This leaves the managing + application free to pick any unused device (minor) number and + has no assumptions about device file names. + + + + Devices that take part in a raid set also have a "superblock", + a header at the end of the device that contains a uuid and indicates + how many drives and spares are supposed to take part in the raid set. + This can be used be the kernel to do consistency checking, it can also + be used by applications to scan for all disks belonging in a raid set, + even if one of the component drives is moved to another disk controller. + + + + The fact that the superblock is at the end of a device has an obvious + advantage: if you somehow loose your raid software, the device + underlying a mirror can be mounted directly as a fallback measure. + + + + If raid is compiled into the kernel rather than provided as a module, + the kernel uses superblocks at boot time to find raid sets and make + them available without user interaction. In this case the filename of + the created blockdevice is hardcoded: /dev/md\d. + This feature is intended for machines with root on a raid device + that don't use an initial boot image. This autorun feature is + also accessible via an ioctl, but it's not used in management + applications, since it won't work with an initial boot image and + it can be a nuisance if some daemon brought a raid set online just + after the administator took it off line for replacement. + + + + Finally, by picking a different major device number for the raid device, + the raid device can be made partitionable without use of LVM. + + + + There are at least three different raid management applications + for Linux: raidtools, the oldest; mdadm, more modern; and EVMS, a + suite of graphical and command line tools that manages not only raid + but also LVM, partitioning and file system formating. We'll only + consider mdadm for now. The use of mdadm is simple: + + + + + + + There's an option to create a new device from components, + building the superblock. + + + + + + Another option assembles a raid device from components, + assuming the superblocks are already available. + + + + + + Optionally, a configuration file can be used, specifying which + components make up a device, whether a device file should + be created or it is assumed to exist, whether it's stripe or + mirror, and the uuid. Also, a wildcard pattern can be given: + disks matching this pattern will be searched for superblocks. + + + + + + Information given in the configuration file can be omitted + on the command line. If there's a wildcard, you don't even + have to specify the component devices of the raid device. + A typical command is mdadm --assemble /dev/md-root + auto=md uuid=..., which translates to "create + /dev/md-root with some unused minor number, + and put the components with matching uuid in it." + + + + + + + + So far, raid devices look fairly simple to use; the complications + arise when you have to play nicely with all the other software + on the box. It turns out there are quite a lot of packages that + interact with raid devices: + + + + + + + + When the md module is loaded, it registers 256 block devices + with devfs. These devices + are not actually allocated, they're just names set up to + allocate the underlying device when opened. These names in + devfs have no counterpart in sysfs. + + + + + + When the LVM vgchange is started, + it opens all md devices to scan for headers, only to find the + raid devices have no underlying components and will return + no data. In this process, all these stillborn md devices get + registered with sysfs. + + + + + + When udevstart is executed + at boot time, it walks over the sysfs tree and lets + udev create block devices files for + every block device it finds in sysfs. The name and permissions + of the created file are configurable, and there is a hook to + initialise SELinux access controls. + + + + + + When mdadm is invoked with the auto + option, it will create a block device file with an unused + device number and put the requested raid volume under it. + The created device file is owned by whoever executed the + mdadm command, permissions are 0600 + and there are no hooks for SELinux. + + + + + + When the Debian installer builds a system with LVM and raid, the + raid volumes have names such as /dev/md0, + where there is an assumption about the device minor number in + the name of the file. + + + + + + + + For the current Debian mkinitrd, this all works together in + a wonderful manner: devfs creates file names for raid devices, + LVM scans them with as side effect entering the devices in sysfs, + and after pivotroot udevstart triggers + udev into creating block device files with proper permissions and + SELinux hooks. Later in the processing of rcS.d, + mdadm will put a raid device under the + created special file. Convoluted but correct, except for the fact + that out of 256 generated raid device files, up to 255 are unused. + + + + In yaird, we do not use devfs. + Instead, we do a mknod before the + mdadm, taking care to use the same + device number that's in use in the running kernel. We expect + mdadm.conf to contain an auto=md + option for any raid device files that need to be created. + This approach should work regardless of whether the fstab uses + /dev/md\d or a device number independent name. + + +
diff --git a/rescue/linux/cdrom/yaird-0.0.5/doc/security.xml b/rescue/linux/cdrom/yaird-0.0.5/doc/security.xml new file mode 100644 index 0000000..c5a3ce7 --- /dev/null +++ b/rescue/linux/cdrom/yaird-0.0.5/doc/security.xml @@ -0,0 +1,224 @@ +
+ Security + + + This section discusses security: avoiding downtime, avoiding revealing + sensitive information, avoiding unwanted modifications to the data; + either through accident or malice. + A good introduction to secure programming can be found in + + + Secure Programming for Linux and Unix HOWTO. + + + + For yaird, security is not very + complicated: although it runs with root privileges, the program is + not setuid, and all external input comes from files or programs + installed by the admnistrator, so our main focus is on avoiding + downtime caused by ignored error codes. + A full blown risk assessment would be overkill, so we'll just use + the HOWTO as a checklist to verify that the basic precautions are + in place. + + + + + + + + Group + Mitigation + Status + + + + + + Bad input + Verify command line + + Yes. + + + + + Bad input + Verify and clean up environment + + Complete environment is reset at start of program. + + + + + Bad input + Avoid assumptions about file descriptors + + Handled by perl. + + + + + Bad input + Verify file names + + Perl taint check shows filenames are verified for + absence of odd characters before passing to + subprocesses. + TODO: examine UTF-8 impact. + + + + + Bad input + Verify file content + + File contents in sysfs verified. + Fstab entries properly quoted. + TODO: check for spaces in names of LVM volume or of + modules; could end up in generated /sbin/init. + + + + + Bad input + Verify locale settings + + All locale related environment variables are wiped at + program startup. + + + + + Bad input + Verify character encoding + + All IO is byte oriented. + + + + + Bad input + Buffer overflow + + In perl? + + + + + Program structure + Separate data and control + + Under this heading, the HOWTO discusses the dangers of + auto-executing macros in data files. The closest thing we + have to a data file are the templates that tune the image + to the distribution. We use a templating language that + does not allow code embedding, and the image generation + module does not make it possible for template output to + end up outside of the image. Conclusion: broken templates + can produce a broken image, but cannot affect the running + system. + + + + + Program structure + Minimize privileges + + The user is supposed to bring his own root privileges to + the party, not much to be done here. A related issue + is the minimizing of privileges in the system that is + started with the generated image. This would include + starting SELinux at the earliest possible moment. + At least in Fedora, that earliest possible moment is + in rc.sysinit, well past the moment + where the initial boot image hands over control to the newly + mount root file system. No yaird + support needed. + + + + + Program structure + Safe defaults + + Configuration only specifies sources of information, + like /etc/hotplug, not much can go wrong here. + + + + + Program structure + Safe configuration + + No configuration file is used yet, so it's not read from + current directory either. + + + + + Program structure + Fail safe + + Planning and writing the image is separated; + writing only starts after planning is succesfully completed. + Todo: consider backout on write failure. + + + + + Program structure + Avoid race conditions + + Temporary files and directories are created + with the File::Temp module, which is + resistant to name guessing attacks. + The completed image is installed with rename + rather than link; if an existing file is + overwritten, this guarantees there's no race where the + old image has been deleted bu the new one is not yet in + place. (Note that there is no option in place yet which + allows overwriting of existing files.) + To do: examine File::Temp safe_level=HIGH. + + + + + Underlying resources + Handle meta characters + + Protection against terminal escape sequences in output + is not yet in place. + + + + + Underlying resources + Check system call results + + Yes. + + + + + Language specific + Verify perl behaviour with taint. + + Yes. + + + + + Language specific + Avoid perl open magic with 3rd argument. + + Yes. + + + + + + + + +
diff --git a/rescue/linux/cdrom/yaird-0.0.5/doc/shlibs.xml b/rescue/linux/cdrom/yaird-0.0.5/doc/shlibs.xml new file mode 100644 index 0000000..6c7c01a --- /dev/null +++ b/rescue/linux/cdrom/yaird-0.0.5/doc/shlibs.xml @@ -0,0 +1,201 @@ +
+ Supporting Shared Libraries + + + When an executable is added to the image, we want any required shared + libraries to be added automatically. The SharedLibraries + module determines which files are required. This section discusses + the features of kernel and compiler we need to be aware of in order + to do this reliably. + + + + Linux executables today are in ELF format; it is defined in + + + Generic ELF Specification ELFVERSION, + part of the Linux Standard Base. This is based on part of the System + V ABI: Tool Interface Standard (TIS), Executable and Linking Format + (ELF) Sepcification + + + + ELF has consequences in different parts of the system: in + the link-editor, that needs to merge ELF object files into ELF + executables; in the kernel (fs/binfmt_elf.c), + that has to place the executable in RAM and transfer control to it, + and in the runtime loader, that is invoked when starting the + application to load the necessary shared libraries into RAM. + The idea is as follows. + + + + + + Executables are in ELF format, with a type of either + ET_EXEC (executable) or ET_DYN (shared + library; yes, you can execute those.) There are other types of + ELF file (core files for example) but you can't execute them. + + + + + + These files contain two kind of headers: program headers and + section headers. Program headers define segments of the file that + the kernel should store consequetively in RAM; section headers define + parts of the file that should be treated by the link editor + as a single unit. Program headers normally point to a group + of adjacent sections. + + + + + + The program may be statically linked or dynamically (with shared + libraries). + If it's statically linked, the kernel loads relevant segments, + then transfers control to main() in userland. + + + + + + If it's dynamically linked, one of the program headers has type + PT_INTERP. It points to a segment that contains + the name of a (static) executable; this executable is loaded in + RAM together with the segments of the dynamic executable. + + + + + + The kernel then transfers control to the userland + interpreter, passing program headers and related info in a + fourth argument to main(), after envp. + + + + + + There's one interesting twist: one of the segments loaded + into RAM (linux-gate.so) does not + come from the executable, but is a piece of kernel mapped + into user space. It contains a subroutine that the kernel + provides to do a system call; the idea is that this way, + the C library does not have to know which calling convention + for system calls is supported by the kernel and optimal for + the current hardware. The link editor knows nothing about + this, only the interpreter knows that the kernel can pass the + address of this subroutine together with the program headers. + + + For more info on the kernel-supplied shared library for + system calls, see + + + LWN: How to speed up system calls, + + LWN: Patch: i386 vsyscall DSO implementation, + + LKML: common name for the kernel DSO. + + + + + + + + The interpreter interprets the .dynamic section of + the dynamic executable. This is a table containing various types + of info; if the type is DT_NEEDED, the info is the + name of a shared library that is needed to run the executable. + Normally, it's the basename. + + + + + + The interpreter searches LD_LIBARY_PATH for the + library and loads the first working version it finds, using a + breath-first search. Once everything is loaded, the interpreter + hands over control to main in the executable. + + + + + + Except that that's not how it really works: the path that glibc + uses depends on whether threads are supported, and klibc can + function as a PT_INTERP but will not load additional + libraries. + + + + + + The ldd command finds the pathnames + of shared libraries used by an executable. This works + only for glibc: it invokes the interpreter + with the executable as argument plus an environment variable that + tells it to print the pathnames rather than load them. For other + C libraries, there's no guaranteed correct way to find the path of + shared libraries. + + + + Thus, to figure out what goes on the initial ram image, first try + ldd. If that gives an answer, good. + Otherwise, use a helper program to find PT_INTERP and + DT_NEEDED. If there's only PT_INTERP, good, + add it to the image. If there are DT_NEEDED libraries + as well, and they have relative rather than absolute pathnames, + we can't determine the full path, so don't generate an image. + + + + There are a number of options to build a helper to extract the relevant + information from the executable: + + + + Build it in perl. The problem here is that unpacking 64-bit + integers is an optional part of the language. + + + + + + Build a wrapper around objdump or + readelf. The drawback is that + there programs are not part of a minimal Linux distribution: + depending on them in yaird would + increase the footprint. + + + + + + Building a C program using libbdf. This is a library + intended to simplify working with object files. Drawbacks + are that it adds complexity that is not necessary in our + context since it supports multiple executable formats; + furthermore, at least in Debian it is treated as internal + to the gcc tool chain, complicating packaging the tool. + + + + + + Building a C program based on elf.h. + This turns out to be easy to do. + + + + + + + + Yaird uses the last appraoch listed. + +
diff --git a/rescue/linux/cdrom/yaird-0.0.5/doc/spec.xml b/rescue/linux/cdrom/yaird-0.0.5/doc/spec.xml new file mode 100644 index 0000000..2f8f9c8 --- /dev/null +++ b/rescue/linux/cdrom/yaird-0.0.5/doc/spec.xml @@ -0,0 +1,311 @@ +
+ Goals, features, to do + + The purpose in life of a tool like Yaird + is to produce an initial boot image that loads the required modules + to allow a booting kernel to access the root file system and from + there use the startup scripts to get to the default run level. + This means that hardly any drivers need to be compiled into the kernel + itself, so a distribution can produce a kernel with a large amount of + modules that will run unchanged on practically any hardware, without + introducing a large number of unused drivers that would waste RAM. + In a sense, the initial boot image customises the kernel to the hardware + it happens to be running on. + + + + That purpose still leaves a lot of room to optimise for different + goals: as an example, you could attempt to make the generated + image as small as possible, or you could attempt to make the + generated image so flexible that it will boot on any hardware. + This chapter discusses the goals that determined the design, the + resulting features, and what's still left to do. + + + + The goals + + Well, not really. I started this thingy to show off a small + algorithm to find required modules based on sysfs information. + To make that a credible demonstration, the small algorithm + turned out to need a lot of scaffolding to turn it into a + working program ... + + + of Yaird are as follows: + + + + + Be free, as in GPL. + + + + + + Be maintainable. Small functions with documented arguments + and result are better than a shell script full of constructs + like eval "awk | bash | tac 3>&7". + + + + + + Be secure and reliable. The application should stop with an error + message at the slightest provocation, rather than run the + risk of producing a non-booting initrd image. + The application should not open loopholes that allow the 'bad + guys' to modify the image, gain access to raw devices or + overwrite system files. + + + + + + Be distribution agnostic. Fedora and Debian run similar + kernels and similar startup scripts, so there's little + reason why the glue between the two levels should be + completely different. + + + + + + Have limited footprint. The tools needed to build and run + the application should be few and widely available, with a + preference for tools that are installed anyway. + + + + + + Be future proof. Future kernels may use different modules + and may change device numbers; the application should need + no changes to cope with such migrations. + + + + + + Promote code reuse. Make functions side-effect free and + independent of context, so that it's easy to package the + core as a library that can be reused in other applications. + + + + + + Generate small images. The application should accurately + detect what modules are needed to get the root file system + running and include only those modules on the generated + image. + + An alternative and equally interesting exercise would be + an attempt to generate a universal initrd that could be + distributed together with the kernel. Such an image + would most likely be based on udev/hotplug. + + + + + + + + + + Requirements: + + + + + Linux 2.6.8 or later, both when running + yaird and when running the generated + image. By limiting the goal to support only recent kernels, + we can drastically reduce the number of special cases and + knowledge about modules in the application. + + + + + + Sysfs and procfs, both on the old and on the + new kernel. + + + + + + Perl and the HTML-Template module. + + + + + + + + To achieve these goals, the following features are implemented: + + + + + Templating system to tune the generated image to a + given distribution; templates for Debian and Fedora FC3 + included. + + + + + + Interprets /etc/fstab, including + details such as octal escapes, ignore and + noauto keywords, and — for ext3 and reiser + file systems — label and uuid detection. + Where applicable, options in /etc/fstab + are used in the generated image. + + + + + + Supports volume management via LVM2; activates only the volume + group required for the root file system. + + + + + + Supports software RAID via mdadm; activates only required + devices. + + + + + + Understands SATA, IDE devices. + + + + + + Generated image does not use hard coded device + numbers. + + Except where the distribution depends on it; + there are some issues with mdadm in Debian. + + + + + + + + Image generation understands how included executables may + depend on symbolic links and shared libraries. Shared libraries + work for both glibc and klibc. + + + + + + Support input devices such as USB keyboard, if the input + device supports sysfs. + Input devices are needed in the initial image to supply + a password for encrypted root disk and to do debugging. + + + + + + Basic support for kernel command line as passed by the boot + loader. Interprets init=, ro, rw. + + + + + + Interprets the blacklist information from hotplug. + + + + + + Interprets the kernel configuration file that defines whether a + component is built in, available as a module or unavailable. + By maintaining a mapping between module name and config + parameter for selected modules, we avoid error messages if + for instance a required file system is built into the kernel. + + + + + + Supports initramfs, both in Debian and Fedora versions. + An example template using the older initrd model + is included for Debian. + + + + + + Does not require devfs in either the old or the new kernel. + + + + + + + + Obviously, this tool is far from complete. Here's a list of + features that still need to be implemented: + + + + + Understands USB and SCSI storage, no special provisions + are needed for code generation, but it's not tested yet. + + + + + + EVMS, an alternative user level interface to LVM2 and MD, + is not supported yet. + + + + + + Swsusp is not supported yet. + + + + + + Module aliases and options as specified in + /etc/modprobe.d are not supported yet. + + + + + + Firewire and DASD are not supported. + + + + + + NFS, loopback and encrypted file systems are not supported. + + + + + + Configuration info is hard coded in a module; it should be + possible to read this from a file. + + + + + + +
diff --git a/rescue/linux/cdrom/yaird-0.0.5/doc/tools.xml b/rescue/linux/cdrom/yaird-0.0.5/doc/tools.xml new file mode 100644 index 0000000..236f818 --- /dev/null +++ b/rescue/linux/cdrom/yaird-0.0.5/doc/tools.xml @@ -0,0 +1,229 @@ +
+ Tool Chain + + This section discusses which tools are used in implementing + yaird and why. + + + + The application is built as a collection of perl modules. + The use of a scripting language makes consistent error checking + and building sane data structures a lot easier than shell + scripting; using perl rather than python is mainly because in + Debian perl has 'required' status while python is only 'standard'. + The code follows some conventions: + + + + + + + Where there are multiple items of a kind, say fstab entries, + the perl module implements a class for individual items. + All classes share a common base class, Obj, + that handles constructor argument validation and that offers + a place to plug in debugging code. + + + + + + Object attributes are used via accessor methods to catch + typos in attribute names. + + + + + + Objects have a string method, that returns + a string version of the object. Binary data is not + guaranteed to be absent from the string version. + + + + + + Where there are multiple items of a kind, say fstab entries, + the collection is implemented as a module that is not a + class. There is a function all that returns a + list of all known items, and functions findByXxx + to retrieve an item where the Xxx attribute has a given + value. There is an init function that + initializes the collection; this is called automatically + upon first invocation of all or + findByXxx. + Collections may have convenience functions + findXxxByYyy: return attribute Xxx, given a + value for attribute Yyy. + + + + + + + + The generated initrd image needs a command interpreter; + the choice of command interpreter is exclusively determined + by the image generation template. + At this point, both Debian and Fedora templates use the + dash shell, for historical reasons only. + Presumably busybox could be used to build a + smaller image. However, support for initramfs requires a complicated + construction involving a combination of mount, chroot and chdir; + to do that reliably, nash as used in Fedora + seems a more attractive option. + + + + Documentation is in docbook format, since it's widely supported, + supports numerous output formats, has better separation between + content and layout than texinfo, and provides better guarantees + against malformed HTML than texinfo. + + + + Autoconf + + GNU automake is used to build and install the application, + where 'building' is perhaps too big a word adding the location + of the underlying modules to the wrapper script. + The reasons for using automake: it provides packagers with a + well known mechanism for changing installation directories, + and it makes it easy for developers to produce a cruft-free + and reproducible tarball based on the tree extracted from + version control. + + + + + C Library + + The standard C library under linux is glibc. This is big: + 1.2Mb, where an alternative implementation, klibc, is only 28Kb. + The reason klibc can be so much smaller than glibc is that a + lot of features of glibc, like NIS support, are not relevant for + applications that need to do basic stuff like loading an IDE driver. + + + + There are other small libc implementations: in the embedded world, + dietlibc and uClibc are popular. However, klibc was specifically + developed to support the initial image: it's intended to be included + with the mainline kernel and allow moving a lot of startup magic out + of the kernel into the initial image. See + + + LKML: [RFC] klibc requirements, round 2 + for requirements on klibc; the + + mailing list is the most current + source of information. + + + + Recent versions of klibc (1.0 and later) include a wrapper around + gcc, named klcc, that will compile a program with klibc. This means + yaird does not need to include klibc, + but can easily be configured to use klibc rather than glibc. + Of course this will only pay off if every + executable on the initial image uses klibc. + + + + Yaird does not have to be extended in + order to support klibc, but it is necessary to avoid assumptions + about which shared libraries are used. This is discussed in + . + + + + + Template Processing + + This section discusses the templates used to transform + high-level actions to lines of script in the generated image. + These templates are intended to cope with small differences + between distributions: a shell that is named + dash in Debian and + ash in Fedora for example. + By processing the output of yaird + through a template, we can confine the tuning of + yaird for a specific distribution + to the template, without having to touch the core code. + + + + One important function of a template library is to enforce + a clear separation between progam logic and output formatting: + there should be no way to put perl fragments inside a template. + See StringTemplate + for a discussion of what is needed in a templating system, plus + a Java implementation. + + + + Lets consider a number of possible templating solutions: + + + + + + Template Toolkit: + widely used, not in perl core distribution, does not + prevent mixing of code and templates. + + + + + + + Text::Template: + not in perl core distribution, does not + prevent mixing of code and templates. + + + + + + Some XSLT processor. Not in core distribution, + more suitable for file-to-file transformations + than for expanding in-process data; overkill. + + + + + + + HTML-Template: + not in perl core distribution, + prevents mixing of code and templates, + simple, no dependencies, dual GPL/Artistic license. + Available in Debian as + libhtml-template-perl, + in Fedora 2 as perl-HTML-Template, dropped from Fedora 3, + but available via + + Fedora Extras. + + + + + + A home grown templating system: a simple system such as the + HTML-Template module is over 100Kb. We can cut down on that + by dropping functions we don't immediately need, but the effort + to get a tested and documented implementation remains substantial. + + + + + + + + The HTML-Template approach is the best match for our + requirements, so used in yaird. + + + + +
diff --git a/rescue/linux/cdrom/yaird-0.0.5/doc/yaird.html b/rescue/linux/cdrom/yaird-0.0.5/doc/yaird.html new file mode 100644 index 0000000..d78437e --- /dev/null +++ b/rescue/linux/cdrom/yaird-0.0.5/doc/yaird.html @@ -0,0 +1,1581 @@ + + +Yaird — Yet Another Mkinitrd

Yaird — Yet Another Mkinitrd

Erik van Konijnenburg

+ Permission is granted to copy, distribute and/or modify this + document under the terms of the GNU Free Documentation + License, Version 1.1 or any later version published + by the Free Software Foundation with no Invariant Sections, no + Front-Cover Texts, and no Back-Cover Texts. You may obtain a copy + of the GNU Free Documentation License from + the Free Software Foundation by visiting their Web site or by writing to: + Free Software Foundation, Inc., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. +

2005-02-09

Abstract

+ This memo discusses the design goals and implementation of + Yaird (Yet Another mkInitRD), + a proof-of-concept application to create an initial boot image, + a minimal filesystem used to bring a booting Linux kernel to a + level where it can access the root file system and use startup + scripts to bring the system to the normal run level. It differs + from earlier mkinitrd implementations in + that it leverages the information in sysfs to minimise the number + of special cases that the application has to know about, and in + that it uses a template system to separate the analysis of the + system from the building of the image. +


Introduction

+ Yaird (Yet Another mkInitRD) is an + application to create an initial boot image, a minimal filesystem used + to bring a booting Linux kernel to a level where it can access + the root file system and use startup scripts to bring the system + to the normal run level. +

+ It differs from earlier mkinitrd + implementations in that it attempts to leverage the information in + sysfs to minimise the number of special cases that the application + has to know about, and in that it uses a template system to separate + the analysis of the system from the building of the image. +

+ This document gives an overview of the design and implementation + of Yaird; see the README file for + usage information. This text assumes familiarity with Linux + system administration and the basics of hotplug and sysfs. +

+ This document describes version 0.0.5 + of Yaird. + This is a very rough, proof of concept, version. +

Goals, features, to do

+ The purpose in life of a tool like Yaird + is to produce an initial boot image that loads the required modules + to allow a booting kernel to access the root file system and from + there use the startup scripts to get to the default run level. + This means that hardly any drivers need to be compiled into the kernel + itself, so a distribution can produce a kernel with a large amount of + modules that will run unchanged on practically any hardware, without + introducing a large number of unused drivers that would waste RAM. + In a sense, the initial boot image customises the kernel to the hardware + it happens to be running on. +

+ That purpose still leaves a lot of room to optimise for different + goals: as an example, you could attempt to make the generated + image as small as possible, or you could attempt to make the + generated image so flexible that it will boot on any hardware. + This chapter discusses the goals that determined the design, the + resulting features, and what's still left to do. +

+ The goals[1] + of Yaird are as follows: +

  • + Be free, as in GPL. +

  • + Be maintainable. Small functions with documented arguments + and result are better than a shell script full of constructs + like eval "awk | bash | tac 3>&7". +

  • + Be secure and reliable. The application should stop with an error + message at the slightest provocation, rather than run the + risk of producing a non-booting initrd image. + The application should not open loopholes that allow the 'bad + guys' to modify the image, gain access to raw devices or + overwrite system files. +

  • + Be distribution agnostic. Fedora and Debian run similar + kernels and similar startup scripts, so there's little + reason why the glue between the two levels should be + completely different. +

  • + Have limited footprint. The tools needed to build and run + the application should be few and widely available, with a + preference for tools that are installed anyway. +

  • + Be future proof. Future kernels may use different modules + and may change device numbers; the application should need + no changes to cope with such migrations. +

  • + Promote code reuse. Make functions side-effect free and + independent of context, so that it's easy to package the + core as a library that can be reused in other applications. +

  • + Generate small images. The application should accurately + detect what modules are needed to get the root file system + running and include only those modules on the generated + image.[2] +

+

+ Requirements: +

  • + Linux 2.6.8 or later, both when running + yaird and when running the generated + image. By limiting the goal to support only recent kernels, + we can drastically reduce the number of special cases and + knowledge about modules in the application. +

  • + Sysfs and procfs, both on the old and on the + new kernel. +

  • + Perl and the HTML-Template module. +

+

+ To achieve these goals, the following features are implemented: +

  • + Templating system to tune the generated image to a + given distribution; templates for Debian and Fedora FC3 + included. +

  • + Interprets /etc/fstab, including + details such as octal escapes, ignore and + noauto keywords, and — for ext3 and reiser + file systems — label and uuid detection. + Where applicable, options in /etc/fstab + are used in the generated image. +

  • + Supports volume management via LVM2; activates only the volume + group required for the root file system. +

  • + Supports software RAID via mdadm; activates only required + devices. +

  • + Understands SATA, IDE devices. +

  • + Generated image does not use hard coded device + numbers.[3] +

  • + Image generation understands how included executables may + depend on symbolic links and shared libraries. Shared libraries + work for both glibc and klibc. +

  • + Support input devices such as USB keyboard, if the input + device supports sysfs. + Input devices are needed in the initial image to supply + a password for encrypted root disk and to do debugging. +

  • + Basic support for kernel command line as passed by the boot + loader. Interprets init=, ro, rw. +

  • + Interprets the blacklist information from hotplug. +

  • + Interprets the kernel configuration file that defines whether a + component is built in, available as a module or unavailable. + By maintaining a mapping between module name and config + parameter for selected modules, we avoid error messages if + for instance a required file system is built into the kernel. +

  • + Supports initramfs, both in Debian and Fedora versions. + An example template using the older initrd model + is included for Debian. +

  • + Does not require devfs in either the old or the new kernel. +

+

+ Obviously, this tool is far from complete. Here's a list of + features that still need to be implemented: +

  • + Understands USB and SCSI storage, no special provisions + are needed for code generation, but it's not tested yet. +

  • + EVMS, an alternative user level interface to LVM2 and MD, + is not supported yet. +

  • + Swsusp is not supported yet. +

  • + Module aliases and options as specified in + /etc/modprobe.d are not supported yet. +

  • + Firewire and DASD are not supported. +

  • + NFS, loopback and encrypted file systems are not supported. +

  • + Configuration info is hard coded in a module; it should be + possible to read this from a file. +

+

Concepts

+ This section discusses the basic concepts underlying + yaird. +

+ The basic operation is simple: +

  1. + make a plan to build an image, +

  2. + transform the plan to a detailed description of the image, +

  3. + build and pack the image. +

+ +

+ The plan consists of a number of goals to be achieved: a loaded + device driver, a block special file created, a device mounted. + The plan does not specify details such as the exact path of the + mknod executable or the shared libraries + needed to run that executable. +

Making the Plan

+ The most interesting part is making the plan. At the top level, + the plan is governed by some ultimate goals. For now, the only + goal is to get a working keyboard and to mount the root file system, + but if we're going to support swsusp, the swap devices also need to + be activated. To realise the goal, subgoals need to be realised. + As an example, before mounting a file system, the modules containing + the implementation of the file system need to be loaded. +

+ To refine the goal of loading a kernel module, + the ModDepTab module interprets + modules.dep for the new kernel. Given a + module name, this will return a list of required modules with all + dependencies recursively resolved. It knows about the equivalence + between hyphen and underscore in module names, it also knows how + to search for modules in the /lib/modules + directory. +

+ The KConfig module determines if loading a + module can be omitted because the module is hardcoded into the + kernel. As an example, it is aware of the fact that the module + ext3 is not needed if the new kernel configuration + contains CONFIG_EXT3_FS=y.[4] + Only a few modules are known: yaird + looks for modules such as ext3 when that filesystem + is used, so it makes sense to check whether a missing module + is compiled in. On the other hand, hardware modules that are + compiled in never show up in modules.pcimap + and friends, so they remain completely outside the view of + yaird. +

+ Module aliases and options as supported by + modprobe are unsupported for the moment. +

+ Before a device as listed in /etc/fstab can be + mounted, that device needs to be enabled. That device could be an + NFS mount, a loopback mount or it could be a block device. The NFS + and loopback cases are not supported yet, but block devices are. + This support is based on a number of sources of information: +

  1. + Scanning the /dev directory gives us the + relation between all block special files and major/minor + numbers. +

  2. + Scanning the /sys/block directory gives us the + relation between all major/minor numbers and kernel names + such as dm-0 or sda1; it + also gives the relation between partitions and complete + devices. +

  3. + If there is a symlink in a /sys/block + subdirectory to the /sys/devices + directory, it also gives is the relation between a block + device and the underlying hardware. +

+

+ Based on the kernel name and partition relationships of the device, + we determine the steps needed to activate the device. As an example, + to activate sda1, we need to activate sda, + then create a block special file for sda1. As + another example, to activate dm-0, our first bet is + to check whether this is an LVM logical + volume,[5] and if so activate the + physical volumes underlying the volume group, and finally running + vgchange -a y. +

Hardware Planning

+ Some devices, such as sdx or hdy, are + expected to have underlying hardware; as an example, sda + may be backed by pci0000:00/0000:00:1f.2/host0/0:0:0:0. + This represents a hardware path, in this case a controller on the PCI + bus that connects to a SCSI device. In order to use the device, + every component on the path needs to be activated, the component + closest to the CPU first. + Based on the pathname in /sys/devices and on + files within the directory for the component, we can determine + what kind of component we're dealing with, and how to find the + required modules. +

+ Finding modules closely follows the methods used in the + hotplug package, and the + hotplug approach in turn is an almost + literal translation of the code that the kernel uses to find a + driver for a newly detected piece of hardware. +

+ For components that talk some protocol over a bus, like SCSI or + IDE disks or CDROMs, this is a simple hard coded selection; as an + example, the ScsiDev module knows that a SCSI device + with a type file containing "5" is a CDROM, + and that sr-mod is the appropriate driver. +

+ Devices such as PCI or USB devices cannot be classified into + a few simple categories. These devices have properties such + as "Vendor", "Device" and "Class" that are visible in sysfs. + The source code of kernel driver modules for these devices + contains a table listing which combination of properties mark a + device that the driver is prepared to handle. When the kernel + is compiled, these tables are summarised in a text file such + as modules.pcimap. Based on this table, + we find a driver module needed for the device and mark it for + inclusion on the image. +

+ Multiple modules can match the same hardware: as an example, + usb-storage and ub both match an USB + stick. In such cases, we load all matching modules into the + kernel and leave it to kernel to decide who gets to manage the + device. There's one complication: some modules, such as + usb-core, match any device (probably to maintain some + administration of their own, or to provide an ultra-generic + interface), but do not actually provide access to the device. + Such devices are weeded out by the Blacklist module, + based on information in + /etc/hotplug/blacklist and + /etc/hotplug/blacklist.d. +

+ It turns out that the "load modules for every component in the sysfs + path" approach is not always sufficient: sometimes you have to load + siblings as well. As an example, consider a combined EHCI/UHCI + USB controller on a single chip. The same ports can show up as EHCI + or UHCI devices, different PCI functions in the same PCI slot, with + different sysfs directories, depending on what kind of hardware is + connected. Purely following the sysfs path, we would only need to load + the EHCI driver, but it appears that on this kind of chip, EHCI devices + are not reliably detected unless the UHCI driver is loaded as well. + For this reason, we extend the algorithm with a rule: "for PCI devices, + load modules for every function in the PCI slot". +

+ That's actually a bit much: it would load all of ALSA if you have a + combined ISA/IDE/USB/Multimedia chipset. So we limit the above + to those PCI functions that provide USB ports. +

Plan Transformation

+ The plan generated in the first phase is a collection of general + intentions, stuff like 'load this module', but it does not + specify exactly what files must be placed on the image and what + lines are to be added to the initialisation scripts. +

+ The module ActionList represents this plan with a + list of hashes; every hash contains at least 'action' and + 'target', with other keys added to provide extra information + as needed. If two steps in the plan have identical action and + target, the last one is considered redundant and silently omitted. +

+ This plan is transformed to an exact image description with + the help of templates. The module Template + contains a hash with for every type of action: +

  • + a list of files to be copied from the mother system to the + image; +

  • + a list of directories to be created on the image; these do + not have to exist on the mother system; +

  • + a list of trees to be copied recursively from the mother + system to the image; +

  • + a hash, with as key the name of a script to be appended to + and as value that which is to be appended. +

+ All of the above are fed through HTML-Template, with the hash + describing this step as parameters. In practice, this looks + like so: +

+          insmod => {
+              files => [
+                  '<TMPL_VAR NAME=target>',
+                  '/sbin/insmod',
+                  ],
+              directories => [],
+              trees => [],
+              scripts => {
+                  '/init' => <<'//',
+                      /sbin/insmod '<TMPL_VAR NAME=target>'
+//
+              },
+          },
+      

+

+ There are a few attributes that are available to every template: +

+ version +

+ The kernel version we're generating an image for. + Useful if you want your image to include a complete copy + of /lib/modules/(version)/kernel. +

+ appVersion +

+ The version of yaird used to + build the image. +

+ auxDir +

+ The directory where yaird + keeps executables intended to go on the image, such as + run_init. +

+

+ Currently, there are templates for Debian and for Fedora, plus + a template showing how to use the older initrd approach. +

Image Generation

+ The detailed image description consists of a collection of names of + files, directories, symbolic links and block or character devices, + plus a number of lines of shell script. The image description does + not contain permission or ownership information: files always have + mode 444, executables and directories always 555, devices always + mode 600,[6] and everything is owned by root. +

+ The Image module contains the image description and + can write the image to a directory. It understands about symlinks: + if /sbin/vgscan is added to the image and it + happens to be a symlink to lvmiopversion, both + vgscan and lvmiopversion + will be added to the image. Shared libraries are supported + via the SharedLibraries module, as discussed in + the section called “Supporting Shared Libraries”. Invocations of other executables are not + recognised automatically: if lvmiopversion executes + /etc/lvm-200/vgscan, the latter needs to be + added explicitly to the image. +

+ The copying of complete trees to the image is influenced by the + copying for executables: if there is a symlink in the tree, it's + target is also included on the image, but if the target is a + directory, its contents are not copied recursively. This + approach avoids loops in image generation. + Note that the target of a symlink must exist: + yaird refuses to copy dangling links. +

Packing the Image

+ The final step is packing the image in a format that the + bootloader can process; this is handled by the module + Pack. The following formats are supported: +

+ cpio +

+ A zipped cpio file (new ASCII format), required for the + initramfs model as used in the templates for Debian and + Fedora. +

+ directory +

+ An unpacked directory, good for debugging or manually + creating odd formats. +

+ cramfs +

+ A cramfs filesystem, used for Debian initrd images. +

+

The interface between kernel and image

+ The initial boot image is supposed to load enough modules to let + the real root device be mounted cleanly. It starts up in a + very bare environment and it has to do tricky + stuff like juggling root filesystems; to pull that off successfully + it makes sense to take a close look at the environment that the + kernel creates for the image and what the kernel expects it to do. + This section contains raw design notes based on kernel 2.6.8. +

+ The processing of the image starts even before the kernel is + activated. The bootloader, grub or lilo for example, reads two + files from the boot file system into ram: the kernel and image. + The bootloader somehow manages to set two variables in the kernel: + initrd_start and initrd_end; these variables + point to the copy of the image in ram. The bootloader now + hands over control to the kernel. +

+ During setup, the kernel creates a special file system, rootfs. + This mostly reuses ramfs code, but there are a few twists: it can + never be mounted from userspace, there's only one copy, and it's not + mounted on top of anything else. The existence of rootfs means that + the rest of the kernel always can assume there's a place to mount + other file systems. It also is a place where temporary files can + be created during the boot sequence. +

+ In initramfs.c:populate_rootfs(), there are two + possibilities. If the image looks like a cpio.gz file, it is + unpacked into rootfs. If the file /init is + among the files unpacked from the cpio file, the initramfs model + is used; otherwise we get a more complex interaction between kernel + and initrd, discussed in the section called “Booting with initrd”. +

Booting with Initramfs

+ If the image was a cpio file, and it contains a file + /init, the initram model is used. + The kernel does some basic setup and hands over control to + /init; it is then up to + /init to make a real root available and to + transfer control to the /sbin/init command + on the real root. +

+ The tricky part is to do that in such a way that there + is no way for user processes to gain access to the rootfs + filesystem; and in such a way that rootfs remains empty and + hidden under the user root file system. This is best done + using some C code; yaird uses + run_init, a small tool based on + klibc. +

+	# invoked as last command in /init, with no other processes running,
+	# as follows:
+	# exec run_init /newroot /sbin/init "$@"
+	- chdir /newroot
+	# following after lots of sanity checks and not across mounts:
+	- rm -rf /*
+	- mount --move . /
+	- chroot .
+	- chdir /
+	- open /dev/console
+	- exec /sbin/init "$@"
+      

+

Booting with initrd

+ If the image was not a cpio file, the kernel copies the + initrd image from where ever the boot loader left it to + rootfs:/initrd.image, and frees the ram used + by the bootloader for the initrd image. +

+ After reading initrd, the kernel does more setup to the point where + we have: +

  • + working CPU and memory management +

  • + working process management +

  • + compiled in drivers activated +

  • + a number of support processes such as ksoftirqd are created. + (These processes have the rootfs as root; they can get a new + root when the pivot_root() system call is used.) +

  • + something like a console. Console_init() is + called before PCI or USB probes, so expect only compiled in + console devices to work. +

+

+ At this point, in do_mounts.c:prepare_namespace(), + the kernel looks for a root filesystem to mount. That root file + system can come from a number of places: NFS, a raid device, a plain + disk or an initrd. If it's an initrd, the sequence is as follows + (where devfs can fail if it's not compiled into the kernel) + +

+      - mount -t devfs devfs /dev
+      - md_run_setup()
+      - process initrd
+      - umount /dev
+      - mount --move . /
+      - chroot .
+      - mount -t devfs devfs /dev
+      

+ +

+ Once that returns, in init/main.c:init(), + initialisation memory is freed and /sbin/init + is executed with /dev/console as file descriptor 0, 1 + and 2. /sbin/init can be overruled with + an init=/usr/bin/firefox parameter passed to the + boot loader; if /sbin/init is not found, + /etc/init and a number of other fallbacks + are tried. We're in business. +

+ The processing of initrd starts in + do_mounts_initrd.c:initrd_load(). It creates + rootfs:/dev/ram, then copies + rootfs:/initrd.image there and unlinks + rootfs:/initrd.image. Now we have the initrd + image in a block device, which is good for mounting. It calls + handle_initrd(), which does: + +

+      # make another block special file for ram0
+      - mknod /dev/root.old b 1 0
+      # try mounting initrd with all known file systems,
+      # optionally read-only
+      - mount -t xxx /dev/root.old /root
+      - mkdir rootfs:/old
+      - cd /root
+      - mount --move . /
+      - chroot .
+      - mount -t devfs devfs /dev
+      - system ("/linuxrc");
+      - cd rootfs:/old
+      - mount --move / .
+      - cd rootfs:/
+      - chroot .
+      - umount rootfs:/old/dev
+      - ... more ...
+      

+ +

+ So initrd:/linuxrc runs in an environment where + initrd is the root, with devfs mounted if available, and rootfs is + invisible (except that there are open file handles to directories + in rootfs, needed to change back to the old environment). +

+ Now the idea seems to have been that /linuxrc + would mount the real root and pivot_root into it, then start + /sbin/init. Thus, linuxrc would never return. + However, main.c:init() does some usefull stuff only + after linuxrc returns: freeing init memory segments and starting numa + policy, so in eg Debian and Fedora, /linuxrc + will end, and /sbin/init + is started by main.c:init(). +

+ After linuxrc returns, the variable real_root_dev + determines what happens. This variable can be read and written + via /proc/sys/kernel/real-root-dev. If it + is 0x0100 (the device number of /dev/ram0) + or something equivalent, handle_initrd() will change + directory to /old and return. If it is + something else, handle_initrd() will decode it, mount + it as root, mount initrd as /root/initrd, + and again start /sbin/init. (if mounting as + /root/initrd fails, the block device is freed.) +

+ Remember handle_initrd() was called via + load_initrd() from prepare_namespace(), + and prepare_namespace() ends by chrooting into the + current directory: rootfs:/old. +

+ Note that rootfs:/old was move-mounted + from '/' after /linuxrc returned. + When /linuxrc started, the root was + initrd, but /linuxrc may have done a + pivot_root(), replacing the root with a real root, + say /dev/hda1. +

+ Thus: +

  • + /linuxrc is started with initrd + mounted as root. +

  • + There is working memory management, processes, compiled + in drivers, and stdin/out/err are connected to a console, + if the relevant drivers are compiled in. +

  • + Devfs may be mounted on /dev. +

  • + /linuxrc can pivot_root. +

  • + If you echo 0x0100 to + /proc/sys/kernel/real-root-dev, + the pivot_root will remain in effect after + /linuxrc ends. +

  • + After /linuxrc returns, + /dev may be unmounted and replaced + with devfs. +

+

+ Thus a good strategy for /linuxrc is to + do as little as possible, and defer the real initialisation + to /sbin/init on the initrd; this + /sbin/init can then pivot_root + into the real root device. +

+	#!/bin/dash
+	set -x
+	mount -nt proc proc /proc
+	# root=$(cat proc/sys/kernel/real-root-dev)
+	echo 256 > proc/sys/kernel/real-root-dev
+	umount -n /proc
+      

+

Kernel command line parameters

+ The kernel passes more information than just an initial file system + to the initrd or initramfs image; there also are the kernel boot + parameters. The bootloader passes these to the kernel, and the kernel + in turn passes them on via /proc/cmdline. +

+ An old version of these parameters is documented in the + bootparam(7) manual page; more recent information is in the kernel + documentation file kernel-parameters.txt. + Mostly, these parameters are used to configure non-modular drivers, + and thus not very interesting to yaird. + Then there are parameters such as noapic, which are + interpreted by the kernel core and also irrelevant to + yaird. + Finally there are a few parameters which are used by the kernel + to determine how to mount the root file system. +

+ Whether the initial image should emulate these options or ignore them + is open to discussion; you can make a case that the flexibility these + options offer has become irrelevant now that initrd/initramfs offers + far more fine grained control over the way in which the system + is booted. + Support for these options is mostly a matter of tuning the + distribution specific templates, but it is possible that the + templates need an occassional hint from the planner. + To find out just how much "mostly" is, we'll try to implement + full support for these options and see where we run into + limitations. + An inventarisation of relevant options. +

+ ide +

+ These are options for the modular ide-core driver. + This could be supported by adding an attribute + "isIdeCore" to insmod actions, and expanding the ide + kernel options only for insmod actions where that + attribute is true. + It seems cleaner to support the options from + /etc/modprobe.conf. + Unsupported for now. +

+ init +

+ The first program to be started on the definitive root device, + default /sbin/init. Supported. +

+ ro +

+ Mount the definitive root device read only, + so that it can be submitted to fsck. + Supported; this is the default behaviour. +

+ rw +

+ Three guesses. Supported. +

+ resume, noresume +

+ Which device (not) to use for software suspend. + To be done. +

+ root +

+ The device to mount as root. This is a nasty one: + the planner by default only creates device nodes + that are needed to mount the root device, and even + if you were to put hotplug on the inital image + to create all possible device nodes, there's still + the matter of putting support for the proper file system + on the initial image. + We could make an option to + yaird to specify a list + of possible root devices and load the necessary + modules for all of them. + Unsupported until there's a clear need for it. +

+ rootflags +

+ Flags to use while mounting root file system. + Implement together with root option. +

+ rootfstype +

+ File system type for root file system. + Implement together with root option. +

+ nfsaddrs +

+ For diskless booting. + Unclear whether we need this. NFS booting is desirable, + but I guess that will mostly be done under control of + DHCP. Unsupported for now. +

+ nfsroot +

+ More diskless booting. + Unsupported for now. +

+ +

Supporting Raid Devices

+ This section discusses software raid devices from an initial boot + image perspective: how to get the root device up and running. + There are other aspects to consider, the bootloader for example: + if your root device is on a mirror for reliability, it would be + a disappointment if after the crash you still had a long downtime + because the MBR was only available on the crashed disk. Then there's + the issue of managing raid devices in combination with hotplugging: + once the system is operational, how should the raid devices that + the initial image left untouched be brought online? +

+ Raid devices are managed via ioctls (mostly; there is something + called "autorun" in the kernel) + The interface from userland is simple: mknod a block device file, + send an ioctl to it specifying the devnos of the underlying block + devices and whether you'd like mirroring or striping, then send + a final ioctl to activate the device. This leaves the managing + application free to pick any unused device (minor) number and + has no assumptions about device file names. +

+ Devices that take part in a raid set also have a "superblock", + a header at the end of the device that contains a uuid and indicates + how many drives and spares are supposed to take part in the raid set. + This can be used be the kernel to do consistency checking, it can also + be used by applications to scan for all disks belonging in a raid set, + even if one of the component drives is moved to another disk controller. +

+ The fact that the superblock is at the end of a device has an obvious + advantage: if you somehow loose your raid software, the device + underlying a mirror can be mounted directly as a fallback measure. +

+ If raid is compiled into the kernel rather than provided as a module, + the kernel uses superblocks at boot time to find raid sets and make + them available without user interaction. In this case the filename of + the created blockdevice is hardcoded: /dev/md\d. + This feature is intended for machines with root on a raid device + that don't use an initial boot image. This autorun feature is + also accessible via an ioctl, but it's not used in management + applications, since it won't work with an initial boot image and + it can be a nuisance if some daemon brought a raid set online just + after the administator took it off line for replacement. +

+ Finally, by picking a different major device number for the raid device, + the raid device can be made partitionable without use of LVM. +

+ There are at least three different raid management applications + for Linux: raidtools, the oldest; mdadm, more modern; and EVMS, a + suite of graphical and command line tools that manages not only raid + but also LVM, partitioning and file system formating. We'll only + consider mdadm for now. The use of mdadm is simple: +

+

  • + There's an option to create a new device from components, + building the superblock. +

  • + Another option assembles a raid device from components, + assuming the superblocks are already available. +

  • + Optionally, a configuration file can be used, specifying which + components make up a device, whether a device file should + be created or it is assumed to exist, whether it's stripe or + mirror, and the uuid. Also, a wildcard pattern can be given: + disks matching this pattern will be searched for superblocks. +

  • + Information given in the configuration file can be omitted + on the command line. If there's a wildcard, you don't even + have to specify the component devices of the raid device. + A typical command is mdadm --assemble /dev/md-root + auto=md uuid=..., which translates to "create + /dev/md-root with some unused minor number, + and put the components with matching uuid in it." +

+

+ So far, raid devices look fairly simple to use; the complications + arise when you have to play nicely with all the other software + on the box. It turns out there are quite a lot of packages that + interact with raid devices: +

+

  • + When the md module is loaded, it registers 256 block devices + with devfs. These devices + are not actually allocated, they're just names set up to + allocate the underlying device when opened. These names in + devfs have no counterpart in sysfs. +

  • + When the LVM vgchange is started, + it opens all md devices to scan for headers, only to find the + raid devices have no underlying components and will return + no data. In this process, all these stillborn md devices get + registered with sysfs. +

  • + When udevstart is executed + at boot time, it walks over the sysfs tree and lets + udev create block devices files for + every block device it finds in sysfs. The name and permissions + of the created file are configurable, and there is a hook to + initialise SELinux access controls. +

  • + When mdadm is invoked with the auto + option, it will create a block device file with an unused + device number and put the requested raid volume under it. + The created device file is owned by whoever executed the + mdadm command, permissions are 0600 + and there are no hooks for SELinux. +

  • + When the Debian installer builds a system with LVM and raid, the + raid volumes have names such as /dev/md0, + where there is an assumption about the device minor number in + the name of the file. +

+

+ For the current Debian mkinitrd, this all works together in + a wonderful manner: devfs creates file names for raid devices, + LVM scans them with as side effect entering the devices in sysfs, + and after pivotroot udevstart triggers + udev into creating block device files with proper permissions and + SELinux hooks. Later in the processing of rcS.d, + mdadm will put a raid device under the + created special file. Convoluted but correct, except for the fact + that out of 256 generated raid device files, up to 255 are unused. +

+ In yaird, we do not use devfs. + Instead, we do a mknod before the + mdadm, taking care to use the same + device number that's in use in the running kernel. We expect + mdadm.conf to contain an auto=md + option for any raid device files that need to be created. + This approach should work regardless of whether the fstab uses + /dev/md\d or a device number independent name. +

Supporting Input Devices

+ A working console and keyboard during the initial boot image execution + is needed to enter a password for encrypted file systems; it also + helps while debugging. This section discusses the kernel input + layer and how it can be supported during image generation. +

+ The console is a designated terminal, where kernel output goes, and that + is the initial I/O device for /sbin/init. Like all + terminal devices, it provides a number of functions: you can read + and write to it, plus it has a number of ioctl() + functions to manage line buffering, interrupt characters and + baudrate or parity where applicable. +

+ Terminals come in different types: it can be a VT100 or terminal + emulator connected via an RS232 cable, or it can be a combination + of a CRT and a keyboard. The keyboard can be connected via + USB or it can talk a byte oriented protocol via a legacy UART + chip. +

+ The CRT is managed in two layers. The top layer, "virtual + terminal", manages a two dimensional array describing which letter + should go in which position of the screen. In fact, there are a + number of different arrays, and which one is actually visible on + the screen is selected by a keyboard combination. + Below the virtual terminals is a layer that actually places the + letters on the screen. This can be done a letter at a time, + using a VGA interface, or the letters can be painted pixel by + pixel, using a frame buffer. +

+ Below the terminal concept we find the input layer. This provides a + unified interface to the various user input devices: mouse, keyboard, + PC speaker, joystick, tablet. These input devices not only + generate data, they can also receive input from the computer. As + an example, the keyboard needs computer input to operate the NUM + LOCK indicator. Hardware devices such as keyboards register + themselves with the input layer, describing their capabilities + (I can send relative position, have two buttons and no LEDs), + and the input layer assigns a handler to the hardware device. + The handler presents the device to upper layers, either as a char + special file or as the input part of a terminal device. + This is not a one-to-one mapping: every mouse gets its own + handler, but keyboard and PC speaker share a handler, so it looks + to userland like you have a keyboard that can do "beep". +

+ In addition to handlers for specific type of upper layers (mouse, + joystick, touch screen) there is a generic handler that provides a + character device file such as /dev/input/event0 + for every input device detected; input events are presented through + these devices in a unified format. The input layer generates + hotplug events for these generic event handlers; hotplug uses + modules.inputmap to load a module containing a + suitable upper layer event handler. The keyboard handler is a special + case that does not occur in this map, so for image generation there + is little to be learned from hotplug input support. +

+ To guarantee a working console, yaird + should examine /dev/console, determine + whether it's RS232 or hardware directly connected to the computer, + and then load modules for either serial port, or for virtual + terminals, the input layer and any hardware underlying it. + Unfortunately, /dev/console does not give + a hint what is below the terminal interface, and unfortunately, + lots of input devices are legacy hardware that is hard to probe + and only sketchily described by sysfs in kernel 2.6.10. +

+ This means that a guarantee for a working console cannot be made, + which is why distribution kernels come with components such as the + keyboard and serial port driver compiled into the kernel. We can + do something else though: provide modules for keyboard devices + provided the kernel provides correct information. That covers the + case of USB keyboards, and that's something that's not compiled + into distribution kernels, so that the administrator has to add + modules explictly in order to get the keyboard working in + the initial boot image. +

+ Lets examine the sources of information we have to find which input + hardware we have to support. +

  • + In /sys/class/input, all input devices + are enumerated. Mostly, these only contain a + dev file containing major/minor number, + but USB devices also have a device + symlink into /sys/devices identifying + the underlying hardware. +

  • + In /boot/menu/grub.lst, kernel options + can be defined that determine whether to use a serial line as + console and whether to use a frame buffer. The consequence + is that it is fundamentally impossible to determine by looking + at the hardware alone what's needed to get an image that will + boot without problems. This probably means we'll have to consider + supplying some modules in the image that will only get loaded + depending on kernel options. +

  • + The file /proc/bus/input/devices gives + a formatted overview of all known input devices; entries look + like this: +

    +	    I: Bus=0003 Vendor=413c Product=2003 Version=0100
    +	    N: Name="DELL DELL USB Keyboard"
    +	    P: Phys=usb-0000:00:1d.7-4.1/input1
    +	    H: Handlers=kbd event2
    +	    B: EV=100003
    +	    B: KEY=7f f0000 0 3878 d801d101 1e0000 0 0 0
    +	  

    + Here the "I" line shows identification information passed to + the input layer by the hardware driver that is used to look + up the appropiate handler. "N" is a printable name provided + by the hardware driver. "P" is a hint at location in a bus + of the device; note how this line is completely unrelated to + the location of the hardware in + /sys/devices. + The H (Handlers) line is obvious; The B lines specify + capabilities of the device, plus extra information for each + capability. Known capabilities include: +

    CapabilityDescription
    SYNInput event is completed
    KEYKey press/release event
    RELRelative measure, as in mouse movement
    ABSAbsolute position, as in graphics + tablet
    MSCMiscelanious
    SNDBeep
    REPSet hardware repeat
    FFDon't know
    PWRPower event: on/off switch pressed.
    FF_STATUSDon't know.

    +

+

+ Finally, let's consider some kernel configuration defines, the + corresponding modules and their function. This could be used as a + start to check whether all components required to make an + operational console are available on the generated image: +

DefineModuleDescription
VT(bool) + Support multiple virtual terminals, irrespective of what + hardware is used to display letters from the virtual + terminal on the CRT. +
VT_CONSOLE(bool) + Make the VT a candidate for console output. The alternative + is a serial line to a VT100 or terminal emulator +
VGA_CONSOLE(bool) + Display a terminal on CRT using the VGA interface. +
FRAMEBUFFER_CONSOLEfbcon + Display a terminal on a framebuffer, painting letters a + pixel at a time. This has to know about fonts. +
FB_VESAvesafb + Implement a framebuffer based on VESA (a common standard + for PC graphic cards), a place where an X server or + the framebuffer console can write pixels to be displayed + on CRT. + There are many different framebuffer modules that + optimise for different graphics cards. + Note that while vesafb and other drivers such as intelfb + can be built as a module, they only function correctly + when built into the kernel. Most framebuffer modules + depend on three other modules to function correctly: + cfbfillrect, cfbcopyarea, cfbimgblt. +
ATKBDatkbd + Interpret input from a standard AT or PS/2 keyboard. + Other keyboards use other byte codes, see for example + the Acorn keyboard (rpckbd). +
SERIOserio + Module that manages a stream of bytes from and to an IO port. + It includes a kernel thread (kseriod) that handles the queue + needed to talk to slow ports. It is normally used for + dedicated IO ports talking to PS/2 mouse and keyboard, + but can also be interfaced to serial ports (COM1, COM2). + The atkbd driver uses a serio driver to communicate with + the keyboard. +
SERIO_I8042i8042 + Implement a serio stream on top of the i8042 chip, the chip + that connects the standard AT keyboard and PS/2 mouse to + the computer. + This is legacy hardware: it's not connected via PCI but + directly to the 'platform bus'. + When a chip such as i8042 that implements + serio is detected, it registers itself with the input + layer. The input layer then lets drivers that use serio + (such as atkbd and psmouse) probe whether a known device + is connected via the chip; if such a device is found, + it is registered as a new input device. +
SERIAL_8250serial + Support for serial ports (COM1, COM2) on PC hardware. + Lots of other configuration options exist to support + multiple cards and fiddle with interrupts. + If compiled in rather than modular, a further option, + SERIAL_8250_CONSOLE, allows using the serial port as a + console. +
USB_HIDusbhid + Driver for USB keyboards and mice. + Another define, USB_HIDINPUT, needs to be true for + these devices to actually work. +
USB_KBDusbkbd + Severely limited form of USB keyboard; uses the "boot + protocol". This conflicts with the complete driver. +

+

+ The following figure gives an example of how the various modules + can fit together. +

Figure 1.  + Module relation for common console setup +

Module relation for common console setup

+ In practical terms, a first step toward a more robust boot image + is to support new keyboard types, such as USB keyboards. + The following algorithm should do that. + +

  1. + Interpret /proc/bus/input/devices. +

  2. + Look for devices that have handler kbd and + that have buttons. Mice and the PC speaker don't match that + criterium, keyboards do. +

  3. + You could interpret the name field of such devices if you're + interested in supporting legacy keyboards. +

  4. + The devices that have handler 'kbd' also have a handler 'event\d', + where input is presented in a generalised event format; + look up this device in /sys/class/input/event\d/. +

  5. + If it's got a device symlink, load the hardware drivers for that + hardware device (most likely it's usbhid plus a usb core driver). +

  6. + Don't bother with a mknod, the input is handled via + /dev/console. +

  7. + Otherwise it's presumable a legacy device; you could check for + the existence of + /sys/devices/platform/i8042/serio\d/, + or you could just assume the appropriate driver to be compiled in. +

  8. + Implement support for + /etc/hotplug/blacklist, + since some USB keyboards publish two interfaces (full HID + and the limited boot protocol), the input layer makes both + visible in /proc/bus/input/devices and + the corresponding modules are mutually conflicting. + The blacklist is used to filter out one of these modules. +

+

Supporting Shared Libraries

+ When an executable is added to the image, we want any required shared + libraries to be added automatically. The SharedLibraries + module determines which files are required. This section discusses + the features of kernel and compiler we need to be aware of in order + to do this reliably. +

+ Linux executables today are in ELF format; it is defined in + + + Generic ELF Specification ELFVERSION, + part of the Linux Standard Base. This is based on part of the System + V ABI: Tool Interface Standard (TIS), Executable and Linking Format + (ELF) Sepcification +

+ ELF has consequences in different parts of the system: in + the link-editor, that needs to merge ELF object files into ELF + executables; in the kernel (fs/binfmt_elf.c), + that has to place the executable in RAM and transfer control to it, + and in the runtime loader, that is invoked when starting the + application to load the necessary shared libraries into RAM. + The idea is as follows. +

  • + Executables are in ELF format, with a type of either + ET_EXEC (executable) or ET_DYN (shared + library; yes, you can execute those.) There are other types of + ELF file (core files for example) but you can't execute them. +

  • + These files contain two kind of headers: program headers and + section headers. Program headers define segments of the file that + the kernel should store consequetively in RAM; section headers define + parts of the file that should be treated by the link editor + as a single unit. Program headers normally point to a group + of adjacent sections. +

  • + The program may be statically linked or dynamically (with shared + libraries). + If it's statically linked, the kernel loads relevant segments, + then transfers control to main() in userland. +

  • + If it's dynamically linked, one of the program headers has type + PT_INTERP. It points to a segment that contains + the name of a (static) executable; this executable is loaded in + RAM together with the segments of the dynamic executable. +

  • + The kernel then transfers control to the userland + interpreter, passing program headers and related info in a + fourth argument to main(), after envp. +

  • + There's one interesting twist: one of the segments loaded + into RAM (linux-gate.so) does not + come from the executable, but is a piece of kernel mapped + into user space. It contains a subroutine that the kernel + provides to do a system call; the idea is that this way, + the C library does not have to know which calling convention + for system calls is supported by the kernel and optimal for + the current hardware. The link editor knows nothing about + this, only the interpreter knows that the kernel can pass the + address of this subroutine together with the program headers. + [7] +

  • + The interpreter interprets the .dynamic section of + the dynamic executable. This is a table containing various types + of info; if the type is DT_NEEDED, the info is the + name of a shared library that is needed to run the executable. + Normally, it's the basename. +

  • + The interpreter searches LD_LIBARY_PATH for the + library and loads the first working version it finds, using a + breath-first search. Once everything is loaded, the interpreter + hands over control to main in the executable. +

  • + Except that that's not how it really works: the path that glibc + uses depends on whether threads are supported, and klibc can + function as a PT_INTERP but will not load additional + libraries. +

+ The ldd command finds the pathnames + of shared libraries used by an executable. This works + only for glibc: it invokes the interpreter + with the executable as argument plus an environment variable that + tells it to print the pathnames rather than load them. For other + C libraries, there's no guaranteed correct way to find the path of + shared libraries. +

+ Thus, to figure out what goes on the initial ram image, first try + ldd. If that gives an answer, good. + Otherwise, use a helper program to find PT_INTERP and + DT_NEEDED. If there's only PT_INTERP, good, + add it to the image. If there are DT_NEEDED libraries + as well, and they have relative rather than absolute pathnames, + we can't determine the full path, so don't generate an image. +

+ There are a number of options to build a helper to extract the relevant + information from the executable: +

  • + Build it in perl. The problem here is that unpacking 64-bit + integers is an optional part of the language. +

  • + Build a wrapper around objdump or + readelf. The drawback is that + there programs are not part of a minimal Linux distribution: + depending on them in yaird would + increase the footprint. +

  • + Building a C program using libbdf. This is a library + intended to simplify working with object files. Drawbacks + are that it adds complexity that is not necessary in our + context since it supports multiple executable formats; + furthermore, at least in Debian it is treated as internal + to the gcc tool chain, complicating packaging the tool. +

  • + Building a C program based on elf.h. + This turns out to be easy to do. +

+

+ Yaird uses the last appraoch listed. +

Security

+ This section discusses security: avoiding downtime, avoiding revealing + sensitive information, avoiding unwanted modifications to the data; + either through accident or malice. + A good introduction to secure programming can be found in + + + Secure Programming for Linux and Unix HOWTO. +

+ For yaird, security is not very + complicated: although it runs with root privileges, the program is + not setuid, and all external input comes from files or programs + installed by the admnistrator, so our main focus is on avoiding + downtime caused by ignored error codes. + A full blown risk assessment would be overkill, so we'll just use + the HOWTO as a checklist to verify that the basic precautions are + in place. +

+

GroupMitigationStatus
Bad inputVerify command line + Yes. +
Bad inputVerify and clean up environment + Complete environment is reset at start of program. +
Bad inputAvoid assumptions about file descriptors + Handled by perl. +
Bad inputVerify file names + Perl taint check shows filenames are verified for + absence of odd characters before passing to + subprocesses. + TODO: examine UTF-8 impact. +
Bad inputVerify file content + File contents in sysfs verified. + Fstab entries properly quoted. + TODO: check for spaces in names of LVM volume or of + modules; could end up in generated /sbin/init. +
Bad inputVerify locale settings + All locale related environment variables are wiped at + program startup. +
Bad inputVerify character encoding + All IO is byte oriented. +
Bad inputBuffer overflow + In perl? +
Program structureSeparate data and control + Under this heading, the HOWTO discusses the dangers of + auto-executing macros in data files. The closest thing we + have to a data file are the templates that tune the image + to the distribution. We use a templating language that + does not allow code embedding, and the image generation + module does not make it possible for template output to + end up outside of the image. Conclusion: broken templates + can produce a broken image, but cannot affect the running + system. +
Program structureMinimize privileges + The user is supposed to bring his own root privileges to + the party, not much to be done here. A related issue + is the minimizing of privileges in the system that is + started with the generated image. This would include + starting SELinux at the earliest possible moment. + At least in Fedora, that earliest possible moment is + in rc.sysinit, well past the moment + where the initial boot image hands over control to the newly + mount root file system. No yaird + support needed. +
Program structureSafe defaults + Configuration only specifies sources of information, + like /etc/hotplug, not much can go wrong here. +
Program structureSafe configuration + No configuration file is used yet, so it's not read from + current directory either. +
Program structureFail safe + Planning and writing the image is separated; + writing only starts after planning is succesfully completed. + Todo: consider backout on write failure. +
Program structureAvoid race conditions + Temporary files and directories are created + with the File::Temp module, which is + resistant to name guessing attacks. + The completed image is installed with rename + rather than link; if an existing file is + overwritten, this guarantees there's no race where the + old image has been deleted bu the new one is not yet in + place. (Note that there is no option in place yet which + allows overwriting of existing files.) + To do: examine File::Temp safe_level=HIGH. +
Underlying resourcesHandle meta characters + Protection against terminal escape sequences in output + is not yet in place. +
Underlying resourcesCheck system call results + Yes. +
Language specificVerify perl behaviour with taint. + Yes. +
Language specificAvoid perl open magic with 3rd argument. + Yes. +

+

Tool Chain

+ This section discusses which tools are used in implementing + yaird and why. +

+ The application is built as a collection of perl modules. + The use of a scripting language makes consistent error checking + and building sane data structures a lot easier than shell + scripting; using perl rather than python is mainly because in + Debian perl has 'required' status while python is only 'standard'. + The code follows some conventions: +

+

  • + Where there are multiple items of a kind, say fstab entries, + the perl module implements a class for individual items. + All classes share a common base class, Obj, + that handles constructor argument validation and that offers + a place to plug in debugging code. +

  • + Object attributes are used via accessor methods to catch + typos in attribute names. +

  • + Objects have a string method, that returns + a string version of the object. Binary data is not + guaranteed to be absent from the string version. +

  • + Where there are multiple items of a kind, say fstab entries, + the collection is implemented as a module that is not a + class. There is a function all that returns a + list of all known items, and functions findByXxx + to retrieve an item where the Xxx attribute has a given + value. There is an init function that + initializes the collection; this is called automatically + upon first invocation of all or + findByXxx. + Collections may have convenience functions + findXxxByYyy: return attribute Xxx, given a + value for attribute Yyy. +

+

+ The generated initrd image needs a command interpreter; + the choice of command interpreter is exclusively determined + by the image generation template. + At this point, both Debian and Fedora templates use the + dash shell, for historical reasons only. + Presumably busybox could be used to build a + smaller image. However, support for initramfs requires a complicated + construction involving a combination of mount, chroot and chdir; + to do that reliably, nash as used in Fedora + seems a more attractive option. +

+ Documentation is in docbook format, since it's widely supported, + supports numerous output formats, has better separation between + content and layout than texinfo, and provides better guarantees + against malformed HTML than texinfo. +

Autoconf

+ GNU automake is used to build and install the application, + where 'building' is perhaps too big a word adding the location + of the underlying modules to the wrapper script. + The reasons for using automake: it provides packagers with a + well known mechanism for changing installation directories, + and it makes it easy for developers to produce a cruft-free + and reproducible tarball based on the tree extracted from + version control. +

C Library

+ The standard C library under linux is glibc. This is big: + 1.2Mb, where an alternative implementation, klibc, is only 28Kb. + The reason klibc can be so much smaller than glibc is that a + lot of features of glibc, like NIS support, are not relevant for + applications that need to do basic stuff like loading an IDE driver. +

+ There are other small libc implementations: in the embedded world, + dietlibc and uClibc are popular. However, klibc was specifically + developed to support the initial image: it's intended to be included + with the mainline kernel and allow moving a lot of startup magic out + of the kernel into the initial image. See + + + LKML: [RFC] klibc requirements, round 2 + for requirements on klibc; the + + mailing list is the most current + source of information. +

+ Recent versions of klibc (1.0 and later) include a wrapper around + gcc, named klcc, that will compile a program with klibc. This means + yaird does not need to include klibc, + but can easily be configured to use klibc rather than glibc. + Of course this will only pay off if every + executable on the initial image uses klibc. +

+ Yaird does not have to be extended in + order to support klibc, but it is necessary to avoid assumptions + about which shared libraries are used. This is discussed in + the section called “Supporting Shared Libraries”. +

Template Processing

+ This section discusses the templates used to transform + high-level actions to lines of script in the generated image. + These templates are intended to cope with small differences + between distributions: a shell that is named + dash in Debian and + ash in Fedora for example. + By processing the output of yaird + through a template, we can confine the tuning of + yaird for a specific distribution + to the template, without having to touch the core code. +

+ One important function of a template library is to enforce + a clear separation between progam logic and output formatting: + there should be no way to put perl fragments inside a template. + See StringTemplate + for a discussion of what is needed in a templating system, plus + a Java implementation. +

+ Lets consider a number of possible templating solutions: +

  • + + Template Toolkit: + widely used, not in perl core distribution, does not + prevent mixing of code and templates. +

  • + + Text::Template: + not in perl core distribution, does not + prevent mixing of code and templates. +

  • + Some XSLT processor. Not in core distribution, + more suitable for file-to-file transformations + than for expanding in-process data; overkill. +

  • + + HTML-Template: + not in perl core distribution, + prevents mixing of code and templates, + simple, no dependencies, dual GPL/Artistic license. + Available in Debian as + libhtml-template-perl, + in Fedora 2 as perl-HTML-Template, dropped from Fedora 3, + but available via + + Fedora Extras. +

  • + A home grown templating system: a simple system such as the + HTML-Template module is over 100Kb. We can cut down on that + by dropping functions we don't immediately need, but the effort + to get a tested and documented implementation remains substantial. +

+

+ The HTML-Template approach is the best match for our + requirements, so used in yaird. +

Authors

+ This is a place holder section. + Yaird was written by ... + website here ... comments to ... bug reports ... +

License

+ 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; you may also obtain + a copy of the GNU General Public License + from the Free Software Foundation by visiting their Web site or by writing to +


+      Free Software Foundation, Inc.
+      59 Temple Place - Suite 330
+      Boston, MA 02111-1307
+      USA
+    

+

Klibc code

+ Yaird contains code based on klibc; this code is made available + by the author under the following licence. The relevant source + files have this copyright notice included. +

+/* ----------------------------------------------------------------------- *
+ *   
+ *   Copyright 2004 H. Peter Anvin - All Rights Reserved
+ *
+ *   Permission is hereby granted, free of charge, to any person
+ *   obtaining a copy of this software and associated documentation
+ *   files (the "Software"), to deal in the Software without
+ *   restriction, including without limitation the rights to use,
+ *   copy, modify, merge, publish, distribute, sublicense, and/or
+ *   sell copies of the Software, and to permit persons to whom
+ *   the Software is furnished to do so, subject to the following
+ *   conditions:
+ *   
+ *   The above copyright notice and this permission notice shall
+ *   be included in all copies or substantial portions of the Software.
+ *   
+ *   THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ *   EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+ *   OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ *   NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+ *   HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+ *   WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ *   FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+ *   OTHER DEALINGS IN THE SOFTWARE.
+ *
+ * ----------------------------------------------------------------------- */
+      

+



[1] + Well, not really. I started this thingy to show off a small + algorithm to find required modules based on sysfs information. + To make that a credible demonstration, the small algorithm + turned out to need a lot of scaffolding to turn it into a + working program ... +

[2] + An alternative and equally interesting exercise would be + an attempt to generate a universal initrd that could be + distributed together with the kernel. Such an image + would most likely be based on udev/hotplug. +

[3] + Except where the distribution depends on it; + there are some issues with mdadm in Debian. +

[4] + Having knowledge of the relation between module names and + kernel defines hardcoded into yaird + is hardly elegant. Perhaps it is possible to generate this + mapping based on the kernel Makefiles when building the + kernel, but that's too complex just now. +

[5] + It could also be an encrypted device; this case is not handled + yet. +

[6] + Having device files on the image is wrong: it will + break if the new kernel uses different device numbers. Mostly + this can be avoided by using the dev + files provided by sysfs, but there is a bootstrap problem: + the mount command needed to + access sysfs assumes /dev/null and + /dev/console are available. +

[7] + For more info on the kernel-supplied shared library for + system calls, see + + + LWN: How to speed up system calls, + + LWN: Patch: i386 vsyscall DSO implementation, + + LKML: common name for the kernel DSO. +

diff --git a/rescue/linux/cdrom/yaird-0.0.5/doc/yaird.xml b/rescue/linux/cdrom/yaird-0.0.5/doc/yaird.xml new file mode 100644 index 0000000..e274042 --- /dev/null +++ b/rescue/linux/cdrom/yaird-0.0.5/doc/yaird.xml @@ -0,0 +1,94 @@ + + + + + + + + + + + + + + + + + + ] + +> + +
+ + + Yaird — Yet Another Mkinitrd + 2005-02-09 + + Erik + van Konijnenburg + ekonijn@xs4all.nl + + + + + This memo discusses the design goals and implementation of + Yaird (Yet Another mkInitRD), + a proof-of-concept application to create an initial boot image, + a minimal filesystem used to bring a booting Linux kernel to a + level where it can access the root file system and use startup + scripts to bring the system to the normal run level. It differs + from earlier mkinitrd implementations in + that it leverages the information in sysfs to minimise the number + of special cases that the application has to know about, and in + that it uses a template system to separate the analysis of the + system from the building of the image. + + + + + 2005 + Erik van Konijnenburg + + + + + Permission is granted to copy, distribute and/or modify this + document under the terms of the GNU Free Documentation + License, Version 1.1 or any later version published + by the Free Software Foundation with no Invariant Sections, no + Front-Cover Texts, and no Back-Cover Texts. You may obtain a copy + of the GNU Free Documentation License from + the Free Software Foundation by visiting their Web site or by writing to: + Free Software Foundation, Inc., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. + + + + + + + +&INTRODUCTION; +&SPEC; +&CONCEPTS; +&KERNEL; +&RAID; +&INPUT; +&SHLIBS; +&SECURITY; +&TOOLS; +&AUTHORS; +&LICENSE; + +
diff --git a/rescue/linux/cdrom/yaird-0.0.5/doc/yaird.xml.in b/rescue/linux/cdrom/yaird-0.0.5/doc/yaird.xml.in new file mode 100644 index 0000000..78b76da --- /dev/null +++ b/rescue/linux/cdrom/yaird-0.0.5/doc/yaird.xml.in @@ -0,0 +1,94 @@ + + + + + + + + + + + + + + + + + + ] + +> + +
+ + + Yaird — Yet Another Mkinitrd + 2005-02-09 + + Erik + van Konijnenburg + ekonijn@xs4all.nl + + + + + This memo discusses the design goals and implementation of + Yaird (Yet Another mkInitRD), + a proof-of-concept application to create an initial boot image, + a minimal filesystem used to bring a booting Linux kernel to a + level where it can access the root file system and use startup + scripts to bring the system to the normal run level. It differs + from earlier mkinitrd implementations in + that it leverages the information in sysfs to minimise the number + of special cases that the application has to know about, and in + that it uses a template system to separate the analysis of the + system from the building of the image. + + + + + 2005 + Erik van Konijnenburg + + + + + Permission is granted to copy, distribute and/or modify this + document under the terms of the GNU Free Documentation + License, Version 1.1 or any later version published + by the Free Software Foundation with no Invariant Sections, no + Front-Cover Texts, and no Back-Cover Texts. You may obtain a copy + of the GNU Free Documentation License from + the Free Software Foundation by visiting their Web site or by writing to: + Free Software Foundation, Inc., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. + + + + + + + +&INTRODUCTION; +&SPEC; +&CONCEPTS; +&KERNEL; +&RAID; +&INPUT; +&SHLIBS; +&SECURITY; +&TOOLS; +&AUTHORS; +&LICENSE; + +
diff --git a/rescue/linux/cdrom/yaird-0.0.5/exec/.deps/findlibs.Po b/rescue/linux/cdrom/yaird-0.0.5/exec/.deps/findlibs.Po new file mode 100644 index 0000000..9efa851 --- /dev/null +++ b/rescue/linux/cdrom/yaird-0.0.5/exec/.deps/findlibs.Po @@ -0,0 +1,120 @@ +findlibs.o findlibs.o: findlibs.c /usr/include/stdio.h \ + /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/gnu/stubs.h \ + /usr/lib/gcc/i386-redhat-linux/3.4.2/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/wordsize.h \ + /usr/include/bits/typesizes.h /usr/include/libio.h \ + /usr/include/_G_config.h /usr/include/wchar.h /usr/include/bits/wchar.h \ + /usr/include/gconv.h \ + /usr/lib/gcc/i386-redhat-linux/3.4.2/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/stdlib.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/endian.h \ + /usr/include/bits/endian.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/bits/sched.h \ + /usr/include/alloca.h /usr/include/unistd.h \ + /usr/include/bits/posix_opt.h /usr/include/bits/confname.h \ + /usr/include/getopt.h /usr/include/string.h /usr/include/bits/string.h \ + /usr/include/bits/string2.h \ + /usr/lib/gcc/i386-redhat-linux/3.4.2/include/limits.h \ + /usr/lib/gcc/i386-redhat-linux/3.4.2/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h /usr/include/elf.h /usr/include/stdint.h \ + ../include/config.h + +/usr/include/stdio.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/gnu/stubs.h: + +/usr/lib/gcc/i386-redhat-linux/3.4.2/include/stddef.h: + +/usr/include/bits/types.h: + +/usr/include/bits/wordsize.h: + +/usr/include/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/include/bits/wchar.h: + +/usr/include/gconv.h: + +/usr/lib/gcc/i386-redhat-linux/3.4.2/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/stdlib.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/bits/sched.h: + +/usr/include/alloca.h: + +/usr/include/unistd.h: + +/usr/include/bits/posix_opt.h: + +/usr/include/bits/confname.h: + +/usr/include/getopt.h: + +/usr/include/string.h: + +/usr/include/bits/string.h: + +/usr/include/bits/string2.h: + +/usr/lib/gcc/i386-redhat-linux/3.4.2/include/limits.h: + +/usr/lib/gcc/i386-redhat-linux/3.4.2/include/syslimits.h: + +/usr/include/limits.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/bits/posix2_lim.h: + +/usr/include/elf.h: + +/usr/include/stdint.h: + +../include/config.h: diff --git a/rescue/linux/cdrom/yaird-0.0.5/exec/.deps/run_init.Po b/rescue/linux/cdrom/yaird-0.0.5/exec/.deps/run_init.Po new file mode 100644 index 0000000..48e6096 --- /dev/null +++ b/rescue/linux/cdrom/yaird-0.0.5/exec/.deps/run_init.Po @@ -0,0 +1,155 @@ +run_init.o run_init.o: run_init.c /usr/include/alloca.h \ + /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/gnu/stubs.h \ + /usr/lib/gcc/i386-redhat-linux/3.4.2/include/stddef.h \ + /usr/include/assert.h /usr/include/dirent.h /usr/include/bits/types.h \ + /usr/include/bits/wordsize.h /usr/include/bits/typesizes.h \ + /usr/include/bits/dirent.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/fcntl.h /usr/include/bits/fcntl.h /usr/include/sys/types.h \ + /usr/include/time.h /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/sys/select.h /usr/include/bits/select.h \ + /usr/include/bits/sigset.h /usr/include/bits/time.h \ + /usr/include/sys/sysmacros.h /usr/include/bits/pthreadtypes.h \ + /usr/include/bits/sched.h /usr/include/string.h \ + /usr/include/bits/string.h /usr/include/bits/string2.h \ + /usr/include/stdlib.h /usr/include/stdio.h /usr/include/libio.h \ + /usr/include/_G_config.h /usr/include/wchar.h /usr/include/bits/wchar.h \ + /usr/include/gconv.h \ + /usr/lib/gcc/i386-redhat-linux/3.4.2/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/unistd.h \ + /usr/include/bits/posix_opt.h /usr/include/bits/confname.h \ + /usr/include/getopt.h /usr/include/sys/mount.h /usr/include/sys/ioctl.h \ + /usr/include/bits/ioctls.h /usr/include/asm/ioctls.h \ + /usr/include/asm/ioctl.h /usr/include/bits/ioctl-types.h \ + /usr/include/sys/ttydefaults.h /usr/include/sys/stat.h \ + /usr/include/bits/stat.h /usr/include/sys/vfs.h \ + /usr/include/sys/statfs.h /usr/include/bits/statfs.h \ + ../include/config.h + +/usr/include/alloca.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/gnu/stubs.h: + +/usr/lib/gcc/i386-redhat-linux/3.4.2/include/stddef.h: + +/usr/include/assert.h: + +/usr/include/dirent.h: + +/usr/include/bits/types.h: + +/usr/include/bits/wordsize.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/dirent.h: + +/usr/include/bits/posix1_lim.h: + +/usr/include/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/fcntl.h: + +/usr/include/bits/fcntl.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/bits/sched.h: + +/usr/include/string.h: + +/usr/include/bits/string.h: + +/usr/include/bits/string2.h: + +/usr/include/stdlib.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/include/bits/wchar.h: + +/usr/include/gconv.h: + +/usr/lib/gcc/i386-redhat-linux/3.4.2/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/bits/stdio.h: + +/usr/include/unistd.h: + +/usr/include/bits/posix_opt.h: + +/usr/include/bits/confname.h: + +/usr/include/getopt.h: + +/usr/include/sys/mount.h: + +/usr/include/sys/ioctl.h: + +/usr/include/bits/ioctls.h: + +/usr/include/asm/ioctls.h: + +/usr/include/asm/ioctl.h: + +/usr/include/bits/ioctl-types.h: + +/usr/include/sys/ttydefaults.h: + +/usr/include/sys/stat.h: + +/usr/include/bits/stat.h: + +/usr/include/sys/vfs.h: + +/usr/include/sys/statfs.h: + +/usr/include/bits/statfs.h: + +../include/config.h: diff --git a/rescue/linux/cdrom/yaird-0.0.5/exec/Makefile b/rescue/linux/cdrom/yaird-0.0.5/exec/Makefile new file mode 100644 index 0000000..9a98703 --- /dev/null +++ b/rescue/linux/cdrom/yaird-0.0.5/exec/Makefile @@ -0,0 +1,452 @@ +# Makefile.in generated by automake 1.9.5 from Makefile.am. +# exec/Makefile. Generated from Makefile.in by configure. + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005 Free Software Foundation, Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + + + +# +# Makefile.am -- compiling executables to be included in generated image +# Copyright (C) 2005 Erik van Konijnenburg +# +# 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 +# +# +# The interesting part here is integration with klibc: it's absent. +# The hope is that by specifying -I and -l flags to configure, an external +# klibc build can be used. This is untested. +# + +# +# Makefile.incl -- shared defines between makefiles +# Copyright (C) 2005 Erik van Konijnenburg +# +# 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 +# +# - auxdir contains package specific executables that may be included +# in the generated image +# - perldir contains perl modules to be included by the main program +# +# This cannot be simply passed from the master makefile; that would +# be invisible to automake. + +SOURCES = $(findlibs_SOURCES) $(run_init_SOURCES) + +srcdir = . +top_srcdir = .. + +pkgdatadir = $(datadir)/yaird +pkglibdir = $(libdir)/yaird +pkgincludedir = $(includedir)/yaird +top_builddir = .. +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +INSTALL = /usr/bin/install -c +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +aux_PROGRAMS = run_init$(EXEEXT) findlibs$(EXEEXT) +DIST_COMMON = $(srcdir)/../Makefile.incl $(srcdir)/Makefile.am \ + $(srcdir)/Makefile.in +subdir = exec +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/configure.in +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/include/config.h +CONFIG_CLEAN_FILES = +am__installdirs = "$(DESTDIR)$(auxdir)" +auxPROGRAMS_INSTALL = $(INSTALL_PROGRAM) +PROGRAMS = $(aux_PROGRAMS) +am_findlibs_OBJECTS = findlibs.$(OBJEXT) +findlibs_OBJECTS = $(am_findlibs_OBJECTS) +findlibs_LDADD = $(LDADD) +am_run_init_OBJECTS = run_init.$(OBJEXT) +run_init_OBJECTS = $(am_run_init_OBJECTS) +run_init_LDADD = $(LDADD) +DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir)/include +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__depfiles_maybe = depfiles +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +CCLD = $(CC) +LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ +SOURCES = $(findlibs_SOURCES) $(run_init_SOURCES) +DIST_SOURCES = $(findlibs_SOURCES) $(run_init_SOURCES) +ETAGS = etags +CTAGS = ctags +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = ${SHELL} /home/kern/bacula/k/rescue/linux/cdrom/yaird-0.0.5/missing --run aclocal-1.9 +AMDEP_FALSE = # +AMDEP_TRUE = +AMTAR = ${SHELL} /home/kern/bacula/k/rescue/linux/cdrom/yaird-0.0.5/missing --run tar +AUTOCONF = ${SHELL} /home/kern/bacula/k/rescue/linux/cdrom/yaird-0.0.5/missing --run autoconf +AUTOHEADER = ${SHELL} /home/kern/bacula/k/rescue/linux/cdrom/yaird-0.0.5/missing --run autoheader +AUTOMAKE = ${SHELL} /home/kern/bacula/k/rescue/linux/cdrom/yaird-0.0.5/missing --run automake-1.9 +AWK = gawk +CC = gcc +CCDEPMODE = depmode=gcc3 +CFLAGS = -g -O2 +CPPFLAGS = +CYGPATH_W = echo +DEFS = -DHAVE_CONFIG_H +DEPDIR = .deps +ECHO_C = +ECHO_N = -n +ECHO_T = +EXEEXT = +INITRD_TEMPLATE = Fedora +INSTALL_DATA = ${INSTALL} -m 644 +INSTALL_PROGRAM = ${INSTALL} +INSTALL_SCRIPT = ${INSTALL} +INSTALL_STRIP_PROGRAM = ${SHELL} $(install_sh) -c -s +LDFLAGS = +LIBOBJS = +LIBS = +LTLIBOBJS = +MAKEINFO = ${SHELL} /home/kern/bacula/k/rescue/linux/cdrom/yaird-0.0.5/missing --run makeinfo +OBJEXT = o +PACKAGE = yaird +PACKAGE_BUGREPORT = +PACKAGE_NAME = +PACKAGE_STRING = +PACKAGE_TARNAME = +PACKAGE_VERSION = +PATH_SEPARATOR = : +PERL = /usr/bin/perl +SET_MAKE = +SHELL = /bin/sh +STRIP = +VERSION = 0.0.5 +XMLTO = /usr/bin/xmlto +ac_ct_CC = gcc +ac_ct_STRIP = +am__fastdepCC_FALSE = # +am__fastdepCC_TRUE = +am__include = include +am__leading_dot = . +am__quote = +am__tar = ${AMTAR} chof - "$$tardir" +am__untar = ${AMTAR} xf - +bindir = ${exec_prefix}/bin +build_alias = +datadir = ${prefix}/share +exec_prefix = ${prefix} +host_alias = +includedir = ${prefix}/include +infodir = ${prefix}/info +install_sh = /home/kern/bacula/k/rescue/linux/cdrom/yaird-0.0.5/install-sh +libdir = ${exec_prefix}/lib +libexecdir = ${exec_prefix}/libexec +localstatedir = ${prefix}/var +mandir = ${prefix}/man +mkdir_p = mkdir -p -- +oldincludedir = /usr/include +prefix = /usr/local +program_transform_name = s,x,x, +sbindir = ${exec_prefix}/sbin +sharedstatedir = ${prefix}/com +sysconfdir = ${prefix}/etc +target_alias = +auxdir = $(pkglibdir)/exec +perldir = $(pkglibdir)/perl +run_init_SOURCES = run_init.c +findlibs_SOURCES = findlibs.c +all: all-am + +.SUFFIXES: +.SUFFIXES: .c .o .obj +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(srcdir)/../Makefile.incl $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu exec/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnu exec/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +install-auxPROGRAMS: $(aux_PROGRAMS) + @$(NORMAL_INSTALL) + test -z "$(auxdir)" || $(mkdir_p) "$(DESTDIR)$(auxdir)" + @list='$(aux_PROGRAMS)'; for p in $$list; do \ + p1=`echo $$p|sed 's/$(EXEEXT)$$//'`; \ + if test -f $$p \ + ; then \ + f=`echo "$$p1" | sed 's,^.*/,,;$(transform);s/$$/$(EXEEXT)/'`; \ + echo " $(INSTALL_PROGRAM_ENV) $(auxPROGRAMS_INSTALL) '$$p' '$(DESTDIR)$(auxdir)/$$f'"; \ + $(INSTALL_PROGRAM_ENV) $(auxPROGRAMS_INSTALL) "$$p" "$(DESTDIR)$(auxdir)/$$f" || exit 1; \ + else :; fi; \ + done + +uninstall-auxPROGRAMS: + @$(NORMAL_UNINSTALL) + @list='$(aux_PROGRAMS)'; for p in $$list; do \ + f=`echo "$$p" | sed 's,^.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/'`; \ + echo " rm -f '$(DESTDIR)$(auxdir)/$$f'"; \ + rm -f "$(DESTDIR)$(auxdir)/$$f"; \ + done + +clean-auxPROGRAMS: + -test -z "$(aux_PROGRAMS)" || rm -f $(aux_PROGRAMS) +findlibs$(EXEEXT): $(findlibs_OBJECTS) $(findlibs_DEPENDENCIES) + @rm -f findlibs$(EXEEXT) + $(LINK) $(findlibs_LDFLAGS) $(findlibs_OBJECTS) $(findlibs_LDADD) $(LIBS) +run_init$(EXEEXT): $(run_init_OBJECTS) $(run_init_DEPENDENCIES) + @rm -f run_init$(EXEEXT) + $(LINK) $(run_init_LDFLAGS) $(run_init_OBJECTS) $(run_init_LDADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +include ./$(DEPDIR)/findlibs.Po +include ./$(DEPDIR)/run_init.Po + +.c.o: + if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \ + then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi +# source='$<' object='$@' libtool=no \ +# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ +# $(COMPILE) -c $< + +.c.obj: + if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ `$(CYGPATH_W) '$<'`; \ + then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi +# source='$<' object='$@' libtool=no \ +# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ +# $(COMPILE) -c `$(CYGPATH_W) '$<'` +uninstall-info-am: + +ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + mkid -fID $$unique +tags: TAGS + +TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + here=`pwd`; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$tags $$unique; \ + fi +ctags: CTAGS +CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + here=`pwd`; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + test -z "$(CTAGS_ARGS)$$tags$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$tags $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && cd $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) $$here + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +distdir: $(DISTFILES) + $(mkdir_p) $(distdir)/.. + @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ + list='$(DISTFILES)'; for file in $$list; do \ + case $$file in \ + $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ + $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ + esac; \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test "$$dir" != "$$file" && test "$$dir" != "."; then \ + dir="/$$dir"; \ + $(mkdir_p) "$(distdir)$$dir"; \ + else \ + dir=''; \ + fi; \ + if test -d $$d/$$file; then \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + else \ + test -f $(distdir)/$$file \ + || cp -p $$d/$$file $(distdir)/$$file \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile $(PROGRAMS) +installdirs: + for dir in "$(DESTDIR)$(auxdir)"; do \ + test -z "$$dir" || $(mkdir_p) "$$dir"; \ + done +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-auxPROGRAMS clean-generic mostlyclean-am + +distclean: distclean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +info: info-am + +info-am: + +install-data-am: install-auxPROGRAMS + +install-exec-am: + +install-info: install-info-am + +install-man: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-auxPROGRAMS uninstall-info-am + +.PHONY: CTAGS GTAGS all all-am check check-am clean clean-auxPROGRAMS \ + clean-generic ctags distclean distclean-compile \ + distclean-generic distclean-tags distdir dvi dvi-am html \ + html-am info info-am install install-am install-auxPROGRAMS \ + install-data install-data-am install-exec install-exec-am \ + install-info install-info-am install-man install-strip \ + installcheck installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-compile \ + mostlyclean-generic pdf pdf-am ps ps-am tags uninstall \ + uninstall-am uninstall-auxPROGRAMS uninstall-info-am + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/rescue/linux/cdrom/yaird-0.0.5/exec/Makefile.am b/rescue/linux/cdrom/yaird-0.0.5/exec/Makefile.am new file mode 100644 index 0000000..3ae7b8d --- /dev/null +++ b/rescue/linux/cdrom/yaird-0.0.5/exec/Makefile.am @@ -0,0 +1,34 @@ +# +# Makefile.am -- compiling executables to be included in generated image +# Copyright (C) 2005 Erik van Konijnenburg +# +# 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 +# +# +# The interesting part here is integration with klibc: it's absent. +# The hope is that by specifying -I and -l flags to configure, an external +# klibc build can be used. This is untested. +# + +# place package-specific executables that may go on the image in +# this directory. +# Must be consistent with ../src +#auxdir = $(pkglibdir)/exec +aux_PROGRAMS = run_init findlibs + +include ../Makefile.incl + +run_init_SOURCES = run_init.c +findlibs_SOURCES = findlibs.c diff --git a/rescue/linux/cdrom/yaird-0.0.5/exec/Makefile.in b/rescue/linux/cdrom/yaird-0.0.5/exec/Makefile.in new file mode 100644 index 0000000..8ae7cb2 --- /dev/null +++ b/rescue/linux/cdrom/yaird-0.0.5/exec/Makefile.in @@ -0,0 +1,452 @@ +# Makefile.in generated by automake 1.9.5 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005 Free Software Foundation, Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +# +# Makefile.am -- compiling executables to be included in generated image +# Copyright (C) 2005 Erik van Konijnenburg +# +# 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 +# +# +# The interesting part here is integration with klibc: it's absent. +# The hope is that by specifying -I and -l flags to configure, an external +# klibc build can be used. This is untested. +# + +# +# Makefile.incl -- shared defines between makefiles +# Copyright (C) 2005 Erik van Konijnenburg +# +# 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 +# +# - auxdir contains package specific executables that may be included +# in the generated image +# - perldir contains perl modules to be included by the main program +# +# This cannot be simply passed from the master makefile; that would +# be invisible to automake. + +SOURCES = $(findlibs_SOURCES) $(run_init_SOURCES) + +srcdir = @srcdir@ +top_srcdir = @top_srcdir@ +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +top_builddir = .. +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +INSTALL = @INSTALL@ +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +aux_PROGRAMS = run_init$(EXEEXT) findlibs$(EXEEXT) +DIST_COMMON = $(srcdir)/../Makefile.incl $(srcdir)/Makefile.am \ + $(srcdir)/Makefile.in +subdir = exec +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/configure.in +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/include/config.h +CONFIG_CLEAN_FILES = +am__installdirs = "$(DESTDIR)$(auxdir)" +auxPROGRAMS_INSTALL = $(INSTALL_PROGRAM) +PROGRAMS = $(aux_PROGRAMS) +am_findlibs_OBJECTS = findlibs.$(OBJEXT) +findlibs_OBJECTS = $(am_findlibs_OBJECTS) +findlibs_LDADD = $(LDADD) +am_run_init_OBJECTS = run_init.$(OBJEXT) +run_init_OBJECTS = $(am_run_init_OBJECTS) +run_init_LDADD = $(LDADD) +DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir)/include +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__depfiles_maybe = depfiles +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +CCLD = $(CC) +LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ +SOURCES = $(findlibs_SOURCES) $(run_init_SOURCES) +DIST_SOURCES = $(findlibs_SOURCES) $(run_init_SOURCES) +ETAGS = etags +CTAGS = ctags +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +AMDEP_FALSE = @AMDEP_FALSE@ +AMDEP_TRUE = @AMDEP_TRUE@ +AMTAR = @AMTAR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPPFLAGS = @CPPFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EXEEXT = @EXEEXT@ +INITRD_TEMPLATE = @INITRD_TEMPLATE@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +LDFLAGS = @LDFLAGS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LTLIBOBJS = @LTLIBOBJS@ +MAKEINFO = @MAKEINFO@ +OBJEXT = @OBJEXT@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +PERL = @PERL@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +VERSION = @VERSION@ +XMLTO = @XMLTO@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_STRIP = @ac_ct_STRIP@ +am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ +am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build_alias = @build_alias@ +datadir = @datadir@ +exec_prefix = @exec_prefix@ +host_alias = @host_alias@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +auxdir = $(pkglibdir)/exec +perldir = $(pkglibdir)/perl +run_init_SOURCES = run_init.c +findlibs_SOURCES = findlibs.c +all: all-am + +.SUFFIXES: +.SUFFIXES: .c .o .obj +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(srcdir)/../Makefile.incl $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu exec/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnu exec/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +install-auxPROGRAMS: $(aux_PROGRAMS) + @$(NORMAL_INSTALL) + test -z "$(auxdir)" || $(mkdir_p) "$(DESTDIR)$(auxdir)" + @list='$(aux_PROGRAMS)'; for p in $$list; do \ + p1=`echo $$p|sed 's/$(EXEEXT)$$//'`; \ + if test -f $$p \ + ; then \ + f=`echo "$$p1" | sed 's,^.*/,,;$(transform);s/$$/$(EXEEXT)/'`; \ + echo " $(INSTALL_PROGRAM_ENV) $(auxPROGRAMS_INSTALL) '$$p' '$(DESTDIR)$(auxdir)/$$f'"; \ + $(INSTALL_PROGRAM_ENV) $(auxPROGRAMS_INSTALL) "$$p" "$(DESTDIR)$(auxdir)/$$f" || exit 1; \ + else :; fi; \ + done + +uninstall-auxPROGRAMS: + @$(NORMAL_UNINSTALL) + @list='$(aux_PROGRAMS)'; for p in $$list; do \ + f=`echo "$$p" | sed 's,^.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/'`; \ + echo " rm -f '$(DESTDIR)$(auxdir)/$$f'"; \ + rm -f "$(DESTDIR)$(auxdir)/$$f"; \ + done + +clean-auxPROGRAMS: + -test -z "$(aux_PROGRAMS)" || rm -f $(aux_PROGRAMS) +findlibs$(EXEEXT): $(findlibs_OBJECTS) $(findlibs_DEPENDENCIES) + @rm -f findlibs$(EXEEXT) + $(LINK) $(findlibs_LDFLAGS) $(findlibs_OBJECTS) $(findlibs_LDADD) $(LIBS) +run_init$(EXEEXT): $(run_init_OBJECTS) $(run_init_DEPENDENCIES) + @rm -f run_init$(EXEEXT) + $(LINK) $(run_init_LDFLAGS) $(run_init_OBJECTS) $(run_init_LDADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/findlibs.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/run_init.Po@am__quote@ + +.c.o: +@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \ +@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(COMPILE) -c $< + +.c.obj: +@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ `$(CYGPATH_W) '$<'`; \ +@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'` +uninstall-info-am: + +ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + mkid -fID $$unique +tags: TAGS + +TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + here=`pwd`; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$tags $$unique; \ + fi +ctags: CTAGS +CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + here=`pwd`; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + test -z "$(CTAGS_ARGS)$$tags$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$tags $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && cd $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) $$here + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +distdir: $(DISTFILES) + $(mkdir_p) $(distdir)/.. + @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ + list='$(DISTFILES)'; for file in $$list; do \ + case $$file in \ + $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ + $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ + esac; \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test "$$dir" != "$$file" && test "$$dir" != "."; then \ + dir="/$$dir"; \ + $(mkdir_p) "$(distdir)$$dir"; \ + else \ + dir=''; \ + fi; \ + if test -d $$d/$$file; then \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + else \ + test -f $(distdir)/$$file \ + || cp -p $$d/$$file $(distdir)/$$file \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile $(PROGRAMS) +installdirs: + for dir in "$(DESTDIR)$(auxdir)"; do \ + test -z "$$dir" || $(mkdir_p) "$$dir"; \ + done +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-auxPROGRAMS clean-generic mostlyclean-am + +distclean: distclean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +info: info-am + +info-am: + +install-data-am: install-auxPROGRAMS + +install-exec-am: + +install-info: install-info-am + +install-man: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-auxPROGRAMS uninstall-info-am + +.PHONY: CTAGS GTAGS all all-am check check-am clean clean-auxPROGRAMS \ + clean-generic ctags distclean distclean-compile \ + distclean-generic distclean-tags distdir dvi dvi-am html \ + html-am info info-am install install-am install-auxPROGRAMS \ + install-data install-data-am install-exec install-exec-am \ + install-info install-info-am install-man install-strip \ + installcheck installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-compile \ + mostlyclean-generic pdf pdf-am ps ps-am tags uninstall \ + uninstall-am uninstall-auxPROGRAMS uninstall-info-am + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/rescue/linux/cdrom/yaird-0.0.5/exec/findlibs b/rescue/linux/cdrom/yaird-0.0.5/exec/findlibs new file mode 100755 index 0000000..250227d Binary files /dev/null and b/rescue/linux/cdrom/yaird-0.0.5/exec/findlibs differ diff --git a/rescue/linux/cdrom/yaird-0.0.5/exec/findlibs.c b/rescue/linux/cdrom/yaird-0.0.5/exec/findlibs.c new file mode 100644 index 0000000..7a4bb22 --- /dev/null +++ b/rescue/linux/cdrom/yaird-0.0.5/exec/findlibs.c @@ -0,0 +1,444 @@ +/* findlibs.c: find libraries used by an ELF executable. + + Copyright (C) 2005, Erik van Konijnenburg + + 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 +#include +#include +#include +#include +#include +#include + +#include + +extern int optint; +extern int opterr; +extern int optopt; +extern char * optarg; + +static int silent = 0; /* dont do error messages */ +static char * progname = "findlibs"; +static char * version = VERSION; + +void +message (char *fmt, ...) +{ + va_list ap; + if (! silent) { + va_start (ap, fmt); + fprintf (stderr, "%s: ", progname); + vfprintf (stderr, fmt, ap); + fprintf (stderr, "\n"); + va_end (ap); + } +} + +void +fatal (char *fmt, ...) +{ + va_list ap; + if (! silent) { + va_start (ap, fmt); + fprintf (stderr, "%s: ", progname); + vfprintf (stderr, fmt, ap); + fprintf (stderr, " (fatal)\n"); + va_end (ap); + } + exit (1); +} + +void +usage (void) +{ + printf ("\ + %s [ -qhv ] executable\n\ + print dynamic loader and basenames of shared libraries for executable\n\ + -q: do not print error messages, just give exit code\n\ + -h: this help text\n\ + -v: version\n\ + corrupt ELF files cause an error exit status, non ELF-files\n\ + or non-executable ELF files do not.\n\ +", + progname); +} + +void * +getStuff (FILE *fp, Elf32_Off offset, Elf32_Word size) +{ + int rc; + size_t rc2; + void * ptr = NULL; + + ptr = malloc(size); + if (! ptr) { + fatal ("could not allocate memory"); + } + + rc = fseek (fp, offset, SEEK_SET); + if (rc != 0) { + fatal ("could not seek"); + } + rc2 = fread (ptr, size, 1, fp); + if (rc2 != 1) { + fatal ("could not read"); + } + return ptr; +} + +void +doOne32 (char *filename, FILE *fp) +{ + int i; + Elf32_Ehdr * ehdr = NULL; + Elf32_Phdr * phdr = NULL; + int interpIndex = -1; /* prog hdr with interp. */ + Elf32_Shdr * shdrs = NULL; + int dynamicIndex = -1; /* section named .dynamic */ + Elf32_Dyn * dynamic = NULL; + int dynstrIndex = -1; /* section named .dynstr */ + char * dynstr = NULL; + char * sectionNames = NULL; + + + ehdr = getStuff (fp, 0, sizeof(*ehdr)); + + if (ehdr->e_ehsize != sizeof(*ehdr)) { + fatal ("bad size ehdr %s", filename); + } + + if (! (ehdr->e_type == ET_EXEC || ehdr->e_type == ET_DYN)) { + message ("bad type ehdr %s", filename); + goto out; + } + + if (ehdr->e_phentsize != sizeof (*phdr)) { + fatal ("bad size phdr %s", filename); + } + + if (ehdr->e_phnum < 1 || ehdr->e_phnum > (65336/sizeof(*phdr))) { + fatal ("bad count phdr %s", filename); + } + + phdr = getStuff (fp, ehdr->e_phoff, ehdr->e_phnum * sizeof(*phdr)); + + for (i = 0; i < ehdr->e_phnum; i++) { + if (phdr[i].p_type == PT_INTERP) { + if (interpIndex >= 0) { + fatal ("corrupt image, interp %s", filename); + } + interpIndex = i; + } + } + + /* + * Print interpreter. + * Note you can have files with DT_NEEDED without interp; + * shared libraries are an example. + */ + if (interpIndex >= 0) { + Elf32_Off offset = phdr[interpIndex].p_offset; + Elf32_Word size = phdr[interpIndex].p_filesz; + char * interpreter = NULL; + + if (size < 2 || size > PATH_MAX) { + fatal ("funny interpreter %s", filename); + } + + interpreter = getStuff (fp, offset, size); + if (interpreter[size - 1] != '\0') { + fatal ("broken interpreter %s", filename); + } + + printf ("interpreter: %s\n", interpreter); + + free (interpreter); + } + + /* + * read section headers + */ + if (ehdr->e_shentsize != sizeof (Elf32_Shdr)) { + fatal ("bad section header size %s", filename); + } + shdrs = getStuff (fp, ehdr->e_shoff, sizeof(*shdrs) * ehdr->e_shnum); + + /* + * read section header names + */ + if (ehdr->e_shstrndx >= ehdr->e_shnum) { + fatal ("no section names in %s", filename); + } + sectionNames = getStuff (fp, shdrs[ehdr->e_shstrndx].sh_offset, + shdrs[ehdr->e_shstrndx].sh_size); + + + /* + * Find .dynamic section and corresponding strings. + */ + for (i = 0; i < ehdr->e_shnum; i++) { + char * name = §ionNames[shdrs[i].sh_name]; + if (strcmp (name, ".dynamic") == 0) { + dynamicIndex = i; + } + else if (strcmp (name, ".dynstr") == 0) { + dynstrIndex = i; + } + } + + if (dynamicIndex < 0) { + goto out; + } + + if (dynamicIndex >= 0 && dynstrIndex < 0) { + fatal ("corrupt dynamic without dynstr %s", filename); + } + if (dynamicIndex > ehdr->e_shnum) { + fatal ("dynamic out of range %s", filename); + } + if (dynstrIndex > ehdr->e_shnum) { + fatal ("dynamic out of range %s", filename); + } + dynamic = getStuff (fp, shdrs[dynamicIndex].sh_offset, + shdrs[dynamicIndex].sh_size); + dynstr = getStuff (fp, shdrs[dynstrIndex].sh_offset, + shdrs[dynstrIndex].sh_size); + + for (i = 0;; i++) { + if (dynamic[i].d_tag == DT_NEEDED) { + Elf32_Word offset = dynamic[i].d_un.d_val; + char *name = &dynstr[offset]; + + printf ("needed: %s\n", name); + } + if (dynamic[i].d_tag == DT_NULL) { + break; + } + } + +out: + if (dynstr) free (dynstr); + if (dynamic) free (dynamic); + if (ehdr) free (ehdr); + if (phdr) free (phdr); + if (shdrs) free (shdrs); + if (sectionNames) free (sectionNames); +} + + +void +doOne64 (char *filename, FILE *fp) +{ + int i; + Elf64_Ehdr * ehdr = NULL; + Elf64_Phdr * phdr = NULL; + int interpIndex = -1; /* proghdr has interp. */ + Elf64_Shdr * shdrs = NULL; + int dynamicIndex = -1; /* section named .dynamic */ + Elf64_Dyn * dynamic = NULL; + int dynstrIndex = -1; /* section named .dynstr */ + char * dynstr = NULL; + char * sectionNames = NULL; + + + ehdr = getStuff (fp, 0, sizeof(*ehdr)); + + if (ehdr->e_ehsize != sizeof(*ehdr)) { + fatal ("bad size ehdr %s", filename); + } + + if (! (ehdr->e_type == ET_EXEC || ehdr->e_type == ET_DYN)) { + message ("bad type ehdr %s", filename); + goto out; + } + + if (ehdr->e_phentsize != sizeof (*phdr)) { + fatal ("bad size phdr %s", filename); + } + + if (ehdr->e_phnum < 1 || ehdr->e_phnum > (65336/sizeof(*phdr))) { + fatal ("bad count phdr %s", filename); + } + + phdr = getStuff (fp, ehdr->e_phoff, ehdr->e_phnum * sizeof(*phdr)); + + for (i = 0; i < ehdr->e_phnum; i++) { + if (phdr[i].p_type == PT_INTERP) { + if (interpIndex >= 0) { + fatal ("corrupt image, interp %s", filename); + } + interpIndex = i; + } + } + + /* + * Print interpreter. + * Note you can have files with DT_NEEDED without interp; + * shared libraries are an example. + */ + if (interpIndex >= 0) { + Elf64_Off offset = phdr[interpIndex].p_offset; + Elf64_Xword size = phdr[interpIndex].p_filesz; + char * interpreter = NULL; + + if (size < 2 || size > PATH_MAX) { + fatal ("funny interpreter %s", filename); + } + + interpreter = getStuff (fp, offset, size); + if (interpreter[size - 1] != '\0') { + fatal ("broken interpreter %s", filename); + } + + printf ("interpreter: %s\n", interpreter); + + free (interpreter); + } + + /* + * read section headers + */ + if (ehdr->e_shentsize != sizeof (Elf64_Shdr)) { + fatal ("bad section header size %s", filename); + } + shdrs = getStuff (fp, ehdr->e_shoff, sizeof(*shdrs) * ehdr->e_shnum); + + /* + * read section header names + */ + if (ehdr->e_shstrndx >= ehdr->e_shnum) { + fatal ("no section names in %s", filename); + } + sectionNames = getStuff (fp, shdrs[ehdr->e_shstrndx].sh_offset, + shdrs[ehdr->e_shstrndx].sh_size); + + for (i = 0; i < ehdr->e_shnum; i++) { + char * name = §ionNames[shdrs[i].sh_name]; + if (strcmp (name, ".dynamic") == 0) { + dynamicIndex = i; + } + else if (strcmp (name, ".dynstr") == 0) { + dynstrIndex = i; + } + } + + if (dynamicIndex < 0) { + goto out; + } + + if (dynamicIndex >= 0 && dynstrIndex < 0) { + fatal ("corrupt dynamic without dynstr %s", filename); + } + if (dynamicIndex > ehdr->e_shnum) { + fatal ("dynamic out of range %s", filename); + } + if (dynstrIndex > ehdr->e_shnum) { + fatal ("dynamic out of range %s", filename); + } + dynamic = getStuff (fp, shdrs[dynamicIndex].sh_offset, + shdrs[dynamicIndex].sh_size); + dynstr = getStuff (fp, shdrs[dynstrIndex].sh_offset, + shdrs[dynstrIndex].sh_size); + + for (i = 0;; i++) { + if (dynamic[i].d_tag == DT_NEEDED) { + Elf64_Xword offset = dynamic[i].d_un.d_val; + char *name = &dynstr[offset]; + + printf ("needed: %s\n", name); + } + if (dynamic[i].d_tag == DT_NULL) { + break; + } + } + +out: + if (dynstr) free (dynstr); + if (dynamic) free (dynamic); + if (ehdr) free (ehdr); + if (phdr) free (phdr); + if (shdrs) free (shdrs); + if (sectionNames) free (sectionNames); +} + + +void +doOne (char *filename) +{ + FILE * fp; + size_t rc; + unsigned char magic[EI_NIDENT]; + + fp = fopen (filename, "r"); + if (! fp) { + fatal ("could not open %s", filename); + } + + rc = fread (magic, 1, EI_NIDENT, fp); + if (rc < EI_NIDENT) { + message ("not an ELF file: %s", filename); + return; + } + + if (strncmp (magic, ELFMAG, SELFMAG) != 0) { + message ("not an ELF file: bad magic in %s", filename); + return; + } + + switch (magic[EI_CLASS]) { + case ELFCLASS32: + doOne32 (filename, fp); + break; + case ELFCLASS64: + doOne64 (filename, fp); + break; + default: + fatal ("bad class %s", filename); + } + + if (fclose (fp)) { + fatal ("could not close %s", filename); + } +} + +int +main (int argc, char *argv[]) +{ + int i; + while ((i = getopt (argc, argv, "hvq")) >= 0) { + switch (i) { + case 'h': + usage (); + return 0; + case 'v': + message ("version %s", version); + return 0; + case 'q': + silent = 1; + break; + default: + fatal ("bad argument %c, -h for help", optopt); + } + } + if (optind != argc -1) { + fatal ("too many arguments"); + } + + doOne (argv[optind]); + return 0; +} diff --git a/rescue/linux/cdrom/yaird-0.0.5/exec/run_init b/rescue/linux/cdrom/yaird-0.0.5/exec/run_init new file mode 100755 index 0000000..14a3af9 Binary files /dev/null and b/rescue/linux/cdrom/yaird-0.0.5/exec/run_init differ diff --git a/rescue/linux/cdrom/yaird-0.0.5/exec/run_init.c b/rescue/linux/cdrom/yaird-0.0.5/exec/run_init.c new file mode 100644 index 0000000..dbb92c5 --- /dev/null +++ b/rescue/linux/cdrom/yaird-0.0.5/exec/run_init.c @@ -0,0 +1,264 @@ +#ident "$Id$" +/* ----------------------------------------------------------------------- * + * + * Copyright 2004 H. Peter Anvin - All Rights Reserved + * + * Permission is hereby granted, free of charge, to any person + * obtaining a copy of this software and associated documentation + * files (the "Software"), to deal in the Software without + * restriction, including without limitation the rights to use, + * copy, modify, merge, publish, distribute, sublicense, and/or + * sell copies of the Software, and to permit persons to whom + * the Software is furnished to do so, subject to the following + * conditions: + * + * The above copyright notice and this permission notice shall + * be included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES + * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT + * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR + * OTHER DEALINGS IN THE SOFTWARE. + * + * ----------------------------------------------------------------------- */ + +/* + * run-init.c + * + * Usage: exec run-init [-c /dev/console] /real-root /sbin/init "$@" + * + * This program should be called as the last thing in a shell script + * acting as /init in an initramfs; it does the following: + * + * - Delete all files in the initramfs; + * - Remounts /real-root onto the root filesystem; + * - Chroots; + * - Opens /dev/console; + * - Spawns the specified init program (with arguments.) + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include + + +/* Make it possible to compile on glibc by including constants that the + always-behind shipped glibc headers may not include. Classic example + on why the lack of ABI headers screw us up. */ +#ifndef TMPFS_MAGIC +# define TMPFS_MAGIC 0x01021994 +#endif +#ifndef RAMFS_MAGIC +# define RAMFS_MAGIC 0x858458f6 +#endif +#ifndef MS_MOVE +# define MS_MOVE 8192 +#endif + +static const char *program; + +static void __attribute__((noreturn)) die(const char *msg) +{ + fprintf(stderr, "%s: %s: %s\n", program, msg, strerror(errno)); + exit(1); +} + + +#ifdef ENABLE_NUKE +static int nuke(const char *what); + +static int nuke_dirent(int len, const char *dir, const char *name, dev_t me) +{ + int bytes = len+strlen(name)+2; + char path[bytes]; + int xlen; + struct stat st; + + xlen = snprintf(path, bytes, "%s/%s", dir, name); + assert(xlen < bytes); + + if ( lstat(path, &st) ) + return ENOENT; /* Return 0 since already gone? */ + + if ( st.st_dev != me ) + return 0; /* DO NOT recurse down mount points!!!!! */ + + return nuke(path); +} + +/* Wipe the contents of a directory, but not the directory itself */ +static int nuke_dir(const char *what) +{ + int len = strlen(what); + DIR *dir; + struct dirent *d; + int err = 0; + struct stat st; + + if ( lstat(what, &st) ) + return errno; + + if ( !S_ISDIR(st.st_mode) ) + return ENOTDIR; + + if ( !(dir = opendir(what)) ) { + /* EACCES means we can't read it. Might be empty and removable; + if not, the rmdir() in nuke() will trigger an error. */ + return (errno == EACCES) ? 0 : errno; + } + + while ( (d = readdir(dir)) ) { + /* Skip . and .. */ + if ( d->d_name[0] == '.' && + (d->d_name[1] == '\0' || + (d->d_name[1] == '.' && d->d_name[2] == '\0')) ) + continue; + + err = nuke_dirent(len, what, d->d_name, st.st_dev); + if ( err ) { + closedir(dir); + return err; + } + } + + closedir(dir); + + return 0; +} + +static int nuke(const char *what) +{ + int rv; + int err = 0; + + rv = unlink(what); + if ( rv < 0 ) { + if ( errno == EISDIR ) { + /* It's a directory. */ + err = nuke_dir(what); + if ( !err ) err = rmdir(what) ? errno : err; + } else { + err = errno; + } + } + + if ( err ) { + errno = err; + die(what); + } else { + return 0; + } +} +#else /* no ENABLE_NUKE */ +static inline int +nuke_dir(const char *what) +{ + return 0; +} +#endif /* ENABLE_NUKE */ + +static void __attribute__((noreturn)) usage(void) +{ + fprintf(stderr, "Usage: exec %s [-c consoledev] /real-root /sbin/init [args]\n", program); + exit(1); +} + + +int main(int argc, char *argv[]) +{ + struct stat rst, cst, ist; + struct statfs sfs; + int o; + int confd; + + /* Command-line options and defaults */ + const char *console = "/dev/console"; + const char *realroot; + const char *init; + char **initargs; + + /* First, parse the command line */ + program = argv[0]; + + while ( (o = getopt(argc, argv, "c:")) != -1 ) { + if ( o == 'c' ) { + console = optarg; + } else { + usage(); + } + } + + if ( argc-optind < 2 ) + usage(); + + realroot = argv[optind]; + init = argv[optind+1]; + initargs = argv+optind+1; + + /* First, change to the new root directory */ + if ( chdir(realroot) ) + die("chdir to new root"); + + /* This is a potentially highly destructive program. Take some + extra precautions. */ + + /* Make sure the current directory is not on the same filesystem + as the root directory */ + if ( stat("/", &rst) || stat(".", &cst) ) + die("stat"); + + if ( rst.st_dev == cst.st_dev ) + die("current directory on the same filesystem as the root"); + + /* The initramfs should have /init */ + if ( stat("/init", &ist) || !S_ISREG(ist.st_mode) ) + die("can't find /init on initramfs"); + + /* Make sure we're on a ramfs */ + if ( statfs("/", &sfs) ) + die("statfs /"); + if ( sfs.f_type != RAMFS_MAGIC && sfs.f_type != TMPFS_MAGIC ) + die("rootfs not a ramfs or tmpfs"); + + /* Okay, I think we should be safe... */ + + /* Delete rootfs contents */ + if ( nuke_dir("/") ) + die("nuking initramfs contents"); + + /* Overmount the root */ + if ( mount(".", "/", NULL, MS_MOVE, NULL) ) + die("overmounting root"); + + /* chroot, chdir */ + if ( chroot(".") || chdir("/") ) + die("chroot"); + + /* Open /dev/console */ + if ( (confd = open(console, O_RDWR)) < 0 ) + die("opening console"); + dup2(confd, 0); + dup2(confd, 1); + dup2(confd, 2); + close(confd); + + /* Spawn init */ + execv(init, initargs); + die(init); /* Failed to spawn init */ +} diff --git a/rescue/linux/cdrom/yaird-0.0.5/include/config.h b/rescue/linux/cdrom/yaird-0.0.5/include/config.h new file mode 100644 index 0000000..978c3cf --- /dev/null +++ b/rescue/linux/cdrom/yaird-0.0.5/include/config.h @@ -0,0 +1,26 @@ +/* include/config.h. Generated by configure. */ +/* include/config.h.in. Generated from configure.in by autoheader. */ + +/* Define to nuke initramfs before moving to real root */ +/* #undef ENABLE_NUKE */ + +/* Name of package */ +#define PACKAGE "yaird" + +/* Define to the address where bug reports for this package should be sent. */ +#define PACKAGE_BUGREPORT "" + +/* Define to the full name of this package. */ +#define PACKAGE_NAME "" + +/* Define to the full name and version of this package. */ +#define PACKAGE_STRING "" + +/* Define to the one symbol short name of this package. */ +#define PACKAGE_TARNAME "" + +/* Define to the version of this package. */ +#define PACKAGE_VERSION "" + +/* Version number of package */ +#define VERSION "0.0.5" diff --git a/rescue/linux/cdrom/yaird-0.0.5/include/config.h.in b/rescue/linux/cdrom/yaird-0.0.5/include/config.h.in new file mode 100644 index 0000000..88f063d --- /dev/null +++ b/rescue/linux/cdrom/yaird-0.0.5/include/config.h.in @@ -0,0 +1,25 @@ +/* include/config.h.in. Generated from configure.in by autoheader. */ + +/* Define to nuke initramfs before moving to real root */ +#undef ENABLE_NUKE + +/* Name of package */ +#undef PACKAGE + +/* Define to the address where bug reports for this package should be sent. */ +#undef PACKAGE_BUGREPORT + +/* Define to the full name of this package. */ +#undef PACKAGE_NAME + +/* Define to the full name and version of this package. */ +#undef PACKAGE_STRING + +/* Define to the one symbol short name of this package. */ +#undef PACKAGE_TARNAME + +/* Define to the version of this package. */ +#undef PACKAGE_VERSION + +/* Version number of package */ +#undef VERSION diff --git a/rescue/linux/cdrom/yaird-0.0.5/include/stamp-h1 b/rescue/linux/cdrom/yaird-0.0.5/include/stamp-h1 new file mode 100644 index 0000000..b330768 --- /dev/null +++ b/rescue/linux/cdrom/yaird-0.0.5/include/stamp-h1 @@ -0,0 +1 @@ +timestamp for include/config.h diff --git a/rescue/linux/cdrom/yaird-0.0.5/install-sh b/rescue/linux/cdrom/yaird-0.0.5/install-sh new file mode 100755 index 0000000..1a83534 --- /dev/null +++ b/rescue/linux/cdrom/yaird-0.0.5/install-sh @@ -0,0 +1,323 @@ +#!/bin/sh +# install - install a program, script, or datafile + +scriptversion=2005-02-02.21 + +# This originates from X11R5 (mit/util/scripts/install.sh), which was +# later released in X11R6 (xc/config/util/install.sh) with the +# following copyright and license. +# +# Copyright (C) 1994 X Consortium +# +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to +# deal in the Software without restriction, including without limitation the +# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or +# sell copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in +# all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN +# AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNEC- +# TION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +# +# Except as contained in this notice, the name of the X Consortium shall not +# be used in advertising or otherwise to promote the sale, use or other deal- +# ings in this Software without prior written authorization from the X Consor- +# tium. +# +# +# FSF changes to this file are in the public domain. +# +# Calling this script install-sh is preferred over install.sh, to prevent +# `make' implicit rules from creating a file called install from it +# when there is no Makefile. +# +# This script is compatible with the BSD install script, but was written +# from scratch. It can only install one file at a time, a restriction +# shared with many OS's install programs. + +# set DOITPROG to echo to test this script + +# Don't use :- since 4.3BSD and earlier shells don't like it. +doit="${DOITPROG-}" + +# put in absolute paths if you don't have them in your path; or use env. vars. + +mvprog="${MVPROG-mv}" +cpprog="${CPPROG-cp}" +chmodprog="${CHMODPROG-chmod}" +chownprog="${CHOWNPROG-chown}" +chgrpprog="${CHGRPPROG-chgrp}" +stripprog="${STRIPPROG-strip}" +rmprog="${RMPROG-rm}" +mkdirprog="${MKDIRPROG-mkdir}" + +chmodcmd="$chmodprog 0755" +chowncmd= +chgrpcmd= +stripcmd= +rmcmd="$rmprog -f" +mvcmd="$mvprog" +src= +dst= +dir_arg= +dstarg= +no_target_directory= + +usage="Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE + or: $0 [OPTION]... SRCFILES... DIRECTORY + or: $0 [OPTION]... -t DIRECTORY SRCFILES... + or: $0 [OPTION]... -d DIRECTORIES... + +In the 1st form, copy SRCFILE to DSTFILE. +In the 2nd and 3rd, copy all SRCFILES to DIRECTORY. +In the 4th, create DIRECTORIES. + +Options: +-c (ignored) +-d create directories instead of installing files. +-g GROUP $chgrpprog installed files to GROUP. +-m MODE $chmodprog installed files to MODE. +-o USER $chownprog installed files to USER. +-s $stripprog installed files. +-t DIRECTORY install into DIRECTORY. +-T report an error if DSTFILE is a directory. +--help display this help and exit. +--version display version info and exit. + +Environment variables override the default commands: + CHGRPPROG CHMODPROG CHOWNPROG CPPROG MKDIRPROG MVPROG RMPROG STRIPPROG +" + +while test -n "$1"; do + case $1 in + -c) shift + continue;; + + -d) dir_arg=true + shift + continue;; + + -g) chgrpcmd="$chgrpprog $2" + shift + shift + continue;; + + --help) echo "$usage"; exit $?;; + + -m) chmodcmd="$chmodprog $2" + shift + shift + continue;; + + -o) chowncmd="$chownprog $2" + shift + shift + continue;; + + -s) stripcmd=$stripprog + shift + continue;; + + -t) dstarg=$2 + shift + shift + continue;; + + -T) no_target_directory=true + shift + continue;; + + --version) echo "$0 $scriptversion"; exit $?;; + + *) # When -d is used, all remaining arguments are directories to create. + # When -t is used, the destination is already specified. + test -n "$dir_arg$dstarg" && break + # Otherwise, the last argument is the destination. Remove it from $@. + for arg + do + if test -n "$dstarg"; then + # $@ is not empty: it contains at least $arg. + set fnord "$@" "$dstarg" + shift # fnord + fi + shift # arg + dstarg=$arg + done + break;; + esac +done + +if test -z "$1"; then + if test -z "$dir_arg"; then + echo "$0: no input file specified." >&2 + exit 1 + fi + # It's OK to call `install-sh -d' without argument. + # This can happen when creating conditional directories. + exit 0 +fi + +for src +do + # Protect names starting with `-'. + case $src in + -*) src=./$src ;; + esac + + if test -n "$dir_arg"; then + dst=$src + src= + + if test -d "$dst"; then + mkdircmd=: + chmodcmd= + else + mkdircmd=$mkdirprog + fi + else + # Waiting for this to be detected by the "$cpprog $src $dsttmp" command + # might cause directories to be created, which would be especially bad + # if $src (and thus $dsttmp) contains '*'. + if test ! -f "$src" && test ! -d "$src"; then + echo "$0: $src does not exist." >&2 + exit 1 + fi + + if test -z "$dstarg"; then + echo "$0: no destination specified." >&2 + exit 1 + fi + + dst=$dstarg + # Protect names starting with `-'. + case $dst in + -*) dst=./$dst ;; + esac + + # If destination is a directory, append the input filename; won't work + # if double slashes aren't ignored. + if test -d "$dst"; then + if test -n "$no_target_directory"; then + echo "$0: $dstarg: Is a directory" >&2 + exit 1 + fi + dst=$dst/`basename "$src"` + fi + fi + + # This sed command emulates the dirname command. + dstdir=`echo "$dst" | sed -e 's,/*$,,;s,[^/]*$,,;s,/*$,,;s,^$,.,'` + + # Make sure that the destination directory exists. + + # Skip lots of stat calls in the usual case. + if test ! -d "$dstdir"; then + defaultIFS=' + ' + IFS="${IFS-$defaultIFS}" + + oIFS=$IFS + # Some sh's can't handle IFS=/ for some reason. + IFS='%' + set x `echo "$dstdir" | sed -e 's@/@%@g' -e 's@^%@/@'` + shift + IFS=$oIFS + + pathcomp= + + while test $# -ne 0 ; do + pathcomp=$pathcomp$1 + shift + if test ! -d "$pathcomp"; then + $mkdirprog "$pathcomp" + # mkdir can fail with a `File exist' error in case several + # install-sh are creating the directory concurrently. This + # is OK. + test -d "$pathcomp" || exit + fi + pathcomp=$pathcomp/ + done + fi + + if test -n "$dir_arg"; then + $doit $mkdircmd "$dst" \ + && { test -z "$chowncmd" || $doit $chowncmd "$dst"; } \ + && { test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } \ + && { test -z "$stripcmd" || $doit $stripcmd "$dst"; } \ + && { test -z "$chmodcmd" || $doit $chmodcmd "$dst"; } + + else + dstfile=`basename "$dst"` + + # Make a couple of temp file names in the proper directory. + dsttmp=$dstdir/_inst.$$_ + rmtmp=$dstdir/_rm.$$_ + + # Trap to clean up those temp files at exit. + trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0 + trap '(exit $?); exit' 1 2 13 15 + + # Copy the file name to the temp name. + $doit $cpprog "$src" "$dsttmp" && + + # and set any options; do chmod last to preserve setuid bits. + # + # If any of these fail, we abort the whole thing. If we want to + # ignore errors from any of these, just make sure not to ignore + # errors from the above "$doit $cpprog $src $dsttmp" command. + # + { test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } \ + && { test -z "$chgrpcmd" || $doit $chgrpcmd "$dsttmp"; } \ + && { test -z "$stripcmd" || $doit $stripcmd "$dsttmp"; } \ + && { test -z "$chmodcmd" || $doit $chmodcmd "$dsttmp"; } && + + # Now rename the file to the real destination. + { $doit $mvcmd -f "$dsttmp" "$dstdir/$dstfile" 2>/dev/null \ + || { + # The rename failed, perhaps because mv can't rename something else + # to itself, or perhaps because mv is so ancient that it does not + # support -f. + + # Now remove or move aside any old file at destination location. + # We try this two ways since rm can't unlink itself on some + # systems and the destination file might be busy for other + # reasons. In this case, the final cleanup might fail but the new + # file should still install successfully. + { + if test -f "$dstdir/$dstfile"; then + $doit $rmcmd -f "$dstdir/$dstfile" 2>/dev/null \ + || $doit $mvcmd -f "$dstdir/$dstfile" "$rmtmp" 2>/dev/null \ + || { + echo "$0: cannot unlink or rename $dstdir/$dstfile" >&2 + (exit 1); exit 1 + } + else + : + fi + } && + + # Now rename the file to the real destination. + $doit $mvcmd "$dsttmp" "$dstdir/$dstfile" + } + } + fi || { (exit 1); exit 1; } +done + +# The final little trick to "correctly" pass the exit status to the exit trap. +{ + (exit 0); exit 0 +} + +# Local variables: +# eval: (add-hook 'write-file-hooks 'time-stamp) +# time-stamp-start: "scriptversion=" +# time-stamp-format: "%:y-%02m-%02d.%02H" +# time-stamp-end: "$" +# End: diff --git a/rescue/linux/cdrom/yaird-0.0.5/missing b/rescue/linux/cdrom/yaird-0.0.5/missing new file mode 100755 index 0000000..09edd88 --- /dev/null +++ b/rescue/linux/cdrom/yaird-0.0.5/missing @@ -0,0 +1,357 @@ +#! /bin/sh +# Common stub for a few missing GNU programs while installing. + +scriptversion=2005-02-08.22 + +# Copyright (C) 1996, 1997, 1999, 2000, 2002, 2003, 2004, 2005 +# Free Software Foundation, Inc. +# Originally by Fran,cois Pinard , 1996. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2, or (at your option) +# any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA +# 02111-1307, USA. + +# 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. + +if test $# -eq 0; then + echo 1>&2 "Try \`$0 --help' for more information" + exit 1 +fi + +run=: + +# In the cases where this matters, `missing' is being run in the +# srcdir already. +if test -f configure.ac; then + configure_ac=configure.ac +else + configure_ac=configure.in +fi + +msg="missing on your system" + +case "$1" in +--run) + # Try to run requested program, and just exit if it succeeds. + run= + shift + "$@" && exit 0 + # Exit code 63 means version mismatch. This often happens + # when the user try to use an ancient version of a tool on + # a file that requires a minimum version. In this case we + # we should proceed has if the program had been absent, or + # if --run hadn't been passed. + if test $? = 63; then + run=: + msg="probably too old" + fi + ;; + + -h|--h|--he|--hel|--help) + echo "\ +$0 [OPTION]... PROGRAM [ARGUMENT]... + +Handle \`PROGRAM [ARGUMENT]...' for when PROGRAM is missing, or return an +error status if there is no known handling for PROGRAM. + +Options: + -h, --help display this help and exit + -v, --version output version information and exit + --run try to run the given command, and emulate it if it fails + +Supported PROGRAM values: + aclocal touch file \`aclocal.m4' + autoconf touch file \`configure' + autoheader touch file \`config.h.in' + automake touch all \`Makefile.in' files + bison create \`y.tab.[ch]', if possible, from existing .[ch] + flex create \`lex.yy.c', if possible, from existing .c + help2man touch the output file + lex create \`lex.yy.c', if possible, from existing .c + makeinfo touch the output file + tar try tar, gnutar, gtar, then tar without non-portable flags + yacc create \`y.tab.[ch]', if possible, from existing .[ch] + +Send bug reports to ." + exit $? + ;; + + -v|--v|--ve|--ver|--vers|--versi|--versio|--version) + echo "missing $scriptversion (GNU Automake)" + exit $? + ;; + + -*) + echo 1>&2 "$0: Unknown \`$1' option" + echo 1>&2 "Try \`$0 --help' for more information" + exit 1 + ;; + +esac + +# Now exit if we have it, but it failed. Also exit now if we +# don't have it and --version was passed (most likely to detect +# the program). +case "$1" in + lex|yacc) + # Not GNU programs, they don't have --version. + ;; + + tar) + if test -n "$run"; then + echo 1>&2 "ERROR: \`tar' requires --run" + exit 1 + elif test "x$2" = "x--version" || test "x$2" = "x--help"; then + exit 1 + fi + ;; + + *) + if test -z "$run" && ($1 --version) > /dev/null 2>&1; then + # We have it, but it failed. + exit 1 + elif test "x$2" = "x--version" || test "x$2" = "x--help"; then + # Could not run --version or --help. This is probably someone + # running `$TOOL --version' or `$TOOL --help' to check whether + # $TOOL exists and not knowing $TOOL uses missing. + exit 1 + fi + ;; +esac + +# If it does not exist, or fails to run (possibly an outdated version), +# try to emulate it. +case "$1" in + aclocal*) + echo 1>&2 "\ +WARNING: \`$1' is $msg. You should only need it if + you modified \`acinclude.m4' or \`${configure_ac}'. You might want + to install the \`Automake' and \`Perl' packages. Grab them from + any GNU archive site." + touch aclocal.m4 + ;; + + autoconf) + echo 1>&2 "\ +WARNING: \`$1' is $msg. You should only need it if + you modified \`${configure_ac}'. You might want to install the + \`Autoconf' and \`GNU m4' packages. Grab them from any GNU + archive site." + touch configure + ;; + + autoheader) + echo 1>&2 "\ +WARNING: \`$1' is $msg. You should only need it if + you modified \`acconfig.h' or \`${configure_ac}'. You might want + to install the \`Autoconf' and \`GNU m4' packages. Grab them + from any GNU archive site." + files=`sed -n 's/^[ ]*A[CM]_CONFIG_HEADER(\([^)]*\)).*/\1/p' ${configure_ac}` + test -z "$files" && files="config.h" + touch_files= + for f in $files; do + case "$f" in + *:*) touch_files="$touch_files "`echo "$f" | + sed -e 's/^[^:]*://' -e 's/:.*//'`;; + *) touch_files="$touch_files $f.in";; + esac + done + touch $touch_files + ;; + + automake*) + echo 1>&2 "\ +WARNING: \`$1' is $msg. You should only need it if + you modified \`Makefile.am', \`acinclude.m4' or \`${configure_ac}'. + You might want to install the \`Automake' and \`Perl' packages. + Grab them from any GNU archive site." + find . -type f -name Makefile.am -print | + sed 's/\.am$/.in/' | + while read f; do touch "$f"; done + ;; + + autom4te) + echo 1>&2 "\ +WARNING: \`$1' is needed, but is $msg. + You might have modified some files without having the + proper tools for further handling them. + You can get \`$1' as part of \`Autoconf' from any GNU + archive site." + + file=`echo "$*" | sed -n 's/.*--output[ =]*\([^ ]*\).*/\1/p'` + test -z "$file" && file=`echo "$*" | sed -n 's/.*-o[ ]*\([^ ]*\).*/\1/p'` + if test -f "$file"; then + touch $file + else + test -z "$file" || exec >$file + echo "#! /bin/sh" + echo "# Created by GNU Automake missing as a replacement of" + echo "# $ $@" + echo "exit 0" + chmod +x $file + exit 1 + fi + ;; + + bison|yacc) + echo 1>&2 "\ +WARNING: \`$1' $msg. You should only need it if + you modified a \`.y' file. You may need the \`Bison' package + in order for those modifications to take effect. You can get + \`Bison' from any GNU archive site." + rm -f y.tab.c y.tab.h + if [ $# -ne 1 ]; then + eval LASTARG="\${$#}" + case "$LASTARG" in + *.y) + SRCFILE=`echo "$LASTARG" | sed 's/y$/c/'` + if [ -f "$SRCFILE" ]; then + cp "$SRCFILE" y.tab.c + fi + SRCFILE=`echo "$LASTARG" | sed 's/y$/h/'` + if [ -f "$SRCFILE" ]; then + cp "$SRCFILE" y.tab.h + fi + ;; + esac + fi + if [ ! -f y.tab.h ]; then + echo >y.tab.h + fi + if [ ! -f y.tab.c ]; then + echo 'main() { return 0; }' >y.tab.c + fi + ;; + + lex|flex) + echo 1>&2 "\ +WARNING: \`$1' is $msg. You should only need it if + you modified a \`.l' file. You may need the \`Flex' package + in order for those modifications to take effect. You can get + \`Flex' from any GNU archive site." + rm -f lex.yy.c + if [ $# -ne 1 ]; then + eval LASTARG="\${$#}" + case "$LASTARG" in + *.l) + SRCFILE=`echo "$LASTARG" | sed 's/l$/c/'` + if [ -f "$SRCFILE" ]; then + cp "$SRCFILE" lex.yy.c + fi + ;; + esac + fi + if [ ! -f lex.yy.c ]; then + echo 'main() { return 0; }' >lex.yy.c + fi + ;; + + help2man) + echo 1>&2 "\ +WARNING: \`$1' is $msg. You should only need it if + you modified a dependency of a manual page. You may need the + \`Help2man' package in order for those modifications to take + effect. You can get \`Help2man' from any GNU archive site." + + file=`echo "$*" | sed -n 's/.*-o \([^ ]*\).*/\1/p'` + if test -z "$file"; then + file=`echo "$*" | sed -n 's/.*--output=\([^ ]*\).*/\1/p'` + fi + if [ -f "$file" ]; then + touch $file + else + test -z "$file" || exec >$file + echo ".ab help2man is required to generate this page" + exit 1 + fi + ;; + + makeinfo) + echo 1>&2 "\ +WARNING: \`$1' is $msg. You should only need it if + you modified a \`.texi' or \`.texinfo' file, or any other file + indirectly affecting the aspect of the manual. The spurious + call might also be the consequence of using a buggy \`make' (AIX, + DU, IRIX). You might want to install the \`Texinfo' package or + the \`GNU make' package. Grab either from any GNU archive site." + # The file to touch is that specified with -o ... + file=`echo "$*" | sed -n 's/.*-o \([^ ]*\).*/\1/p'` + if test -z "$file"; then + # ... or it is the one specified with @setfilename ... + infile=`echo "$*" | sed 's/.* \([^ ]*\) *$/\1/'` + file=`sed -n '/^@setfilename/ { s/.* \([^ ]*\) *$/\1/; p; q; }' $infile` + # ... or it is derived from the source name (dir/f.texi becomes f.info) + test -z "$file" && file=`echo "$infile" | sed 's,.*/,,;s,.[^.]*$,,'`.info + fi + touch $file + ;; + + tar) + shift + + # We have already tried tar in the generic part. + # Look for gnutar/gtar before invocation to avoid ugly error + # messages. + if (gnutar --version > /dev/null 2>&1); then + gnutar "$@" && exit 0 + fi + if (gtar --version > /dev/null 2>&1); then + gtar "$@" && exit 0 + fi + firstarg="$1" + if shift; then + case "$firstarg" in + *o*) + firstarg=`echo "$firstarg" | sed s/o//` + tar "$firstarg" "$@" && exit 0 + ;; + esac + case "$firstarg" in + *h*) + firstarg=`echo "$firstarg" | sed s/h//` + tar "$firstarg" "$@" && exit 0 + ;; + esac + fi + + echo 1>&2 "\ +WARNING: I can't seem to be able to run \`tar' with the given arguments. + You may want to install GNU tar or Free paxutils, or check the + command line arguments." + exit 1 + ;; + + *) + echo 1>&2 "\ +WARNING: \`$1' is needed, and is $msg. + You might have modified some files without having the + proper tools for further handling them. Check the \`README' file, + it often tells you about the needed prerequisites for installing + this package. You may also peek at any GNU archive site, in case + some other package would contain this missing \`$1' program." + exit 1 + ;; +esac + +exit 0 + +# Local variables: +# eval: (add-hook 'write-file-hooks 'time-stamp) +# time-stamp-start: "scriptversion=" +# time-stamp-format: "%:y-%02m-%02d.%02H" +# time-stamp-end: "$" +# End: diff --git a/rescue/linux/cdrom/yaird-0.0.5/perl/ActionList.pm b/rescue/linux/cdrom/yaird-0.0.5/perl/ActionList.pm new file mode 100644 index 0000000..e63e689 --- /dev/null +++ b/rescue/linux/cdrom/yaird-0.0.5/perl/ActionList.pm @@ -0,0 +1,180 @@ +#!perl -w +# +# ActionList -- record and expand actions to be performed by the initrd image +# Copyright (C) 2005 Erik van Konijnenburg +# +# 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 +# +# Actions are represented by a hash, containing at least: +# - action +# - target +# +# Actions are added to the end of the list, but if an action +# with same name and target already exists, the later action +# is considered redundant and silently omited. +# +# The point of an action list is that it can be expanded to an Image, +# an exact description of every file, directory and script that should +# go on the initrd image. +# +# This expansion is driven by templates, where attributes from the +# hash may be inserted in file names or script fragments. +# There are attributes that are added automatically to every action: +# - version, the required kernel version. +# + +use strict; +use warnings; +use Base; +use Conf; +use Template; +use HTML::Template; + +package ActionList; +use base 'Obj'; + + +sub fill { + my $self = shift; + $self->SUPER::fill(); + $self->{actions} = []; +} + + +# +# add -- add an action to the plan. +# +sub add { + my ($self, $action, $target, %hash ) = @_; + + for my $a (@{$self->{actions}}) { + if ($a->{action} eq $action && $a->{target} eq $target) { + Base::debug ("redundant action: $action, $target"); + return; + } + } + + my $pairs = ""; + for my $key (sort keys %hash) { + my $val = $hash{$key}; + $pairs .= "$key=$val "; + } + Base::info ("action: $action, $target {$pairs}"); + + push @{$self->{actions}}, { + action => $action, + target => $target, + version => Conf::get('version'), + appVersion => Conf::get('appVersion'), + auxDir => Conf::get('auxDir'), + %hash + }; +} + + +# +# string -- render an action list. +# +sub string { + my $self = shift; + my $result = ""; + for my $a (@{$self->{actions}}) { + my $action = $a->{action}; + my $target = $a->{target}; + my $pairs = ""; + for my $key (sort keys %{$a}) { + next if $key eq "action"; + next if $key eq "target"; + next if $key eq "version"; + next if $key eq "appVersion"; + next if $key eq "auxDir"; + my $val = $a->{$key}; + my $pairs .= "$key=$val "; + } + $result .= "\t\t$action $target {$pairs}\n"; + } + return $result; +} + +# +# filter -- helper function to get rid of leading whitespace +# in template lines. Needed because of '#!/bin/dash' lines +# in prologue. +# +my $filter = sub { + my $textref = shift; + $$textref =~ s/^\s+//mg; +}; + + +# +# expandFragment -- given a fragment of text, and a hash +# of parameter settings, return the fragment with HTML::Template +# expansion applied. +# Don't die on bad parameters: caller cannot know which parameters +# the template is willing to use. +# +sub expandFragment ($$) { + my ($fragment, $params) = @_; + my $htempl = HTML::Template->new ( + scalarref => \$fragment, + die_on_bad_params => 0, + filter => $filter); + $htempl->param ($params); + my $result = $htempl->output(); + return $result; +} + + +# +# expand -- given an overall plan, return an initrd image specification. +# +sub expand { + my $self = shift; + my $image = Image->new(); + + for my $a (@{$self->{actions}}) { + my $action = $a->{action}; + my $template = Template::template ($action); + Base::assert (defined ($template)); + + for my $file (@{$template->{files}}) { + my $fileName = expandFragment ($file, $a); + $image->addFile ($fileName); + } + + for my $dir (@{$template->{directories}}) { + my $dirName = expandFragment ($dir, $a); + $image->addDirectory ($dirName); + } + + for my $tree (@{$template->{trees}}) { + my $treeName = expandFragment ($tree, $a); + $image->addTree ($treeName); + } + + for my $scriptTName (sort keys %{$template->{scripts}}) { + my $scriptName = expandFragment ($scriptTName, $a); + my $tContent = $template->{scripts}{$scriptTName}; + my $content = expandFragment ($tContent, $a); + $image->addScriptLine ($scriptName, $content); + } + + } + + return $image; +} + +1; diff --git a/rescue/linux/cdrom/yaird-0.0.5/perl/ActiveBlockDev.pm b/rescue/linux/cdrom/yaird-0.0.5/perl/ActiveBlockDev.pm new file mode 100644 index 0000000..102f2c9 --- /dev/null +++ b/rescue/linux/cdrom/yaird-0.0.5/perl/ActiveBlockDev.pm @@ -0,0 +1,106 @@ +#!perl -w +# +# ActiveBlockDev -- a single blockdev, as found in /sys +# Copyright (C) 2005 Erik van Konijnenburg +# +# 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 +# +# The blockdev can be a whole device or a partition. +# descriptors contain: +# - name, path as found in /sys (sda, sda/sda1) +# - devno, as found in /sys (8:1) +# - parent, undef for whole device, maj:minor of parent otherwise +# - hw, path to underlying hardware device, +# eg an ide controller somewhere on a PCI bus. +# this is a path relative to /sys/devices, +# and can be undef (eg for ram disk) +# - special, a block special file giving access to the device +# in the currently running kernel, or undef. +# - yspecial, a block special file giving access to the device +# in the generated initrd image. This often needs +# a mknod on the generated image. It's not convenient +# to use the previous special, since that may be in +# a subdirectory unavailable on the initrd image. +# It's also not exactly /dev/$name, since LVM logical +# volumes follow another convention. +# - partitions, list of partitions contained in the device. +# these partitions are also ActiveBlockDevs. +# +# NOTE: the partition list relies on ActiveBlockDevTab making +# a complete scan of all block devices, each partition registering +# itself as partition with the parent device. +# +use strict; +use warnings; +use BlockSpecialFileTab; +use LvmTab; +package ActiveBlockDev; +use base 'Obj'; + + +sub fill { + my $self = shift; + $self->SUPER::fill(); + $self->takeArgs ('name', 'devno', 'parent', 'hw'); + $self->{partitions} = []; + if (defined ($self->parent)) { + push @{$self->parent->partitions}, $self; + } + + my $bfs = BlockSpecialFileTab::findByDevno($self->devno); + if (defined ($bfs)) { + $self->{special} = $bfs->path; + } + else { + $self->{special} = undef; + } +} + +sub name { return $_[0]->{name}; } +sub devno { return $_[0]->{devno}; } +sub parent { return $_[0]->{parent}; } +sub hw { return $_[0]->{hw}; } +sub special { return $_[0]->{special}; } +sub partitions { return $_[0]->{partitions}; } + +sub string { + my $self = shift; + my $name = $self->name; + my $devno = $self->devno; + my $parent = (defined($self->parent) ? $self->parent->name : "--"); + my $hw = ($self->hw or "--"); + my $special = ($self->special or "--"); + my $yspecial = ($self->yspecial or "--"); + return "$name($devno) in $parent at $hw via $special becomes $yspecial"; +} + +sub yspecial { + my $self = shift; + my $name = $self->name; + my $devno = $self->devno; + my $yspecial = "/dev/$name"; + my $lv = LvmTab::findLVByDevno ($devno); + if (defined ($lv)) { + $yspecial = $lv->lvnam; + } + return $yspecial; +} + +sub hasPartitions { + my $self = shift; + return ($#{$self->partitions} >= 0); +} + +1; diff --git a/rescue/linux/cdrom/yaird-0.0.5/perl/ActiveBlockDevTab.pm b/rescue/linux/cdrom/yaird-0.0.5/perl/ActiveBlockDevTab.pm new file mode 100644 index 0000000..9168ee6 --- /dev/null +++ b/rescue/linux/cdrom/yaird-0.0.5/perl/ActiveBlockDevTab.pm @@ -0,0 +1,149 @@ +#!perl -w +# +# ActiveBlockDevTab -- descriptors of all block devices in /sys +# Copyright (C) 2005 Erik van Konijnenburg +# +# 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 +# +use strict; +use warnings; +use Base; +use Conf; +use ActiveBlockDev; +package ActiveBlockDevTab; + + +my $abdTab = undef; +my $abdList = undef; + + +sub init () { + if (defined ($abdTab)) { + return; + } + $abdTab = {}; + + my $blockdir; + my $blockPath = Conf::get('sysFs') . "/block"; + if (! opendir ($blockdir, "$blockPath")) { + Base::fatal ("can't open directory $blockPath"); + } + while (defined (my $entry = readdir ($blockdir))) { + next if $entry eq "."; + next if $entry eq ".."; + oneBlockDev($blockPath, $entry); + } + if (! closedir ($blockdir)) { + Base::fatal ("could not read directory $blockPath"); + } + + $abdList = [values %{$abdTab}]; +} + +sub oneBlockDev ($$) { + my ($blockPath, $entry) = @_; + my $devno = Base::getStringFile("$blockPath/$entry/dev"); + if (exists ($abdTab->{$devno})) { + Base::fatal ("found duplicate devno in $blockPath/$entry"); + } + my $hw = readlink("$blockPath/$entry/device"); + # failure results in undef, which is exactly how + # we want to represent absence of a hw device. + if (defined ($hw)) { + unless ($hw =~ s!^(\.\./)+devices/!!) { + # imagine localised linux (/sys/geraete ...) + Base::fatal ("bad device link in $blockPath/$entry"); + } + } + my $descr = ActiveBlockDev->new ( + name => $entry, + devno => $devno, + parent => undef, + hw => $hw, + ); + $abdTab->{$devno} = $descr; + + # + # Scan partitions. + # Note that these are only visible after someone + # read the a block from the device. + # + my $devdir; + if (! opendir ($devdir, "$blockPath/$entry")) { + Base::fatal ("can't open directory $blockPath/$entry"); + } + while (defined (my $partition = readdir ($devdir))) { + next if $partition eq "."; + next if $partition eq ".."; + next unless -d "$blockPath/$entry/$partition"; + + # there can be subdirectories in a blockdev + # other than partitions; eg /sys/block/sda/queue. + # a partition has major:minor, so has a dev file. + next unless -f "$blockPath/$entry/$partition/dev"; + + onePartition($blockPath, $entry, $partition, $descr); + } + if (! closedir ($devdir)) { + Base::fatal ("could not read directory $blockPath/$entry"); + } +} + +sub onePartition ($$$$) { + my ($blockPath, $entry, $partition, $parent) = @_; + my $dev = Base::getStringFile("$blockPath/$entry/$partition/dev"); + if (exists ($abdTab->{$dev})) { + Base::fatal ("found duplicate devno in $blockPath/$entry/$partition"); + } + $abdTab->{$dev} = ActiveBlockDev->new ( + name => $partition, + devno => $dev, + parent => $parent, + hw => undef, + ); +} + +# +# all -- return list of all known active block devices. +# +sub all () { + init; + return $abdList; +} + +# +# findByDevno -- given devno in format maj:min, +# return corresponding descriptor or undef. +# +sub findByDevno ($) { + my ($devno) = @_; + init; + return $abdTab->{$devno}; +} + +# +# findByPath -- given path to block device file in /dev, +# return corresponding descriptor or undef. +# +sub findByPath ($) { + my ($path) = @_; + my $devno = Base::devno ($path); + if (! defined ($devno)) { + return undef; + } + return findByDevno ($devno); +} + +1; diff --git a/rescue/linux/cdrom/yaird-0.0.5/perl/Base.pm b/rescue/linux/cdrom/yaird-0.0.5/perl/Base.pm new file mode 100644 index 0000000..f8aa4c0 --- /dev/null +++ b/rescue/linux/cdrom/yaird-0.0.5/perl/Base.pm @@ -0,0 +1,299 @@ +#!perl -w +# +# Base -- support stuff +# Copyright (C) 2005 Erik van Konijnenburg +# +# 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 +# +# setProgName -- what label to use in further messages. +# setVerbose -- if true, print info +# setDebug -- if true, print info and debug +# setQuiet -- if true, don't print warnings +# +# debug -- irritating noise +# info -- reassuring noise +# warning -- not good, but processing continues, exit status unaffected +# error -- not good, processing continues, exit status non-zero, +# program should not make changes to environment +# such as writing output files. +# fatal -- not good, exit immediately with non-zero status. +# bug -- fatal error in the program, not environment. +# assert -- if condition not met, it's a bug. +# bye -- exit now. +# +# Also routines to +# - read content of one-line files +# - get device number from block or character device files +# - interpret symbolic links +# - interpret pathnames +# +use strict; +use warnings; +package Base; + + +my $progName = "[app]"; +sub setProgName ($) { $progName = $_[0]; } + +my $verbose = 0; +sub setVerbose ($) { $verbose = $_[0]; } + +my $debug = 0; +sub setDebug ($) { $debug = $_[0]; } + +my $quiet = 0; +sub setQuiet ($) { $quiet = $_[0]; } + + +my $exitCode = 0; + + +sub debug ($) { + my $msg = shift; + if ($debug) { + print "$progName:D: $msg\n"; + } +} + +sub info ($) { + my $msg = shift; + if ($verbose || $debug) { + print "$progName: $msg\n"; + } +} + +sub warning ($) { + my $msg = shift; + if (! $quiet) { + print STDERR "$progName warning: $msg\n"; + } +} + +sub error ($) { + my $msg = shift; + print STDERR "$progName error: $msg\n"; + $exitCode = 1; + +} + +sub fatal ($) { + my $msg = shift; + error ($msg . " (fatal)"); + bye(); +} + +sub bug ($) { + my $msg = shift; + my ($package, $file, $line) = caller; + fatal ($msg . " (internal $file:$line)"); +} + +sub assert ($) { + my $cond = shift; + my ($package, $file, $line) = caller; + if (! $cond) { + fatal ("assert failed (internal $file:$line)"); + } +} + +sub bye () { + exit ($exitCode); +} + + +# +# getStringFile -- return contents of a file that must contain +# a single line, dropping optional trailing space, or die. +# +sub getStringFile ($) { + my ($filename) = @_; + if (! open (F, "<", "$filename")) { + Base::fatal ("can't open $filename"); + } + my $line = ; + if (! defined ($line)) { + Base::fatal ("empty file $filename"); + } + chomp $line; + if (defined ()) { + Base::fatal ("extra lines in $filename"); + } + if (! close (F)) { + Base::fatal ("could not read $filename"); + } + return $line; +} + + +# +# getHexFile -- given path to file, return content interpreted as hex number. +# +sub getHexFile ($) { + my ($filename) = @_; + my $content = getStringFile ($filename); + if ($content !~ /^(0x)?[0-9a-fA-F]+$/) { + fatal ("not a hex file: $filename"); + } + return hex($content); +} + + +# +# devno -- given pathname to a device, return "maj:min" or undef. +# symlinks are resolved implicitly. +# +sub devno ($) { + my ($path) = @_; + if ( ! (-b $path || -c _)) { + return undef; + } + + my @fields = stat _; + if ($#fields != 12) { + Base::fatal ("stat failed on device $path"); + } + # from 2.6.10-rc2, kdev.h, backward compatible. + my $devno = $fields[6]; + my $major = ($devno & 0xfff00) >> 8; + my $minor = ($devno & 0xff) | (($devno >> 12) & 0xfff00); + return "$major:$minor"; +} + + +# +# expandLink -- given a path to a symlink file, +# return a path to what it points to. +# +sub expandLink ($) { + my ($path) = @_; + Base::assert (-l $path); + my $target = readlink("$path"); + + if (isAbsolute ($target)) { + return canon ($target); + } + my $base = dirname ($path); + return canon ("$base/$target"); +} + + +# +# isAbsolute -- given a path, return true iff it starts at root. +# +sub isAbsolute ($) { + my ($path) = @_; + return $path =~ /^\//; +} + + +# +# canon -- given path, return copy with redundant stuff removed. +# +sub canon ($) { + my ($path) = @_; + + if ($path eq '') { + $path = '.'; + } + if ($path =~ m![^/]/+$!) { + # drop trailing slashes, except in path like //// + $path =~ s!/+$!!; + } + + # iterate over components (ignoring duplicate slashes) + # interpret a null list as 'current directory' + # interpret a leading '' in list as absolute path + # . can be dropped + # .. causes dropping of last element of list, but: + # (1) /.. => / + # (2) ../.. is not dropped. + # (3) ./.. => .. + my @result = (); + for my $component (split (/\/+/, $path)) { + if ($component eq '.') { + next; + } + elsif ($component eq '..') { + if ($#result == -1) { + push @result, '..'; + } + elsif ($#result == 0 && $result[0] eq '') { + next; + } + elsif ($result[$#result] eq '..') { + push @result, '..'; + } + else { + pop @result; + } + } + else { + push @result, $component; + } + } + if ($#result == -1) { + return "."; + } + elsif ($#result == 0 && $result[0] eq '') { + return '/'; + } + else { + return join ('/', @result); + } +} + + +# +# basename -- given path, return final component of canonified path +# +sub basename ($) { + my ($path) = @_; + my $t = canon ($path); + if ($t =~ m!.*/([^/]+)$!) { + # something is after the slash, + # the simple case + return $1; + } + elsif ($t !~ m!/!) { + # basename aap => aap + return $t; + } + else { + return '/'; + } +} + + +# +# dirname -- given path, return all but final component of canonified path +# +sub dirname ($) { + my ($path) = @_; + my $t = canon ($path); + if ($t =~ m!(.+)/[^/]+$!) { + # something before and after the slash + return $1; + } + elsif ($t !~ m!/!) { + # dirname aap => . + # but also dirname .. => . + return '.'; + } + else { + return '/'; + } +} + +1; diff --git a/rescue/linux/cdrom/yaird-0.0.5/perl/Blacklist.pm b/rescue/linux/cdrom/yaird-0.0.5/perl/Blacklist.pm new file mode 100644 index 0000000..9da5377 --- /dev/null +++ b/rescue/linux/cdrom/yaird-0.0.5/perl/Blacklist.pm @@ -0,0 +1,100 @@ +#!perl -w +# +# Blacklist -- encapsulate /etc/hotplug/blacklist +# Copyright (C) 2005 Erik van Konijnenburg +# +# 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 +# +# isBlacklisted -- module occurs in one of the hotplug blacklists. +# normalise underscore to hyhpen before comparing. +# + +use strict; +use warnings; +use Base; +use Conf; +package Blacklist; + +my $blackMap = undef; +my $blackList = undef; + +sub init () { + if (defined ($blackList)) { + return; + } + my $blackMap = {}; + my $hotplugDir = Conf::get ('hotplug'); + parseBlackList ("$hotplugDir/blacklist"); + + my $dir; + my $dirName = "$hotplugDir/blacklist.d"; + if (-d $dirName) { + # blacklist.d does not have to exist (Debian + # has it, Fedora not), but if it exists, + # it must be readable. + if (! opendir ($dir, $dirName)) { + Base::fatal ("can't open directory $dirName"); + } + while (defined(my $entry = readdir($dir))) { + if ( -f "$dirName/$entry" ) { + parseBlackList ("$dirName/$entry"); + } + } + if (! closedir ($dir)) { + Base::fatal ("could not read directory $dirName"); + } + } + + my $blackList = [ keys %{$blackMap} ]; +} + +sub parseBlackList ($) { + my ($fileName) = @_; + if (! open (IN, "<", "$fileName")) { + Base::fatal ("can't open blacklist $fileName"); + } + while (defined (my $line = )) { + chomp $line; + $line =~ s/#.*//; + $line =~ s/^\s+//; + $line =~ s/\s+$//; + $line =~ s/_/-/g; + if ($line eq "") { + next; + } + if ($line !~ /^[a-zA-Z0-9-]+$/) { + Base::fatal ("bad line in blacklist $fileName: $line"); + } + $blackMap->{$line}++; + } + if (! close (IN)) { + Base::fatal ("could not read blacklist $fileName"); + } +} + +sub all () { + init; + return $blackList; +} + +sub isBlacklisted ($) { + my ($module) = @_; + init; + $module =~ s/_/-/g; + return exists ($blackMap->{$module}); +} + + +1; diff --git a/rescue/linux/cdrom/yaird-0.0.5/perl/BlockSpecialFile.pm b/rescue/linux/cdrom/yaird-0.0.5/perl/BlockSpecialFile.pm new file mode 100644 index 0000000..2bda007 --- /dev/null +++ b/rescue/linux/cdrom/yaird-0.0.5/perl/BlockSpecialFile.pm @@ -0,0 +1,45 @@ +#!perl -w +# +# BlockSpecialFile -- descriptor for single block special file found in /dev +# Copyright (C) 2005 Erik van Konijnenburg +# +# 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 +# +# this can be a whole device or a partition. Descriptors contain: +# - path, path as found in /dev +# - devno, eg 8:1 +# +use strict; +use warnings; +package BlockSpecialFile; +use base 'Obj'; + +sub fill { + my $self = shift; + $self->SUPER::fill(); + $self->takeArgs ('path', 'devno'); +} + +sub devno { return $_[0]->{devno}; } +sub path { return $_[0]->{path}; } + +sub string { + my $self = shift; + my $path = $self->path; + my $devno = $self->devno; + return "$path($devno)"; +} + +1; diff --git a/rescue/linux/cdrom/yaird-0.0.5/perl/BlockSpecialFileTab.pm b/rescue/linux/cdrom/yaird-0.0.5/perl/BlockSpecialFileTab.pm new file mode 100644 index 0000000..f10cc4c --- /dev/null +++ b/rescue/linux/cdrom/yaird-0.0.5/perl/BlockSpecialFileTab.pm @@ -0,0 +1,101 @@ +#!perl -w +# +# BlockSpecialFileTab -- block special files found in /dev +# Copyright (C) 2005 Erik van Konijnenburg +# +# 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 +# +# This provides access to a table of descriptors, each containing +# path and devno. +# +# findByDevno -- find a descriptor with devno (there may be others) +# all -- list of all descriptors (may have duplicate devnos) +# +use strict; +use warnings; +use Conf; +use BlockSpecialFile; +package BlockSpecialFileTab; + + +my $bsfTab = undef; +my $bsfList = undef; + + +sub walkBlockSpecialFiles ($); + +sub init () { + if (defined ($bsfTab)) { + return; + } + $bsfTab = {}; + my $devDir = Conf::get('dev'); + walkBlockSpecialFiles ($devDir); + $bsfList = [ values %{$bsfTab} ]; +} + +sub walkBlockSpecialFiles ($) { + my ($dirName) = @_; + my $dir; + if (! opendir ($dir, $dirName)) { + Base::fatal ("can't open directory $dirName"); + } + while (defined(my $entry = readdir($dir))) { + next if $entry eq "."; + next if $entry eq ".."; + my $path = "$dirName/$entry"; + if (-l $path) { + next; + } + elsif (-b _) { + my $devno = Base::devno ($path); + + # this may overwrite earlier entries; + # unimportant since both pathnames + # access the same device. + $bsfTab->{$devno} = BlockSpecialFile->new( + path => $path, + devno => $devno); + } + elsif (-d _) { + walkBlockSpecialFiles ($path); + } + } + if (! closedir ($dir)) { + Base::fatal ("could not read directory $dirName"); + } +} + + +# +# findByDevno -- return a working path given major:minor or undef. +# Note that there may be other files accessing the same device. +# +sub findByDevno ($) { + my ($devno) = @_; + init; + return $bsfTab->{$devno}; +} + +# +# all -- return list of all descriptors. +# +sub all () { + init; + return $bsfList; +} + + +1; diff --git a/rescue/linux/cdrom/yaird-0.0.5/perl/Conf.pm b/rescue/linux/cdrom/yaird-0.0.5/perl/Conf.pm new file mode 100644 index 0000000..9e79201 --- /dev/null +++ b/rescue/linux/cdrom/yaird-0.0.5/perl/Conf.pm @@ -0,0 +1,95 @@ +#!perl -w +# +# Conf -- configured path names and such. +# Copyright (C) 2005 Erik van Konijnenburg +# +# 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 +# +# You can get and set configuration items by name, +# with the following restrictions: +# - only get and set known keys +# - after first get, no further set is allowed. +# +# Defaults are packaged as subs, so that you can change +# one setting and have the change ripple through in other +# settings. +# +use strict; +use warnings; +use Base; +package Conf; + +sub get($); + +# +# Default values for configuration; if there is no default, +# it's not a known parameter, and you cannot modify it. +# +my $defaults = { + version => sub { my $v = `uname -r`; chomp $v; $v; }, + libModules => sub { "/lib/modules"; }, + kernConf => sub { "/boot/config-" + . get('version'); }, + modDep => sub { get('libModules') + . '/' . get('version') + . '/modules.dep'; }, + usbMap => sub { get('libModules') + . '/' . get('version') + . '/modules.usbmap'; }, + pciMap => sub { get('libModules') + . '/' . get('version') + . '/modules.pcimap'; }, + modDir => sub { get('libModules') + . '/' . get('version') + . '/kernel'; }, + sysFs => sub { "/sys"; }, + procFs => sub { "/proc"; }, + #delete next 2? + sysBlock => sub { get ('sysFs') . "/block"; }, + sysDevices => sub { get ('sysFs') . "/devices"; }, + dev => sub { "/dev"; }, + fstab => sub { "/etc/fstab"; }, + hotplug => sub { "/etc/hotplug"; }, + appVersion => sub { "0.0.5"; }, + auxDir => sub { "/usr/local/lib/yaird/exec"; }, +}; + + +my $overrides = {}; # config values where default is overridden, + # presumably via command line. +my $used = {}; # if a key exists, the config value has + # been used, and it no longer can be changed. + +sub get ($) { + my ($key) = @_; + my $dflt = $defaults->{$key}; + Base::assert (defined ($dflt)); + $used->{$key}++; + my $ovr = $overrides->{$key}; + if (defined ($ovr)) { + return $ovr; + } + return &{$dflt}(); +} + +sub set ($$) { + my ($key, $value) = @_; + my $dflt = $defaults->{$key}; + Base::assert (defined ($dflt)); + Base::assert (! defined ($used->{$key})); + $overrides->{$key} = $value; +} + +1; diff --git a/rescue/linux/cdrom/yaird-0.0.5/perl/Conf.pm.in b/rescue/linux/cdrom/yaird-0.0.5/perl/Conf.pm.in new file mode 100644 index 0000000..fbe5281 --- /dev/null +++ b/rescue/linux/cdrom/yaird-0.0.5/perl/Conf.pm.in @@ -0,0 +1,95 @@ +#!perl -w +# +# Conf -- configured path names and such. +# Copyright (C) 2005 Erik van Konijnenburg +# +# 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 +# +# You can get and set configuration items by name, +# with the following restrictions: +# - only get and set known keys +# - after first get, no further set is allowed. +# +# Defaults are packaged as subs, so that you can change +# one setting and have the change ripple through in other +# settings. +# +use strict; +use warnings; +use Base; +package Conf; + +sub get($); + +# +# Default values for configuration; if there is no default, +# it's not a known parameter, and you cannot modify it. +# +my $defaults = { + version => sub { my $v = `uname -r`; chomp $v; $v; }, + libModules => sub { "/lib/modules"; }, + kernConf => sub { "/boot/config-" + . get('version'); }, + modDep => sub { get('libModules') + . '/' . get('version') + . '/modules.dep'; }, + usbMap => sub { get('libModules') + . '/' . get('version') + . '/modules.usbmap'; }, + pciMap => sub { get('libModules') + . '/' . get('version') + . '/modules.pcimap'; }, + modDir => sub { get('libModules') + . '/' . get('version') + . '/kernel'; }, + sysFs => sub { "/sys"; }, + procFs => sub { "/proc"; }, + #delete next 2? + sysBlock => sub { get ('sysFs') . "/block"; }, + sysDevices => sub { get ('sysFs') . "/devices"; }, + dev => sub { "/dev"; }, + fstab => sub { "/etc/fstab"; }, + hotplug => sub { "/etc/hotplug"; }, + appVersion => sub { "@VERSION@"; }, + auxDir => sub { "@AUXDIR@"; }, +}; + + +my $overrides = {}; # config values where default is overridden, + # presumably via command line. +my $used = {}; # if a key exists, the config value has + # been used, and it no longer can be changed. + +sub get ($) { + my ($key) = @_; + my $dflt = $defaults->{$key}; + Base::assert (defined ($dflt)); + $used->{$key}++; + my $ovr = $overrides->{$key}; + if (defined ($ovr)) { + return $ovr; + } + return &{$dflt}(); +} + +sub set ($$) { + my ($key, $value) = @_; + my $dflt = $defaults->{$key}; + Base::assert (defined ($dflt)); + Base::assert (! defined ($used->{$key})); + $overrides->{$key} = $value; +} + +1; diff --git a/rescue/linux/cdrom/yaird-0.0.5/perl/FsEntry.pm b/rescue/linux/cdrom/yaird-0.0.5/perl/FsEntry.pm new file mode 100644 index 0000000..8d8a43f --- /dev/null +++ b/rescue/linux/cdrom/yaird-0.0.5/perl/FsEntry.pm @@ -0,0 +1,101 @@ +#!perl -w +# +# FsEntry -- encapsulate a single entry in /etc/fstab +# Copyright (C) 2005 Erik van Konijnenburg +# +# 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 +# +use strict; +use warnings; +use LabeledPartitionTab; +package FsEntry; +use base 'Obj'; + +sub fill { + my $self = shift; + $self->SUPER::fill(); + $self->takeArgs ('dev', 'mnt', 'type', 'opts'); +} + +sub dev { return $_[0]->{dev}; } +sub mnt { return $_[0]->{mnt}; } +sub type { return $_[0]->{type}; } +sub opts { return $_[0]->{opts}; } + +sub string { + my $self = shift; + my $dev = $self->dev(); + my $mnt = $self->mnt(); + my $type = $self->type(); + my $opts = $self->opts()->string(); + return "$mnt at $dev ($type) with $opts"; +} + + +# +# isRequiredAtBoot -- To be mounted at boot time with mount -a. +# This does not imply the initrd should already mount it. +# +sub isRequiredAtBoot { + my $self = shift; + return 0 if ($self->type eq "ignore"); + return 0 if ($self->opts->exists("noauto")); + return 1; +} + + +# +# blockDevPath -- return blockdev pathname for an fstab entry. +# must resolve LABEL= and UUID=. Note that LVM and raid devices +# may be implemented on top of multiple other devices; this returns +# only the top device. +# +# Returns undef if first field of fstab entry does not point to +# an existing block device. Possible reasons: +# - filesystem does not have underlying device, such as /proc. +# - filesystem has a non-file underlying resource, such as NFS +# - garbage line with missing blockdev +# - filesystem has a plain file as underlying resource; +# this can be a loopback file system, or swap to plain file. +# +# NOTE: We should support the last case, but for now that's too difficult: +# imagine /a/b/c, where /a is reiserfs, b is a symlink to /d (an NFS +# filesystem), and /d/c is a symlink to /e/f, where /e is a ramdisk.) +# +sub blockDevPath { + my $self = shift; + my $dev = $self->dev(); + if ($dev =~ /^\//) { + if (-f $dev && $self->opts->exists('loop')) { + return undef; + } + if (-f $dev && $self->type eq "swap") { + return undef; + } + if (-b $dev) { + return $dev; + } + } + elsif ($dev =~ /^LABEL=(.*)/) { + return LabeledPartitionTab::findPathByLabel ($1); + } + elsif ($dev =~ /^UUID=(.*)/) { + return LabeledPartitionTab::findPathByUuid ($1); + } + return undef; +} + + +1; diff --git a/rescue/linux/cdrom/yaird-0.0.5/perl/FsOpts.pm b/rescue/linux/cdrom/yaird-0.0.5/perl/FsOpts.pm new file mode 100644 index 0000000..b40fb0e --- /dev/null +++ b/rescue/linux/cdrom/yaird-0.0.5/perl/FsOpts.pm @@ -0,0 +1,107 @@ +#!perl -w +# +# FsOpts -- encapsulate the options in an FsEntry +# Copyright (C) 2005 Erik van Konijnenburg +# +# 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 +# +use strict; +use warnings; +package FsOpts; +use base 'Obj'; + + +sub fill { + my $self = shift; + $self->SUPER::fill(); + + $self->takeArgs ('string'); + my @optlist = split (/,/, $self->{string}); + my $opthash = {}; + for my $opt (@optlist) { + if ($opt =~ /^(.*)=(.*)$/) { + $opthash->{$1} = $2; + } + else { + $opthash->{$opt} = undef; + } + } + $self->{optsHash} = $opthash; +} + +# +# exists -- the option occurs, possibly with undef value. +# +sub exists { + my ($self, $optnam) = @_; + return exists ($self->{optsHash}{$optnam}); +} + +sub get { + my ($self, $optnam) = @_; + return $self->{optsHash}{$optnam}; +} + +sub string { + my $self = shift; + my $opts = $self->{optsHash}; + my @optlist = (); + for my $key (sort keys %{$opts}) { + push @optlist, ("$key=" . ($opts->{$key} or "-")); + } + return join (',', @optlist); +} + + +# +# cmdLineVersion -- return a version of all options suitable for +# a mount command line. +# Note that some options in fstab can only be used in fstab, +# not in scripts. +# +sub cmdLineVersion { + my $self = shift; + my $opts = $self->{optsHash}; + + my @cmdLine = (); + for my $key (sort keys %{$opts}) { + next if $key eq 'auto'; + next if $key eq 'noauto'; + next if $key eq 'nouser'; + next if $key eq 'owner'; + next if $key eq 'user'; + next if $key eq 'users'; + next if $key eq 'defaults'; + my $val = $opts->{$key}; + if (defined ($val)) { + push @cmdLine, "$key=$val"; + } + else { + push @cmdLine, "$key"; + } + } + if ($#cmdLine == -1) { + return ""; + } + else { + # protect against logdev=John's disk. + my $cmdLine = join (',', @cmdLine); + $cmdLine =~ s/(['\\])/\\$1/g; + return "-o '$cmdLine'"; + } +} + +1; + diff --git a/rescue/linux/cdrom/yaird-0.0.5/perl/FsTab.pm b/rescue/linux/cdrom/yaird-0.0.5/perl/FsTab.pm new file mode 100644 index 0000000..257551b --- /dev/null +++ b/rescue/linux/cdrom/yaird-0.0.5/perl/FsTab.pm @@ -0,0 +1,121 @@ +#!perl -w +# +# FsTab -- encapsulate /etc/fstab. +# Copyright (C) 2005 Erik van Konijnenburg +# +# 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 +# +use strict; +use warnings; +use Base; +use Conf; +use FsOpts; +use FsEntry; +package FsTab; + + +my $fsTab = undef; + + +sub init () { + if (defined ($fsTab)) { + return; + } + $fsTab = []; + my $name = Conf::get('fstab'); + if (! open (IN, "<", "$name")) { + Base::fatal ("can't read $name"); + } + while (defined (my $line = )) { + $line =~ s/^\s+//; + next if $line =~ /^#/; # comment line + next if $line eq ""; # empty line + my @fields = split (/\s+/, $line, 999); + if ($#fields < 6) { + # no test for extra fields; + # the mount command allows that. + Base::fatal ("malformed line in $name"); + } + if ($fields[2] eq "swap") { + if (($fields[1] ne "none") &&($fields[1] ne "swap")) { + Base::fatal ("bad swap entry in $name"); + } + } + + my $opts = FsOpts->new ( + string => unmangle($fields[3])); + + my $descr = FsEntry->new( + dev => unmangle($fields[0]), + mnt => unmangle($fields[1]), + type => unmangle($fields[2]), + opts => $opts, + ); + push @{$fsTab}, $descr; + } + if (! close (IN)) { + Base::fatal ("could not read $name"); + } +} + +sub all () { + init; + return $fsTab; +} + +sub findByMountPoint ($) { + my ($mnt) = @_; + my $result; + for my $entry (@{FsTab::all()}) { + if ($entry->mnt() eq $mnt) { + if (defined ($result)) { + Base::fatal ("duplicate mount point in fstab $mnt"); + } + $result = $entry; + } + } + if (! defined ($result)) { + Base::fatal ("mount point not in fstab: $mnt"); + } + return $result; +} + +sub findByDevName ($) { + my ($dev) = @_; + my $result; + for my $entry (@{FsTab::all()}) { + if ($entry->dev() eq $dev) { + if (defined ($result)) { + Base::fatal ("duplicate device name in fstab: $dev"); + } + $result = $entry; + } + } + if (! defined ($result)) { + Base::fatal ("device name not in fstab: $dev"); + } + return $result; +} + +# replace octal escapes +sub unmangle ($) { + my ($string) = @_; + while ($string =~ /\\([0-7]{3})/) { + $string = $` . chr (oct ($1)) . $'; + } + return $string; +} + +1; diff --git a/rescue/linux/cdrom/yaird-0.0.5/perl/Hardware.pm b/rescue/linux/cdrom/yaird-0.0.5/perl/Hardware.pm new file mode 100644 index 0000000..adb0551 --- /dev/null +++ b/rescue/linux/cdrom/yaird-0.0.5/perl/Hardware.pm @@ -0,0 +1,218 @@ +#!perl -w +# +# Hardware -- find modules for a thingy in /devices. +# Copyright (C) 2005 Erik van Konijnenburg +# +# 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 +# +# +# Method: walk up the path, and for everything you recognise, +# prepend the appropriate module. +# As an example, for a usb-stick connected via a hub to a pci card, +# you'l need usb-storage, a usb protocol driver, and some usb module. +# +use strict; +use warnings; +use Conf; +use IdeDev; +use ScsiDev; +use PciDev; +use PciTab; +use UsbDev; +use UsbTab; +package Hardware; + + +sub moduleList ($) { + my ($path) = @_; + my $result = []; + my @components = split (/\/+/, $path); + my $devicesPath = Conf::get ('sysDevices'); + for my $i (0 .. $#components) { + my $abspath = $devicesPath + . "/" . join ('/', @components[0 .. $i]); + my $modules = undef; + if ($abspath =~ m!/pci[0-9a-f]{4}:[0-9a-f]{2}$!) { + # PCI bus; harmless + } + elsif (-f "$abspath/subsystem_vendor") { + # PCI function on a slot. + my $dev = PciDev->new (path => $abspath); + $modules = PciTab::find ($dev); + push @{$modules}, @{addPciSiblings ($abspath)}; + } + + elsif (-f "$abspath/bDeviceClass" + || -f "$abspath/bInterfaceClass") + { + # + # USB. Every component in the path + # "usb1/1-4/1-4.4/1-4.4:1.0" has either + # a deviceClass or interfaceClass attribute. + # + my $dev = UsbDev->new (path => $abspath); + $modules = UsbTab::find ($dev); + } + + elsif ($abspath =~ m!/ide\d+$!) { + # IDE bus; harmless + } + elsif ($abspath =~ m!/ide\d+/\d+\.\d+$!) { + # IDE device + my $dev = IdeDev->new (path => $abspath); + $modules = IdeDev::findModuleByIdeDev ($dev); + } + + elsif ($abspath =~ m!/host\d+$!) { + # grouping of SCSI devices; harmless. + } + elsif ($abspath =~ m!/target\d+:\d+:\d+$!) { + # grouping of SCSI devices within a host + # (2.6.10 and later); harmless. + } + elsif ($abspath =~ m!/\d+:\d+:\d+:\d+$! + && -f "$abspath/scsi_level") + { + my $dev = ScsiDev->new (path => $abspath); + $modules = ScsiDev::findModuleByScsiDev ($dev); + } + + else { + # NOTE: We may want to avoid duplicate messages + Base::warning ("unrecognised device: $abspath"); + } + + if (defined ($modules)) { + push @{$result}, @{$modules}; + } + } + return $result; +} + + +# +# addPciSiblings -- probably a bug. +# +# Here's something odd: my test machine has an USB keyboard, connected +# via PCI. The same 8 ports are visible both as one 8-port EHCI +# controller and four 2-port UHCI controllers. The difference is not +# in the hardware, only in the protocol used to talk to the remote device. +# These are different PCI functions (0..7) in the same PCI slot (1d): +# 0000:00:1d.0 USB Controller: Intel ... USB UHCI #1 (rev 03) +# 0000:00:1d.1 USB Controller: Intel ... USB UHCI #2 (rev 03) +# 0000:00:1d.2 USB Controller: Intel ... USB UHCI #3 (rev 03) +# 0000:00:1d.3 USB Controller: Intel ... USB UHCI #4 (rev 03) +# 0000:00:1d.7 USB Controller: Intel ... USB2 EHCI Controller (rev 03) +# +# The keyboard shows up under the EHCI controller, a printer shows up +# under one of the UHCI controllers. +# If we load only the EHCI module, the UHCI-only printer causes some +# complaints, and the keyboard is not detected (unless you try to +# debug this via a serial line ...) +# If you load UHCI as well, the keyboard is detected flawlessly. +# +# We could interpret this as a bug in EHCI, and claim that a non-EHCI +# device on one of the ports should not interfere with detecting devices +# on other ports, but it's more productive to see this as an example of +# how some PCI devices work better if there's a driver for every +# function in the slot. +# +# (Or you could just add a special case to always add an UHCI driver +# after EHCI, but then you would have to consider OHCI as well, plus +# think about blacklisting and competing USB driver implementations. +# I'd rather not go there.) +# +# The kernel function pci_setup_device() uses the following format +# for PCI function directories in sysfs: +# "%04x:%02x:%02x.%d", domain, bus, slot, function. +# +# Given an absolute path to a PCI function directory, return a list +# of modules needed for all USB functions *except* the one specified by +# the path, but only if the path refers to a USB function. +# +# Limiting this behaviour to USB functions alone is desirable, given +# the existence of chips such as VT8366/A/7, that combine ISA, IDE, +# USB and multimedia in a single PCI slot. +# +sub addPciSiblings ($) { + my ($abspath) = @_; + my $modules = []; + if (! isUsb ($abspath)) { + return $modules; + } + + my $dirName = Base::dirname ($abspath); + my $cur = Base::basename ($abspath); + + if ($cur !~ /^([0-9a-f]{4}):([0-9a-f]{2}):([0-9a-f]{2})\.(\d)$/) { + Base::fatal ("Odd PCI directory in sysfs: $abspath"); + } + my $domain = $1; + my $bus = $2; + my $slot = $3; + my $function = $4; + + #print "D $dirName, B $cur, d $domain b $bus s $slot f $function\n"; + my $dir; + if (! opendir ($dir, $dirName)) { + Base::fatal ("can't open directory $dirName"); + } + while (defined(my $entry = readdir($dir))) { + if ($entry !~ /^([0-9a-f]{4}):([0-9a-f]{2}):([0-9a-f]{2})\.(\d+)$/) { + next; + } + if (! ($1 eq $domain && $2 eq $bus && $3 eq $slot + && $4 ne $function)) + { + next; + } + + # OK, it's in my slot, and it isn't me. + # Add required modules if it's USB. + my $sibling = "$dirName/$entry"; + if (isUsb ($sibling)) { + my $dev = PciDev->new (path => $sibling); + push @{$modules}, @{PciTab::find ($dev)}; + } + } + if (! closedir ($dir)) { + Base::fatal ("could not read directory $dirName"); + } + return $modules; +} + +# +# isUsb -- given an absolute path into sysfs, true iff it controls a usb port. +# +sub isUsb ($) { + my ($abspath) = @_; + my $dir; + my $result = 0; + if (! opendir ($dir, $abspath)) { + Base::fatal ("can't open directory $abspath"); + } + while (defined(my $entry = readdir($dir))) { + if ($entry =~ /^usb\d+$/) { + $result = 1; + } + } + if (! closedir ($dir)) { + Base::fatal ("could not read directory $abspath"); + } + return $result; +} + +1; + diff --git a/rescue/linux/cdrom/yaird-0.0.5/perl/IdeDev.pm b/rescue/linux/cdrom/yaird-0.0.5/perl/IdeDev.pm new file mode 100644 index 0000000..7a4cf91 --- /dev/null +++ b/rescue/linux/cdrom/yaird-0.0.5/perl/IdeDev.pm @@ -0,0 +1,119 @@ +#!perl -w +# +# IdeDev -- probed values for an IDE device as found in /proc/ide +# Copyright (C) 2005 Erik van Konijnenburg +# +# 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 +# +# +# The probed values for an IDE device as found in /proc/ide, +# based on the name in /sys/devices/.../ideX/X.X/block. +# +# path - location in sysfs +# name - descriptive string, retrieved from device +# media - type of device: disk, tape, ... +# model - descriptive string, retrieved from device +# +# Background: hotplug is triggered when an IDE controller is +# found on for instance the PCI bus. The loaded module should +# be good enough to talk to the hardware, but that does not +# mean you can actually use it: you will also need something +# to use the hardware driver to send IDE commands over the +# IDE cable to the controller on the other end of the cable. +# Those commands also have to make sense: a disk controller +# uses a different set of IDE commands than an IDE tape controller. +# The ide-disk, ide-cdrom etc modules are the protocol drivers +# that handle this. +# +# The following detection is based on an ide.rc script by Marco d'Itri +# that was not included in hotplug. Note that some CDROMs may need +# ide-generic in addition to ide-cdrom to work; that can be considered +# a driver bug rather than a valid dependency. Note that there is discussion +# over whether ide-generic should grab otherwise unhandled IDE devices. +# - http://thread.gmane.org/gmane.linux.hotplug.devel/6003 +# - http://lists.debian.org/debian-kernel/2004/11/msg00218.html +# - http://www.ussg.iu.edu/hypermail/linux/kernel/0410.1/1452.html +# +# Hmm, via82cxxx (2.6.8) also needs ide-generic to load it seems. That could +# be because ide-generic contains a call to ide_probe_init() which is in +# the ide-core module. We'll add ide-generic as an extra with all IDE +# protocol modules. +# +use strict; +use warnings; +use Base; +use Conf; +package IdeDev; +use base 'Obj'; + +sub fill { + my $self = shift; + $self->SUPER::fill(); + $self->takeArgs ('path'); + my $path = $self->path; + my $link = readlink ("$path/block"); + if (! defined ($link)) { + Base::fatal ("no link to block device in $path"); + } + if ($link !~ m!.*/([^/]+)!) { + Base::fatal ("malformed link to block device in $path"); + } + my $name = $1; + my $ideDir = Conf::get('procFs') . "/ide"; + $self->{name} = $name; + $self->{media} = Base::getStringFile ("$ideDir/$name/media"); + $self->{model} = Base::getStringFile ("$ideDir/$name/model"); +} + +sub path { return $_[0]->{path}; } +sub name { return $_[0]->{name}; } +sub media { return $_[0]->{media}; } +sub model { return $_[0]->{model}; } + +sub string { + my $self = shift; + my $path = $self->path(); + my $name = $self->name(); + my $media = $self->media(); + my $model = $self->model(); + return "$name ($media) = $model at $path"; +} + + +# +# findModuleByIdeDev -- list of suitable IDE drivers; +# you need all of them. +# +sub findModuleByIdeDev ($) { + my ($ideDev) = @_; + my $media = $ideDev->media(); + my $driver; + $driver = "ide-disk" if ($media eq "disk"); + $driver = "ide-tape" if ($media eq "tape"); + $driver = "ide-cd" if ($media eq "cdrom"); + $driver = "ide-floppy" if ($media eq "floppy"); + my $result; + if (defined ($driver)) { + $result = [ "ide-generic", $driver ]; + } + else { + $result = [ "ide-generic" ]; + } + return $result; +} + + +1; + diff --git a/rescue/linux/cdrom/yaird-0.0.5/perl/Image.pm b/rescue/linux/cdrom/yaird-0.0.5/perl/Image.pm new file mode 100644 index 0000000..c14a794 --- /dev/null +++ b/rescue/linux/cdrom/yaird-0.0.5/perl/Image.pm @@ -0,0 +1,283 @@ +#!perl -w +# +# Image -- what should go on the initrd image +# Copyright (C) 2005 Erik van Konijnenburg +# +# 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 +# +use strict; +use warnings; +use SharedLibraries; +use File::Copy; +use Base; +package Image; +use base 'Obj'; + +sub fill { + my $self = shift; + $self->SUPER::fill(); + $self->{directories} = {}; + $self->{files} = {}; + $self->{devices} = {}; + $self->{symlinks} = {}; + $self->{scripts} = {}; +} + +# +# addFile -- mark listed file, it should be copied to image. +# If we add a symlink, make sure it stays a symlink in the target +# image, and that both link and target are included. This matters +# eg for LVM, that has lots of symlinks to a single executable, +# with behaviour determined by the name of the link. +# +sub addFile { + my ($self, $file) = @_; + Base::assert (Base::isAbsolute ($file)); + + # avoid problems with adding /lib/modules/. or + # distinguishing between /bin and //bin. + $file = Base::canon($file); + + $self->addParents ($file); + if (-l $file) { + if (! exists ($self->{symlinks}{$file})) { + # careful: in order to break loops, we must + # first mark the symlink, *then* follow it. + # We cannot warn, since we do not know whether + # the symlink was found in the course of symlink + # resolution, or whether multiple executables + # have the same symlink as a shared library. + # + # NOTE: Perhaps maintain an explicit stack of + # symlinks being resolved in order to be able + # to warn about loops? + # + my $link = readlink ($file); + if (! defined ($link)) { + Base::fatal ("could not follow symlink $file"); + } + if ($link !~ m!^([\w./-]+)$!) { + # taint check. + Base::fatal ("Strange character in symlink target for $file"); + } + $link = $1; + + Base::debug ("to image: $file (symlink)"); + $self->{symlinks}{$file} = $link; + my $target = Base::expandLink ($file); + $self->addFile ($target); + } + } + elsif (-b $file) { + my $devno = Base::devno ($file); + Base::debug ("to image: $file (blockdev)"); + $self->{devices}{$file} = "b:$devno"; + } + elsif (-c $file) { + my $devno = Base::devno ($file); + Base::debug ("to image: $file (chardev)"); + $self->{devices}{$file} = "c:$devno"; + } + elsif (-d $file) { + $self->addDirectory ($file); + } + elsif (-f $file) { + Base::debug ("to image: $file"); + $self->{files}{$file}++; + if (-x $file) { + $self->addLibraries ($file); + } + } + elsif (! -e $file) { + Base::fatal ("missing file requested for image: $file"); + } + else { + Base::fatal ("odd file mode: $file"); + } +} + + +# +# addDirectory -- add a directory to the image +# the difference with addFile ($dir) is that the directory +# does not have to exist on the mother system. +# +sub addDirectory { + my ($self, $directory) = @_; + Base::assert (Base::isAbsolute ($directory)); + + $self->addParents ($directory); + Base::debug ("to image: $directory (directory)"); + $self->{directories}{$directory}++; +} + + +# +# addParents -- given a pathname to be included on +# initrd image, ensure that parent directories are also created. +# +sub addParents { + my ($self, $path) = @_; + Base::assert (Base::isAbsolute ($path)); + + my @components = split (/\/+/, $path); + for my $idx (1 .. ($#components -1)) { + my $dir = join ('/', @components[0 .. $idx]); + $self->{directories}{$dir}++; + } +} + +# +# addTree -- add a tree to the image +# this is an existing file or directory with everything in it. +# NOTE: There's a trade-off here: it would be faster to defer walking +# the tree to the actual writing of the tree, but that would require +# duplicating the addFile checks on file type. 2.6.10 has 1700 files +# in /lib/modules; I expect the overhead to be acceptable. +# +sub addTree { + my ($self, $treeName) = @_; + + $self->addFile ($treeName); + if (-d $treeName && ! -l $treeName) { + my $dir; + if (! opendir ($dir, $treeName)) { + Base::fatal ("can't open directory $treeName"); + } + while (defined(my $entry = readdir($dir))) { + next if $entry eq "."; + next if $entry eq ".."; + my $path = "$treeName/$entry"; + $self->addTree ($path); + } + if (! closedir ($dir)) { + Base::fatal ("could not read directory $treeName"); + } + } +} + + +# +# addLibraries -- given an executable to be included on +# initrd image, ensure that shared libraries are also included. +# If the executable is a shell script or statically linked, +# nothing needs to be done. +# +sub addLibraries { + my ($self, $executable) = @_; + my $in; + + for my $lib (@{SharedLibraries::find ($executable)}) { + $self->addFile ($lib); + } +} + +# +# addScriptLine -- given scriptname and text, append text to the +# text to be included in script. +# +sub addScriptLine { + my ($self, $scriptname, $text) = @_; + Base::assert (Base::isAbsolute ($scriptname)); + + $self->addParents ($scriptname); + $self->{scripts}{$scriptname} .= "$text"; +} + + +# +# buildHere -- given pathname of a destination directory, +# create that directory, with all files and scripts prescribed +# by self in it. +# The top directory is expected to be created by File::Temp::tempfile. +# +sub buildHere { + my ($self, $dest) = @_; + + if (! -d $dest) { + Base::fatal ("Build directory not found: $dest"); + } + if (! chmod (0755, $dest)) { + Base::fatal ("Could not chmod $dest"); + } + + for my $d (sort keys %{$self->{directories}}) { + if (! mkdir ("$dest$d")) { + Base::fatal ("Could not mkdir $dest$d"); + } + if (! chmod (0755, "$dest$d")) { + Base::fatal ("Could not chmod $dest$d"); + } + } + + for my $f (sort keys %{$self->{files}}) { + if (! File::Copy::copy ($f, "$dest$f")) { + Base::fatal ("Could not copy $f to $dest$f"); + } + if (-x $f) { + if (! chmod (0555, "$dest$f")) { + Base::fatal ("Could not chmod 0555 $dest$f"); + } + } + else { + if (! chmod (0444, "$dest$f")) { + Base::fatal ("Could not chmod 0444 $dest$f"); + } + } + } + + for my $d (sort keys %{$self->{devices}}) { + my $typDevno = $self->{devices}{$d}; + if ($typDevno =~ /^(b|c):(\d+):(\d+)$/) { + # + # permission 0600 is restrictive but sufficient: + # the devices created here are used only by root + # on a temporary root, so we can get away with + # /dev/null mode 0600. More permissive modes + # risk ending up with a /dev/hda1 0666 somewhere + # in a temporary directory. + # + if (system ("/bin/mknod -m 0600 '$dest$d' $1 $2 $3") != 0) { + Base::fatal ("Could not mknod $dest$d $1 $2 $3"); + } + } + else { + Base::bug ("bad devno $typDevno for $d"); + } + } + + for my $l (sort keys %{$self->{symlinks}}) { + my $target = $self->{symlinks}{$l}; + if (! symlink ($target, "$dest/$l")) { + Base::fatal ("Could symlink $target $dest$l"); + } + } + + for my $scriptname (sort keys %{$self->{scripts}}) { + my $script = $self->{scripts}{$scriptname}; + if (!open (OUT, ">", "$dest$scriptname")) { + Base::fatal ("Can't create $dest$scriptname"); + } + print OUT "$script"; + if (!close (OUT)) { + Base::fatal ("Could not write $dest$scriptname"); + } + if (! chmod (0555, "$dest$scriptname")) { + Base::fatal ("Couldn't chmod 0555 $dest$scriptname"); + } + } +} + +1; diff --git a/rescue/linux/cdrom/yaird-0.0.5/perl/Input.pm b/rescue/linux/cdrom/yaird-0.0.5/perl/Input.pm new file mode 100644 index 0000000..20308ec --- /dev/null +++ b/rescue/linux/cdrom/yaird-0.0.5/perl/Input.pm @@ -0,0 +1,104 @@ +#!perl -w +# +# Input - a single device from the input layer +# Copyright (C) 2005 Erik van Konijnenburg +# +# 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 +# +# info - info provided by low level driver for module matching +# name - provided by driver +# phys - provided by driver, no relation to sysfs location +# handlers - input layer handlers +# capabilities - kind of events that can be generated +# hw - ... +# +# Handler 'kbd' indicates the device is used for console; +# there is also a generic handler for each device, event\d+, +# that may have a link to underlying sysfs device. +# Capability KEY indicates there are buttons, this includes +# both qwerty keys and the fire button on a joystick. +# + +use strict; +use warnings; +use Base; +use Conf; +package Input; +use base 'Obj'; + +sub fill { + my $self = shift; + $self->SUPER::fill(); + $self->takeArgs ('info', 'name', 'phys', 'handlers', 'capabilities'); + + # + # Find hardware link, if any. + # + $self->{hw} = undef; + for my $handler (keys %{$self->handlers}) { + if ($handler !~ /^event\d+$/) { + next; + } + my $devLink = Conf::get('sysFs') + . "/class/input/$handler/device"; + my $hw = readlink ($devLink); + if (defined ($hw)) { + unless ($hw =~ s!^(\.\./)+devices/!!) { + # imagine localised linux (/sys/geraete ...) + Base::fatal ("bad device link in $devLink"); + } + $self->{hw} = $hw; + } + } +} + +sub info { return $_[0]->{info}; } +sub name { return $_[0]->{name}; } +sub phys { return $_[0]->{phys}; } +sub handlers { return $_[0]->{handlers}; } +sub capabilities { return $_[0]->{capabilities}; } +sub hw { return $_[0]->{hw}; } + +sub string { + my $self = shift; + my $name = $self->name; + my $phys = $self->phys; + my $hw = $self->hw; + $hw = "--" unless defined $hw; + my $h = join (",", keys %{$self->handlers}); + my $c = join (",", keys %{$self->capabilities}); + my $kbd = $self->isKbd ? " (KBD)" : ""; + my $str = "$name is $phys at $hw [$h] [$c]$kbd"; + return $str; +} + +# +# isKbd -- device may be useful to get an operational keyboard. +# This is conservative: there are two input devices for a DELL USB +# keyboard for example, and we make no effort to determine if +# we can leave one of them out. +# +sub isKbd { + my $self = shift; + if (! exists ($self->capabilities->{KEY})) { + return 0; + } + if (! exists ($self->handlers->{kbd})) { + return 0; + } + return 1; +} + +1; diff --git a/rescue/linux/cdrom/yaird-0.0.5/perl/InputTab.pm b/rescue/linux/cdrom/yaird-0.0.5/perl/InputTab.pm new file mode 100644 index 0000000..78c2031 --- /dev/null +++ b/rescue/linux/cdrom/yaird-0.0.5/perl/InputTab.pm @@ -0,0 +1,99 @@ +#!perl -w +# +# InputTab -- encapsulate /proc/bus/input/devices +# Copyright (C) 2005 Erik van Konijnenburg +# +# 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 +# +# + +use strict; +use warnings; +use Base; +use Conf; +use Input; + +package InputTab; + +my $inputList = undef; + +sub init () { + if (defined ($inputList)) { + return; + } + $inputList = []; + my $name = Conf::get('procFs') . '/bus/input/devices'; + if (! open (IN, "<", "$name")) { + Base::fatal ("can't open $name"); + } + my $work = { + capabilities => {}, + }; + while (defined (my $line = )) { + chomp $line; + if ($line =~ /^I: (.*)$/) { + $work->{info} = $1; + } + elsif ($line =~ /^N: Name="(.*)"$/) { + $work->{name} = $1; + } + elsif ($line =~ /^P: Phys=(.*)$/) { + $work->{phys} = $1; + } + elsif ($line =~ /^H: Handlers=(.*)$/) { + my @handlers = split (/\s+/, $1); + $work->{handlers} = {}; + for my $h (@handlers) { + $work->{handlers}{$h}++; + } + } + elsif ($line =~ /^B: ([A-Z]+)=(.*)$/) { + $work->{capabilities}{$1} = $2; + } + elsif ($line =~ /^$/) { + if (! exists ($work->{info})) { + Base::fatal ("missing I: in $name"); + } + if (! exists ($work->{name})) { + Base::fatal ("missing N: in $name"); + } + if (! exists ($work->{phys})) { + Base::fatal ("missing P: in $name"); + } + if (! exists ($work->{handlers})) { + Base::fatal ("missing H: in $name"); + } + push @{$inputList}, Input->new (%{$work}); + $work = { + capabilities => {}, + }; + } + else { + Base::fatal ("unrecognised line in $name: $line"); + } + + } + if (! close (IN)) { + Base::fatal ("could not read $name"); + } +} + +sub all () { + init; + return $inputList; +} + + +1; diff --git a/rescue/linux/cdrom/yaird-0.0.5/perl/KConfig.pm b/rescue/linux/cdrom/yaird-0.0.5/perl/KConfig.pm new file mode 100644 index 0000000..ec740e3 --- /dev/null +++ b/rescue/linux/cdrom/yaird-0.0.5/perl/KConfig.pm @@ -0,0 +1,226 @@ +#!perl -w +# +# KConfig -- encapsulate kernel configuration file and builtin modules +# Copyright (C) 2005 Erik van Konijnenburg +# +# 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 +# +# +# KConfig is a mapping from kernel define symbol to value. +# Common values are 'y' (compiled in), 'm' modular. +# The "no" choice in kernel configuration is represented by absence of the +# symbol. Other values (for example decimal or hex numbers) also occur. +# +# We also maintain a list of known modules and corresponding kernel define. +# If the define is 'y', we need not load the corresponding module. +# This is not relevant to hardware (if a PCI controller is builtin, +# it will not occur in modules.pcimap, so no loading is attempted), +# but it does help with filesystems, where an 'ext3' line in /etc/fstab +# means the ext3 module needs to be loaded unless its compiled in. +# + +use strict; +use warnings; +use Base; +use Conf; +package KConfig; + +my $kConfMap = undef; +my $kConfList = undef; + +sub init () { + if (defined ($kConfMap)) { + return; + } + $kConfMap = {}; + my $name = Conf::get('kernConf'); + if (! open (IN, "<", "$name")) { + Base::fatal ("can't open kernel config file $name"); + } + while (defined (my $line = )) { + chomp $line; + $line =~ s/^\s+//; + $line =~ s/\s+$//; + $line =~ s/#.*//; + next if ($line eq ""); + + if ($line !~ /^([A-Z][A-Za-z0-9_]+)=(.+)$/) { + # lowercase is uncommon, but: CONFIG_SCx200=m + Base::fatal "bad line in $name: $line"; + } + my $key = $1; + my $value = $2; + if ($value eq 'y' + || $value eq 'm' + || $value =~ /^\d+$/ + || $value =~ /^0x[0-9a-f]+$/ + || $value =~ /^"[-a-z0-9._\/]*"$/ + ) { + $kConfMap->{$key} = $value; + } + else { + Base::fatal "bad value in $name: $line"; + } + } + if (! close (IN)) { + Base::fatal "could not read kernel config file $name"; + } + $kConfList = [ sort keys %{$kConfMap} ]; +} + +# +# Map module name to kernel define. Module names here +# must use hyphen, not underscore. +# +my $moduleMap = { + # user interface devices + fbcon => 'FRAMEBUFFER_CONSOLE', + vesafb => 'FB_VESA', + serio => 'SERIO', + i8042 => 'SERIO_I8042', + usbhid => 'USB_HID', + + # file systems + ext2 => 'EXT2_FS', + ext3 => 'EXT3_FS', + jbd => 'JBD', + reiserfs => 'REISERFS_FS', + jfs => 'JFS_FS', + xfs => 'XFS_FS', + minix => 'MINIX_FS', + romfs => 'ROMFS_FS', + isofs => 'ISO9660_FS', + udf => 'UDF_FS', + fat => 'FAT_FS', + msdos => 'MSDOS_FS', + vfat => 'VFAT_FS', + # broken, and nonmodular: umsdos => 'UMSDOS_FS', + ntfs => 'NTFS_FS', + adfs => 'ADFS_FS', + affs => 'AFFS_FS', + hfs => 'HFS_FS', + hfsplus => 'HFSPLUS_FS', + befs => 'BEFS_FS', + bfs => 'BFS_FS', + efs => 'EFS_FS', + jffs => 'JFFS_FS', + jffs2 => 'JFFS2_FS', + cramfs => 'CRAMFS', + freevxfs => 'VXFS_FS', + hpfs => 'HPFS_FS', + qnx4 => 'QNX4FS_FS', + sysv => 'SYSV_FS', + ufs => 'UFS_FS', + nfs => 'NFS_FS', + smbfs => 'SMB_FS', + cifs => 'CIFS', + ncpfs => 'NCP_FS', + coda => 'CODA_FS', + kafs => 'AFS_FS', + + # device mapper: raid and lvm. + linear => 'MD_LINEAR', + raid0 => 'MD_RAID0', + raid1 => 'MD_RAID1', + raid10 => 'MD_RAID10', + raid5 => 'MD_RAID5', + raid6 => 'MD_RAID6', + multipath => 'MD_MULTIPATH', + faulty => 'MD_FAULTY', + md => 'BLK_DEV_MD', + 'dm-mod' => 'BLK_DEV_DM', + 'dm-crypt' => 'DM_CRYPT', + 'dm-snapshot' => 'DM_SNAPSHOT', + 'dm-mirror' => 'DM_MIRROR', + 'dm-zero' => 'DM_ZERO', + + # crypto + hmac => 'CRYPTO_HMAC', + 'crypto-null' => 'CRYPTO_NULL', + md4 => 'CRYPTO_MD4', + md5 => 'CRYPTO_MD5', + sha1 => 'CRYPTO_SHA1', + sha256 => 'CRYPTO_SHA256', + sha512 => 'CRYPTO_SHA512', + wp512 => 'CRYPTO_WP512', + des => 'CRYPTO_DES', + blowfish => 'CRYPTO_BLOWFISH', + twofish => 'CRYPTO_TWOFISH', + serpent => 'CRYPTO_SERPENT', + aes => 'CRYPTO_AES', + cast5 => 'CRYPTO_CAST5', + cast6 => 'CRYPTO_CAST6', + arc4 => 'CRYPTO_ARC4', + tea => 'CRYPTO_TEA', + khazad => 'CRYPTO_KHAZAD', + anubis => 'CRYPTO_ANUBIS', + deflate => 'CRYPTO_DEFLATE', + 'michael-mic' => 'CRYPTO_MICHAEL_MIC', + crc32c => 'CRYPTO_CRC32C', + tcrypt => 'CRYPTO_TEST', + + # IDE + 'ide-generic' => 'IDE_GENERIC', + 'ide-disk' => 'BLK_DEV_IDEDISK', + 'ide-cd' => 'BLK_DEV_IDECD', + 'ide-tape' => 'BLK_DEV_IDETAPE', + 'ide-floppy' => 'BLK_DEV_IDEFLOPPY', + + # SCSI + 'sd-mod' => 'BLK_DEV_SD', + 'st' => 'CHR_DEV_ST', + 'sr-mod' => 'BLK_DEV_SR', + 'sg' => 'CHR_DEV_SG', +}; + + +# +# all -- return a list of all known configuration defines +# +sub all () { + init; + return $kConfList; +} + +# +# allKnownModules -- return list of all module names for +# which a corresponding kernel define is known. +# +sub allKnownModules () { + init; + return [ sort keys %{$moduleMap} ]; +} + +# +# isBuiltIn -- true if the module is known to be compiled +# into the kernel. +# +sub isBuiltIn ($) { + my ($module) = @_; + init; + $module =~ s!_!-!g; + my $confKey = $moduleMap->{$module}; + if (! defined ($confKey)) { + return 0; + } + my $confVal = $kConfMap->{"CONFIG_$confKey"}; + if (! defined ($confVal)) { + return 0; + } + return ($confVal eq 'y'); +} + +1; + diff --git a/rescue/linux/cdrom/yaird-0.0.5/perl/LabeledPartition.pm b/rescue/linux/cdrom/yaird-0.0.5/perl/LabeledPartition.pm new file mode 100644 index 0000000..8c9d8a5 --- /dev/null +++ b/rescue/linux/cdrom/yaird-0.0.5/perl/LabeledPartition.pm @@ -0,0 +1,152 @@ +#!perl -w +# +# LabeledPartition -- a partition with ext2 or other label. +# Copyright (C) 2005 Erik van Konijnenburg +# +# 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 +# +# descriptors contain: +# - label - string such as volume name for matching in /etc/fstab +# - uuid - similar but hex +# - path - the block special file where the label was found +# - type - what kind of superblock the label was found in. +# +# NOTE: consider delegating this whole mess to findfs from the +# e2fsprogs package. That package can probe for an extensive +# set of superblocks, knows about LVM, but does not make fs type +# information available via the command line. +# +use strict; +use warnings; +package LabeledPartition; +use base 'Obj'; + + +sub fill { + my $self = shift; + $self->SUPER::fill(); + $self->takeArgs ('label', 'uuid', 'path', 'type'); +} + +sub label { return $_[0]->{label}; } +sub uuid { return $_[0]->{uuid}; } +sub type { return $_[0]->{type}; } +sub path { return $_[0]->{path}; } + +sub string { + my $self = shift; + my $label = ($self->label or '-'); + my $uuid = ($self->uuid or '-'); + my $type = $self->type; + my $path = $self->path; + return "labeled($type) $label, $uuid at $path"; +} + + +# +# try -- return descriptor for labeled fs, or undef, +# trying a number of formats for superblock. +# +sub try ($) { + my ($path) = @_; + my $result = undef; + my $fh; + if (! open ($fh, "<", "$path")) { + return $result; + } + binmode ($fh); + $result = tryExt2 ($fh, $path) unless defined $result; + $result = tryReiser ($fh, $path) unless defined $result; + + # ignore errors, could not have been very wrong + # if a working superblock came out of it. + close ($fh); + return $result; +} + + +# +# lets hope the sysadm labeled it in ascii not utf8. +# based on util-linux-2.12h mount; they have lots of other +# superblocks to match. Later. +# +sub tryExt2 ($$) { + my ($fh, $path) = @_; + my $result = undef; + + if (! seek ($fh, 1024, 0)) { + return $result; + } + # undef on read error - is this worth a warning? + my $superBlock; + my $rc = read ($fh, $superBlock, 1024); + if (! defined ($rc) || $rc != 1024) { + return $result; + } + my ($magic, $uuid, $label) = + unpack + "x[56] v x[34] x[VVV] H[32] Z[16]", + $superBlock; + + if ($magic == 0xEF53) { + $uuid = fancyUuid ($uuid); + $result = LabeledPartition->new ( + type => "ext2", + label => $label, + uuid => $uuid, + path => $path, + ); + } + return $result; +} + +# fancyUuid - given a hex uuid, add hyphens at conventional place. +sub fancyUuid ($) { + my ($uuid) = @_; + $uuid =~ s/^(.{8})(.{4})(.{4})(.{4})(.{12})$/$1-$2-$3-$4-$5/; + return lc ($uuid); +} + +sub tryReiser ($$) { + my ($fh, $path) = @_; + my $result = undef; + # offset in reisser 3.6 (3.5-3.5.10 had 8k) + if (! seek ($fh, (64*1024), 0)) { + return $result; + } + # undef on read error - is this worth a warning? + my $superBlock; + my $rc = read ($fh, $superBlock, 1024); + if (! defined ($rc) || $rc != 1024) { + return $result; + } + my ($magic, $uuid, $label) = + unpack + "x[52] Z[10] x[22] a[16] Z[16]", + $superBlock; + my $t = join ("", map { sprintf "%02x", ord($_) } split(//, $uuid)); + if ($magic eq "ReIsEr2Fs" || $magic eq "ReIsEr3Fs") { + $uuid = fancyUuid ($uuid); + $result = LabeledPartition->new ( + type => "reiserfs", + label => $label, + uuid => fancyUuid($t), + path => $path, + ); + } + return $result; +} + +1; diff --git a/rescue/linux/cdrom/yaird-0.0.5/perl/LabeledPartitionTab.pm b/rescue/linux/cdrom/yaird-0.0.5/perl/LabeledPartitionTab.pm new file mode 100644 index 0000000..9a2bfd8 --- /dev/null +++ b/rescue/linux/cdrom/yaird-0.0.5/perl/LabeledPartitionTab.pm @@ -0,0 +1,138 @@ +#!perl -w +# +# LabeledPartitionTab -- all partitions with a label or uuid. +# Copyright (C) 2005 Erik van Konijnenburg +# +# 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 +# +# Found by looking at partitions of block devices in /sys that +# - have hardware backing them +# - are accessible via a block special file in /dev. +# - like mount(8), scan in two passes: raid devices first, +# ignore known uuids in second scan on underlying devices. +# +# + +use strict; +use warnings; +use Base; +use LabeledPartition; +package LabeledPartitionTab; + +my $lpTab = undef; +my $lpList = []; + + +sub init () { + if (defined ($lpTab)) { + return; + } + + $lpTab = {}; + for my $pass (0, 1) { + for my $abd (@{ActiveBlockDevTab::all()}) { + my $name = $abd->name(); + # must be accessible via special file ... + my $special = $abd->special; + next unless defined ($special); + next if $abd->hasPartitions(); + + # let's not look for labels on floppy, + # tends to hang. + # NOTE: perhaps not look for labels on any + # removable device, as marked by /sys? + next if ($name =~ /^fd\d+$/); + + if (($pass == 0) == ($name =~ /^md\d+$/)) { + my $descr = LabeledPartition::try ($special); + if (defined ($descr)) { + # + # Using a partially completed + # data structure. In first pass, + # the list empty, so nothing found. + # In second pass, we look at non-raid + # devices, and only raid devices + # are in the list. + # The tricky part is that the list + # used to find existing devices + # is updated only at the end of the + # pass, so that different devices + # with same uuid are entered in the + # table and will cause a proper error + # message if the uuid is later used + # to find a device. + # + if (! findByUuid ($descr->uuid)) { + my $devno = $abd->devno; + $lpTab->{$devno} = $descr; + } + } + } + } + $lpList = [ values %{$lpTab} ]; + } + +} + +sub all () { + init; + return $lpList; +} + +sub findByLabel ($) { + my ($label) = @_; + my $result = undef; + for my $lp (@{LabeledPartitionTab::all()}) { + if ($lp->label() eq $label) { + if (defined ($result)) { + Base::fatal ("duplicate file system label $label"); + } + $result = $lp; + } + } + return $result; +} + +sub findPathByLabel ($) { + my ($label) = @_; + my $lp = findByLabel ($label); + return $lp->path() if $lp; + return undef; +} + +sub findByUuid ($) { + my ($uuid) = @_; + my $result = undef; + $uuid = lc ($uuid); + for my $lp (@{LabeledPartitionTab::all()}) { + if ($lp->uuid() eq $uuid) { + if (defined ($result)) { + Base::fatal ("duplicate file system uuid $uuid"); + } + $result = $lp; + } + } + return $result; +} + +sub findPathByUuid ($) { + my ($uuid) = @_; + my $lp = findByUuid ($uuid); + return $lp->path() if $lp; + return undef; +} + +1; + diff --git a/rescue/linux/cdrom/yaird-0.0.5/perl/LogicalVolume.pm b/rescue/linux/cdrom/yaird-0.0.5/perl/LogicalVolume.pm new file mode 100644 index 0000000..eaf069b --- /dev/null +++ b/rescue/linux/cdrom/yaird-0.0.5/perl/LogicalVolume.pm @@ -0,0 +1,50 @@ +#!perl -w +# +# LogicalVolume -- Logical Volume Descriptor +# Copyright (C) 2005 Erik van Konijnenburg +# +# 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 +# +# +# lvnam - logical volume name +# vgnam - volume group name +# devno - "major:minor" +# + +use strict; +use warnings; +package LogicalVolume; +use base 'Obj'; + +sub fill { + my $self = shift; + $self->SUPER::fill(); + $self->takeArgs ('lvnam', 'vgnam', 'devno'); +} + +sub lvnam { return $_[0]->{lvnam}; } +sub vgnam { return $_[0]->{vgnam}; } +sub devno { return $_[0]->{devno}; } + +sub string { + my $self = shift; + my $lvnam = $self->lvnam; + my $vgnam = $self->vgnam; + my $devno = $self->devno; + my $str = "$lvnam in $vgnam at $devno"; + return $str; +} + +1; diff --git a/rescue/linux/cdrom/yaird-0.0.5/perl/LvmTab.pm b/rescue/linux/cdrom/yaird-0.0.5/perl/LvmTab.pm new file mode 100644 index 0000000..8346313 --- /dev/null +++ b/rescue/linux/cdrom/yaird-0.0.5/perl/LvmTab.pm @@ -0,0 +1,240 @@ +#!perl -w +# +# LvmTab -- encapsulate LVM output +# Copyright (C) 2005 Erik van Konijnenburg +# +# 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 +# +# The trick here is to find all block devices that back a physical +# volume that is part of a volume group, where in that volume group +# there is a logical volume with maj:min that contains a filesystem +# to be mounted at boot time. In particular, if there are two +# volume groups, one for OS and one for database, you don't want +# the modules for the database drives on your initrd image. +# +# NOTE: There seem to be newer reporting tools (vgs, lvs, pvs) +# that produce more flexible reports for easier grepping than with +# the commands used here. +# +use strict; +use warnings; +use Base; +use LogicalVolume; +use VolumeGroup; +use PhysicalVolume; +package LvmTab; + + +my $lvMap = undef; +my $vgMap = undef; +my $pvMap = undef; +my $lvList = undef; +my $vgList = undef; +my $pvList = undef; + +sub init () { + if (defined ($lvMap)) { + return; + } + initLvMap (); + initVgMap (); + initPvMap (); + $lvList = [ values %{$lvMap} ]; + $vgList = [ values %{$vgMap} ]; + $pvList = [ values %{$pvMap} ]; +} + +sub allLogicalVolumes () { + init; + return $lvList; +} + +sub allVolumeGroups () { + init; + return $vgList; +} + +sub allPhysicalVolumes () { + init; + return $pvList; +} + +sub findLVByDevno ($) { + init; + return $lvMap->{$_[0]}; +} + +sub findVGByVgnam ($) { + init; + return $vgMap->{$_[0]}; +} + +sub findPVsByVgnam ($) { + my ($vgnam) = @_; + my $result = []; + for my $pv (@{allPhysicalVolumes()}) { + if ($pv->vgnam() eq $vgnam) { + push @{$result}, $pv; + } + } + return $result; +} + +# +# findPhysicalVolumePathsByLVDevno -- return a list of special file names +# that make up the physical volumes underlying a logical volume +# identified by maj:min, or undef if the devno seems not to be +# implemented by lvm. +# +sub findPVPathsByLVDevno ($) { + my ($devno) = @_; + my $lv = LvmTab::findLVByDevno ($devno); + if (! defined ($lv)) { + return undef; + } + my $vgnam = $lv->vgnam(); + if (! defined (LvmTab::findVGByVgnam($vgnam))) { + Base::fatal ("unknown LVM volume group $vgnam for Logical Volume $devno"); + } + my $result = []; + for my $pv (@{LvmTab::findPVsByVgnam ($vgnam)}) { + push @{$result}, $pv->pvnam(); + } + return $result; +} + + +# build map from devno to logical volume descriptor, +# built on lvdisplay. +# +# /dev/vg0/root:vg0:3:1:-1:1:2097152:256:-1:0:0:254:0 +# +sub initLvMap () { + $lvMap = {}; + if (! open (IN, "-|", "lvdisplay -c 2> /dev/null")) { + Base::fatal ("can't run lvdisplay"); + } + while (defined (my $line = )) { + chomp $line; + $line =~ s/^\s*//; + my @fields = split (/:/, $line, 500); + if ($#fields != 12) { + Base::fatal ("malformed output from lvdisplay"); + } + my $lvnam = $fields[0]; + my $vgnam = $fields[1]; + # Hide this, since lvdisplay output is inconsistent with docs. + my $lvsiz = $fields[6]; + my $major = $fields[11]; + my $minor = $fields[12]; + if ($major !~ /^\d+$/) { + Base::fatal ("malformed output (major) from lvdisplay"); + } + if ($minor !~ /^\d+$/) { + Base::fatal ("malformed output (minor) from lvdisplay"); + } + my $devno = "$major:$minor"; + if (exists ($lvMap->{$devno})) { + Base::fatal ("duplicate output ($devno) from lvdisplay"); + } + $lvMap->{$devno} = LogicalVolume->new ( + lvnam => $lvnam, + vgnam => $vgnam, + devno => $devno, + ); + } + if (! close (IN)) { + Base::fatal ("error running lvdisplay"); + } +} + +# build map from vgnam to volume group descriptor, +# built on vgdisplay. +# +# vg0:r/w:772:-1:0:7:6:-1:0:1:1:77799424:4096: \ +# 18994:6912:12082:MO1svc-uvVC-TFCL-qvrB-29wD-bh9K-V2e3U2 +# +sub initVgMap () { + $vgMap = {}; + if (! open (IN, "-|", "vgdisplay -c 2> /dev/null")) { + Base::fatal ("can't run vgdisplay"); + } + while (defined (my $line = )) { + chomp $line; + $line =~ s/^\s*//; + my @fields = split (/:/, $line, 500); + if ($#fields != 16) { + Base::fatal ("malformed output from vgdisplay"); + } + my ($vgnam, $vgacc, $vgstat, + $vgnum, $maxlv, $curlv, $openlv, + $maxlvsiz, $maxpvcnt, $curpvcnt, $actpvcnt, + $vgsiz, $extsiz, $extcnt, $extalloc, $extfree, + $uuid) + = @fields; + + if (exists ($vgMap->{$vgnam})) { + Base::fatal ("duplicate output ($vgnam) from vgdisplay"); + } + $vgMap->{$vgnam} = VolumeGroup->new ( + vgnam => $vgnam, + uuid => $uuid, + ); + } + if (! close (IN)) { + Base::fatal ("error running vgdisplay"); + } +} + +# build map from pvnam to physical volume descriptor, +# built on pvdisplay. +# +# /dev/sda3:vg0:155598848:-1:8:8:-1:4096:18994: \ +# 12082:6912:X5hDer-dYpy-jpAB-IhXQ-44j4-kyj0-cOQkyE +# +sub initPvMap () { + $pvMap = {}; + if (! open (IN, "-|", "pvdisplay -c 2> /dev/null")) { + Base::fatal ("can't run pvdisplay"); + } + while (defined (my $line = )) { + chomp $line; + $line =~ s/^\s*//; + my @fields = split (/:/, $line, 500); + if ($#fields != 11) { + Base::fatal ("malformed output from pvdisplay"); + } + my ($pvnam,$vgnam,$pvsiz,$pvnum,$pvstat, + $pvalloc,$lvcnt,$extsiz,$extcnt, + $extfree,$extalloc,$uuid) + = @fields; + + if (exists ($pvMap->{$pvnam})) { + Base::fatal ("duplicate output ($pvnam) from vgdisplay"); + } + $pvMap->{$pvnam} = PhysicalVolume->new ( + pvnam => $pvnam, + vgnam => $vgnam, + uuid => $uuid, + ); + } + if (! close (IN)) { + Base::fatal ("error running pvdisplay"); + } +} + +1; + + diff --git a/rescue/linux/cdrom/yaird-0.0.5/perl/Makefile b/rescue/linux/cdrom/yaird-0.0.5/perl/Makefile new file mode 100644 index 0000000..e5d13b3 --- /dev/null +++ b/rescue/linux/cdrom/yaird-0.0.5/perl/Makefile @@ -0,0 +1,461 @@ +# Makefile.in generated by automake 1.9.5 from Makefile.am. +# perl/Makefile. Generated from Makefile.in by configure. + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005 Free Software Foundation, Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + + + +# +# Makefile.am -- installation and packaging instructions +# Copyright (C) 2005 Erik van Konijnenburg +# +# 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 +# + +# +# Makefile.incl -- shared defines between makefiles +# Copyright (C) 2005 Erik van Konijnenburg +# +# 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 +# +# - auxdir contains package specific executables that may be included +# in the generated image +# - perldir contains perl modules to be included by the main program +# +# This cannot be simply passed from the master makefile; that would +# be invisible to automake. + + +srcdir = . +top_srcdir = .. + +pkgdatadir = $(datadir)/yaird +pkglibdir = $(libdir)/yaird +pkgincludedir = $(includedir)/yaird +top_builddir = .. +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +INSTALL = /usr/bin/install -c +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +DIST_COMMON = $(dist_perl_DATA) $(srcdir)/../Makefile.incl \ + $(srcdir)/Makefile.am $(srcdir)/Makefile.in +subdir = perl +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/configure.in +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/include/config.h +CONFIG_CLEAN_FILES = +am__installdirs = "$(DESTDIR)$(sbindir)" "$(DESTDIR)$(perldir)" \ + "$(DESTDIR)$(perldir)" +sbinSCRIPT_INSTALL = $(INSTALL_SCRIPT) +SCRIPTS = $(sbin_SCRIPTS) +SOURCES = +DIST_SOURCES = +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = `echo $$p | sed -e 's|^.*/||'`; +dist_perlDATA_INSTALL = $(INSTALL_DATA) +nodist_perlDATA_INSTALL = $(INSTALL_DATA) +DATA = $(dist_perl_DATA) $(nodist_perl_DATA) +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = ${SHELL} /home/kern/bacula/k/rescue/linux/cdrom/yaird-0.0.5/missing --run aclocal-1.9 +AMDEP_FALSE = # +AMDEP_TRUE = +AMTAR = ${SHELL} /home/kern/bacula/k/rescue/linux/cdrom/yaird-0.0.5/missing --run tar +AUTOCONF = ${SHELL} /home/kern/bacula/k/rescue/linux/cdrom/yaird-0.0.5/missing --run autoconf +AUTOHEADER = ${SHELL} /home/kern/bacula/k/rescue/linux/cdrom/yaird-0.0.5/missing --run autoheader +AUTOMAKE = ${SHELL} /home/kern/bacula/k/rescue/linux/cdrom/yaird-0.0.5/missing --run automake-1.9 +AWK = gawk +CC = gcc +CCDEPMODE = depmode=gcc3 +CFLAGS = -g -O2 +CPPFLAGS = +CYGPATH_W = echo +DEFS = -DHAVE_CONFIG_H +DEPDIR = .deps +ECHO_C = +ECHO_N = -n +ECHO_T = +EXEEXT = +INITRD_TEMPLATE = Fedora +INSTALL_DATA = ${INSTALL} -m 644 +INSTALL_PROGRAM = ${INSTALL} +INSTALL_SCRIPT = ${INSTALL} +INSTALL_STRIP_PROGRAM = ${SHELL} $(install_sh) -c -s +LDFLAGS = +LIBOBJS = +LIBS = +LTLIBOBJS = +MAKEINFO = ${SHELL} /home/kern/bacula/k/rescue/linux/cdrom/yaird-0.0.5/missing --run makeinfo +OBJEXT = o +PACKAGE = yaird +PACKAGE_BUGREPORT = +PACKAGE_NAME = +PACKAGE_STRING = +PACKAGE_TARNAME = +PACKAGE_VERSION = +PATH_SEPARATOR = : +PERL = /usr/bin/perl +SET_MAKE = +SHELL = /bin/sh +STRIP = +VERSION = 0.0.5 +XMLTO = /usr/bin/xmlto +ac_ct_CC = gcc +ac_ct_STRIP = +am__fastdepCC_FALSE = # +am__fastdepCC_TRUE = +am__include = include +am__leading_dot = . +am__quote = +am__tar = ${AMTAR} chof - "$$tardir" +am__untar = ${AMTAR} xf - +bindir = ${exec_prefix}/bin +build_alias = +datadir = ${prefix}/share +exec_prefix = ${prefix} +host_alias = +includedir = ${prefix}/include +infodir = ${prefix}/info +install_sh = /home/kern/bacula/k/rescue/linux/cdrom/yaird-0.0.5/install-sh +libdir = ${exec_prefix}/lib +libexecdir = ${exec_prefix}/libexec +localstatedir = ${prefix}/var +mandir = ${prefix}/man +mkdir_p = mkdir -p -- +oldincludedir = /usr/include +prefix = /usr/local +program_transform_name = s,x,x, +sbindir = ${exec_prefix}/sbin +sharedstatedir = ${prefix}/com +sysconfdir = ${prefix}/etc +target_alias = +auxdir = $(pkglibdir)/exec +perldir = $(pkglibdir)/perl +sbin_SCRIPTS = yaird +CLEANFILES = $(sbin_SCRIPTS) Conf.pm +edit = sed \ + -e 's!@PERL\@!$(PERL)!' \ + -e 's!@PACKAGE\@!$(PACKAGE)!' \ + -e 's!@VERSION\@!$(VERSION)!' \ + -e 's!@AUXDIR\@!$(auxdir)!' \ + -e 's!@PERLDIR\@!$(perldir)!' + + +# not compiled, but must go in the tarball. +EXTRA_DIST = \ + main.pl \ + Conf.pm.in + +nodist_perl_DATA = \ + Conf.pm + +dist_perl_DATA = \ + ActionList.pm \ + ActiveBlockDev.pm \ + ActiveBlockDevTab.pm \ + Base.pm \ + Blacklist.pm \ + BlockSpecialFile.pm \ + BlockSpecialFileTab.pm \ + FsEntry.pm \ + FsOpts.pm \ + FsTab.pm \ + Hardware.pm \ + IdeDev.pm \ + Image.pm \ + Input.pm \ + InputTab.pm \ + KConfig.pm \ + LabeledPartition.pm \ + LabeledPartitionTab.pm \ + LogicalVolume.pm \ + LvmTab.pm \ + ModDep.pm \ + ModDepTab.pm \ + Obj.pm \ + Pack.pm \ + PciDev.pm \ + PciMapEntry.pm \ + PciTab.pm \ + PhysicalVolume.pm \ + Plan.pm \ + RaidDev.pm \ + RaidTab.pm \ + ScsiDev.pm \ + SharedLibraries.pm \ + TestSet.pm \ + UsbDev.pm \ + UsbMapEntry.pm \ + UsbTab.pm \ + VolumeGroup.pm + +all: all-am + +.SUFFIXES: +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(srcdir)/../Makefile.incl $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu perl/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnu perl/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +install-sbinSCRIPTS: $(sbin_SCRIPTS) + @$(NORMAL_INSTALL) + test -z "$(sbindir)" || $(mkdir_p) "$(DESTDIR)$(sbindir)" + @list='$(sbin_SCRIPTS)'; for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + if test -f $$d$$p; then \ + f=`echo "$$p" | sed 's|^.*/||;$(transform)'`; \ + echo " $(sbinSCRIPT_INSTALL) '$$d$$p' '$(DESTDIR)$(sbindir)/$$f'"; \ + $(sbinSCRIPT_INSTALL) "$$d$$p" "$(DESTDIR)$(sbindir)/$$f"; \ + else :; fi; \ + done + +uninstall-sbinSCRIPTS: + @$(NORMAL_UNINSTALL) + @list='$(sbin_SCRIPTS)'; for p in $$list; do \ + f=`echo "$$p" | sed 's|^.*/||;$(transform)'`; \ + echo " rm -f '$(DESTDIR)$(sbindir)/$$f'"; \ + rm -f "$(DESTDIR)$(sbindir)/$$f"; \ + done +uninstall-info-am: +install-dist_perlDATA: $(dist_perl_DATA) + @$(NORMAL_INSTALL) + test -z "$(perldir)" || $(mkdir_p) "$(DESTDIR)$(perldir)" + @list='$(dist_perl_DATA)'; for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + f=$(am__strip_dir) \ + echo " $(dist_perlDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(perldir)/$$f'"; \ + $(dist_perlDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(perldir)/$$f"; \ + done + +uninstall-dist_perlDATA: + @$(NORMAL_UNINSTALL) + @list='$(dist_perl_DATA)'; for p in $$list; do \ + f=$(am__strip_dir) \ + echo " rm -f '$(DESTDIR)$(perldir)/$$f'"; \ + rm -f "$(DESTDIR)$(perldir)/$$f"; \ + done +install-nodist_perlDATA: $(nodist_perl_DATA) + @$(NORMAL_INSTALL) + test -z "$(perldir)" || $(mkdir_p) "$(DESTDIR)$(perldir)" + @list='$(nodist_perl_DATA)'; for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + f=$(am__strip_dir) \ + echo " $(nodist_perlDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(perldir)/$$f'"; \ + $(nodist_perlDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(perldir)/$$f"; \ + done + +uninstall-nodist_perlDATA: + @$(NORMAL_UNINSTALL) + @list='$(nodist_perl_DATA)'; for p in $$list; do \ + f=$(am__strip_dir) \ + echo " rm -f '$(DESTDIR)$(perldir)/$$f'"; \ + rm -f "$(DESTDIR)$(perldir)/$$f"; \ + done +tags: TAGS +TAGS: + +ctags: CTAGS +CTAGS: + + +distdir: $(DISTFILES) + $(mkdir_p) $(distdir)/.. + @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ + list='$(DISTFILES)'; for file in $$list; do \ + case $$file in \ + $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ + $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ + esac; \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test "$$dir" != "$$file" && test "$$dir" != "."; then \ + dir="/$$dir"; \ + $(mkdir_p) "$(distdir)$$dir"; \ + else \ + dir=''; \ + fi; \ + if test -d $$d/$$file; then \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + else \ + test -f $(distdir)/$$file \ + || cp -p $$d/$$file $(distdir)/$$file \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile $(SCRIPTS) $(DATA) +installdirs: + for dir in "$(DESTDIR)$(sbindir)" "$(DESTDIR)$(perldir)" "$(DESTDIR)$(perldir)"; do \ + test -z "$$dir" || $(mkdir_p) "$$dir"; \ + done +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-generic mostlyclean-am + +distclean: distclean-am + -rm -f Makefile +distclean-am: clean-am distclean-generic + +dvi: dvi-am + +dvi-am: + +html: html-am + +info: info-am + +info-am: + +install-data-am: install-dist_perlDATA install-nodist_perlDATA + +install-exec-am: install-sbinSCRIPTS + +install-info: install-info-am + +install-man: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-generic + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-dist_perlDATA uninstall-info-am \ + uninstall-nodist_perlDATA uninstall-sbinSCRIPTS + +.PHONY: all all-am check check-am clean clean-generic distclean \ + distclean-generic distdir dvi dvi-am html html-am info info-am \ + install install-am install-data install-data-am \ + install-dist_perlDATA install-exec install-exec-am \ + install-info install-info-am install-man \ + install-nodist_perlDATA install-sbinSCRIPTS install-strip \ + installcheck installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-generic pdf \ + pdf-am ps ps-am uninstall uninstall-am uninstall-dist_perlDATA \ + uninstall-info-am uninstall-nodist_perlDATA \ + uninstall-sbinSCRIPTS + + +yaird: main.pl + $(edit) < $< > $@ + chmod ugo+x $@ + +Conf.pm: Conf.pm.in + $(edit) < $< > $@ +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/rescue/linux/cdrom/yaird-0.0.5/perl/Makefile.am b/rescue/linux/cdrom/yaird-0.0.5/perl/Makefile.am new file mode 100644 index 0000000..cbf2e22 --- /dev/null +++ b/rescue/linux/cdrom/yaird-0.0.5/perl/Makefile.am @@ -0,0 +1,86 @@ +# +# Makefile.am -- installation and packaging instructions +# Copyright (C) 2005 Erik van Konijnenburg +# +# 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 ../Makefile.incl + +sbin_SCRIPTS = yaird +CLEANFILES = $(sbin_SCRIPTS) Conf.pm + +edit = sed \ + -e 's!@PERL\@!$(PERL)!' \ + -e 's!@PACKAGE\@!$(PACKAGE)!' \ + -e 's!@VERSION\@!$(VERSION)!' \ + -e 's!@AUXDIR\@!$(auxdir)!' \ + -e 's!@PERLDIR\@!$(perldir)!' + +yaird: main.pl + $(edit) < $< > $@ + chmod ugo+x $@ + +Conf.pm: Conf.pm.in + $(edit) < $< > $@ + +# not compiled, but must go in the tarball. +EXTRA_DIST = \ + main.pl \ + Conf.pm.in + +nodist_perl_DATA = \ + Conf.pm + +dist_perl_DATA = \ + ActionList.pm \ + ActiveBlockDev.pm \ + ActiveBlockDevTab.pm \ + Base.pm \ + Blacklist.pm \ + BlockSpecialFile.pm \ + BlockSpecialFileTab.pm \ + FsEntry.pm \ + FsOpts.pm \ + FsTab.pm \ + Hardware.pm \ + IdeDev.pm \ + Image.pm \ + Input.pm \ + InputTab.pm \ + KConfig.pm \ + LabeledPartition.pm \ + LabeledPartitionTab.pm \ + LogicalVolume.pm \ + LvmTab.pm \ + ModDep.pm \ + ModDepTab.pm \ + Obj.pm \ + Pack.pm \ + PciDev.pm \ + PciMapEntry.pm \ + PciTab.pm \ + PhysicalVolume.pm \ + Plan.pm \ + RaidDev.pm \ + RaidTab.pm \ + ScsiDev.pm \ + SharedLibraries.pm \ + TestSet.pm \ + UsbDev.pm \ + UsbMapEntry.pm \ + UsbTab.pm \ + VolumeGroup.pm + diff --git a/rescue/linux/cdrom/yaird-0.0.5/perl/Makefile.in b/rescue/linux/cdrom/yaird-0.0.5/perl/Makefile.in new file mode 100644 index 0000000..c424a17 --- /dev/null +++ b/rescue/linux/cdrom/yaird-0.0.5/perl/Makefile.in @@ -0,0 +1,461 @@ +# Makefile.in generated by automake 1.9.5 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005 Free Software Foundation, Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +# +# Makefile.am -- installation and packaging instructions +# Copyright (C) 2005 Erik van Konijnenburg +# +# 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 +# + +# +# Makefile.incl -- shared defines between makefiles +# Copyright (C) 2005 Erik van Konijnenburg +# +# 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 +# +# - auxdir contains package specific executables that may be included +# in the generated image +# - perldir contains perl modules to be included by the main program +# +# This cannot be simply passed from the master makefile; that would +# be invisible to automake. + + +srcdir = @srcdir@ +top_srcdir = @top_srcdir@ +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +top_builddir = .. +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +INSTALL = @INSTALL@ +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +DIST_COMMON = $(dist_perl_DATA) $(srcdir)/../Makefile.incl \ + $(srcdir)/Makefile.am $(srcdir)/Makefile.in +subdir = perl +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/configure.in +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/include/config.h +CONFIG_CLEAN_FILES = +am__installdirs = "$(DESTDIR)$(sbindir)" "$(DESTDIR)$(perldir)" \ + "$(DESTDIR)$(perldir)" +sbinSCRIPT_INSTALL = $(INSTALL_SCRIPT) +SCRIPTS = $(sbin_SCRIPTS) +SOURCES = +DIST_SOURCES = +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = `echo $$p | sed -e 's|^.*/||'`; +dist_perlDATA_INSTALL = $(INSTALL_DATA) +nodist_perlDATA_INSTALL = $(INSTALL_DATA) +DATA = $(dist_perl_DATA) $(nodist_perl_DATA) +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +AMDEP_FALSE = @AMDEP_FALSE@ +AMDEP_TRUE = @AMDEP_TRUE@ +AMTAR = @AMTAR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPPFLAGS = @CPPFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EXEEXT = @EXEEXT@ +INITRD_TEMPLATE = @INITRD_TEMPLATE@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +LDFLAGS = @LDFLAGS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LTLIBOBJS = @LTLIBOBJS@ +MAKEINFO = @MAKEINFO@ +OBJEXT = @OBJEXT@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +PERL = @PERL@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +VERSION = @VERSION@ +XMLTO = @XMLTO@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_STRIP = @ac_ct_STRIP@ +am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ +am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build_alias = @build_alias@ +datadir = @datadir@ +exec_prefix = @exec_prefix@ +host_alias = @host_alias@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +auxdir = $(pkglibdir)/exec +perldir = $(pkglibdir)/perl +sbin_SCRIPTS = yaird +CLEANFILES = $(sbin_SCRIPTS) Conf.pm +edit = sed \ + -e 's!@PERL\@!$(PERL)!' \ + -e 's!@PACKAGE\@!$(PACKAGE)!' \ + -e 's!@VERSION\@!$(VERSION)!' \ + -e 's!@AUXDIR\@!$(auxdir)!' \ + -e 's!@PERLDIR\@!$(perldir)!' + + +# not compiled, but must go in the tarball. +EXTRA_DIST = \ + main.pl \ + Conf.pm.in + +nodist_perl_DATA = \ + Conf.pm + +dist_perl_DATA = \ + ActionList.pm \ + ActiveBlockDev.pm \ + ActiveBlockDevTab.pm \ + Base.pm \ + Blacklist.pm \ + BlockSpecialFile.pm \ + BlockSpecialFileTab.pm \ + FsEntry.pm \ + FsOpts.pm \ + FsTab.pm \ + Hardware.pm \ + IdeDev.pm \ + Image.pm \ + Input.pm \ + InputTab.pm \ + KConfig.pm \ + LabeledPartition.pm \ + LabeledPartitionTab.pm \ + LogicalVolume.pm \ + LvmTab.pm \ + ModDep.pm \ + ModDepTab.pm \ + Obj.pm \ + Pack.pm \ + PciDev.pm \ + PciMapEntry.pm \ + PciTab.pm \ + PhysicalVolume.pm \ + Plan.pm \ + RaidDev.pm \ + RaidTab.pm \ + ScsiDev.pm \ + SharedLibraries.pm \ + TestSet.pm \ + UsbDev.pm \ + UsbMapEntry.pm \ + UsbTab.pm \ + VolumeGroup.pm + +all: all-am + +.SUFFIXES: +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(srcdir)/../Makefile.incl $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu perl/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnu perl/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +install-sbinSCRIPTS: $(sbin_SCRIPTS) + @$(NORMAL_INSTALL) + test -z "$(sbindir)" || $(mkdir_p) "$(DESTDIR)$(sbindir)" + @list='$(sbin_SCRIPTS)'; for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + if test -f $$d$$p; then \ + f=`echo "$$p" | sed 's|^.*/||;$(transform)'`; \ + echo " $(sbinSCRIPT_INSTALL) '$$d$$p' '$(DESTDIR)$(sbindir)/$$f'"; \ + $(sbinSCRIPT_INSTALL) "$$d$$p" "$(DESTDIR)$(sbindir)/$$f"; \ + else :; fi; \ + done + +uninstall-sbinSCRIPTS: + @$(NORMAL_UNINSTALL) + @list='$(sbin_SCRIPTS)'; for p in $$list; do \ + f=`echo "$$p" | sed 's|^.*/||;$(transform)'`; \ + echo " rm -f '$(DESTDIR)$(sbindir)/$$f'"; \ + rm -f "$(DESTDIR)$(sbindir)/$$f"; \ + done +uninstall-info-am: +install-dist_perlDATA: $(dist_perl_DATA) + @$(NORMAL_INSTALL) + test -z "$(perldir)" || $(mkdir_p) "$(DESTDIR)$(perldir)" + @list='$(dist_perl_DATA)'; for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + f=$(am__strip_dir) \ + echo " $(dist_perlDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(perldir)/$$f'"; \ + $(dist_perlDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(perldir)/$$f"; \ + done + +uninstall-dist_perlDATA: + @$(NORMAL_UNINSTALL) + @list='$(dist_perl_DATA)'; for p in $$list; do \ + f=$(am__strip_dir) \ + echo " rm -f '$(DESTDIR)$(perldir)/$$f'"; \ + rm -f "$(DESTDIR)$(perldir)/$$f"; \ + done +install-nodist_perlDATA: $(nodist_perl_DATA) + @$(NORMAL_INSTALL) + test -z "$(perldir)" || $(mkdir_p) "$(DESTDIR)$(perldir)" + @list='$(nodist_perl_DATA)'; for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + f=$(am__strip_dir) \ + echo " $(nodist_perlDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(perldir)/$$f'"; \ + $(nodist_perlDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(perldir)/$$f"; \ + done + +uninstall-nodist_perlDATA: + @$(NORMAL_UNINSTALL) + @list='$(nodist_perl_DATA)'; for p in $$list; do \ + f=$(am__strip_dir) \ + echo " rm -f '$(DESTDIR)$(perldir)/$$f'"; \ + rm -f "$(DESTDIR)$(perldir)/$$f"; \ + done +tags: TAGS +TAGS: + +ctags: CTAGS +CTAGS: + + +distdir: $(DISTFILES) + $(mkdir_p) $(distdir)/.. + @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ + list='$(DISTFILES)'; for file in $$list; do \ + case $$file in \ + $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ + $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ + esac; \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test "$$dir" != "$$file" && test "$$dir" != "."; then \ + dir="/$$dir"; \ + $(mkdir_p) "$(distdir)$$dir"; \ + else \ + dir=''; \ + fi; \ + if test -d $$d/$$file; then \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + else \ + test -f $(distdir)/$$file \ + || cp -p $$d/$$file $(distdir)/$$file \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile $(SCRIPTS) $(DATA) +installdirs: + for dir in "$(DESTDIR)$(sbindir)" "$(DESTDIR)$(perldir)" "$(DESTDIR)$(perldir)"; do \ + test -z "$$dir" || $(mkdir_p) "$$dir"; \ + done +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-generic mostlyclean-am + +distclean: distclean-am + -rm -f Makefile +distclean-am: clean-am distclean-generic + +dvi: dvi-am + +dvi-am: + +html: html-am + +info: info-am + +info-am: + +install-data-am: install-dist_perlDATA install-nodist_perlDATA + +install-exec-am: install-sbinSCRIPTS + +install-info: install-info-am + +install-man: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-generic + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-dist_perlDATA uninstall-info-am \ + uninstall-nodist_perlDATA uninstall-sbinSCRIPTS + +.PHONY: all all-am check check-am clean clean-generic distclean \ + distclean-generic distdir dvi dvi-am html html-am info info-am \ + install install-am install-data install-data-am \ + install-dist_perlDATA install-exec install-exec-am \ + install-info install-info-am install-man \ + install-nodist_perlDATA install-sbinSCRIPTS install-strip \ + installcheck installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-generic pdf \ + pdf-am ps ps-am uninstall uninstall-am uninstall-dist_perlDATA \ + uninstall-info-am uninstall-nodist_perlDATA \ + uninstall-sbinSCRIPTS + + +yaird: main.pl + $(edit) < $< > $@ + chmod ugo+x $@ + +Conf.pm: Conf.pm.in + $(edit) < $< > $@ +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/rescue/linux/cdrom/yaird-0.0.5/perl/ModDep.pm b/rescue/linux/cdrom/yaird-0.0.5/perl/ModDep.pm new file mode 100644 index 0000000..bb9b377 --- /dev/null +++ b/rescue/linux/cdrom/yaird-0.0.5/perl/ModDep.pm @@ -0,0 +1,55 @@ +#!perl -w +# +# ModDep -- encapsulate single line from modules.dep. +# Copyright (C) 2005 Erik van Konijnenburg +# +# 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 +# +# name - normalised name of the module. +# file - the file to load for this kernel module +# origin - file:line where this was defined +# deps - list of names of modules this module depends on. +# +use strict; +use warnings; +use Base; +package ModDep; +use base 'Obj'; + + +sub fill { + my $self = shift; + $self->SUPER::fill(); + $self->takeArgs ('name', 'file', 'origin', 'deps'); +} + +sub name { return $_[0]->{name}; } +sub file { return $_[0]->{file}; } +sub origin { return $_[0]->{origin}; } +sub deps { return $_[0]->{deps}; } + +sub string { + my $self = shift; + my $name = $self->name; + my $file = $self->file; + my $origin = $self->origin; + my $deps = join (",", @{$self->deps}); + + return "$name($origin) at $file need $deps." +} + + + +1; diff --git a/rescue/linux/cdrom/yaird-0.0.5/perl/ModDepTab.pm b/rescue/linux/cdrom/yaird-0.0.5/perl/ModDepTab.pm new file mode 100644 index 0000000..10615e1 --- /dev/null +++ b/rescue/linux/cdrom/yaird-0.0.5/perl/ModDepTab.pm @@ -0,0 +1,230 @@ +#!perl -w +# +# ModDepTab -- encapsulate modprobe(8) +# Copyright (C) 2005 Erik van Konijnenburg +# +# 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 +# +# Most important routine is resolve(), which returns a list of +# modules with dependencies resolved. +# +# For every module, we have a list of prerequisite modules; +# these prerequisites are in no particular order: the prerequisites +# may have dependencies among themselves that are not satisfied +# by the order in the list. +# +# This emulates modprobe(8) by interpreting /lib/modules/2.6.x/modules.dep. +# Input format: +# - characters are bytes, no messing with utf-8. +# - backslash at end of line merges lines +# - other \x get replaced by x +# - ^\s*# lines are ignored +# - lines without : are ignored. +# This means "aap: noot.#7" is a valid dependency. +# The backslash interpretation is mostly for modprobe.conf; +# depmod does not generate it. +# +# Modprobe determines module name by dropping everything after dot: +# "/lib/noot.#7" is module "noot". We'll adopt the same policy. +# +# Note that depmod only grabs modules ending in .ko or .ko.gz; +# we'll issue a warning if a module has a different suffix. +# +# Note that modprobe does not discriminate against modules outside +# /lib/modules: if it's listed in modules.dep, it's a valid module. +# +# Note that redhat has a convention that modules in .../update take +# precedence over other modules with the same name. Depmod implements +# this by not putting modules that are overridden in modules.dep. +# Thus modprobe and yaird need no special action to support that convention. +# +# The logic modprobe uses to determine which modules to load: +# - replace hyphens with underscore +# - read config specified on command line, +# OR modprobe.conf OR modprobe.d, only first one found. +# Remember all "install" and "option" directives, +# rewrite module name if an alias matches +# - if no alias found and the name is of the form 'symbol:xxx': +# look in modules.symbols to resolve to a module name +# - if alias found: +# make a list of modules to load, based on modules.dep +# - else: +# make a list of modules to load, based on modules.dep +# if that turned up no modules AND there was no install cmd: +# - look in modules.aliases to resolve to modulename +# - make a list of modules to load, based on modules.dep +# - if the list to load is empty AND there was no install command: +# - complain. +# # in insmod(): +# - recurse over the module list, most basic stuff first, doing: +# - if there is a command for this module name: +# execute it +# - else: +# load the module +# +# We probably should replace this perl module with parsing the +# output of modprobe --verbose --dry-run --show-depends --set-version, +# but that requires changes in the calling modules, and there's discussion +# of adding blacklist support to modprobe, so for now, let's not. +# + +use strict; +use warnings; +use Base; +use Conf; +use ModDep; +use KConfig; + +package ModDepTab; + +my $modDepTab = undef; +my $modDepList = undef; + +sub init () { + if (defined ($modDepTab)) { + return; + } + $modDepTab = {}; + my $name = Conf::get('modDep'); + if (! open (IN, "<", "$name")) { + Base::fatal ("can't open $name"); + } + my $lineNo = 0; + while (defined (my $line = )) { + $lineNo++; + chomp $line; + + # it would be nice to ignore leading and trailing + # space, and to allow # comment at end of line. + # however, that's not how modprobe does it, + # so we shouldn't either. + next if $line =~ /^\s*#/; + + if ($line =~ /^(.*):\s*(.*)$/) { + my $file = $1; + my $val = $2; + my $key = $file; + + if ($key !~ /\.ko$/ && $key !~ /\.ko\.gz/) { + Base::warning ("$name:$lineNo: odd module name: $key"); + } + $key =~ s!.*/!!; + $key =~ s!\..*$!!; + $key =~ s!_!-!g; + + my @fields = split (/\s+/, $val); + for my $i (0 .. $#fields) { + # strip pathname and extension from + # required modules, normalise underscore. + # dont complain about odd suffix. + $fields[$i] =~ s!.*/!!; + $fields[$i] =~ s!\..*$!!; + $fields[$i] =~ s!_!-!g; + } + + my $conflict = $modDepTab->{$key}; + if (defined ($conflict)) { + my $origin = $conflict->origin(); + Base::warning ("$name:$lineNo: $key overrules earlier definition at $origin"); + } + + $modDepTab->{$key} = ModDep->new ( + name => $key, + file => $file, + origin => "$name:$lineNo", + deps => [ @fields ], + ); + } + else { + Base::warning ("$name:$lineNo: malformed line ignored"); + } + + } + if (! close (IN)) { + Base::fatal ("could not read $name"); + } + $modDepList = [ sort keys %{$modDepTab} ]; +} + +sub all () { + init; + return $modDepList; +} + +sub findByModnam ($) { + my ($module) = @_; + init; + $module =~ s!_!-!g; + my $result = $modDepTab->{$module}; + if (! defined ($result)) { + Base::fatal ("can't find dependencies for $module"); + } + return $result; +} + + +# return a copy of the list with prerequisite modules inserted +sub resolve ($) { + my ($modList) = @_; + Base::debug ("resolving: " . join (',', @{$modList}) . '.'); + my $result = []; + resolve2 ($modList, $result); + Base::debug ("resolved to: " . join (',', @{$result}) . '.'); + return $result; +} + +# +# resolve2 -- given a list of modules, that may have dependencies +# (even among themselves) and a list of modules that is in proper order +# to be loaded without unresolved dependencies, +# add everything from the first list (plus their dependencies) +# to the second list, without introducing duplicates. +# +sub resolve2 ($$); +sub resolve2 ($$) { + my ($modList, $done) = @_; +OUTER: for my $module (@{$modList}) { + # + # Stuff that is compiled into the kernel cannot + # add or resolve dependencies, and obviously don't + # need to be loaded. Drop them from the list. + # + if (KConfig::isBuiltIn ($module)) { + next OUTER; + } + # + # if the module is already there, don't add again + # + for my $d (@{$done}) { + if ($d eq $module) { + next OUTER; + } + } + # + # recursively add prerequisites + # + my $deps = ModDepTab::findByModnam($module); + if (! defined ($deps)) { + Base::fatal ("can't find dependencies for $module"); + } + resolve2 ($deps->deps, $done); + # + # and module itself + # + push @{$done}, $module; + } +} + +1; diff --git a/rescue/linux/cdrom/yaird-0.0.5/perl/Obj.pm b/rescue/linux/cdrom/yaird-0.0.5/perl/Obj.pm new file mode 100644 index 0000000..5e6c5bd --- /dev/null +++ b/rescue/linux/cdrom/yaird-0.0.5/perl/Obj.pm @@ -0,0 +1,61 @@ +#!perl -w +# +# Obj -- basic object stuff +# Copyright (C) 2005 Erik van Konijnenburg +# +# 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 +# +# The new() function takes a hash as argument, used to do object +# initialisation. Initialisation is delegated to fill() in derived +# classes. Fill() is expected to use takeArgs() to claim those +# initialisation args it's interested in; other args are left for +# fill() functions further down the inheritance chain. Arguments +# may have undef as value. +# + +use strict; +use warnings; +use Base; +package Obj; + +sub new { + my $class = shift; + my $self = {}; + $self->{'_args'} = { @_ }; + bless ($self, $class); + $self->fill(); + my $bad = join (', ', keys %{$self->{'_args'}}); + if ($bad ne '') { + Base::bug "Unknown constructor args: $bad"; + } + return $self; +} + +sub fill { + my $self = shift; + # Derived classes can claim arguments like so: + # self->SUPER::fill(); + # $self->takeArg ('a'); +} + +sub takeArgs { + my ($self, @fields) = @_; + for my $field (@fields) { + Base::assert (exists ($self->{'_args'}{$field})); + $self->{$field} = delete $self->{'_args'}{$field}; + } +} + +1; diff --git a/rescue/linux/cdrom/yaird-0.0.5/perl/Pack.pm b/rescue/linux/cdrom/yaird-0.0.5/perl/Pack.pm new file mode 100644 index 0000000..bcf066b --- /dev/null +++ b/rescue/linux/cdrom/yaird-0.0.5/perl/Pack.pm @@ -0,0 +1,133 @@ +#!perl -w +# +# Pack -- create an image and pack in suitable format. +# Copyright (C) 2005 Erik van Konijnenburg +# +# 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 +# +# knownFormat -- true if it's a known format +# package -- given format, image descriptor and destination, +# put the image in the destination in requested format. +# +# Supported formats: +# -- directory, for debugging +# -- cramfs, as used in Debian initrd +# -- cpio, actually cpio.gz, as used in Fedora initramfs. +# +# This module takes care not to leave a partially completed destination +# on error. +# + +use strict; +use warnings; +use File::Temp; +use Base; +use Image; + +package Pack; + +sub packDirectory ($$); +sub packCramfs ($$); +sub packCpio ($$); + +my $packagers = { + directory => \&packDirectory, + cramfs => \&packCramfs, + cpio => \&packCpio, +}; + +sub knownFormat ($) { + return exists ($packagers->{$_[0]}); +} + +sub package ($$$) { + my ($image, $format, $destination) = @_; + Base::assert (knownFormat ($format)); + + # + # Temp based on destination,to increase likelyhood + # of rename being atomic. + # + my $template = "$destination.XXXXXXXXXXXXXXXX"; + my $tempdir = File::Temp::tempdir ($template, CLEANUP => 1); + $image->buildHere ($tempdir); + + $packagers->{$format}($tempdir, $destination); +} + + + +sub packDirectory ($$) { + my ($tempdir, $destination) = @_; + + if (! rename ($tempdir, $destination)) { + Base::fatal ("could not move $tempdir to $destination"); + } +} + + + +sub packCramfs ($$) { + my ($tempdir, $destination) = @_; + + my $template = "$destination.XXXXXXXXXXXXXXXX"; + my ($fh, $tempfile) = File::Temp::tempfile ($template, UNLINK => 1); + if (system ("/usr/sbin/mkcramfs -E '$tempdir' '$tempfile' > /dev/null") != 0) { + Base::fatal ("mkcramfs $tempdir failed"); + } + if (! rename ($tempfile, $destination)) { + Base::fatal ("could not move $tempfile to $destination"); + } +} + + + +sub packCpio ($$) { + my ($tempdir, $destination) = @_; + + # + # Note how the tempfile can be a relative path, and how cpio + # depends on a chdir into tempdir. Thus, cpio output tempfile + # should *not* be based on a template. + # + + my $template = "$destination.XXXXXXXXXXXXXXXX"; + my ($fh, $fromCpio) = File::Temp::tempfile (UNLINK => 1); + my ($fh2, $fromGzip) = File::Temp::tempfile ($template, UNLINK => 1); + + # + # There are multiple universal unique portable archive formats, + # each with the same magic number. + # cpio(1) mentions newc and odc; these differ in size of + # fields of header. Whether -oc generates newc or odc depends + # on a define in cpio, with Fedora picking a different default + # than Debian. The kernel accepts only newc format (see initramfs.c). + # Use the -H newc option to get the right format, regardless + # of which default the distro chooses for -c. + # + if (system ("cd '$tempdir' && find . | cpio --quiet -o -H newc > $fromCpio")) { + # $! is useless here: inappropriate ioctl for device ... + Base::fatal ("cpio $tempdir failed"); + } + if (system ("gzip -9 < $fromCpio > $fromGzip")) { + Base::fatal ("gzip $tempdir failed"); + } + + if (! rename ($fromGzip, $destination)) { + Base::fatal ("could not move $fromGzip to $destination"); + } +} + +1; diff --git a/rescue/linux/cdrom/yaird-0.0.5/perl/PciDev.pm b/rescue/linux/cdrom/yaird-0.0.5/perl/PciDev.pm new file mode 100644 index 0000000..28238c6 --- /dev/null +++ b/rescue/linux/cdrom/yaird-0.0.5/perl/PciDev.pm @@ -0,0 +1,46 @@ +#!perl -w +# +# PciDev -- the probed values for a PCI device, as found in /sys. +# Copyright (C) 2005 Erik van Konijnenburg +# +# 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 +# +use strict; +use warnings; +use Base; +package PciDev; +use base 'Obj'; + +sub fill { + my $self = shift; + $self->SUPER::fill(); + $self->takeArgs ('path'); + my $path = $self->path; + $self->{vendor} = Base::getHexFile ("$path/vendor"); + $self->{device} = Base::getHexFile ("$path/device"); + $self->{subvendor} = Base::getHexFile ("$path/subsystem_vendor"); + $self->{subdevice} = Base::getHexFile ("$path/subsystem_device"); + $self->{class} = Base::getHexFile ("$path/class"); +} + +sub path { return $_[0]->{path}; } +sub vendor { return $_[0]->{vendor}; } +sub device { return $_[0]->{device}; } +sub subvendor { return $_[0]->{subvendor}; } +sub subdevice { return $_[0]->{subdevice}; } +sub class { return $_[0]->{class}; } + + +1; diff --git a/rescue/linux/cdrom/yaird-0.0.5/perl/PciMapEntry.pm b/rescue/linux/cdrom/yaird-0.0.5/perl/PciMapEntry.pm new file mode 100644 index 0000000..1dad7d6 --- /dev/null +++ b/rescue/linux/cdrom/yaird-0.0.5/perl/PciMapEntry.pm @@ -0,0 +1,65 @@ +#!perl -w +# +# PciMapEntry - iencapsulate a line form modules.pcimap. +# Copyright (C) 2005 Erik van Konijnenburg +# +# 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 +# +# +# Knows how to match, can return module name. +# + +use strict; +use warnings; +use Base; +package PciMapEntry; +use base 'Obj'; + +sub fill { + my $self = shift; + $self->SUPER::fill(); + $self->takeArgs ('module', 'vendor', 'device', 'subvendor', + 'subdevice', 'class', 'classmask', 'driver_data'); +} + +sub module { return $_[0]->{module}; } + +# we could do the PCI_ANY processing in init, +# if it turns out to be time critical. +my $PCI_ANY = 0xffffffff; +sub matches { + my ($self, $dev) = @_; + if ($self->{vendor} != $PCI_ANY && $self->{vendor} != $dev->vendor) { + return 0; + } + if ($self->{device} != $PCI_ANY && $self->{device} != $dev->device) { + return 0; + } + if ($self->{subvendor} != $PCI_ANY + && $self->{subvendor} != $dev->subvendor) { + return 0; + } + if ($self->{subdevice} != $PCI_ANY + && $self->{subdevice} != $dev->subdevice) { + return 0; + } + if ($self->{class} == ($dev->class & $self->{classmask})) { + return 1; + } + return 0; +} + +1; + diff --git a/rescue/linux/cdrom/yaird-0.0.5/perl/PciTab.pm b/rescue/linux/cdrom/yaird-0.0.5/perl/PciTab.pm new file mode 100644 index 0000000..241f76c --- /dev/null +++ b/rescue/linux/cdrom/yaird-0.0.5/perl/PciTab.pm @@ -0,0 +1,89 @@ +#!perl -w +# +# PciTab -- encapsulate modules.pcimap +# Copyright (C) 2005 Erik van Konijnenburg +# +# 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 +# + +use strict; +use warnings; +use Base; +use Conf; +use PciMapEntry; +package PciTab; + +my $pciList = undef; + +# Parse this: +# # pci module vendor device subvendor subdevice class class_mask driver_data +# parport_pc 0x00001106 0x00000686 0xffffffff 0xffffffff 0x00000000 0x00000000 0x0 +# parport_pc 0x00001106 0x00008231 0xffffffff 0xffffffff 0x00000000 0x00000000 0x0 + +sub init () { + if (defined ($pciList)) { + return; + } + $pciList = []; + my $name = Conf::get('pciMap'); + if (! open (IN, "<", "$name")) { + Base::fatal ("can't open pci module list $name"); + } + while (defined (my $line = )) { + chomp $line; + $line =~ s/#.*//; + $line =~ s/^\s+//; + $line =~ s/\s+$//; + next if ($line eq ""); + my @fields = split (/\s+/, $line, 999); + if ($#fields != 7) { + Base::fatal "malformed line in pci module list $name"; + } + push @{$pciList}, PciMapEntry->new ( + module => $fields[0], + vendor => hex ($fields[1]), + device => hex ($fields[2]), + subvendor => hex ($fields[3]), + subdevice => hex ($fields[4]), + class => hex ($fields[5]), + classmask => hex ($fields[6]), + driver_data => hex ($fields[7]), + ); + } + if (! close (IN)) { + Base::fatal "could not read pci module list $name"; + } +} + +sub all () { + init; + return $pciList; +} + +# given pathname in devices tree, find module name in PCI map as a list. +sub find ($) { + my ($dev) = @_; + my @result = (); + for my $pme (@{PciTab::all()}) { + if ($pme->matches ($dev)) { + push @result, $pme->module; + } + } + return [@result]; +} + + +1; + diff --git a/rescue/linux/cdrom/yaird-0.0.5/perl/PhysicalVolume.pm b/rescue/linux/cdrom/yaird-0.0.5/perl/PhysicalVolume.pm new file mode 100644 index 0000000..4d8fc4f --- /dev/null +++ b/rescue/linux/cdrom/yaird-0.0.5/perl/PhysicalVolume.pm @@ -0,0 +1,49 @@ +#!perl -w +# +# PhysicalVolume -- Physical Volume Descriptor +# Copyright (C) 2005 Erik van Konijnenburg +# +# 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 +# +# pvnam - physical volume name +# vgnam - volume group name +# devno - "major:minor" +# + +use strict; +use warnings; +package PhysicalVolume; +use base 'Obj'; + +sub fill { + my $self = shift; + $self->SUPER::fill(); + $self->takeArgs ('pvnam', 'vgnam', 'uuid'); +} + +sub pvnam { return $_[0]->{pvnam}; } +sub vgnam { return $_[0]->{vgnam}; } +sub uuid { return $_[0]->{uuid}; } + +sub string { + my $self = shift; + my $pvnam = $self->pvnam; + my $vgnam = $self->vgnam; + my $uuid = $self->uuid; + my $str = "$pvnam in $vgnam, $uuid"; + return $str; +} + +1; diff --git a/rescue/linux/cdrom/yaird-0.0.5/perl/Plan.pm b/rescue/linux/cdrom/yaird-0.0.5/perl/Plan.pm new file mode 100644 index 0000000..7f7d304 --- /dev/null +++ b/rescue/linux/cdrom/yaird-0.0.5/perl/Plan.pm @@ -0,0 +1,311 @@ +#!perl -w +# +# Plan -- plan what to put on the initrd image +# Copyright (C) 2005 Erik van Konijnenburg +# +# 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 +# +# +# +use strict; +use warnings; +use Base; +use FsTab; +use ActiveBlockDevTab; +use LvmTab; +use Hardware; +use ModDepTab; +use RaidTab; +use Image; +use Blacklist; +use ActionList; + +package Plan; + + + +# +# modulesExpand -- given a list of modules, return an ordered +# list of modules, with blacklisted items deleted, +# compiled in modules deleted, and any dependencies resolved. +# A module found by eg PCI matching and dropped because of blacklisting +# may be added later to resolve a dependency. +# +sub modulesExpand ($) { + my ($modlist) = (@_); + + my $ml = []; + for my $moduleName (@{$modlist}) { + if (Blacklist::isBlacklisted ($moduleName)) { + next; + } + push @{$ml}, $moduleName; + } + + # resolve drops compiled-in stuff. + my $fullModList = ModDepTab::resolve ($ml); + + return $fullModList; +} + + + +# +# addModules -- given an actionList and list of modules, +# add actions to load them all, unless blacklisted or compiled in. +# +sub addModules ($$) { + my ($actionList, $modList) = @_; + + my $fullModList = modulesExpand ($modList); + for my $moduleName (@{$fullModList}) { + my $modDep = ModDepTab::findByModnam ($moduleName); + Base::assert (defined ($modDep)); + $actionList->add ("insmod", $modDep->file); + } +} + + +# +# addHardware -- given hardware path, potentially undef, +# add required actions to the action list. +# +sub addHardware ($$) { + my ($actionList, $hardware) = @_; + if (defined ($hardware)) { + my $modList = Hardware::moduleList ($hardware); + addModules ($actionList, $modList); + Base::info ("hardware: completed $hardware"); + } +} + + +# +# addDevicePlan -- given an active block device, add to actionList +# a sequence to make it into a working device file, suitable for mounting. +# For eg LVM modules this means loading dm-mod, but also it +# means recursively making the underlying devices available. +# There is a possibility of loops here (consider an fstab +# where /a is a loopback mount of /a/disk.img); we want do +# detect these loops and produce an error. Also, we want to +# avoid double work: if five lvm logical volumes use the same +# underlying raid device, there's not much point in running +# mdadm five times. +# There are some contraints on the name of the device file; +# see yspecial in ActiveBlockDev. +# +# actionList - add actions here +# device - the active block device to be made available. +# done - list of devices that can be assumed to be available; +# updated in place. +# working - list of devices we're working on, excluding path. +# +sub addDevicePlan ($$$$); +sub addDevicePlan ($$$$) { + my ($actionList, $device, $done, $working) = @_; + + for my $w (@{$working}) { + if ($w eq $device) { + Base::fatal ("loop detected: $device\n"); + } + } + for my $w (@{$done}) { + if ($w eq $device) { + return; + } + } + + my $name = $device->name; + my $parent = $device->parent; + my $devno = $device->devno; + my $hardware = $device->hw; + my $yspecial = $device->yspecial; + + if (defined ($parent)) { + # + # It's a partition. To make it available, do the whole + # device, then make a special file for the partition. + # + addDevicePlan($actionList,$parent,$done,[$device,@{$working}]); + my $pname = $parent->name; + $actionList->add ("mkbdev", $yspecial, + sysname => "$pname/$name"); + } + elsif ($name =~ /^dm-\d+$/) { + # + # To start an LVM device, make available the underlying + # physical volumes, then start the volume group. + # creating the block special file is a side effect of + # starting the volume group. + # The activeBlockDev->yspecial() method is choosen such + # that the name returned matches the name of the block special + # file generated by vgchange. + # Physical volumes are named by the block + # special file that gives access to it. + # + my $lv = LvmTab::findLVByDevno ($devno); + if (! defined ($lv)) { + Base::fatal ("Can't find LVM info for $name"); + } + my $vgnam = $lv->vgnam; + for my $physVol (@{LvmTab::findPVsByVgnam($vgnam)}) + { + my $pdev = ActiveBlockDevTab::findByPath + ($physVol->pvnam); + addDevicePlan ($actionList, $pdev, $done, + [$device,@{$working}]); + } + addModules ($actionList, [ "dm-mod" ]); + $actionList->add ("vgchange", $vgnam); + } + elsif ($name =~ /^md\d+$/) { + # + # To start an md raid device, start the underlying hardware, + # load raid module, then do mdadm --assemble. + # + my $rd = RaidTab::findByDevno ($devno); + if (! defined ($rd)) { + Base::fatal ("Can't find Raid info for $name"); + } + my $components = []; + for my $subDiskPath (@{$rd->devices()}) { + my $subDisk = ActiveBlockDevTab::findByPath + ($subDiskPath); + addDevicePlan ($actionList, $subDisk, + $done,[$device,@{$working}]); + my $subName = $subDisk->yspecial; + push @{$components}, {dev => $subName}; + } + addModules ($actionList, [ $rd->level ]); + + my $uuid = $rd->uuid; + my ($major, $minor) = ($devno =~ /(\d+):(\d+)/); + + $actionList->add ("mdadm", $yspecial, + major => $major, + minor => $minor, + uuid => $uuid, + components => $components, + ); + } + elsif ($name =~ /^hd[a-z]$/ + || $name =~ /^sd[a-z]$/) + { + # IDE or SCSI. + addHardware ($actionList, $hardware); + $actionList->add ("mkbdev", $yspecial, sysname => "$name"); + } + elsif ($name =~ /^fd\d+$/) { + addModules ($actionList, [ "floppy" ]); + $actionList->add ("mkbdev", $yspecial, sysname => "$name"); + } + else { + Base::fatal ("unsupported device required: $name"); + } + + push @{$done}, $device; +} + + +# +# addInputPlan -- list of actions to activate console, +# for now only keyboard, no framebuffer. +# +sub addInputPlan ($) { + my ($actionList) = @_; + for my $input (@{InputTab::all()}) { + if (! $input->isKbd()) { + next; + } + addHardware ($actionList, $input->hw); + } +} + + +# +# makePlan -- return a list of actions to mount root. +# if rootDevName is defined, use that instead of the +# device mounted as / in current fstab. +# +sub makePlan ($) { + my ($rootDevName) = @_; + my $actionList = ActionList->new(); + + my $root; + if (defined ($rootDevName)) { + $root = FsTab::findByDevName($rootDevName); + if (! defined ($root)) { + fatal ("alternate root $rootDevName not in fstab"); + } + } + else { + $root = FsTab::findByMountPoint('/'); + if (! defined ($root)) { + fatal ("no root in fstab"); + } + } + + $actionList->add ("prologue", ""); + + addInputPlan($actionList); + + # swap space is needed for soft suspend, + # computed like so, but unused for now. + my @swapEntries = (); + for my $entry (@{FsTab->all}) { + if (! $entry->isRequiredAtBoot()) { + next; + } + if ($entry->type eq "swap") { + push @swapEntries, $entry; + } + } + + my $devicesDone = []; + # for swsusp, use ($root, @swapEntries) + for my $fsTabEntry ($root) { + my $path = $fsTabEntry->blockDevPath(); + if (! defined ($path)) { + my $str = $fsTabEntry->string; + Base::fatal ("unsupported block device specification in $str"); + } + my $abd = ActiveBlockDevTab::findByPath($path); + if (! defined ($abd)) { + my $str = $fsTabEntry->string; + Base::fatal ("block device $path for $str unavailable"); + } + addDevicePlan ($actionList, $abd, $devicesDone, []); + } + + my $fsType = $root->type; + addModules ($actionList, [ $fsType ]); + + my $path = $root->blockDevPath(); + my $yspecial = ActiveBlockDevTab::findByPath($path)->yspecial(); + my $opts = $root->opts->cmdLineVersion(); + + $actionList->add ("mount", "/mnt", + options => $opts, + fsType => $fsType, + isRoot => 1, + device => $yspecial); + + $actionList->add ("postlude", ""); + + return $actionList; +} + + +1; diff --git a/rescue/linux/cdrom/yaird-0.0.5/perl/RaidDev.pm b/rescue/linux/cdrom/yaird-0.0.5/perl/RaidDev.pm new file mode 100644 index 0000000..fc1eea2 --- /dev/null +++ b/rescue/linux/cdrom/yaird-0.0.5/perl/RaidDev.pm @@ -0,0 +1,46 @@ +#!perl -w +# +# RaidDev -- the probed values for a raid device, as found by mdadm. +# Copyright (C) 2005 Erik van Konijnenburg +# +# 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 +# +use strict; +use warnings; +package RaidDev; +use base 'Obj'; + +sub fill { + my $self = shift; + $self->SUPER::fill(); + $self->takeArgs ('path', 'uuid', 'level', 'devices'); +} + +sub path { return $_[0]->{path}; } +sub uuid { return $_[0]->{uuid}; } +sub level { return $_[0]->{level}; } +sub devices { return $_[0]->{devices}; } + +sub string { + my $self = shift; + my $path = $self->path; + my $uuid = $self->uuid; + my $level = $self->level; + my $devices = join (',', @{$self->devices}); + return "$path($level) = $uuid at $devices"; +} + + +1; diff --git a/rescue/linux/cdrom/yaird-0.0.5/perl/RaidTab.pm b/rescue/linux/cdrom/yaird-0.0.5/perl/RaidTab.pm new file mode 100644 index 0000000..2c8e6ad --- /dev/null +++ b/rescue/linux/cdrom/yaird-0.0.5/perl/RaidTab.pm @@ -0,0 +1,170 @@ +#!perl -w +# +# RaidTab -- encapsulate mdadm output +# Copyright (C) 2005 Erik van Konijnenburg +# +# 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 +# +# NOTE: The mdadm --detail shows only devices that are running, +# and does not distinguish between partitionable and non-partitionable +# devices. +# +use strict; +use warnings; +use Base; +use Conf; +use RaidDev; +package RaidTab; + + +my $raidTab = undef; + + +sub init () { + if (defined ($raidTab)) { + return; + } + + # my $name = Conf::get('fstab'); + $raidTab = []; + my $in; + if (! open ($in, "-|", "/sbin/mdadm --detail --scan")) { + Base::fatal ("Can't read mdadm output"); + } + my @lines = <$in>; + if (! close ($in)) { + Base::fatal ("Could not read mdadm output"); + } + my $buf; + for my $line (@lines) { + chomp $line; + if ($line =~ /^\s+/) { + $buf = $buf . $line; + } + else { + if (defined ($buf)) { + processLine ($buf); + } + $buf = $line; + } + } + if (defined ($buf)) { + processLine ($buf); + } +} + +sub processLine ($) { + my ($line) = @_; + my @fields = split (/\s+/, $line); + if ($fields[0] ne "ARRAY") { + Base::fatal ("Expected ARRAY keyword in mdadm output"); + } + my $path = $fields[1]; + my $uuid; + my $level; + my $devices; + for my $i (2 .. $#fields) { + if ($fields[$i] =~ /^uuid=(.+)$/i) { + if (defined ($uuid)) { + Base::fatal ("duplicate uuid attribute in mdadm output"); + } + $uuid = $1; + } + elsif ($fields[$i] =~ /^super-minor=(\d+)$/i) { + # nothing + } + elsif ($fields[$i] =~ /^devices=(.+)$/i) { + if (defined ($devices)) { + Base::fatal ("duplicate devices attribute in mdadm output"); + } + $devices = $1; + } + elsif ($fields[$i] =~ /^level=(.+)$/i) { + if (defined ($level)) { + Base::fatal ("duplicate level attribute in mdadm output"); + } + $level = $1; + } + elsif ($fields[$i] =~ /^num-devices=(\d+)$/i) { + # nothing + } + elsif ($fields[$i] =~ /^spare-group=(.+)$/i) { + # nothing + } + elsif ($fields[$i] =~ /^auto=(.+)$/i) { + # nothing + } + elsif ($fields[$i] =~ /^spares=(\d+)$/i) { + # nothing + } + else { + my $pair = $fields[$i]; + Base::fatal ("Unknown attribute $pair in mdadm output"); + } + } + if (! defined($path)) { + Base::fatal ("Missing device field in mdadm output"); + } + if (! defined($uuid)) { + Base::fatal ("Missing uuid attribute in mdadm output"); + } + if (! defined($level)) { + Base::fatal ("Missing level attribute in mdadm output"); + } + if (! defined($devices)) { + Base::fatal ("Missing devices attribute in mdadm output"); + } + + my $descr = RaidDev->new ( + path => $path, + uuid => $uuid, + level => $level, + devices => [split (/,/, $devices)], + ); + push @{$raidTab}, $descr; +} + + +sub all () { + init; + return $raidTab; +} + +sub findByPath ($) { + my ($path) = @_; + for my $rd (@{all()}) { + if ($rd->path() eq $path) { + return $rd; + } + } + return undef; +} + +sub findByDevno ($) { + my ($devno) = @_; + # + # NOTE: following does not cover the case where multiple + # block special files refer to the same md device. + # We need a find function that retrieves all descriptors + # matching a devno. + # + my $bsf = BlockSpecialFileTab::findByDevno ($devno); + if (! defined ($bsf)) { + return undef; + } + return findByPath ($bsf->path); +} + +1; diff --git a/rescue/linux/cdrom/yaird-0.0.5/perl/ScsiDev.pm b/rescue/linux/cdrom/yaird-0.0.5/perl/ScsiDev.pm new file mode 100644 index 0000000..f771bc0 --- /dev/null +++ b/rescue/linux/cdrom/yaird-0.0.5/perl/ScsiDev.pm @@ -0,0 +1,107 @@ +#!perl -w +# +# ScsiDev -- the probed values for a SCSI device, as found in /sys. +# Copyright (C) 2005 Erik van Konijnenburg +# +# 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 +# +# Like IDE devices, SCSI devices need a protocol driver, based +# on device type, without hardware probing and matching against +# a kernel generated table. +# +# The type and module knowledge is based in /etc/hotplug/scsi.agent, +# that attributes scsi/scsi.h. +# +use strict; +use warnings; +use Base; +package ScsiDev; +use base 'Obj'; + +sub fill { + my $self = shift; + $self->SUPER::fill(); + $self->takeArgs ('path'); + my $path = $self->path; + my $name = readlink ("$path/block"); + if (defined ($name)) { + $name = Base::basename ($name); + $self->{name} = $name; + } + else { + $self->{name} = undef; + } + $self->{vendor} = Base::getStringFile ("$path/vendor"); + $self->{model} = Base::getStringFile ("$path/model"); + + my $type = Base::getStringFile ("$path/type"); + $self->{type} = "disk" if $type eq '0'; + $self->{type} = "tape" if $type eq '1'; + $self->{type} = "printer" if $type eq '2'; + $self->{type} = "processor" if $type eq '3'; + $self->{type} = "worm" if $type eq '4'; + $self->{type} = "cdrom" if $type eq '5'; + $self->{type} = "scanner" if $type eq '6'; + $self->{type} = "mod" if $type eq '7'; + $self->{type} = "changer" if $type eq '8'; + $self->{type} = "comm" if $type eq '9'; + $self->{type} = "enclosure" if $type eq '14'; + $self->{type} = "type$type" if (!defined ($self->{type})); +} + +sub path { return $_[0]->{path}; } +sub name { return $_[0]->{name}; } +sub vendor { return $_[0]->{vendor}; } +sub model { return $_[0]->{model}; } +sub type { return $_[0]->{type}; } + +sub string { + my $self = shift; + my $path = $self->path(); + my $name = $self->name(); + my $vendor = $self->vendor(); + my $model = $self->model(); + my $type = $self->type(); + $name = "---" if (! defined ($name)); + return "$name ($type) = $vendor, $model at $path"; +} + + +# +# findModuleByScsiDev -- list of required SCSI drivers +# +sub findModuleByScsiDev ($) { + my ($scsiDev) = @_; + my $type = $scsiDev->type(); + my $driver; + $driver = "sd-mod" if $type eq "disk"; + # "FIXME some tapes use 'osst'" + $driver = "st" if $type eq "tape"; + # if $type eq "printer"; + # if $type eq "processor"; + $driver = "sr-mod" if $type eq "worm"; + $driver = "sr-mod" if $type eq "cdrom"; + # if $type eq "scanner"; + $driver = "sd-mod" if $type eq "mod"; + # if $type eq "changer"; + # if $type eq "comm"; + # if $type eq "enclosure"; + $driver = "sg" if (! defined ($driver)); + return [ $driver ]; +} + +1; + + diff --git a/rescue/linux/cdrom/yaird-0.0.5/perl/SharedLibraries.pm b/rescue/linux/cdrom/yaird-0.0.5/perl/SharedLibraries.pm new file mode 100644 index 0000000..4288895 --- /dev/null +++ b/rescue/linux/cdrom/yaird-0.0.5/perl/SharedLibraries.pm @@ -0,0 +1,140 @@ +#!perl -w +# +# SharedLibraries -- what shared libraries an object needs. +# Copyright (C) 2005 Erik van Konijnenburg +# +# 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 +# +use strict; +use warnings; +use Base; +use Conf; +package SharedLibraries; + + +# +# find -- find the shared libraries that are needed by an executable. +# Try to find libraries with ldd first. That works only with executables +# linked with glibc, so if ldd finds nothing, we look for traces of klibc. +# +sub find ($) { + my ($executable) = @_; + my $in; + my $result = []; + + if ($executable !~ m!^([.\w/-]+)$!) { + # taint check. + Base::fatal ("odd characters in executable name: $executable"); + } + $executable = $1; + + if (! open ($in, "-|", "/usr/bin/ldd $executable")) { + Base::fatal ("can't read ldd for $executable"); + } + while (defined (my $line = <$in>)) { + chomp $line; + last if ($line =~ /statically linked/); + if ($line =~ /not a dynamic executable/) { + # + # Happens when doing ldd on a shell script + # or kernel module (these have x-bit on in FC3, + # no idea why they would do that). Ldd exit status + # will be non-zero. + # Ldd only understands executables compiled with + # glibc; try to find use of other libraries. + # + return findLibr ($executable); + } + elsif ($line =~ m!.* => (/.+) \(0x[0-9a-fA-F]+\)$!) { + # + # in ldd 2.3.2 (Debian) output looks like this: + # /lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0xb7fea000) + # + push @{$result}, $1; + } + elsif ($line =~ m!^\s*(/[^\s]+) \(0x[0-9a-fA-F]+\)$!) { + # + # But ldd 2.3.3 (FC3) has this: + # /lib/ld-linux.so.2 (0x0056f000) + # + push @{$result}, $1; + } + elsif ($line =~ m!.* => \(0x[0-9a-fA-F]+\)$!) { + # + # And eg amd64 also has this: + # linux-gate.so.1 => (0x00000000) + # + # note the double space. This is a section not + # loaded from a file but mapped in by the kernel. + # The kernel puts some code with proper syscall + # linkage here. + # See http://lkml.org/lkml/2003/6/18/156 + # + next; + } + else { + Base::fatal ("unexpected ldd output for $executable: $line"); + } + } + if (! close ($in)) { + Base::fatal ("could not read ldd for $executable"); + } + return $result; +} + + +# +# findLibr -- given a filename, return name of dynamic loader. +# non-ELF files or non-executable ELF files return empty list, +# corrupt ELF files are fatal error. +# If there are shared libraries without absolute path, +# fatal error, since we don't know how the path the library uses +# to look up the shared library. +# +sub findLibr ($) { + my ($executable) = @_; + my $in; + my $result = []; + my $auxDir = Conf::get ('auxDir'); + + if (! open ($in, "-|", "$auxDir/findlibs -q $executable")) { + Base::fatal ("can't run findlibr for $executable"); + } + + while (defined (my $line = <$in>)) { + chomp $line; + if ($line =~ /^interpreter: ([\w.\/-]+)$/) { + push @{$result}, $1; + } + elsif ($line =~ /^needed: ([\w.\/-]+)$/) { + if (Base::isAbsolute ($1)) { + push @{$result}, $1; + } + else { + fatal ("shared library without glibc: $1 in $executable"); + } + } + else { + bug ("odd output for findlibs"); + } + } + + if (! close ($in)) { + Base::fatal ("could not run findlibr for $executable"); + } + return $result; +} + +1; diff --git a/rescue/linux/cdrom/yaird-0.0.5/perl/TestSet.pm b/rescue/linux/cdrom/yaird-0.0.5/perl/TestSet.pm new file mode 100644 index 0000000..c61e91a --- /dev/null +++ b/rescue/linux/cdrom/yaird-0.0.5/perl/TestSet.pm @@ -0,0 +1,260 @@ +#!perl -w +# +# Test -- test routines, mostly printing hw inventory. +# Copyright (C) 2005 Erik van Konijnenburg +# +# 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 +# +# +# +use strict; +use warnings; +use Base; +use FsTab; +use ActiveBlockDevTab; +use BlockSpecialFileTab; +use LabeledPartitionTab; +use LvmTab; +use Hardware; +use ModDepTab; +use RaidTab; +use InputTab; +use Image; +use Plan; +use KConfig; + +package TestSet; + + +sub testGetFsTab () { + print "Entries in fstab:\n"; + for my $entry (@{FsTab->all}) { + my $str = $entry->string; + my $cmd = $entry->opts->cmdLineVersion; + print "\t$str\n"; + print "\t\t$cmd\n"; + } +} + + +sub testActiveBlockDevs () { + print "Block devices in /sys:\n"; + for my $abd (@{ActiveBlockDevTab::all()}) { + my $str = $abd->string; + print "\t$str\n"; + } +} + +sub testActiveBlockDevPartitions () { + print "Partitions for block devices in /sys:\n"; + for my $abd (@{ActiveBlockDevTab::all()}) { + my $str = $abd->string; + my $hp = $abd->hasPartitions() ? "yes" : "no"; + my $partitions = $abd->partitions(); + my $partList = '[' + . join (',', (map {$_->name} @{$partitions})) . ']'; + print "\t$str\n"; + print "\t\tpartitioned:\t$hp\n"; + print "\t\tpartitions:\t$partList\n"; + } +} + + +sub testBlockSpecialFiles () { + print "Block special files /dev:\n"; + for my $bsf (@{BlockSpecialFileTab::all()}) { + my $str = $bsf->string; + print "\t$str\n"; + } +} + + +sub testLabeledPartitions () { + print "Labeled partitions detected:\n"; + for my $lp (@{LabeledPartitionTab::all()}) { + my $str = $lp->string; + print "\t$str\n"; + } +} + + +sub testLvm () { + print "LVM Logical Volumes:\n"; + for my $lv (@{LvmTab::allLogicalVolumes()}) { + my $str = $lv->string; + print "\t$str\n"; + } + + print "LVM Volume Groups:\n"; + for my $vg (@{LvmTab::allVolumeGroups()}) { + my $str = $vg->string; + print "\t$str\n"; + } + + print "LVM Physical Volumes:\n"; + for my $pv (@{LvmTab::allPhysicalVolumes()}) { + my $str = $pv->string; + print "\t$str\n"; + } +} + + +sub testHardware () { + print "Hardware modules needed for devices in /sys:\n"; + for my $abd (@{ActiveBlockDevTab::all()}) { + my $str = $abd->string; + my $hw = $abd->hw; + next unless defined ($hw); + print "\t$str\n"; + my $moduleList = Hardware::moduleList ($hw); + print "\t\t[" . join(',', @{$moduleList}) . "]\n"; + } +} + +sub testModDep () { + print "Module dependencies:\n"; + for my $modDep (@{ModDepTab::all()}) { + my $str = ModDepTab::findByModnam($modDep)->string; + print "\t$str\n"; + } +} + +sub testModResolve () { + print "Hardware modules with resolved dependencies:\n"; + for my $abd (@{ActiveBlockDevTab::all()}) { + my $str = $abd->string; + my $hw = $abd->hw; + next unless defined ($hw); + print "\t$str\n"; + my $moduleList = Hardware::moduleList ($hw); + print "\t\t[" . join(',', @{$moduleList}) . "]\n"; + my $resolveList = ModDepTab::resolve ($moduleList); + print "\t\t[" . join(',', @{$resolveList}) . "]\n"; + } +} + +sub testRaidDevices () { + print "Raid devices:\n"; + for my $rd (@{RaidTab::all()}) { + my $str = $rd->string; + print "\t$str\n"; + } +} + +sub testInput () { + print "Input devices:\n"; + for my $inp (@{InputTab::all()}) { + my $str = $inp->string; + print "\t$str\n"; + } +} + +sub testInterpretation () { + print "Interpreted Fstab Entries:\n"; + for my $fse (@{FsTab->all}) { + my $fseStr = $fse->string; + my $active = $fse->isRequiredAtBoot ? "yes": "no"; + my $path = $fse->blockDevPath(); + my $lvmStr = "--"; + my $devno = "--"; + my $hardware; + my $name = "--"; + my $modules; + my $resolved; + if (defined ($path) && -b $path) { + $devno = Base::devno ($path); + my $lvmFiles = LvmTab::findPVPathsByLVDevno ($devno); + if (defined ($lvmFiles)) { + $lvmStr = '[' . join (',', @{$lvmFiles}) . ']'; + } + + my $abd = ActiveBlockDevTab::findByDevno($devno); + if (defined ($abd)) { + $name = $abd->name(); + my $parent = $abd->parent(); + if (defined ($parent)) { + $hardware = $parent->hw(); + } + else { + $hardware = $abd->hw(); + } + } + } + if (defined ($hardware)) { + my $moduleList = Hardware::moduleList ($hardware); + $modules = "[" . join(',', @{$moduleList}) . "]"; + my $resolveList = ModDepTab::resolve ($moduleList); + $resolved = "[" . join(',', @{$resolveList}) . "]"; + } + + $hardware = "--" unless defined ($hardware); + $modules = "--" unless defined ($modules); + $resolved = "--" unless defined ($resolved); + $path = "--" unless defined ($path); + print "\t$fseStr\n"; + print "\t\tactive:\t$active\n"; + print "\t\tdevno:\t$devno\n"; + print "\t\tpath:\t$path\n"; + print "\t\tname:\t$name\n"; + print "\t\thw:\t$hardware\n"; + print "\t\tmods:\t$modules\n"; + print "\t\tresolv:\t$resolved\n"; + print "\t\tlvm:\t$lvmStr\n"; + + if (defined ($path)) { + my $abd = ActiveBlockDevTab::findByPath($path); + if (defined ($abd)) { + my $list = ActionList->new(); + Plan::addDevicePlan ($list, $abd, [], []); + # the output provided by addDevicePlan + # is enough. + # print $list->string(); + } + } + } +} + +sub testKconfig () { + print "Kernel Builtin Modules:\n"; + for my $module (@{KConfig::allKnownModules()}) { + my $builtIn = KConfig::isBuiltIn($module) ? "BUILTIN" : "--"; + print "\t$module:\t$builtIn\n"; + } +} + +# +# testAll -- run various interesting subroutines +# that may trigger errors. +# +sub testAll () +{ + testGetFsTab (); + testBlockSpecialFiles (); + testLabeledPartitions (); + testActiveBlockDevs (); + testActiveBlockDevPartitions (); + testLvm (); + testHardware (); + testModDep (); + testModResolve (); + testRaidDevices(); + testInterpretation (); + testInput (); + testKconfig (); + Base::bye (); +} + + +1; diff --git a/rescue/linux/cdrom/yaird-0.0.5/perl/UsbDev.pm b/rescue/linux/cdrom/yaird-0.0.5/perl/UsbDev.pm new file mode 100644 index 0000000..132494b --- /dev/null +++ b/rescue/linux/cdrom/yaird-0.0.5/perl/UsbDev.pm @@ -0,0 +1,88 @@ +#!perl -w +# +# UsbDev -- the probed values for a USB device, as found in /sys. +# Copyright (C) 2005 Erik van Konijnenburg +# +# 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 +# +# +# The information passed to the matcher should correspond to what +# is passed by hotplug. +# +# For devices: +# vendor, product, bcdDevice = 0, 0, 0 +# deviceClass, subClass, protocol = from /sys +# interfaceClass, subClass, protocol = 1000,1000,1000 +# For interfaces: +# vendor, product, bcdDevice = from /sys in parent device +# deviceClass, subClass, protocol = 1000,1000,1000 +# interfaceClass, subClass, protocol = from /sys +# +# Note that somewhere in 2.5, the hotplug events for USB +# changed: old kernels only had an event for the first interface, +# with no distinction between interface and device. +# +use strict; +use warnings; +use Base; +package UsbDev; +use base 'Obj'; + + +sub fill { + my $self = shift; + $self->SUPER::fill(); + $self->takeArgs ('path'); + my $path = $self->{path}; + if (-f "$path/bDeviceClass") { + $self->{idVendor} = 0; + $self->{idProduct} = 0; + $self->{bcdDevice} = 0; + $self->{bDeviceClass} = Base::getHexFile ("$path/bDeviceClass"); + $self->{bDeviceSubClass} = Base::getHexFile ("$path/bDeviceSubClass"); + $self->{bDeviceProtocol} = Base::getHexFile ("$path/bDeviceProtocol"); + $self->{bInterfaceClass} = 1000; + $self->{bInterfaceSubClass} = 1000; + $self->{bInterfaceProtocol} = 1000; + } + elsif (-f "$path/bInterfaceClass") { + $self->{idVendor} = Base::getHexFile ("$path/../idVendor"); + $self->{idProduct} = Base::getHexFile ("$path/../idProduct"); + $self->{bcdDevice} = Base::getHexFile ("$path/../bcdDevice"); + $self->{bDeviceClass} = 1000; + $self->{bDeviceSubClass} = 1000; + $self->{bDeviceProtocol} = 1000; + $self->{bInterfaceClass} = Base::getHexFile ("$path/bInterfaceClass"); + $self->{bInterfaceSubClass} = Base::getHexFile ("$path/bInterfaceSubClass"); + $self->{bInterfaceProtocol} = Base::getHexFile ("$path/bInterfaceProtocol"); + } + else { + Base::fatal "trying to interpret $path as /sys USB devive"; + } +} + +sub idVendor { return $_[0]->{idVendor}; } +sub idProduct { return $_[0]->{idProduct}; } +sub bcdDevice { return $_[0]->{bcdDevice}; } +sub bDeviceClass { return $_[0]->{bDeviceClass}; } +sub bDeviceSubClass { return $_[0]->{bDeviceSubClass}; } +sub bDeviceProtocol { return $_[0]->{bDeviceProtocol}; } +sub bInterfaceClass { return $_[0]->{bInterfaceClass}; } +sub bInterfaceSubClass { return $_[0]->{bInterfaceSubClass}; } +sub bInterfaceProtocol { return $_[0]->{bInterfaceProtocol}; } + + + +1; diff --git a/rescue/linux/cdrom/yaird-0.0.5/perl/UsbMapEntry.pm b/rescue/linux/cdrom/yaird-0.0.5/perl/UsbMapEntry.pm new file mode 100644 index 0000000..ea2e134 --- /dev/null +++ b/rescue/linux/cdrom/yaird-0.0.5/perl/UsbMapEntry.pm @@ -0,0 +1,133 @@ +#!perl -w +# +# UsbMapEntry -- encapsulate single line from modules.usbmap +# Copyright (C) 2005 Erik van Konijnenburg +# +# 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 +# +# +# Knows how to match, can return module name. +# +# The ultimate authority on matching is +# linux/drivers/usb/core/usb.c:usb_match_id(), +# the routine where the kernel determines whether to let a particular +# driver probe an interface. Both the hotplug usb.agent and this +# script mimic the behaviour of that function. +# AFAICS, usb_match_id is only invoked on interfaces, not on the devices +# these interfaces are part of. +# However, driver/usb/core/hub.c:usb_new_device() invokes device_add() +# for both the device and (via usb_set_configuration()) for the interfaces; +# this in turn will produce hotplut events (in the case of interfaces with +# a callback to usb_hotplug(), which puts product information in the hotplug +# environment), and the hotplug scripts will do matching for both devices +# and interfaces. The coldplug script usb.rc emulates this kernel behaviour. +# +# Thus, there seems to be a discrepancy between what gets matched in the +# kernel and what gets matched in hotplug; we follow hotplug behaviour. +# +# Note that hotplug uses this matching algorithm not only on the module +# map provided by the kernel, but also on /etc/hotplug/usb/*.usermap; +# the latter results not in loading of a module but in execution of a script. +# This can be used to start gphoto, or it can be used to push firmware +# to a device. Question: what should mkinitrd know about this? +# +use strict; +use warnings; +package UsbMapEntry; +use base 'Obj'; + + +sub fill { + my $self = shift; + $self->SUPER::fill(); + $self->takeArgs ('module', 'match_flags', 'idVendor', + 'idProduct', 'bcdDevice_lo', 'bcdDevice_hi', + 'bDeviceClass', 'bDeviceSubClass', 'bDeviceProtocol', + 'bInterfaceClass', 'bInterfaceSubClass', + 'bInterfaceProtocol', 'driver_info'); +} + +sub module { return $_[0]->{module}; } +sub match_flags { return $_[0]->{match_flags}; } +sub idVendor { return $_[0]->{idVendor}; } +sub idProduct { return $_[0]->{idProduct}; } +sub bcdDevice_lo { return $_[0]->{bcdDevice_lo}; } +sub bcdDevice_hi { return $_[0]->{bcdDevice_hi}; } +sub bDeviceClass { return $_[0]->{bDeviceClass}; } +sub bDeviceSubClass { return $_[0]->{bDeviceSubClass}; } +sub bDeviceProtocol { return $_[0]->{bDeviceProtocol}; } +sub bInterfaceClass { return $_[0]->{bInterfaceClass}; } +sub bInterfaceSubClass { return $_[0]->{bInterfaceSubClass}; } +sub bInterfaceProtocol { return $_[0]->{bInterfaceProtocol}; } +sub driver_info { return $_[0]->{driver_info}; } + +# we could do the USB_MATCH_XXX processing in init, +# if it turns out to be time critical. +my $USB_MATCH_VENDOR = 0x0001; +my $USB_MATCH_PRODUCT = 0x0002; +my $USB_MATCH_DEV_LO = 0x0004; +my $USB_MATCH_DEV_HI = 0x0008; +my $USB_MATCH_DEV_CLASS = 0x0010; +my $USB_MATCH_DEV_SUBCLASS = 0x0020; +my $USB_MATCH_DEV_PROTOCOL = 0x0040; +my $USB_MATCH_INT_CLASS = 0x0080; +my $USB_MATCH_INT_SUBCLASS = 0x0100; +my $USB_MATCH_INT_PROTOCOL = 0x0200; + + +sub matches { + my ($self, $dev) = @_; + my $match = $self->match_flags; + + if ($match & $USB_MATCH_VENDOR && $self->idVendor != $dev->idVendor) { + return 0; + } + if ($match & $USB_MATCH_PRODUCT && $self->idProduct != $dev->idProduct) { + return 0; + } + if ($match & $USB_MATCH_DEV_LO && $self->bcdDevice_lo > $dev->bcdDevice) { + return 0; + } + if ($match & $USB_MATCH_DEV_HI && $self->bcdDevice_hi < $dev->bcdDevice) { + return 0; + } + if ($match & $USB_MATCH_DEV_CLASS && $self->bDeviceClass != $dev->bDeviceClass) { + return 0; + } + if ($match & $USB_MATCH_DEV_SUBCLASS && $self->bDeviceSubClass != $dev->bDeviceSubClass) { + return 0; + } + if ($match & $USB_MATCH_DEV_PROTOCOL && $self->bDeviceProtocol != $dev->bDeviceProtocol) { + return 0; + } + + # Quoting usb.agent: + # for now, this only checks the first of perhaps + # several interfaces for this device. + if ($match & $USB_MATCH_INT_CLASS && $self->bInterfaceClass != $dev->bInterfaceClass) { + return 0; + } + if ($match & $USB_MATCH_INT_SUBCLASS && $self->bInterfaceSubClass != $dev->bInterfaceSubClass) { + return 0; + } + if ($match & $USB_MATCH_INT_PROTOCOL && $self->bInterfaceProtocol != $dev->bInterfaceProtocol) { + return 0; + } + + return 1; +} + +1; + diff --git a/rescue/linux/cdrom/yaird-0.0.5/perl/UsbTab.pm b/rescue/linux/cdrom/yaird-0.0.5/perl/UsbTab.pm new file mode 100644 index 0000000..92407cb --- /dev/null +++ b/rescue/linux/cdrom/yaird-0.0.5/perl/UsbTab.pm @@ -0,0 +1,92 @@ +#!perl -w +# +# UsbTab -- encapsulate modules.usbmap +# Copyright (C) 2005 Erik van Konijnenburg +# +# 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 +# + +use strict; +use warnings; +use Base; +use UsbMapEntry; +package UsbTab; + +my $usbList = undef; + +# Parse this: +# # usb module match_flags idVendor idProduct bcdDevice_lo bcdDevice_hi bDeviceClass bDeviceSubClass bDeviceProtocol bInterfaceClass bInterfaceSubClass bInterfaceProtocol driver_info +# bfusb 0x0003 0x057c 0x2200 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x0 +# bcm203x 0x0003 0x0a5c 0x2033 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x0 + +sub init () { + if (defined ($usbList)) { + return; + } + $usbList = []; + my $name = Conf::get('usbMap'); + if (! open (IN, "<", "$name")) { + Base::fatal ("can't open usb module list $name"); + } + while (defined (my $line = )) { + chomp $line; + $line =~ s/#.*//; + $line =~ s/^\s+//; + $line =~ s/\s+$//; + next if ($line eq ""); + my @fields = split (/\s+/, $line, 999); + if ($#fields != 12) { + Base::fatal ("malformed line in usb module list $name"); + } + push @{$usbList}, UsbMapEntry->new ( + module => $fields[0], + match_flags => hex ($fields[1]), + idVendor => hex ($fields[2]), + idProduct => hex ($fields[3]), + bcdDevice_lo => hex ($fields[4]), + bcdDevice_hi => hex ($fields[5]), + bDeviceClass => hex ($fields[6]), + bDeviceSubClass => hex ($fields[7]), + bDeviceProtocol => hex ($fields[8]), + bInterfaceClass => hex ($fields[9]), + bInterfaceSubClass => hex ($fields[10]), + bInterfaceProtocol => hex ($fields[11]), + driver_info => hex ($fields[12]), + ); + } + if (! close (IN)) { + Base::fatal ("could not read usb module list $name"); + } +} + +sub all () { + init; + return $usbList; +} + +# given pathname in devices tree, return list of matching modules. +sub find ($) { + my ($dev) = @_; + my @result = (); + for my $ume (@{UsbTab::all()}) { + if ($ume->matches ($dev)) { + push @result, $ume->module; + } + } + return [@result]; +} + + +1; diff --git a/rescue/linux/cdrom/yaird-0.0.5/perl/VolumeGroup.pm b/rescue/linux/cdrom/yaird-0.0.5/perl/VolumeGroup.pm new file mode 100644 index 0000000..92c5d52 --- /dev/null +++ b/rescue/linux/cdrom/yaird-0.0.5/perl/VolumeGroup.pm @@ -0,0 +1,45 @@ +#!perl -w +# +# VolumeGroup -- Volume Group Descriptor +# Copyright (C) 2005 Erik van Konijnenburg +# +# 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 +# +# vgnam - volume group name +# uuid - uuid +# +use strict; +use warnings; +package VolumeGroup; +use base 'Obj'; + +sub fill { + my $self = shift; + $self->SUPER::fill(); + $self->takeArgs ('vgnam', 'uuid'); +} + +sub vgnam { return $_[0]->{vgnam}; } +sub uuid { return $_[0]->{uuid}; } + +sub string { + my $self = shift; + my $vgnam = $self->vgnam; + my $uuid = $self->uuid; + my $str = "$vgnam, $uuid"; + return $str; +} + +1; diff --git a/rescue/linux/cdrom/yaird-0.0.5/perl/main.pl b/rescue/linux/cdrom/yaird-0.0.5/perl/main.pl new file mode 100644 index 0000000..8f1333a --- /dev/null +++ b/rescue/linux/cdrom/yaird-0.0.5/perl/main.pl @@ -0,0 +1,234 @@ +#!@PERL@ +# +# Main -- an exercise in initrd building +# Copyright (C) 2005 Erik van Konijnenburg +# +# 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 +# +# +# +use strict; +use warnings; +use lib '@PERLDIR@'; + +use Getopt::Long; +use Plan; +use TestSet; +use Pack; + +my $appName = "@PACKAGE@"; +my $appVersion = "@VERSION@"; + + +# +# go -- main program: +# write an image to destination in specified format. +# destination must not exist yet. +# root is the blockdev to use as root after reboot, or undef for default. +# +sub go ($$$) { + my ($format, $destination, $root) = @_; + my $masterPlan = Plan::makePlan ($root); + my $image = $masterPlan->expand (); + Pack::package ($image, $format, $destination); +} + + +# +# paranoia -- Random bits of - +# +sub paranoia { + umask 077; + + # + # Perlsec(1) identifies the following as risky: + # + # delete @ENV{qw(IFS CDPATH ENV BASH_ENV)}; + # + # but just scrapping the complete environment + # seems to work nicely. + # + delete @ENV{keys %ENV}; + $ENV{'PATH'} = '/bin:/sbin:/usr/bin:/usr/sbin'; +} + + +# +# usage -- print invocation patterns of the application +# +sub usage { + print <<"//"; + +$appName generates initrd images. + +$appName --test [ version ] + print an overview of system data, without writing anything to disk. + +$appName --output dest --format format [ version ] + generate an initrd image in 'dest', in the format 'format'. + +Options: + -h, -?, --help print this help text and exit + -V, --version print version and exit (don't bother: $appVersion) + -v, --verbose print progress messages + -d, --debug detailed output + -q, --quiet don't print warning messages + -o, --output dest place result here + -f, --format form produce the image in this format, + valid values: directory, cramfs, cpio + -r, --root blockdev let initrd boot another block device as root + the blockdev must occur in fstab somewhere. + -t, --test print overview of system data, + used as basis for debugging. + +// +} + + +# +# main -- main program, argument processing +# +sub main { + my ($opt_help, $opt_version, + $opt_verbose, $opt_quiet, $opt_debug, + $opt_format, $opt_output, $opt_root, $opt_test); + + paranoia (); + Base::setProgName ($appName); + + my @warnings = (); + { + # + # catch warnings during getopt, but not elsewhere. + # The idea is to let -? produce help without complaint, + # even if other args are broken. + # + local $SIG{__WARN__} = sub { push @warnings, $_[0]; }; + + Getopt::Long::Configure ("bundling"); + my $result = GetOptions ( + "h|help|?" => \$opt_help, + "V|version" => \$opt_version, + "v|verbose" => \$opt_verbose, + "q|quiet" => \$opt_quiet, + "d|debug" => \$opt_debug, + "f|format=s" => \$opt_format, + "o|output=s" => \$opt_output, + "r|root=s" => \$opt_root, + "t|test" => \$opt_test, + ); + } + + # + # --help and --version processed without regard to other options, + # exit without side effect. + # + if (defined ($opt_help)) { + usage (); + Base::bye(); + } + if (defined ($opt_version)) { + Base::setVerbose (1); + Base::info ("version $appVersion"); + Base::bye(); + } + + # + # Argument validation + # + for my $w (@warnings) { + # lazy: perhaps we could provide more info here? + Base::fatal ("$w"); + } + if (defined ($opt_output) && defined ($opt_test)) { + Base::fatal "conflicting options --output and --test"; + } + if (! defined ($opt_output) && ! defined ($opt_test)) { + Base::fatal "one of --output and --test must be given"; + } + if (defined ($opt_output)) { + if (-e $opt_output) { + Base::fatal "destination $opt_output already exists"; + } + if (! defined ($opt_format)) { + Base::fatal "option --output requires --format option"; + } + if (! Pack::knownFormat ($opt_format)) { + Base::fatal "unknown --format argument: $opt_format"; + } + + # + # Untaint -- is there a need for 'output' with an umlaut? + # + if ($opt_output !~ m!^([-_./[a-zA-Z0-9]+)$!) { + Base::fatal ("illegal character in output file name"); + } + $opt_output = $1; + + if (defined ($opt_root)) { + # Untaint + if ($opt_root !~ m!^([-_./[a-zA-Z0-9]+)$!) { + Base::fatal ("illegal character in root device name"); + } + $opt_root = $1; + } + } + if (defined ($opt_test)) { + if (defined ($opt_format)) { + Base::fatal "conflicting options --test and --format"; + } + if (defined ($opt_root)) { + Base::fatal "conflicting options --test and --root"; + } + } + if ($#ARGV > 0) { + my $valid = $ARGV[0]; + Base::fatal "extra arguments after $valid"; + } + + # + # All arguments validated; start processing. + # + if ($#ARGV == 0) { + Conf::set ("version", $ARGV[0]); + } + if ($opt_verbose) { + Base::setVerbose (1); + } + if ($opt_debug) { + Base::setDebug (1); + } + if ($opt_quiet) { + Base::setQuiet (1); + } + + # avoid silly messages with an early test + my $v = Conf::get("version"); + my $mdir = Conf::get("libModules") . "/$v"; + if (! -d $mdir) { + Base::fatal ("unknown kernel version: $v"); + } + + # go for it. + if (defined ($opt_test)) { + TestSet::testAll(); + } + elsif (defined ($opt_output)) { + go ($opt_format, $opt_output, $opt_root); + } + Base::bye; +} + +main (); diff --git a/rescue/linux/cdrom/yaird-0.0.5/perl/yaird b/rescue/linux/cdrom/yaird-0.0.5/perl/yaird new file mode 100755 index 0000000..065a2b1 --- /dev/null +++ b/rescue/linux/cdrom/yaird-0.0.5/perl/yaird @@ -0,0 +1,234 @@ +#!/usr/bin/perl +# +# Main -- an exercise in initrd building +# Copyright (C) 2005 Erik van Konijnenburg +# +# 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 +# +# +# +use strict; +use warnings; +use lib '/usr/local/lib/yaird/perl'; + +use Getopt::Long; +use Plan; +use TestSet; +use Pack; + +my $appName = "yaird"; +my $appVersion = "0.0.5"; + + +# +# go -- main program: +# write an image to destination in specified format. +# destination must not exist yet. +# root is the blockdev to use as root after reboot, or undef for default. +# +sub go ($$$) { + my ($format, $destination, $root) = @_; + my $masterPlan = Plan::makePlan ($root); + my $image = $masterPlan->expand (); + Pack::package ($image, $format, $destination); +} + + +# +# paranoia -- Random bits of - +# +sub paranoia { + umask 077; + + # + # Perlsec(1) identifies the following as risky: + # + # delete @ENV{qw(IFS CDPATH ENV BASH_ENV)}; + # + # but just scrapping the complete environment + # seems to work nicely. + # + delete @ENV{keys %ENV}; + $ENV{'PATH'} = '/bin:/sbin:/usr/bin:/usr/sbin'; +} + + +# +# usage -- print invocation patterns of the application +# +sub usage { + print <<"//"; + +$appName generates initrd images. + +$appName --test [ version ] + print an overview of system data, without writing anything to disk. + +$appName --output dest --format format [ version ] + generate an initrd image in 'dest', in the format 'format'. + +Options: + -h, -?, --help print this help text and exit + -V, --version print version and exit (don't bother: $appVersion) + -v, --verbose print progress messages + -d, --debug detailed output + -q, --quiet don't print warning messages + -o, --output dest place result here + -f, --format form produce the image in this format, + valid values: directory, cramfs, cpio + -r, --root blockdev let initrd boot another block device as root + the blockdev must occur in fstab somewhere. + -t, --test print overview of system data, + used as basis for debugging. + +// +} + + +# +# main -- main program, argument processing +# +sub main { + my ($opt_help, $opt_version, + $opt_verbose, $opt_quiet, $opt_debug, + $opt_format, $opt_output, $opt_root, $opt_test); + + paranoia (); + Base::setProgName ($appName); + + my @warnings = (); + { + # + # catch warnings during getopt, but not elsewhere. + # The idea is to let -? produce help without complaint, + # even if other args are broken. + # + local $SIG{__WARN__} = sub { push @warnings, $_[0]; }; + + Getopt::Long::Configure ("bundling"); + my $result = GetOptions ( + "h|help|?" => \$opt_help, + "V|version" => \$opt_version, + "v|verbose" => \$opt_verbose, + "q|quiet" => \$opt_quiet, + "d|debug" => \$opt_debug, + "f|format=s" => \$opt_format, + "o|output=s" => \$opt_output, + "r|root=s" => \$opt_root, + "t|test" => \$opt_test, + ); + } + + # + # --help and --version processed without regard to other options, + # exit without side effect. + # + if (defined ($opt_help)) { + usage (); + Base::bye(); + } + if (defined ($opt_version)) { + Base::setVerbose (1); + Base::info ("version $appVersion"); + Base::bye(); + } + + # + # Argument validation + # + for my $w (@warnings) { + # lazy: perhaps we could provide more info here? + Base::fatal ("$w"); + } + if (defined ($opt_output) && defined ($opt_test)) { + Base::fatal "conflicting options --output and --test"; + } + if (! defined ($opt_output) && ! defined ($opt_test)) { + Base::fatal "one of --output and --test must be given"; + } + if (defined ($opt_output)) { + if (-e $opt_output) { + Base::fatal "destination $opt_output already exists"; + } + if (! defined ($opt_format)) { + Base::fatal "option --output requires --format option"; + } + if (! Pack::knownFormat ($opt_format)) { + Base::fatal "unknown --format argument: $opt_format"; + } + + # + # Untaint -- is there a need for 'output' with an umlaut? + # + if ($opt_output !~ m!^([-_./[a-zA-Z0-9]+)$!) { + Base::fatal ("illegal character in output file name"); + } + $opt_output = $1; + + if (defined ($opt_root)) { + # Untaint + if ($opt_root !~ m!^([-_./[a-zA-Z0-9]+)$!) { + Base::fatal ("illegal character in root device name"); + } + $opt_root = $1; + } + } + if (defined ($opt_test)) { + if (defined ($opt_format)) { + Base::fatal "conflicting options --test and --format"; + } + if (defined ($opt_root)) { + Base::fatal "conflicting options --test and --root"; + } + } + if ($#ARGV > 0) { + my $valid = $ARGV[0]; + Base::fatal "extra arguments after $valid"; + } + + # + # All arguments validated; start processing. + # + if ($#ARGV == 0) { + Conf::set ("version", $ARGV[0]); + } + if ($opt_verbose) { + Base::setVerbose (1); + } + if ($opt_debug) { + Base::setDebug (1); + } + if ($opt_quiet) { + Base::setQuiet (1); + } + + # avoid silly messages with an early test + my $v = Conf::get("version"); + my $mdir = Conf::get("libModules") . "/$v"; + if (! -d $mdir) { + Base::fatal ("unknown kernel version: $v"); + } + + # go for it. + if (defined ($opt_test)) { + TestSet::testAll(); + } + elsif (defined ($opt_output)) { + go ($opt_format, $opt_output, $opt_root); + } + Base::bye; +} + +main (); diff --git a/rescue/linux/cdrom/yaird-0.0.5/templates/Debian.pm b/rescue/linux/cdrom/yaird-0.0.5/templates/Debian.pm new file mode 100644 index 0000000..85a094f --- /dev/null +++ b/rescue/linux/cdrom/yaird-0.0.5/templates/Debian.pm @@ -0,0 +1,303 @@ +#!/usr/bin/perl +# +# Template -- for translation general intentions to exact initrd layout +# Copyright (C) 2005 Erik van Konijnenburg +# +# 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 +# +# These templates define the translation from general intentions in the +# plan to exact lists of files and script fragments to be included +# on the initrd image. Templates are indexed by an action name, and include: +# - files to be copied from current system to initrd; +# often executables. +# - directories to be created +# - fragments to be appended to scripts on the image, +# these are in a hash from script name to script content. +# +# Everything is processed by HTML::Template before being added to the +# image: script fragments, but also file names and script names. +# Leading spaces are dropped from template lines. +# +# If you want to implement busybox support, this is the place to do it. +# +# Obviously, the template names and the attributes used in the template +# should match what is provided by the planner. +# +# + +use strict; +package Template; + + +my $templates = { + prologue => { + # In principle, we don't want device files on the initrd + # image: device numbers can change between kernels. + # Instead, create device files at boot time based on info + # in sysfs. However, /dev/null and /dev/console are needed + # to mount sysfs. + files => [ + '/dev/null', + '/dev/console', + '/bin/dash', + '/bin/cat', + '/bin/mkdir', + '/bin/mount', + '/bin/umount', + '/bin/mknod', + '/bin/sleep', + ], + directories => [ + '/mnt', '/proc', '/sys', '/dev', '/etc', '/var', + ], + trees => [], + scripts => { + '/init' => <<'//', + #!/bin/dash + # + # Generator version: yaird . + # + set -x + # + # Utility functions + # + mksymdev () { + devfile="$1" + sysfile="$2" + cb="$3" + devpair=$(/bin/cat "$sysfile") + for delay in 1 2 4 8 16 + do + if [ "$devpair" = "" ] + then + echo "Waiting $delay seconds for $sysfile to show up" + sleep $delay + fi + devpair=$(/bin/cat "$sysfile") + done + + if [ "$devpair" = "" ] + then + echo "Device $sysfile seems to be down." + echo "Debugging opportunity, type ^D to continue." + /bin/dash + fi + + maj=${devpair%:*} + min=${devpair#*:} + /bin/mknod "$devfile" $cb $maj $min + } + mkcdev () { + mksymdev "$1" "/sys/class/$2/dev" c + } + mkbdev () { + mksymdev "$1" "/sys/block/$2/dev" b + } + + + # + # Setting up mounts + # + mount -nt sysfs sysfs /sys + mount -nt proc proc /proc + # In Fedora FC3, tmpfs *must* have the name + # 'none', otherwise start_udev, called from + # rc.sysinit will mount a new tmpfs over it, + # and you loose access to nodes such as + # /dev/vg0/root, expected to be created by + # LVM in initramfs. + mount -nt tmpfs none /dev + + # + # + # Command line processing + # init - first proc to start on next root + # root - to be done: how should it relate + # to file system selection? + # ro,rw - mount root read-only or read-write. + # This is like a mount -r; it overrules + # a -o rw. + # noresume, resume - to be done + # ide - options for module ide_core. + # need a way to append these to proper + # module. do a check on module name + # in insmod template? + # + ro=-r + init=/sbin/init + for i in $(cat /proc/cmdline) + do + case "$i" in + init=*) + init=${i#init=} + ;; + ro) + ro=-r + ;; + rw) + ro= + esac + done +// + }, + }, + + insmod => { + files => [ + '', + '/sbin/insmod', + ], + directories => [], + trees => [], + scripts => { + '/init' => <<'//', + /sbin/insmod '' +// + }, + + }, + + mkbdev => { + files => [], + directories => [], + trees => [], + scripts => { + '/init' => <<'//', + mkbdev '' '' +// + }, + }, + + vgchange => { + files => [ + '/lib/lvm-200/vgchange', + '/sbin/vgchange', + ], + directories => [], + trees => [], + scripts => { + # We cannot make mapper/control any earlier, + # since dm-mod needs to be loaded to be able + # to determine devno. + '/init' => <<'//', + if [ ! -c /dev/mapper/control ] + then + /bin/mkdir /dev/mapper + mkcdev /dev/mapper/control misc/device-mapper + fi + /bin/mount -nt tmpfs tmpfs /etc + /bin/mount -nt tmpfs tmpfs /var + /sbin/vgchange -a y '' + /bin/umount -n /var + /bin/umount -n /etc +// + }, + }, + + mdadm => { + files => [ + '/sbin/mdadm', + ], + directories => [], + trees => [], + scripts => { + # + # NOTE: mdadm can operate without knowledge + # of device numbers; it will assign an unused + # one to the new device. Thus you could have + # device name /dev/md/boot that is stable, + # regardless of which other raid devices are + # operational. However, debian installer + # consistently uses device names like /dev/md0, + # where the name depends on earlier minors + # that happen to have been assigned. + # To work around this problem, we forego + # the --auto option, and mknod the device + # before putting an md under it. Better hope + # the major number is not going to change ... + # + '/init' => <<'//', + mknod b + mdadm --assemble --uuid \ + +// + } + }, + + mount => { + files => [], + directories => [], + trees => [], + scripts => { + # + # NOTE: honouring the kernel cmdline option ro,rw + # is very nice, but... If you have an ext3 in a + # file loopback-mounted from vfat, it's unlikely + # that a remount rw of root will also make the + # underlying vfat read-write. Underlying filesystems + # should ignore the kernel ro/rw option; we + # have an attribute isRoot that's defined iff + # this is the real root. + # + # always -n, since we dont have writable /etc/mtab. + # + '/init' => <<'//', + mount -n \ + $ro \ + -t \ + \ + \ + +// + } + }, + + postlude => { + files => [ + '/run_init', + ], + directories => [], + trees => [], + scripts => { + # + # Do *not* do a pivot_root here. We're + # working from rootfs; a pivotroot would + # make that end up in /initrd, which gets + # unmounted by rc.sysinit, and without rootfs, + # too much is broken to even do a panic. + # + # Instead use run_init from klibc, which uses + # a magical combination of mount --move /mnt /, + # chdir and chroot. + # + + '/init' => <<'//', + echo "Debugging opportunity, ^D to continue." + /bin/dash + + echo "Switching root ..." + /bin/umount -n /sys + /bin/umount -n /proc + exec /run_init \ + /mnt $init "$@" +// + } + }, +}; + +sub template ($) { return $templates->{$_[0]}; } + + +1; diff --git a/rescue/linux/cdrom/yaird-0.0.5/templates/Fedora.pm b/rescue/linux/cdrom/yaird-0.0.5/templates/Fedora.pm new file mode 100644 index 0000000..d1641dd --- /dev/null +++ b/rescue/linux/cdrom/yaird-0.0.5/templates/Fedora.pm @@ -0,0 +1,318 @@ +#!/usr/bin/perl +# +# Template -- for translation general intentions to exact initrd layout +# Copyright (C) 2005 Erik van Konijnenburg +# +# 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 +# +# These templates define the translation from general intentions in the +# plan to exact lists of files and script fragments to be included +# on the initrd image. Templates are indexed by an action name, and include: +# - files to be copied from current system to initrd; +# often executables. +# - directories to be created +# - fragments to be appended to scripts on the image, +# these are in a hash from script name to script content. +# +# Everything is processed by HTML::Template before being added to the +# image: script fragments, but also file names and script names. +# Leading spaces are dropped from template lines. +# +# If you want to implement busybox support, this is the place to do it. +# +# Obviously, the template names and the attributes used in the template +# should match what is provided by the planner. +# +# + +use strict; +package Template; + + +my $templates = { + prologue => { + # In principle, we don't want device files on the initrd + # image: device numbers can change between kernels. + # Instead, create device files at boot time based on info + # in sysfs. However, /dev/null and /dev/console are needed + # to mount sysfs. + files => [ + '/dev/null', + '/dev/console', + '/bin/ash', + '/bin/cat', + '/bin/mkdir', + '/bin/mount', + '/bin/umount', + '/bin/mknod', + '/bin/sleep', + ], + directories => [ + '/mnt', '/proc', '/sys', '/dev', '/etc', '/var', + ], + trees => [], + scripts => { + '/init' => <<'//', + #!/bin/ash + + # Generator version: yaird . + # + set -x + # + # Utility functions + # + mksymdev () { + devfile="$1" + sysfile="$2" + cb="$3" + devpair=$(/bin/cat "$sysfile") + for delay in 1 2 4 8 16 + do + if [ "$devpair" = "" ] + then + echo "Waiting $delay seconds for $sysfile to show up" + sleep $delay + fi + devpair=$(/bin/cat "$sysfile") + done + + if [ "$devpair" = "" ] + then + echo "Device $sysfile seems to be down." + echo "Debugging opportunity, type ^D to continue." + /bin/dash + fi + + maj=${devpair%:*} + min=${devpair#*:} + /bin/mknod "$devfile" $cb $maj $min + } + mkcdev () { + mksymdev "$1" "/sys/class/$2/dev" c + } + mkbdev () { + mksymdev "$1" "/sys/block/$2/dev" b + } + + + # + # Setting up mounts + # + mount -nt sysfs sysfs /sys + mount -nt proc proc /proc + # In Fedora FC3, tmpfs *must* have the name + # 'none', otherwise start_udev, called from + # rc.sysinit will mount a new tmpfs over it, + # and you loose access to nodes such as + # /dev/vg0/root, expected to be created by + # LVM in initramfs. + mount -nt tmpfs none /dev + + # + # + # Command line processing + # init - first proc to start on next root + # root - to be done: how should it relate + # to file system selection? + # ro,rw - mount root read-only or read-write. + # This is like a mount -r; it overrules + # a -o rw. + # noresume, resume - to be done + # ide - options for module ide_core. + # need a way to append these to proper + # module. do a check on module name + # in insmod template? + # + ro=-r + init=/sbin/init + for i in $(cat /proc/cmdline) + do + case "$i" in + init=*) + init=${i#init=} + ;; + ro) + ro=-r + ;; + rw) + ro= + esac + done +// + }, + }, + + insmod => { + files => [ + '', + '/sbin/insmod', + ], + directories => [], + trees => [], + scripts => { + '/init' => <<'//', + /sbin/insmod '' +// + }, + + }, + + mkbdev => { + files => [], + directories => [], + trees => [], + scripts => { + '/init' => <<'//', + mkbdev '' '' +// + }, + }, + + vgchange => { + # + # Use static version. Note that fedora starts with + # empty /dev, so we must make device nodes explicitly. + # + files => [ + '/sbin/lvm', + ], + directories => [], + trees => [], + scripts => { + # We cannot make mapper/control any earlier, + # since dm-mod needs to be loaded to be able + # to determine devno. + '/init' => <<'//', + if [ ! -c /dev/mapper/control ] + then + /bin/mkdir /dev/mapper + mkcdev /dev/mapper/control misc/device-mapper + fi + /bin/mount -nt tmpfs tmpfs /etc + /bin/mount -nt tmpfs tmpfs /var + /sbin/lvm vgchange -a y '' + /sbin/lvm vgmknodes + /bin/umount -n /var + /bin/umount -n /etc +// + }, + }, + + mdadm => { + files => [ + '/sbin/mdadm', + ], + directories => [], + trees => [], + scripts => { + # + # NOTE: mdadm can operate without knowledge + # of device numbers; it will assign an unused + # one to the new device. Thus you could have + # device name /dev/md/boot that is stable, + # regardless of which other raid devices are + # operational. However, debian installer + # consistently uses device names like /dev/md0, + # where the name depends on earlier minors + # that happen to have been assigned. + # To work around this problem, we forego + # the --auto option, and mknod the device + # before putting an md under it. Better hope + # the major number is not going to change ... + # + '/init' => <<'//', + mknod b + mdadm --assemble --uuid \ + +// + } + }, + + mount => { + files => [], + directories => [], + trees => [], + scripts => { + # + # NOTE: honouring the kernel cmdline option ro,rw + # is very nice, but... If you have an ext3 in a + # file loopback-mounted from vfat, it's unlikely + # that a remount rw of root will also make the + # underlying vfat read-write. Underlying filesystems + # should ignore the kernel ro/rw option; we + # have an attribute isRoot that's defined iff + # this is the real root. + # + # always -n, since we dont have writable /etc/mtab. + # + '/init' => <<'//', + mount -n \ + $ro \ + -t \ + \ + \ + +// + } + }, + + postlude => { + files => [ + '/run_init', + ], + directories => [], + trees => [], + scripts => { + # + # fedora does not come with populated /dev + # on root and needs at least /dev/console. + # Pass them via tmpfs. + # + # Do *not* do a pivot_root here. We're + # working from rootfs; a pivotroot would + # make that end up in /initrd, which gets + # unmounted by rc.sysinit, and without rootfs, + # too much is broken to even do a panic. + # + # Instead use run_init from klibc, which uses + # a magical combination of mount --move /mnt /, + # chdir and chroot. + # + + '/init' => <<'//', + echo "Debugging opportunity, ^D to continue." + /bin/ash + + echo "Switching root ..." + cd /mnt + mkcdev /dev/null mem/null + mkcdev /dev/zero mem/zero + mkcdev /dev/console tty/console + mkdir /dev/pts + mkdir /dev/shm + mount -n -t tmpfs --bind /dev /mnt/dev + /bin/umount -n /sys + /bin/umount -n /proc + exec /run_init \ + /mnt $init "$@" +// + } + }, +}; + +sub template ($) { return $templates->{$_[0]}; } + + +1; diff --git a/rescue/linux/cdrom/yaird-0.0.5/templates/Makefile b/rescue/linux/cdrom/yaird-0.0.5/templates/Makefile new file mode 100644 index 0000000..61d09d3 --- /dev/null +++ b/rescue/linux/cdrom/yaird-0.0.5/templates/Makefile @@ -0,0 +1,350 @@ +# Makefile.in generated by automake 1.9.5 from Makefile.am. +# templates/Makefile. Generated from Makefile.in by configure. + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005 Free Software Foundation, Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + + + +# +# Makefile.incl -- shared defines between makefiles +# Copyright (C) 2005 Erik van Konijnenburg +# +# 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 +# +# - auxdir contains package specific executables that may be included +# in the generated image +# - perldir contains perl modules to be included by the main program +# +# This cannot be simply passed from the master makefile; that would +# be invisible to automake. + +srcdir = . +top_srcdir = .. + +pkgdatadir = $(datadir)/yaird +pkglibdir = $(libdir)/yaird +pkgincludedir = $(includedir)/yaird +top_builddir = .. +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +INSTALL = /usr/bin/install -c +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +DIST_COMMON = $(srcdir)/../Makefile.incl $(srcdir)/Makefile.am \ + $(srcdir)/Makefile.in +subdir = templates +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/configure.in +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/include/config.h +CONFIG_CLEAN_FILES = +SOURCES = +DIST_SOURCES = +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = `echo $$p | sed -e 's|^.*/||'`; +am__installdirs = "$(DESTDIR)$(perldir)" +nodist_perlDATA_INSTALL = $(INSTALL_DATA) +DATA = $(nodist_perl_DATA) +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = ${SHELL} /home/kern/bacula/k/rescue/linux/cdrom/yaird-0.0.5/missing --run aclocal-1.9 +AMDEP_FALSE = # +AMDEP_TRUE = +AMTAR = ${SHELL} /home/kern/bacula/k/rescue/linux/cdrom/yaird-0.0.5/missing --run tar +AUTOCONF = ${SHELL} /home/kern/bacula/k/rescue/linux/cdrom/yaird-0.0.5/missing --run autoconf +AUTOHEADER = ${SHELL} /home/kern/bacula/k/rescue/linux/cdrom/yaird-0.0.5/missing --run autoheader +AUTOMAKE = ${SHELL} /home/kern/bacula/k/rescue/linux/cdrom/yaird-0.0.5/missing --run automake-1.9 +AWK = gawk +CC = gcc +CCDEPMODE = depmode=gcc3 +CFLAGS = -g -O2 +CPPFLAGS = +CYGPATH_W = echo +DEFS = -DHAVE_CONFIG_H +DEPDIR = .deps +ECHO_C = +ECHO_N = -n +ECHO_T = +EXEEXT = +INITRD_TEMPLATE = Fedora +INSTALL_DATA = ${INSTALL} -m 644 +INSTALL_PROGRAM = ${INSTALL} +INSTALL_SCRIPT = ${INSTALL} +INSTALL_STRIP_PROGRAM = ${SHELL} $(install_sh) -c -s +LDFLAGS = +LIBOBJS = +LIBS = +LTLIBOBJS = +MAKEINFO = ${SHELL} /home/kern/bacula/k/rescue/linux/cdrom/yaird-0.0.5/missing --run makeinfo +OBJEXT = o +PACKAGE = yaird +PACKAGE_BUGREPORT = +PACKAGE_NAME = +PACKAGE_STRING = +PACKAGE_TARNAME = +PACKAGE_VERSION = +PATH_SEPARATOR = : +PERL = /usr/bin/perl +SET_MAKE = +SHELL = /bin/sh +STRIP = +VERSION = 0.0.5 +XMLTO = /usr/bin/xmlto +ac_ct_CC = gcc +ac_ct_STRIP = +am__fastdepCC_FALSE = # +am__fastdepCC_TRUE = +am__include = include +am__leading_dot = . +am__quote = +am__tar = ${AMTAR} chof - "$$tardir" +am__untar = ${AMTAR} xf - +bindir = ${exec_prefix}/bin +build_alias = +datadir = ${prefix}/share +exec_prefix = ${prefix} +host_alias = +includedir = ${prefix}/include +infodir = ${prefix}/info +install_sh = /home/kern/bacula/k/rescue/linux/cdrom/yaird-0.0.5/install-sh +libdir = ${exec_prefix}/lib +libexecdir = ${exec_prefix}/libexec +localstatedir = ${prefix}/var +mandir = ${prefix}/man +mkdir_p = mkdir -p -- +oldincludedir = /usr/include +prefix = /usr/local +program_transform_name = s,x,x, +sbindir = ${exec_prefix}/sbin +sharedstatedir = ${prefix}/com +sysconfdir = ${prefix}/etc +target_alias = +auxdir = $(pkglibdir)/exec +perldir = $(pkglibdir)/perl + +# +# Makefile.am -- installation and packaging instructions +# +CLEANFILES = $(nodist_perl_DATA) +nodist_perl_DATA = \ + Template.pm + + +# not compiled, but must go in the tarball. +EXTRA_DIST = \ + Fedora.pm \ + Debian.pm + +all: all-am + +.SUFFIXES: +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(srcdir)/../Makefile.incl $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu templates/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnu templates/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +uninstall-info-am: +install-nodist_perlDATA: $(nodist_perl_DATA) + @$(NORMAL_INSTALL) + test -z "$(perldir)" || $(mkdir_p) "$(DESTDIR)$(perldir)" + @list='$(nodist_perl_DATA)'; for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + f=$(am__strip_dir) \ + echo " $(nodist_perlDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(perldir)/$$f'"; \ + $(nodist_perlDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(perldir)/$$f"; \ + done + +uninstall-nodist_perlDATA: + @$(NORMAL_UNINSTALL) + @list='$(nodist_perl_DATA)'; for p in $$list; do \ + f=$(am__strip_dir) \ + echo " rm -f '$(DESTDIR)$(perldir)/$$f'"; \ + rm -f "$(DESTDIR)$(perldir)/$$f"; \ + done +tags: TAGS +TAGS: + +ctags: CTAGS +CTAGS: + + +distdir: $(DISTFILES) + $(mkdir_p) $(distdir)/.. + @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ + list='$(DISTFILES)'; for file in $$list; do \ + case $$file in \ + $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ + $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ + esac; \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test "$$dir" != "$$file" && test "$$dir" != "."; then \ + dir="/$$dir"; \ + $(mkdir_p) "$(distdir)$$dir"; \ + else \ + dir=''; \ + fi; \ + if test -d $$d/$$file; then \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + else \ + test -f $(distdir)/$$file \ + || cp -p $$d/$$file $(distdir)/$$file \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile $(DATA) +installdirs: + for dir in "$(DESTDIR)$(perldir)"; do \ + test -z "$$dir" || $(mkdir_p) "$$dir"; \ + done +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-generic mostlyclean-am + +distclean: distclean-am + -rm -f Makefile +distclean-am: clean-am distclean-generic + +dvi: dvi-am + +dvi-am: + +html: html-am + +info: info-am + +info-am: + +install-data-am: install-nodist_perlDATA + +install-exec-am: + +install-info: install-info-am + +install-man: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-generic + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-info-am uninstall-nodist_perlDATA + +.PHONY: all all-am check check-am clean clean-generic distclean \ + distclean-generic distdir dvi dvi-am html html-am info info-am \ + install install-am install-data install-data-am install-exec \ + install-exec-am install-info install-info-am install-man \ + install-nodist_perlDATA install-strip installcheck \ + installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-generic pdf \ + pdf-am ps ps-am uninstall uninstall-am uninstall-info-am \ + uninstall-nodist_perlDATA + + +Template.pm: $(INITRD_TEMPLATE).pm + cp $< $@ +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/rescue/linux/cdrom/yaird-0.0.5/templates/Makefile.am b/rescue/linux/cdrom/yaird-0.0.5/templates/Makefile.am new file mode 100644 index 0000000..e6bb347 --- /dev/null +++ b/rescue/linux/cdrom/yaird-0.0.5/templates/Makefile.am @@ -0,0 +1,17 @@ +# +# Makefile.am -- installation and packaging instructions +# +include ../Makefile.incl + +CLEANFILES = $(nodist_perl_DATA) + +Template.pm: $(INITRD_TEMPLATE).pm + cp $< $@ + +nodist_perl_DATA = \ + Template.pm + +# not compiled, but must go in the tarball. +EXTRA_DIST = \ + Fedora.pm \ + Debian.pm diff --git a/rescue/linux/cdrom/yaird-0.0.5/templates/Makefile.in b/rescue/linux/cdrom/yaird-0.0.5/templates/Makefile.in new file mode 100644 index 0000000..a86a794 --- /dev/null +++ b/rescue/linux/cdrom/yaird-0.0.5/templates/Makefile.in @@ -0,0 +1,350 @@ +# Makefile.in generated by automake 1.9.5 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005 Free Software Foundation, Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +# +# Makefile.incl -- shared defines between makefiles +# Copyright (C) 2005 Erik van Konijnenburg +# +# 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 +# +# - auxdir contains package specific executables that may be included +# in the generated image +# - perldir contains perl modules to be included by the main program +# +# This cannot be simply passed from the master makefile; that would +# be invisible to automake. + +srcdir = @srcdir@ +top_srcdir = @top_srcdir@ +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +top_builddir = .. +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +INSTALL = @INSTALL@ +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +DIST_COMMON = $(srcdir)/../Makefile.incl $(srcdir)/Makefile.am \ + $(srcdir)/Makefile.in +subdir = templates +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/configure.in +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/include/config.h +CONFIG_CLEAN_FILES = +SOURCES = +DIST_SOURCES = +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = `echo $$p | sed -e 's|^.*/||'`; +am__installdirs = "$(DESTDIR)$(perldir)" +nodist_perlDATA_INSTALL = $(INSTALL_DATA) +DATA = $(nodist_perl_DATA) +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +AMDEP_FALSE = @AMDEP_FALSE@ +AMDEP_TRUE = @AMDEP_TRUE@ +AMTAR = @AMTAR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPPFLAGS = @CPPFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EXEEXT = @EXEEXT@ +INITRD_TEMPLATE = @INITRD_TEMPLATE@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +LDFLAGS = @LDFLAGS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LTLIBOBJS = @LTLIBOBJS@ +MAKEINFO = @MAKEINFO@ +OBJEXT = @OBJEXT@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +PERL = @PERL@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +VERSION = @VERSION@ +XMLTO = @XMLTO@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_STRIP = @ac_ct_STRIP@ +am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ +am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build_alias = @build_alias@ +datadir = @datadir@ +exec_prefix = @exec_prefix@ +host_alias = @host_alias@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +auxdir = $(pkglibdir)/exec +perldir = $(pkglibdir)/perl + +# +# Makefile.am -- installation and packaging instructions +# +CLEANFILES = $(nodist_perl_DATA) +nodist_perl_DATA = \ + Template.pm + + +# not compiled, but must go in the tarball. +EXTRA_DIST = \ + Fedora.pm \ + Debian.pm + +all: all-am + +.SUFFIXES: +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(srcdir)/../Makefile.incl $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu templates/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnu templates/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +uninstall-info-am: +install-nodist_perlDATA: $(nodist_perl_DATA) + @$(NORMAL_INSTALL) + test -z "$(perldir)" || $(mkdir_p) "$(DESTDIR)$(perldir)" + @list='$(nodist_perl_DATA)'; for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + f=$(am__strip_dir) \ + echo " $(nodist_perlDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(perldir)/$$f'"; \ + $(nodist_perlDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(perldir)/$$f"; \ + done + +uninstall-nodist_perlDATA: + @$(NORMAL_UNINSTALL) + @list='$(nodist_perl_DATA)'; for p in $$list; do \ + f=$(am__strip_dir) \ + echo " rm -f '$(DESTDIR)$(perldir)/$$f'"; \ + rm -f "$(DESTDIR)$(perldir)/$$f"; \ + done +tags: TAGS +TAGS: + +ctags: CTAGS +CTAGS: + + +distdir: $(DISTFILES) + $(mkdir_p) $(distdir)/.. + @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ + list='$(DISTFILES)'; for file in $$list; do \ + case $$file in \ + $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ + $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ + esac; \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test "$$dir" != "$$file" && test "$$dir" != "."; then \ + dir="/$$dir"; \ + $(mkdir_p) "$(distdir)$$dir"; \ + else \ + dir=''; \ + fi; \ + if test -d $$d/$$file; then \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + else \ + test -f $(distdir)/$$file \ + || cp -p $$d/$$file $(distdir)/$$file \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile $(DATA) +installdirs: + for dir in "$(DESTDIR)$(perldir)"; do \ + test -z "$$dir" || $(mkdir_p) "$$dir"; \ + done +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-generic mostlyclean-am + +distclean: distclean-am + -rm -f Makefile +distclean-am: clean-am distclean-generic + +dvi: dvi-am + +dvi-am: + +html: html-am + +info: info-am + +info-am: + +install-data-am: install-nodist_perlDATA + +install-exec-am: + +install-info: install-info-am + +install-man: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-generic + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-info-am uninstall-nodist_perlDATA + +.PHONY: all all-am check check-am clean clean-generic distclean \ + distclean-generic distdir dvi dvi-am html html-am info info-am \ + install install-am install-data install-data-am install-exec \ + install-exec-am install-info install-info-am install-man \ + install-nodist_perlDATA install-strip installcheck \ + installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-generic pdf \ + pdf-am ps ps-am uninstall uninstall-am uninstall-info-am \ + uninstall-nodist_perlDATA + + +Template.pm: $(INITRD_TEMPLATE).pm + cp $< $@ +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/rescue/linux/cdrom/yaird-0.0.5/templates/Template.pm b/rescue/linux/cdrom/yaird-0.0.5/templates/Template.pm new file mode 100644 index 0000000..d1641dd --- /dev/null +++ b/rescue/linux/cdrom/yaird-0.0.5/templates/Template.pm @@ -0,0 +1,318 @@ +#!/usr/bin/perl +# +# Template -- for translation general intentions to exact initrd layout +# Copyright (C) 2005 Erik van Konijnenburg +# +# 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 +# +# These templates define the translation from general intentions in the +# plan to exact lists of files and script fragments to be included +# on the initrd image. Templates are indexed by an action name, and include: +# - files to be copied from current system to initrd; +# often executables. +# - directories to be created +# - fragments to be appended to scripts on the image, +# these are in a hash from script name to script content. +# +# Everything is processed by HTML::Template before being added to the +# image: script fragments, but also file names and script names. +# Leading spaces are dropped from template lines. +# +# If you want to implement busybox support, this is the place to do it. +# +# Obviously, the template names and the attributes used in the template +# should match what is provided by the planner. +# +# + +use strict; +package Template; + + +my $templates = { + prologue => { + # In principle, we don't want device files on the initrd + # image: device numbers can change between kernels. + # Instead, create device files at boot time based on info + # in sysfs. However, /dev/null and /dev/console are needed + # to mount sysfs. + files => [ + '/dev/null', + '/dev/console', + '/bin/ash', + '/bin/cat', + '/bin/mkdir', + '/bin/mount', + '/bin/umount', + '/bin/mknod', + '/bin/sleep', + ], + directories => [ + '/mnt', '/proc', '/sys', '/dev', '/etc', '/var', + ], + trees => [], + scripts => { + '/init' => <<'//', + #!/bin/ash + + # Generator version: yaird . + # + set -x + # + # Utility functions + # + mksymdev () { + devfile="$1" + sysfile="$2" + cb="$3" + devpair=$(/bin/cat "$sysfile") + for delay in 1 2 4 8 16 + do + if [ "$devpair" = "" ] + then + echo "Waiting $delay seconds for $sysfile to show up" + sleep $delay + fi + devpair=$(/bin/cat "$sysfile") + done + + if [ "$devpair" = "" ] + then + echo "Device $sysfile seems to be down." + echo "Debugging opportunity, type ^D to continue." + /bin/dash + fi + + maj=${devpair%:*} + min=${devpair#*:} + /bin/mknod "$devfile" $cb $maj $min + } + mkcdev () { + mksymdev "$1" "/sys/class/$2/dev" c + } + mkbdev () { + mksymdev "$1" "/sys/block/$2/dev" b + } + + + # + # Setting up mounts + # + mount -nt sysfs sysfs /sys + mount -nt proc proc /proc + # In Fedora FC3, tmpfs *must* have the name + # 'none', otherwise start_udev, called from + # rc.sysinit will mount a new tmpfs over it, + # and you loose access to nodes such as + # /dev/vg0/root, expected to be created by + # LVM in initramfs. + mount -nt tmpfs none /dev + + # + # + # Command line processing + # init - first proc to start on next root + # root - to be done: how should it relate + # to file system selection? + # ro,rw - mount root read-only or read-write. + # This is like a mount -r; it overrules + # a -o rw. + # noresume, resume - to be done + # ide - options for module ide_core. + # need a way to append these to proper + # module. do a check on module name + # in insmod template? + # + ro=-r + init=/sbin/init + for i in $(cat /proc/cmdline) + do + case "$i" in + init=*) + init=${i#init=} + ;; + ro) + ro=-r + ;; + rw) + ro= + esac + done +// + }, + }, + + insmod => { + files => [ + '', + '/sbin/insmod', + ], + directories => [], + trees => [], + scripts => { + '/init' => <<'//', + /sbin/insmod '' +// + }, + + }, + + mkbdev => { + files => [], + directories => [], + trees => [], + scripts => { + '/init' => <<'//', + mkbdev '' '' +// + }, + }, + + vgchange => { + # + # Use static version. Note that fedora starts with + # empty /dev, so we must make device nodes explicitly. + # + files => [ + '/sbin/lvm', + ], + directories => [], + trees => [], + scripts => { + # We cannot make mapper/control any earlier, + # since dm-mod needs to be loaded to be able + # to determine devno. + '/init' => <<'//', + if [ ! -c /dev/mapper/control ] + then + /bin/mkdir /dev/mapper + mkcdev /dev/mapper/control misc/device-mapper + fi + /bin/mount -nt tmpfs tmpfs /etc + /bin/mount -nt tmpfs tmpfs /var + /sbin/lvm vgchange -a y '' + /sbin/lvm vgmknodes + /bin/umount -n /var + /bin/umount -n /etc +// + }, + }, + + mdadm => { + files => [ + '/sbin/mdadm', + ], + directories => [], + trees => [], + scripts => { + # + # NOTE: mdadm can operate without knowledge + # of device numbers; it will assign an unused + # one to the new device. Thus you could have + # device name /dev/md/boot that is stable, + # regardless of which other raid devices are + # operational. However, debian installer + # consistently uses device names like /dev/md0, + # where the name depends on earlier minors + # that happen to have been assigned. + # To work around this problem, we forego + # the --auto option, and mknod the device + # before putting an md under it. Better hope + # the major number is not going to change ... + # + '/init' => <<'//', + mknod b + mdadm --assemble --uuid \ + +// + } + }, + + mount => { + files => [], + directories => [], + trees => [], + scripts => { + # + # NOTE: honouring the kernel cmdline option ro,rw + # is very nice, but... If you have an ext3 in a + # file loopback-mounted from vfat, it's unlikely + # that a remount rw of root will also make the + # underlying vfat read-write. Underlying filesystems + # should ignore the kernel ro/rw option; we + # have an attribute isRoot that's defined iff + # this is the real root. + # + # always -n, since we dont have writable /etc/mtab. + # + '/init' => <<'//', + mount -n \ + $ro \ + -t \ + \ + \ + +// + } + }, + + postlude => { + files => [ + '/run_init', + ], + directories => [], + trees => [], + scripts => { + # + # fedora does not come with populated /dev + # on root and needs at least /dev/console. + # Pass them via tmpfs. + # + # Do *not* do a pivot_root here. We're + # working from rootfs; a pivotroot would + # make that end up in /initrd, which gets + # unmounted by rc.sysinit, and without rootfs, + # too much is broken to even do a panic. + # + # Instead use run_init from klibc, which uses + # a magical combination of mount --move /mnt /, + # chdir and chroot. + # + + '/init' => <<'//', + echo "Debugging opportunity, ^D to continue." + /bin/ash + + echo "Switching root ..." + cd /mnt + mkcdev /dev/null mem/null + mkcdev /dev/zero mem/zero + mkcdev /dev/console tty/console + mkdir /dev/pts + mkdir /dev/shm + mount -n -t tmpfs --bind /dev /mnt/dev + /bin/umount -n /sys + /bin/umount -n /proc + exec /run_init \ + /mnt $init "$@" +// + } + }, +}; + +sub template ($) { return $templates->{$_[0]}; } + + +1; diff --git a/rescue/linux/floppy/.cvsignore b/rescue/linux/floppy/.cvsignore new file mode 100644 index 0000000..ee40e78 --- /dev/null +++ b/rescue/linux/floppy/.cvsignore @@ -0,0 +1,10 @@ +Makefile +diskinfo +format.hda +mount_drives +partition.hda +sfdisk +start_network +1 +bacula-fd +bacula-fd.conf diff --git a/rescue/linux/floppy/Makefile.in b/rescue/linux/floppy/Makefile.in new file mode 100755 index 0000000..ed51354 --- /dev/null +++ b/rescue/linux/floppy/Makefile.in @@ -0,0 +1,57 @@ +# +# bootstrap/linux Makefile.in +# +# Version $Id$ +# +@MCOMMON@ + +working_dir=@working_dir@ + +srcdir = @srcdir@ +VPATH = @srcdir@ +.PATH: @srcdir@ +topdir = ../.. +thisdir = linux + + +first_rule: all +dummy: + +MKDIR = $(topdir)/autoconf/mkinstalldirs + +#------------------------------------------------------------------------- + +all: Makefile + +depend: + + +#------------------------------------------------------------------------- + + +install: + +uninstall: + +Makefile: Makefile.in + cd $(topdir) \ + && CONFIG_FILES=$(thisdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status + +Makefiles: + $(SHELL) config.status + +clean: + @$(RMF) *~ 1 2 3 + @$(RMF) format.* partition.* start_network mount_drives + @$(RMF) sfdisk bacula-fd bacula-fd.gz bacula-fd.conf + @$(RMF) -r diskinfo + +# clean for distribution +distclean: clean + @$(RMF) Makefile + @$(RMF) -r CVS + +devclean: clean + @$(RMF) Makefile + +# ------------------------------------------------------------------------ diff --git a/rescue/linux/floppy/backup.etc.list b/rescue/linux/floppy/backup.etc.list new file mode 100644 index 0000000..43855e6 --- /dev/null +++ b/rescue/linux/floppy/backup.etc.list @@ -0,0 +1,13 @@ +/etc/exports +/etc/fstab +/etc/group +/etc/gshadow +/etc/host.conf +/etc/hosts +/etc/hosts.allow +/etc/hosts.deny +/etc/modules.conf +/etc/passwd +/etc/resolv.conf +/etc/shadow +/etc/sysconfig diff --git a/rescue/linux/floppy/format_floppy b/rescue/linux/floppy/format_floppy new file mode 100755 index 0000000..39e43be --- /dev/null +++ b/rescue/linux/floppy/format_floppy @@ -0,0 +1,26 @@ +#!/bin/sh +# +# Format Floppy +# +export LANG=C +echo "" +echo "This script will format your floppy" +echo "" +echo "IT WILL DESTROY ALL DATA ON THE FLOPPY !!!!" +echo "" +echo -n "Are you sure you want to continue? (yes/no): " +read a +if [ x$a != xyes ] ; then + exit 1 +fi +echo -n "Do you want to do a block check (takes time)? (yes/no): " +read a +if [ x$a = xyes ] ; then + check="-c" +else + check= +fi +echo "" +echo "Formating /dev/fd0 -- ext2 partition" +mke2fs -v $check /dev/fd0 +echo "" diff --git a/rescue/linux/floppy/getdiskinfo b/rescue/linux/floppy/getdiskinfo new file mode 100755 index 0000000..61785bb --- /dev/null +++ b/rescue/linux/floppy/getdiskinfo @@ -0,0 +1,223 @@ +#!/bin/sh +# +# Create bootstrap information files -- prelude to creating a +# Bacula Rescue Disk +# +# Kern Sibbald, December MMII +# This source distributed under the GPL +# +export LANG=C +di=diskinfo +cwd=`pwd` +host=`uname -s` + +case $host in + Linux) + ;; + FreeBSD | SunOS | IRIX) + echo "" + echo "This code is not yet adapted to this OS" + exit 1 + ;; + *) + echo "" + echo "Unknown operating system type: $host" + exit 1 + ;; +esac +if [ ! `whoami` = "root" ] ; then + echo "" + echo "You need to be root to run this, otherwise" + echo "sfdisk produces no output. Continuing anyway ..." + echo "" +fi + +# +# First collect information +# +rm -rf format.* partition.* $di +echo "Begin collecting system info ..." +mkdir -p $di +cd $di +mount -l >mount.bsi +mount -l -t ext2 >mount.ext2.bsi +mount -l -t ext3 >mount.ext3.bsi +cp /etc/fstab fstab.bsi +cp /etc/mtab mtab.bsi +df -Tl >df.bsi +sfdisk -s >sfdisk.disks.bsi +grep "^/dev/" sfdisk.disks.bsi | sed -n 's%\(^/dev/[A-Za-z]*\):.*$%\1%p' >disks.bsi +for i in `cat disks.bsi`; do + j=`echo $i | cut -c6-` + sfdisk -l $i >sfdisk.$j.bsi + sfdisk -d $i >sfdisk.make.$j.bsi +done +route -n >route.bsi +ifconfig >ifconfig.bsi +echo "Done collecting info." + +# +# Done collecting information +# + + +echo "Begin creating scripts ..." +# +# First create partitioning script(s) +# +for i in `cat disks.bsi`; do + j=`echo $i | cut -c6-` + cat >$cwd/partition.$j <$cwd/format.$j <>$cwd/format.$j + echo "mkswap $check $disk" >>$cwd/format.$j + echo "echo \"\"" >>$cwd/format.$j + done + # Find ext2 partitions in mount output + k=`grep "^$i" mount.ext2.bsi | cut -d ' ' -f 1` + for disk in $k; do + echo "echo \"Formating $disk -- ext2 partition\"" >>$cwd/format.$j + label=`grep "^$disk" mount.ext2.bsi | cut -d ' ' -f 7 | cut -c2- | cut -d ] -f 1` + if [ x$label = x ] ; then + echo "mke2fs -v \$check $disk" >>$cwd/format.$j + else + echo "mke2fs -v \$check -L $label $disk" >>$cwd/format.$j + fi + echo "echo \"\"" >>$cwd/format.$j + done + # Find ext3 partitions in mount output + k=`grep "^$i" mount.ext3.bsi | cut -d ' ' -f 1` + for disk in $k; do + echo "echo \"Formating $disk -- ext3 partition\"" >>$cwd/format.$j + label=`grep "^$disk" mount.ext3.bsi | cut -d ' ' -f 7 | cut -c2- | cut -d ] -f 1` + if [ x$label = x ] ; then + echo "mke2fs -v -j \$check $disk" >>$cwd/format.$j + else + echo "mke2fs -v -j \$check -L $label $disk" >>$cwd/format.$j + fi + echo "echo \"\"" >>$cwd/format.$j + done + chmod 755 $cwd/format.$j +done + +cd $cwd + +# +# Create network start script +# +host=`hostname` +ip=`host $host | cut -d ' ' -f 4` +if [ $ip = "out;" ] ; then + ip=`ifconfig | grep inet | head -1 | sed -n 's/\ \+inet addr:\([0-9]\+\(\.[0-9]\+\)\{3\}\).*/\1/p'` +fi +cat >start_network <mount_drives </tmp/1$$ +sed -n 's/\(^.*\)\ on\ \(.*\)\ type.*$/\1 \/mnt\/disk\2/p' $di/mount.ext3.bsi >>/tmp/1$$ +sed -n 's/\(^.*\)\ on\ \(.*\)\ type.*$/\1 \/mnt\/disk\2/p' $di/mount.rei.bsi >>/tmp/1$$ +# sort so that / is first +sort -k 2 /tmp/2$$ +# output mkdir followed by its mount +sed -n 's/\(^.*\)\ \(.*$\)/mkdir -p \2\nmount \1 \2/p' /tmp/2$$ >>mount_drives +rm -f /tmp/1$$ /tmp/2$$ +rm -f /tmp/1$$ + +chmod 755 mount_drives + +# copy sfdisk so we will have it +cp -f /sbin/sfdisk . +echo "Done building scripts." +echo " " +echo "You might want to do a:" +echo " " +echo "chown -R uuuu:gggg *" +echo " " +echo "where uuuu is your userid and gggg is your group" +echo "so that you can access all the files as non-root" +echo " " diff --git a/rescue/linux/floppy/make_rescue_disk b/rescue/linux/floppy/make_rescue_disk new file mode 100755 index 0000000..3ea2688 --- /dev/null +++ b/rescue/linux/floppy/make_rescue_disk @@ -0,0 +1,100 @@ +#!/bin/sh +# +# Script to make a Bacula "rescue" disk +# +export LANG=C +device=/mnt/floppy +dev=/dev/fd0 + +# Print Usage message +usage () { + cat <&1 >/dev/null +if [ $? = 0 ] ; then + mounted=1 +else + mounted=0 +fi +mke2fs $dev +mount $dev $device 2>&1 >/dev/null + +if [ x$make_bacula = "xyes" ] ; then + ./make_static_bacula +fi + +if [ x$copy_bacula = "xyes" -a ! -e bacula-fd ] ; then + echo " " + echo "bacula-fd not found. If you want Bacula on this" + echo "rescue disk please run \"make_static_bacula\" first." + echo "Continuing anyway ..." + echo " " + exit 1 + have_bacula=no +else + echo "Stripping and compressing Bacula" + strip bacula-fd + gzip bacula-fd + have_bacula=yes +fi + +echo "Copying files to $device" +cp -a . $device + +if [ x$copy_etc = "xyes" ] ; then + echo "Tarring /etc files to $device" + tar --create --gzip --file $device/etc.gz --files-from backup.etc.list +fi + +if [ x$have_bacula = "xyes" ] ; then + rm -f bacula-fd.gz bacula-fd.conf +fi +sync +if [ $mounted = 0 ] ; then + umount $device +fi diff --git a/rescue/linux/floppy/restore_etc b/rescue/linux/floppy/restore_etc new file mode 100755 index 0000000..ea2239e --- /dev/null +++ b/rescue/linux/floppy/restore_etc @@ -0,0 +1,10 @@ +#!/bin/sh +# +# Note, this creates the directory etc, so if you want +# the files to go into the real /etc, you must be one +# level up when executing it. Otherwise you end up with +# a /etc/etc directory. +# +export LANG=C +device=/mnt/floppy +tar -v -z -f $device/etc.gz diff --git a/rescue/linux/floppy/run_grub b/rescue/linux/floppy/run_grub new file mode 100755 index 0000000..b00c796 --- /dev/null +++ b/rescue/linux/floppy/run_grub @@ -0,0 +1,23 @@ +#!/bin/sh +# +# Script to run grub to recreate the MBR +# +export LANG=C +# Find boot partition if any +bootp=`grep "^/dev/.*\ on\ /boot" diskinfo/mount.bsi | cut -d ' ' -f 1` +# find boot device +if [ x$bootp != x ] ; then + bootdev=`echo $bootp | cut -c1-8` +else + bootdev=`grep "^/dev/.*\ on\ /" diskinfo/mount.bsi | cut -c1-8` +fi +echo "Boot device is $bootdev" +echo " " +echo "To manually install grub, enter:" +echo "chroot /mnt/disk" +echo "/sbin/grub-install $bootdev" +echo " " +echo "Attempting to install grub ..." +echo " " +chroot /mnt/disk /sbin/grub-install $bootdev +sync diff --git a/rescue/linux/floppy/run_lilo b/rescue/linux/floppy/run_lilo new file mode 100755 index 0000000..7151a14 --- /dev/null +++ b/rescue/linux/floppy/run_lilo @@ -0,0 +1,7 @@ +#!/bin/sh +# +# Script to run lilo and re-create the MBR +# +export LANG=C +chroot /mnt/disk /sbin/lilo -v -C /etc/lilo.conf +sync diff --git a/rescue/linux/floppy/sfdisk.bz2 b/rescue/linux/floppy/sfdisk.bz2 new file mode 100644 index 0000000..3e269c3 Binary files /dev/null and b/rescue/linux/floppy/sfdisk.bz2 differ diff --git a/rescue/solaris/.cvsignore b/rescue/solaris/.cvsignore new file mode 100644 index 0000000..ee40e78 --- /dev/null +++ b/rescue/solaris/.cvsignore @@ -0,0 +1,10 @@ +Makefile +diskinfo +format.hda +mount_drives +partition.hda +sfdisk +start_network +1 +bacula-fd +bacula-fd.conf diff --git a/rescue/solaris/Makefile.in b/rescue/solaris/Makefile.in new file mode 100755 index 0000000..2da9291 --- /dev/null +++ b/rescue/solaris/Makefile.in @@ -0,0 +1,57 @@ +# +# bootstrap/solaris Makefile.in +# +# Version $Id$ +# +@MCOMMON@ + +working_dir=@working_dir@ + +srcdir = @srcdir@ +VPATH = @srcdir@ +.PATH: @srcdir@ +topdir = ../.. +thisdir = solaris + + +first_rule: all +dummy: + +MKDIR = $(topdir)/autoconf/mkinstalldirs + +#------------------------------------------------------------------------- + +all: Makefile + +depend: + + +#------------------------------------------------------------------------- + + +install: + +uninstall: + +Makefile: Makefile.in + cd $(topdir) \ + && CONFIG_FILES=$(thisdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status + +Makefiles: + $(SHELL) config.status + +clean: + @$(RMF) *~ 1 2 3 + @$(RMF) format.* partition.* start_network mount_drives + @$(RMF) sfdisk bacula-fd bacula-fd.gz bacula-fd.conf + @$(RMF) -r diskinfo + +# clean for distribution +distclean: clean + @$(RMF) Makefile + @$(RMF) -r CVS + +devclean: clean + @$(RMF) Makefile + +# ------------------------------------------------------------------------ diff --git a/rescue/solaris/SysAudit b/rescue/solaris/SysAudit new file mode 100755 index 0000000..d28ed15 --- /dev/null +++ b/rescue/solaris/SysAudit @@ -0,0 +1,931 @@ +#!/bin/sh -- # -*- shell-script -*- +# +# SysAudit/SysConfig -- Capture UNIX machine information +# Copyright (C) 1997 David J. Young +# +# 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. +# +# $Author$ +VERSION='$Revision$' +# +# Modification History +# 1.0 ??-???-96 Robert Ess - Created. +# 2.0 15-Aug-96 David J. Young - Modified. +# Added/modified code in the Solaris section: +# - Extracted IP address, MacAddr, C compiler and other information +# from more reliable sources. +# - Added dump of information for the Veritas Volume Manager. +# - Calculate and report total swap space +# - Report if the machine is acting as a NFS and/or NIS Server or Client +# - Added counters for number of patches, printers and packages +# - Fix a small bug you had with the previous file (*.bl). +# 3.0 4-Sep-96 David E. Nelson - Modified. +# Added/modified code in the SunOS section: +# - Added code operate in either an "audit" or "check" mode. +# - Added SWAPSPACE and KERNEL info. +# - Also added MACADDR, since you must be root to obtain this info using ifconfig. +# - Made sure the script would work on an Auspex +# 3.1 10-Sep-96 David J. Young - Modified. +# Added/modified code to complete the HPUX section. +# Added Modification History and Description. +# +# 3.2 12-Sep-96 David E. Nelson - Modified. +# The vast majority of the changed/additons are for SunOS 4.1.x/3.5 and +# auspex. +# Added support for SunOs 3.5. Yes, 3.5! That's NOT a typo! +# Modified Auspex and added auspex specific commands +# Added Notification of vars that didn't get set. +# Added exported filesystems in output. +# Fixed bug in SysConfig|SysAudit name determination. +# Added gated detection. +# 3.3 10-Oct-96 David E. Nelson - Modified. +# Added support for Solaris 2.5.1 +# 3.4 09-Jan-97 David J. Young - Modified. +# Fixed small problems when running on HP-UX. +# +# Description: +# The original philosophy of the script that Robert Ess wrote was to run +# every day as a cron job. If there were *any* machine configuration +# changes, those changes (differences) would be mailed back to the +# administrator to make him aware that something changed. +# +# David Young took the original script and modified it to perform a +# "snapshot" report of a system it was run on. His goal at the time was +# to perform an audit and needed a report that was a "baseline" for each +# system he ran it on. The script was modified to collect as much +# information about the machine as possible. +# +# These two goals were then merged by David J. Young & David E. Nelson. +# Small changes here and there made it so that the script can perform +# either function. This file should be name "SysAudit" or "SysConfig". +# If the name is SysConfig, it can be run out of cron and will send +# E-mail to "SysConfigReport". If the script is called SysAudit, it will +# collect information and send it to standard output as a report. +# +# Most sites will problably want to hard link SysConfig and SysAudit, so +# that the script can be executed either way. +# +# set -x +# +# Usage +# +Usage(){ + echo "Usage: SysConfig|SysAudit" + echo " SysConfig: Generates system info that is static." + echo " SysAudit: Generates system info that is dynamic." + exit 0 +} + +# +# Parse the command line args +# +NOPRINTER=0; export NOPRINTER +NOPATCHES=0; export NOPATCHES +NOPKGS=0; export NOPKGS +TMPFILE=/tmp/SysAudit.$$ +trap 'rm -f $TMPFILE 2>/dev/null' EXIT +loop=true +while ($loop); do + case $1 in + -h*) Usage;; + -lp) NOPRINTER=1 + shift + ;; + -pkg) NOPKGS=1 + shift + ;; + -patch) NOPATCHES=1 + shift + ;; + *) loop=false + ;; + esac +done + + +# ============================================================================= +# BEGIN FUNCTION DEFINITIONS +# ============================================================================= + +# +# +# +Get_Prog_Name(){ + case $0 in + *SysAudit) AUDIT=1;; + *SysConfig) AUDIT=0;; + *) AUDIT=1;; # The default behavior is to do an audit. + esac +return +} + +# +# Are we root? +# +Check_User(){ +UID=`id | cut -d'(' -f1 | cut -d'=' -f2` +if [ "$UID" -ne "0" ]; then + echo "" + echo "***************************************************" + echo "** WARNING: You are not root. **" + echo "** Running as root will give you better results. **" +# echo "** Especially for the remark command: rm -rf .* **" + echo "***************************************************" + echo "" + NOTROOT=1 + sleep 3 +else + NOTROOT=0 +fi + +return +} + + +# +# Determine system type +# +Get_Arch(){ +#set -x +if [ -f /bin/arch ]; then + if [ `/bin/arch -k` = "sun3" ]; then + ARCH='sun3' + else + ARCH=`uname` + fi +else + ARCH=`uname` +fi + +case $ARCH in + HP-UX) REV=`uname -r|cut -d. -f2` + if [ $REV = "09" ]; then + SYSTYPE=HPUX09 + elif [ $REV = "10" ]; then + SYSTYPE=HPUX10 + fi;; + + SunOS) REV=`uname -r|cut -d. -f1` + if [ $REV = 5 ]; then + SYSTYPE=Solaris + elif [ $REV = 4 ]; then + SYSTYPE=SunOS + fi;; + + sun3) SYSTYPE=SunOS3;; + + IRIX) REV=`uname -r|cut -d. -f1` + if [ $REV = 6 ]; then + SYSTYPE=IRIX6 + elif [ $REV = 5 ]; then + SYSTYPE=IRIX5 + fi;; + + *) echo "System type unsupported" + exit 1;; +esac +return +} + +# +# Setup variables for system specific syntax of common commands +# +Define_Vars(){ +#set -x +HOSTNAME=`hostname` + +case $SYSTYPE in + + HPUX*) PATH=/bin:/usr/bin:/sbin:/usr/sbin:/etc + if [ $NOTROOT -eq "0" ]; then + SWAPFILE=`swapinfo | egrep "dsk|lvol" | awk '{print $9}'` + DEVSWAP=`swapinfo | grep dev | awk '{print $2}'` + FILESWAP=`swapinfo | grep fs | awk '{print $2}'` + SWAPSPACE=`swapinfo -t | grep tot | awk '{print $2}'` + else + SWAPFILE="" + DEVSWAP=$SWAPFILE + FILESWAP=$SWAPFILE + SWAPSPACE=$SWAPFILE + fi + MACADDR=`lanscan | grep x | awk '{print $2}'` + KERNEL="" + HOSTID=`uname -i` + MODEL=`model` + MEMORY=`dmesg | grep Phys | awk '{print $2}'`K + if [ $MEMORY = 'K' ]; then + if [ $NOTROOT -eq "1" ]; then + MEMORY="" + else + MEMORY=`wc /dev/mem` + fi + fi + DISKCMD='bdf -t hfs' + CCOMP=`what /bin/cc | grep HP | cut -d' ' -f2` + ETHERIF=lan0 + MAILCMD=mailx + PRTCMD=lp + PSCMD='ps -ef' + ;; + + Solar*) PATH=/bin:/sbin:/usr/sbin:/usr/ucb + PATH=$PATH:/usr/ccs/bin:/usr/bin + SWAPFILE=`swap -l | grep dsk | awk '{print $1}'` + DEVSWAP=`swap -l | grep dsk | awk '{print $4}'` + MODEL=`prtconf -vp | grep banner-name | awk -F\' '{print $2}'` +# MEMORY=`dmesg | grep '^mem' | tail -1 | awk '{print $3}'` #' + MEMORY=`prtconf | grep '^Memory size' | sed 's/Memory size: //'` + KERNEL=`sysdef | grep Generic | awk '{print $1}'` + DISKCMD='df -tkFufs' + NFSFS='df -tkFnfs' + EXPORTFS='showmount -e '$HOSTNAME + HOSTID=`sysdef -h | tail -1 | awk '{print $1}'` + if [ -x /usr/ccs/bin/what ]; then + if [ -d /opt/SUNWspro ]; then + CCOMP=`what /opt/SUNWspro/bin/cc | grep RELEASE | \ + sed 's/.*RELEASE VERSION //'` + else + CCOMP=`what /usr/ucb/cc | grep SMI | awk '{print $2}'` + CCOMP="$CCOMP (bundled)" + fi + else + CCOMP="" + fi +# ETHERIF=le0 + ETHERIF=`ifconfig -a|grep BROADCAST | awk -F: '{print $1}'| head -1 ` + IPADDR=`ifconfig $ETHERIF | grep inet | awk '{print $2}'` +# MACADDR=`dmesg | grep Ether | tail -1 | awk '{print $4}'` +# MACADDR=`arp -a | grep $HOSTNAME | sed 's/.*\(08:00.*\) .*/\1/'` + MACADDR=`arp $IPADDR | awk '{print $4}'` + MAILCMD=mailx + PRTCMD=lp + PSCMD='ps -ef' + SWAPSPACE=`swap -s | awk ' + { + swapused = $9 + swapavail = $11 + swapusedlen = length(swapused) - 1 + swapavailen = length(swapavail) - 1 + usedk = substr(swapused,1,swapusedlen) + availk = substr(swapavail,1,swapavailen) + total = (availk + usedk)/1000 + printf("%2.0f Megabytes\n", total) + }'` + ;; + + SunOS) PATH=/bin:/usr/bin:/usr/ucb:/etc:/usr/etc + SWAPFILE='/dev/'`dmesg | grep swap | tail -1 | awk '{print $3}'` + DEVSWAP=`pstat -T | grep swap | awk '{print $1}' \ + | cut -d'/' -f2` + + if [ `arch -k` = "aushp" ]; then + AUSPEX=1 + ETHERIF=ae0 + else + ETHERIF=le0 + fi + + if [ "$NOTROOT" = "1" ]; then + MACADDR=`dmesg | grep -i "ethernet address" | awk '{ print $4 }' | tail -1` + else + MACADDR=`ifconfig $ETHERIF | grep ether | tail -1 | awk '{print $2}'` + fi + if [ -z "$MACADDR" ]; then + MACADDR="Root access required." + fi + + MODEL=`dmesg | egrep "LX|SPARC|4/75|4/50"| tail -1 \ + | awk '{print $3, $4}'` + + if [ -z "$MODEL" ]; then + MODEL=`mach` + fi + + MEMORY=`dmesg | grep '^mem' | tail -1 | awk '{print $3}'` + + if [ -z "$MEMORY" ]; then + MEMORY="Unknown" + fi + + DISKCMD='df -t 4.2' + CCOMP="Unknown" + MAILCMD=/bin/mail + PRTCMD=lpr + PSCMD='ps aux' + SWAPSPACE=`pstat -T | grep "swap" | awk '{print $1}' | \ + awk -F/ '{print $2}'`'K' + KERNEL=`uname -v` + HOSTID=`hostid` + EXPORTFS='showmount -e '$HOSTNAME + ;; + + SunOS3) PATH=/bin:/usr/bin:/usr/ucb:/etc:/usr/etc:/usr/5bin + SWAPFILE='/dev/'`dmesg | grep swap | tail -1 | awk '{print $3}'` + DEVSWAP=`pstat -T | grep swap | awk '{print $1}' \ + | cut -d'/' -f2` + if [ "$NOTROOT" = "1" ]; then + MACADDR=`dmesg | grep -i "ethernet address" | awk '{ print $4 }' | tail -1` + else + MACADDR=`ifconfig ie0 | grep ether | tail -1 | awk '{print $2}'` + fi + + if [ -z "$MACADDR" ]; then + MACADDR="Root access required." + fi + + MODEL=`dmesg | egrep "LX|SPARC|4/75|4/50"| tail -1 \ + | awk '{print $3, $4}'` + + if [ -z "$MODEL" ]; then + MODEL=`mach` + fi + + MEMORY=`dmesg | grep '^mem' | tail -1 | awk '{print $3}'` + + if [ -z "$MEMORY" ]; then + MEMORY="Unknown" + fi + + DISKCMD='df -t 4.2' + CCOMP="Unknown" + ETHERIF=ie0 + MAILCMD=/bin/mail + PRTCMD=lpr + PSCMD='ps aux' + SWAPSPACE=`pstat -T | grep "swap" | awk '{print $1}' | \ + awk -F/ '{print $2}'`'K' + KERNEL=`strings /vmunix | grep UNIX | awk '{ print $7 }' | \ + sed 's/#//; s/://'` + HOSTID=`hostid` + EXPORTFS='showmount -e '$HOSTNAME + ;; +esac + +UPTIME=`uptime | sed 's/.*\(up.*\)/\1/' | sed 's/\(.*user[s]*\),.*/\1/'` +LOADNOW=`uptime | sed 's/.*load average: \(.*\)/\1/'` +ADMIN=`whoami` +TIMESTAMP=`date +%m%d%y` + +SNFILE=/usr/tmp/`hostname`.sn +if [ -f "$SNFILE" ]; then + SERIALNO=`cat $SNFILE` +else + SERIALNO="Unknown" +fi + +return +} + + +# +# To keep from identifying server machines as +# belonging to an individual, the 'case' statement +# makes a check and changes LASTLOGIN to "Server" +# Otherwise, check the first non-root|daemon|lp|UID +# user of the box. Not failsafe, but as close as +# I can get. +# +Machine_Data(){ +#set -x +MACHINE=`uname -m` +OSREV=`uname -r` + +case `hostname` in + serv01|serv02|serv03|serv04) LASTLOGIN="Server";; + *) LASTLOGIN=`$PSCMD | egrep -v "lp|daemon|root|UID" | \ + awk '{print $1}' | head -1`;; +esac + +# +# If no one is logged in, check wtmp +# +if [ -z "$LASTLOGIN" ]; then + LASTLOGIN=`last | grep console | \ + grep -v "root" | head -1 | awk '{print $1}'` +fi + +# +# If that fails, see if we have recorded it before +# +if [ -z "$LASTLOGIN" ]; then + LASTLOGIN=`grep Login /usr/tmp/*.bl | awk '{print $4}'` +fi + +# +# Alas, we are clueless... +# +if [ -z "$LASTLOGIN" ]; then + LASTLOGIN="Unknown.." +fi + +if [ "$AUDIT" -eq "1" ]; then + DATE=`date` +else + DATE="Dynamic parameter not reported." + UPTIME="Dynamic parameter not reported." + LOADNOW="Dynamic parameter not reported." +fi + +cat << __EOF__ + +======================================= +System Configuration report for `hostname` +======================================= + +Report data +=========== +Date : $DATE +Version : $VERSION + +Machine data +============ +Uptime : $UPTIME +Current load avg : $LOADNOW +Machine : $MACHINE +Serial number : $SERIALNO +HostID : $HOSTID +Model : $MODEL +O.S. revision : $OSREV +Kernel : $KERNEL +C Compiler revision : $CCOMP +Memory : $MEMORY +Swap space : $SWAPSPACE +Last Login : $LASTLOGIN + +__EOF__ +return +} + + +# +# NetworkData +# +Network_Data(){ +if [ "$AUSPEX" -eq "1" ]; then + NOETHERIF=`ax_netstat -i | egrep -v "127.0.0.1|Address|localhost|ni.\*" | \ + wc | awk '{print $1}'` +else + NOETHERIF=`netstat -i | egrep -v "127.0.0.1|Address|localhost|ni.\*" | wc | \ + awk '{print $1}'` +fi + +if [ "$SYSTYPE" = "SunOS3" ]; then + IPADDR=`ifconfig $ETHERIF | awk '{print $2}'` + NETMASK=`ifconfig $ETHERIF | grep inet | awk '{print $4}'` + BROADCAST=`ifconfig $ETHERIF | grep broad | awk '{print $6}'` + NETMASKCK="255.255.255.0" + BROADCASTCK="255" + +else + IPADDR=`ifconfig $ETHERIF | grep inet | awk '{print $2}'` + NETMASK=`ifconfig $ETHERIF | grep inet | awk '{print $4}'` + BROADCAST=`ifconfig $ETHERIF | grep broad | awk '{print $6}'` + NETMASKCK="255.255.255.0" + BROADCASTCK="255" +fi + +$PSCMD | egrep "routed|gated" | grep -v grep > /dev/null +if [ "$?" -eq "0" ]; then + DEFROUTER='' +else + DEFROUTER=`netstat -rn | grep default | awk '{print $2}'` +fi +$PSCMD | grep ypbind | grep -v grep > /dev/null +if [ "$?" -eq "0" ]; then + YPCLIENT="True" +else + YPCLIENT="False" +fi + +$PSCMD | grep ypserv | grep -v grep > /dev/null +if [ "$?" -eq "0" ]; then + YPSERVER="True" +else + YPSERVER="False" +fi + +NFSMNTS=`$NFSFS | wc | awk '{print $1}'` +if [ "$NFSMNTS" -gt "0" ]; then + NFSCLIENT="True" +else + NFSCLIENT="False" +fi + +EXPORTCNT=`$EXPORTFS 2>&1 | grep -v RPC | wc | awk '{print $1}'` +if [ "$EXPORTCNT" -gt "0" ]; then + NFSSERVER="True" +else + NFSSERVER="False" +fi + +cat << __EOF__ +Network data +============ +NIS domain : `domainname` +NIS client : $YPCLIENT +NIS server : $YPSERVER + +NFS client : $NFSCLIENT +NFS server : $NFSSERVER + +ethernet interfaces : $NOETHERIF +__EOF__ + +if [ "$NOETHERIF" -gt "1" ]; then + + echo "Name Address Broadcast Netmask" + echo "=============================================" + + if [ `arch -k` = "aushp" ]; then + NSTATCMD='ax_netstat -i' + else + NSTATCMD='netstat -i' + fi + + eval $NSTATCMD | egrep -v "lo0|ni|Ipkts" | while read line + do + set -f $line + IFNAME=`echo $1` + IFHOST=`echo $4` + + if [ "$IFHOST" = "none" ]; then + IFIPAD="Not_Set" + IFMSK="Not_Set" + IFBRD="Not_Set" + else + IFIPAD=`ifconfig $1 | grep inet | awk '{print $2}'` + IFMSK=`ifconfig $IFNAME | grep inet | awk '{print $4}'` + IFBRD=`ifconfig $IFNAME | grep inet | awk '{print $6}'` + fi + + [ -z "$IFIPAD" ] && IFIPAD="Unknown" + [ -z "$IFMSK" ] && IFMSK="Unknown" + [ -z "$IFBRD" ] && IFBRD="Unknown" + + echo $IFNAME $IFIPAD $IFBRD $IFMSK | \ + awk '{printf"%-6s %-15s %-15s %-15s\n",$1,$2,$3,$4}' + done +else + echo "IP Address : " $IPADDR + echo "MAC Address : " $MACADDR + echo "Netmask : " $NETMASK + echo "Broadcast : " $BROADCAST + echo "Default router : " $DEFROUTER +fi +echo "" + +if [ "$NFSSERVER" = "True" ]; then + echo "" + echo "=============================================" + echo "Exported Filesystems" + echo "=============================================" + eval $EXPORTFS + echo "" +fi + +return +} + + +# +# DiskData +# +Disk_Data(){ + +echo "Disk data:" + +echo "================================================================" + +if [ "$AUDIT" -eq "1" ]; then + echo "Filesystem kbytes used avail capacity Mounted on" +else + echo "Device-File" "Cap." "Mount-Point" | \ + awk '{printf"%-20s %35s %-20s\n", $1,$2,$3}' +fi + +echo "================================================================" + +# +# Setup a special case for Journal File Systems at HP-UX 10.10 +# +case $SYSTYPE in + HPUX10) bdf -t hfs | grep -v Mounted | \ + awk '{printf"%-40s %14d %-20s\n", $1,$2,$6}' + bdf -t vxfs | grep -v Mounted | \ + awk '{printf"%-40s %14d %-20s\n", $1,$2,$6}';; + *) if [ "$AUDIT" = "1" ]; then + $DISKCMD | grep -v Mounted + else + $DISKCMD | grep -v Mounted | \ + awk '{printf"%-40s %14d %-20s\n", $1,$2,$6}' + fi;; +esac + +case $SYSTYPE in + HPUX*) if [ $NOTROOT -eq 0 ]; then + swapinfo | grep dev | while [ 1 ]; do + read line + RC=$? + if [ "$RC" != "0" ]; then + break + fi + SWAPFILE=`echo $line | egrep "dsk|lvol" | awk '{print $9}'` + DEVSWAP=`echo $line | grep dev | awk '{print $2}'` + echo $SWAPFILE $DEVSWAP "swap" | \ + awk '{printf"%-40s %14s %-20s\n", $1,$2,$3}' + done + else + SWAPFILE="" + DEVSWAP=$SWAPFILE + fi + ;; + + Solar*) swap -l | grep -v swapfile | + while [ 1 ]; + do + read line + RC=$? + if [ "$RC" != "0" ]; then + break + fi + SWAPFILE=`echo $line| grep dsk| awk '{print $1}'` + DEVSWAP=`echo $line | grep dev| awk '{print $4}'` + echo $SWAPFILE $DEVSWAP "swap" | \ + awk '{printf"%-40s %14s %-20s\n", $1,$2,$3}' + done;; + + SunOS*) echo $SWAPFILE $DEVSWAP "swap" | \ + awk '{printf"%-40s %14s %-20s\n", $1,$2,$3}';; + + *);; +esac +return +} + +# +# HPUX09_Func +# +HPUX09_Func(){ +cat << __EOF__ + +IOSCAN output data +================== +__EOF__ + +/etc/ioscan -f -b +patchnum=`ls -1d /system/PH* | wc -l` + +cat << __EOF__ + +Patch Data +==================================================== +$patchnum Installed patches (from /system/PH*/index) +==================================================== +__EOF__ + + +cd /system +for PATCH in `ls -1d PH* 2>/dev/null`; do + DESC=`grep "fd:" $PATCH/index | cut -d':' -f2` + echo $PATCH ":" $DESC +done + +printers=`lpstat -a | grep "accepting" | sort | uniq | wc -l` + +cat << __EOF__ + +================================================== +$printers Installed printers (from lpstat) +================================================== +__EOF__ + +lpstat -a | grep "accepting" | sort | uniq | awk '{print $1}' + +filesets=`ls /etc/filesets | wc -l` + +cat << __EOF__ + +================================================== +$filesets Installed filesets (from /etc/filesets) +================================================== +__EOF__ +ls -C /etc/filesets + +echo +return +} + + +# +# HPUX10_Func +# +HPUX10_Func(){ +cat << __EOF__ + +IOSCAN output data +================== +__EOF__ + +/etc/ioscan -f + +printers=`lpstat -a | grep "accepting" | sort | uniq | wc -l` +cat << __EOF__ + +================================================== +$printers Installed printers (from lpstat) +================================================== + +__EOF__ + +lpstat -a | grep "accepting" | sort | uniq | awk '{print $1}' + +filesets=`swlist -x one_liner="name revision title" -l product | grep -v "#" | wc -l` + +cat << __EOF__ + + +================================================== +$filesets Installed filesets (from swlist -l product ) +================================================== +__EOF__ +swlist -x one_liner="name revision title" -l product | \ +grep -v "#" | cut -c1-60 + +return +} + + +# +# SOLARIS_Func +# +SOLARIS_Func(){ + +SARSTAT="" +if [ -d /var/sadm/sa ]; then + logs=`find /var/sadm/sa -mtime -1 -print | wc | awk '{print $1}'` + if [ "$logs" -gt "0" ]; then + SARSTAT="" + fi +fi +VXSTAT="" +PSOUT=`$PSCMD | grep vxconfigd | grep -v grep | wc | awk '{print $1}'` +if [ "$PSOUT" -gt "0" ]; then + VXSTAT="" +fi + + +cat << __EOF__ + +Solaris data +============ +sar(1M) status : $SARSTAT +Veritas Volume Mgr : $VXSTAT + +__EOF__ + +if [ -x /usr/sbin/vxdg ]; then + echo "List Disk Groups" + echo "================" + vxdg list 2>&1 +fi +if [ -x /usr/sbin/vxprint ]; then + echo + echo "Display Configuration Summary" + echo "=============================" + vxprint -S 2>&1 +fi +if [ -x /usr/sbin/vxstat ]; then + echo + echo "Volume Statistics" + echo "=================" + vxstat 2>&1 | tail +3 | awk ' + BEGIN { + printf (" OPERATIONS BLOCKS AVG TIME(ms)\n"); + printf ("TYP NAME READ WRITE READ WRITE READ WRITE\n"); + } + { + v = $1 + n = $2 + or = $3 + ow = $4 + br = $5 + bw = $6 + ar = $7 + aw = $8 + printf ("%s %-20s %9s %9s %10s %10s %5.1f %5.1f\n", v,n,or,ow,br,bw,ar,aw) + }' +fi +if [ -x /usr/sbin/vxprint ]; then + echo + echo "Configuration Details" + echo "=====================" + vxprint -tvh 2>&1 +fi + +showrev -p 2>&1 | grep -v 'No patches' | awk '{print $2}' >$TMPFILE +patchnum=`cat $TMPFILE | wc | awk '{print $1}'` + +cat << __EOF__ + +================================================== +$patchnum Installed patches (from 'showrev -p') +================================================== +__EOF__ + +if [ $NOPATCHES -eq 0 ]; then + cat $TMPFILE +fi + +lpstat -a | grep "accepting" | sort | uniq | awk '{print $1}' >$TMPFILE +lpnum=`cat $TMPFILE | wc | awk '{print $1}'` + +cat << __EOF__ + +================================================== +$lpnum Installed printers (from lpstat) +================================================== +__EOF__ + +if [ $NOPRINTER -eq 0 ]; then + cat $TMPFILE +fi + + +pkginfo | sort -b +1 >$TMPFILE +pkgnum=`cat $TMPFILE | wc | awk '{print $1}'` + +cat << __EOF__ + +================================================== +$pkgnum Installed packages (from pkginfo) +================================================== +__EOF__ + +if [ $NOPKGS -eq 0 ]; then + cat $TMPFILE +fi +return +} + + +# +# SUNOS_Func +# +SUNOS_Func() { +cat << __EOF__ + +================================================== +Installed printers (from lpc stat) +================================================== +__EOF__ + +lpc stat | grep : | cut -d':' -f1 +return +} + + +# ============================================================================= +# END OF FUNCTION DEFINITIONS +# ============================================================================= + +# +# system-independant functions +# +Get_Prog_Name + +if [ "$AUDIT" = "0" ]; then + exec > /usr/tmp/`hostname`.SysConfig +fi + +Check_User +Get_Arch +Define_Vars +Machine_Data +Network_Data +Disk_Data + + +# +# system-dependant functions +# +case $SYSTYPE in + HPUX09) HPUX09_Func;; + HPUX10) HPUX10_Func;; + Solaris) SOLARIS_Func;; + SunOS) SUNOS_Func;; + SunOS3) SUNOS_Func;; + *) ;; +esac + diff --git a/rescue/solaris/backup.etc.list b/rescue/solaris/backup.etc.list new file mode 100644 index 0000000..43855e6 --- /dev/null +++ b/rescue/solaris/backup.etc.list @@ -0,0 +1,13 @@ +/etc/exports +/etc/fstab +/etc/group +/etc/gshadow +/etc/host.conf +/etc/hosts +/etc/hosts.allow +/etc/hosts.deny +/etc/modules.conf +/etc/passwd +/etc/resolv.conf +/etc/shadow +/etc/sysconfig diff --git a/rescue/solaris/getdiskinfo b/rescue/solaris/getdiskinfo new file mode 100755 index 0000000..b0bed57 --- /dev/null +++ b/rescue/solaris/getdiskinfo @@ -0,0 +1,92 @@ +#!/bin/sh +# +# Create bootstrap information files -- prelude to creating a +# Bacula Rescue Disk +# +# Solaris version +# +# Kern Sibbald, December MMII +# This source distributed under the GPL +# +di=diskinfo +cwd=`pwd` +host=`uname -s` +case $host in + Linux) + echo "" + echo "This is the Solaris script. Please use the Linux version." + echo "" + exit 1 + ;; + SunOS) + echo "" + echo "This is preliminary code and not yet" + echo "tested or guaranteed to work ..." + echo "" + ;; + FreeBSD | IRIX) + echo "" + echo "This code is not yet adapted to this OS" + exit 1 + ;; + *) + echo "" + echo "Unknown operating system type: $host" + exit 1 + ;; +esac +uid=`id | cut -d'(' -f1 | cut -d'=' -f2` +if [ "$uid" -ne "0" ]; then + echo "" + echo "You need to be root to run this, otherwise" + echo "the results are not optimal. Continuing anyway ..." + echo "" +fi + +# +# First collect information +# +echo "Begin collecting system info" +mkdir -p $di +cd $di +mount -p >mount.bsi +if [ -e /etc/fstab ] ; then + cp /etc/fstab fstab.bsi +fi +if [ -e /etc/vfstab ] ; then + cp /etc/vfstab vfstab.bsi +fi +df -tkFnfs >df.bsi +df -l >dflocal.bsi +../SysAudit >sysaudit.bsi +route -n >route.bsi +ifconfig -a >ifconfig.bsi + + +echo "Done collecting info. Building scripts ..." + +# +# Done collecting information +# + + +cd $cwd + +# +# Create network start script +# +dev=`cat $di/ifconfig.bsi | grep BROADCAST | awk -F: '{print $1}' | head -1` +ip=`ifconfig $dev | grep inet | awk '{print $2}'` +cat >start_network <&1 >/dev/null +if [ $? = 0 ] ; then + mounted=1 +else + mounted=0 +fi +mke2fs $dev +mount $dev $device 2>&1 >/dev/null + +if [ x$make_bacula = "xyes" ] ; then + ./make_static_bacula +fi + +if [ x$copy_bacula = "xyes" -a ! -e bacula-fd ] ; then + echo " " + echo "bacula-fd not found. If you want Bacula on this" + echo "rescue disk please run \"make_static_bacula\" first." + echo "Continuing anyway ..." + echo " " + exit 1 + have_bacula=no +else + echo "Stripping and compressing Bacula" + strip bacula-fd + gzip bacula-fd + have_bacula=yes +fi + +echo "Copying files to $device" +cp -a . $device + +if [ x$copy_etc = "xyes" ] ; then + echo "Tarring /etc files to $device" + tar --create --gzip --file $device/etc.gz --files-from backup.etc.list +fi + +if [ x$have_bacula = "xyes" ] ; then + rm -f bacula-fd.gz bacula-fd.conf +fi +sync +if [ $mounted = 0 ] ; then + umount $device +fi